From 8701f4ec1d494512cc1d0828db407da0503f1960 Mon Sep 17 00:00:00 2001 From: jiangfuyao Date: Sun, 23 Jun 2019 00:33:44 +0800 Subject: [PATCH 1/2] [M2]0.1.7 --- .babelrc | 28 +- .buckconfig | 0 .eslintrc.js | 945 ++ .flowconfig | 0 .prettierrc.js | 11 + .update | 4 +- .watchmanconfig | 2 +- App.js | 165 +- LICENSE | 0 README.md | 0 __test__/Api.test.js | 54 + __test__/Common.test.js | 69 + __test__/polkadotAPI.test.js | 110 + android/app/BUCK | 0 android/app/build.gradle | 9 + android/app/proguard-rules.pro | 0 android/app/src/main/AndroidManifest.xml | 7 + .../app/src/main/assets/index.android.bundle | 0 android/app/src/main/assets/index.android.map | 1 + android/app/src/main/assets/tpl.html | 0 .../java/com/polkawallet/MainActivity.java | 0 .../java/com/polkawallet/MainApplication.java | 13 +- ...gationstack_dist_views_assets_backicon.png | Bin ...gationstack_dist_views_assets_backicon.png | Bin ...onstack_dist_views_assets_backiconmask.png | Bin .../src_assets_images_assets_assets_bg.png | Bin 0 -> 27218 bytes .../src_assets_images_assets_assets_nav_0.png | Bin 0 -> 3476 bytes ...c_assets_images_assets_assets_nav_code.png | Bin 0 -> 1345 bytes ..._assets_images_assets_assets_nav_title.png | Bin 0 -> 966 bytes ...assets_images_assets_assets_title_line.png | Bin 0 -> 1004 bytes .../src_assets_images_assets_logo.png | Bin 0 -> 3886 bytes .../src_assets_images_assets_menu_create.png | Bin 0 -> 1141 bytes .../src_assets_images_assets_menu_line.png | Bin 0 -> 999 bytes .../src_assets_images_assets_menu_scan.png | Bin 0 -> 1074 bytes .../src_assets_images_assets_nextstep.png | Bin 0 -> 13615 bytes ...c_assets_images_assets_sweep_code_line.png | Bin 0 -> 1697 bytes ...assets_images_assets_sweep_code_return.png | Bin 0 -> 1067 bytes .../src_assets_images_public_about_logo.png | Bin 0 -> 7956 bytes .../src_assets_images_public_about_return.png | Bin 0 -> 1115 bytes ...assets_images_public_addaddresses_code.png | Bin 0 -> 1091 bytes ...assets_images_public_addaddresses_save.png | Bin 0 -> 13154 bytes ...src_assets_images_public_addresses_add.png | Bin 0 -> 990 bytes ..._assets_images_public_addresses_nav_go.png | Bin 1090 -> 1094 bytes ...c_assets_images_public_assets_btc_down.png | Bin 0 -> 1032 bytes ...ssets_images_public_assets_btc_receive.png | Bin 0 -> 1315 bytes ...c_assets_images_public_assets_btc_send.png | Bin 0 -> 1209 bytes ...src_assets_images_public_assets_btc_up.png | Bin 0 -> 1014 bytes .../src_assets_images_public_assets_dark.png | Bin 0 -> 1246 bytes ...src_assets_images_public_change_button.png | Bin 0 -> 13337 bytes .../src_assets_images_public_copy.png | Bin 0 -> 1155 bytes ...rc_assets_images_public_democrscy_dark.png | Bin 0 -> 1307 bytes .../src_assets_images_public_dontscreen.png | Bin 0 -> 1695 bytes .../src_assets_images_public_eye.png | Bin 0 -> 1371 bytes .../src_assets_images_public_icon1.png | Bin 0 -> 1610 bytes .../src_assets_images_public_icon2.png | Bin 0 -> 1544 bytes .../src_assets_images_public_pro_about.png | Bin 0 -> 1282 bytes .../src_assets_images_public_pro_addre.png | Bin 0 -> 1315 bytes .../src_assets_images_public_profile.png | Bin 0 -> 1581 bytes .../src_assets_images_public_prosetting.png | Bin 0 -> 1339 bytes .../src_assets_images_public_set.png | Bin 0 -> 1296 bytes .../src_assets_images_public_staking_dark.png | Bin 0 -> 1551 bytes .../src_assets_images_public_success.png | Bin 0 -> 1528 bytes ...ets_images_staking_demccrscy_time_icon.png | Bin 0 -> 1262 bytes ...c_assets_images_staking_staking_nav_bg.png | Bin 0 -> 2390 bytes ...rc_assets_images_staking_staking_nomin.png | Bin 0 -> 1293 bytes ...sets_images_staking_staking_stake_icon.png | Bin 0 -> 1219 bytes ...c_assets_images_staking_staking_top_bg.png | Bin 26860 -> 19039 bytes ...ssets_images_staking_staking_top_bg_no.png | Bin 0 -> 17691 bytes .../src_images_assets_coin_details_down.png | Bin ...src_images_assets_coin_details_receive.png | Bin .../src_images_assets_coin_details_send.png | Bin .../src_images_assets_coin_details_up.png | Bin .../drawable-mdpi/src_images_assets_copy.png | Bin .../src_images_assets_create_account_back.png | Bin .../src_images_assets_create_account_copy.png | Bin .../src_images_assets_create_account_next.png | Bin .../drawable-mdpi/src_images_assets_dot.png | Bin .../drawable-mdpi/src_images_assets_logo.png | Bin .../src_images_assets_qrbutton.png | Bin ...mages_assets_right_menu_create_account.png | Bin .../src_images_assets_right_menu_scan.png | Bin .../src_images_assets_rightmenu.png | Bin .../src_images_assets_transfer_address.png | Bin .../src_images_assets_transfer_camera.png | Bin .../src_images_assets_transfer_eye.png | Bin .../src_images_assets_transfer_successed.png | Bin .../src_images_bottom_assetc_icon.png | Bin .../src_images_bottom_democrscy_icon.png | Bin .../src_images_bottom_profile_icon.png | Bin .../src_images_bottom_staking_icon.png | Bin .../src_images_democracy_green_ellipse.png | Bin .../src_images_democracy_red_ellipse.png | Bin .../src_images_democracy_time.png | Bin .../src_images_profile_about.png | Bin .../src_images_profile_addresses.png | Bin .../drawable-mdpi/src_images_profile_next.png | Bin ...c_images_profile_secondary_add_address.png | Bin .../src_images_profile_secondary_camera.png | Bin .../src_images_profile_secondary_logo.png | Bin .../src_images_profile_settings.png | Bin .../drawable-mdpi/src_images_staking_back.png | Bin .../src_images_staking_branch.png | Bin .../src_images_staking_greysharp.png | Bin .../drawable-mdpi/src_images_staking_loss.png | Bin .../src_images_staking_profit.png | Bin .../src_images_staking_setprefs.png | Bin .../src_images_staking_whitesharp.png | Bin ...gationstack_dist_views_assets_backicon.png | Bin .../src_assets_images_assets_assets_bg.png | Bin 0 -> 144100 bytes .../src_assets_images_assets_assets_nav_0.png | Bin 0 -> 7112 bytes ...c_assets_images_assets_assets_nav_code.png | Bin 0 -> 1641 bytes ..._assets_images_assets_assets_nav_title.png | Bin 0 -> 1026 bytes ...assets_images_assets_assets_title_line.png | Bin 0 -> 1091 bytes .../src_assets_images_assets_logo.png | Bin 0 -> 5581 bytes .../src_assets_images_assets_menu_create.png | Bin 0 -> 1372 bytes .../src_assets_images_assets_menu_line.png | Bin 0 -> 1098 bytes .../src_assets_images_assets_menu_scan.png | Bin 0 -> 1211 bytes .../src_assets_images_assets_nextstep.png | Bin 0 -> 46644 bytes ...c_assets_images_assets_sweep_code_line.png | Bin 0 -> 2544 bytes ...assets_images_assets_sweep_code_return.png | Bin 0 -> 1224 bytes .../src_assets_images_public_about_logo.png | Bin 0 -> 19644 bytes .../src_assets_images_public_about_return.png | Bin 0 -> 1445 bytes ...assets_images_public_addaddresses_code.png | Bin 0 -> 1285 bytes ...assets_images_public_addaddresses_save.png | Bin 0 -> 45955 bytes ...src_assets_images_public_addresses_add.png | Bin 0 -> 1073 bytes ..._assets_images_public_addresses_nav_go.png | Bin 0 -> 1269 bytes ...c_assets_images_public_assets_btc_down.png | Bin 0 -> 1124 bytes ...ssets_images_public_assets_btc_receive.png | Bin 0 -> 1589 bytes ...c_assets_images_public_assets_btc_send.png | Bin 0 -> 1573 bytes ...src_assets_images_public_assets_btc_up.png | Bin 0 -> 1115 bytes .../src_assets_images_public_assets_dark.png | Bin 0 -> 1579 bytes ...src_assets_images_public_change_button.png | Bin 0 -> 46164 bytes .../src_assets_images_public_copy.png | Bin 0 -> 1359 bytes ...rc_assets_images_public_democrscy_dark.png | Bin 0 -> 1739 bytes .../src_assets_images_public_dontscreen.png | Bin 0 -> 2350 bytes .../src_assets_images_public_eye.png | Bin 0 -> 1945 bytes .../src_assets_images_public_icon1.png | Bin 0 -> 2636 bytes .../src_assets_images_public_icon2.png | Bin 0 -> 2173 bytes .../src_assets_images_public_pro_about.png | Bin 0 -> 1814 bytes .../src_assets_images_public_pro_addre.png | Bin 0 -> 1697 bytes .../src_assets_images_public_profile.png | Bin 0 -> 3227 bytes .../src_assets_images_public_prosetting.png | Bin 0 -> 1913 bytes .../src_assets_images_public_set.png | Bin 0 -> 1639 bytes .../src_assets_images_public_staking_dark.png | Bin 0 -> 2301 bytes .../src_assets_images_public_success.png | Bin 0 -> 2249 bytes ...ets_images_staking_demccrscy_time_icon.png | Bin 0 -> 1684 bytes ...c_assets_images_staking_staking_nav_bg.png | Bin 0 -> 3767 bytes ...rc_assets_images_staking_staking_nomin.png | Bin 0 -> 1691 bytes ...sets_images_staking_staking_stake_icon.png | Bin 0 -> 1622 bytes ...c_assets_images_staking_staking_top_bg.png | Bin 0 -> 25535 bytes ...ssets_images_staking_staking_top_bg_no.png | Bin 0 -> 22469 bytes ...gationstack_dist_views_assets_backicon.png | Bin .../src_assets_images_assets_assets_bg.png | Bin 0 -> 204070 bytes .../src_assets_images_assets_assets_nav_0.png | Bin 0 -> 10916 bytes ...c_assets_images_assets_assets_nav_code.png | Bin 0 -> 1931 bytes ..._assets_images_assets_assets_nav_title.png | Bin 0 -> 1079 bytes ...assets_images_assets_assets_title_line.png | Bin 0 -> 1153 bytes .../src_assets_images_assets_logo.png | Bin 0 -> 13903 bytes .../src_assets_images_assets_menu_create.png | Bin 0 -> 1618 bytes .../src_assets_images_assets_menu_line.png | Bin 0 -> 1183 bytes .../src_assets_images_assets_menu_scan.png | Bin 0 -> 1414 bytes .../src_assets_images_assets_nextstep.png | Bin 0 -> 99605 bytes ...c_assets_images_assets_sweep_code_line.png | Bin 0 -> 3419 bytes ...assets_images_assets_sweep_code_return.png | Bin 0 -> 1429 bytes .../src_assets_images_public_about_logo.png | Bin 0 -> 31297 bytes .../src_assets_images_public_about_return.png | Bin 0 -> 1761 bytes ...assets_images_public_addaddresses_code.png | Bin 0 -> 1532 bytes ...assets_images_public_addaddresses_save.png | Bin 0 -> 98890 bytes ...src_assets_images_public_addresses_add.png | Bin 0 -> 1133 bytes ..._assets_images_public_addresses_nav_go.png | Bin 0 -> 1538 bytes ...c_assets_images_public_assets_btc_down.png | Bin 0 -> 1223 bytes ...ssets_images_public_assets_btc_receive.png | Bin 0 -> 1890 bytes ...c_assets_images_public_assets_btc_send.png | Bin 0 -> 1932 bytes ...src_assets_images_public_assets_btc_up.png | Bin 0 -> 1191 bytes .../src_assets_images_public_assets_dark.png | Bin 0 -> 1945 bytes ...src_assets_images_public_change_button.png | Bin 0 -> 99197 bytes .../src_assets_images_public_copy.png | Bin 0 -> 1593 bytes ...rc_assets_images_public_democrscy_dark.png | Bin 0 -> 2167 bytes .../src_assets_images_public_dontscreen.png | Bin 0 -> 3017 bytes .../src_assets_images_public_eye.png | Bin 0 -> 2651 bytes .../src_assets_images_public_icon1.png | Bin 0 -> 4566 bytes .../src_assets_images_public_icon2.png | Bin 0 -> 3600 bytes .../src_assets_images_public_pro_about.png | Bin 0 -> 2326 bytes .../src_assets_images_public_pro_addre.png | Bin 0 -> 2103 bytes .../src_assets_images_public_profile.png | Bin 0 -> 5309 bytes .../src_assets_images_public_prosetting.png | Bin 0 -> 2523 bytes .../src_assets_images_public_set.png | Bin 0 -> 2043 bytes .../src_assets_images_public_staking_dark.png | Bin 0 -> 3083 bytes .../src_assets_images_public_success.png | Bin 0 -> 3016 bytes ...ets_images_staking_demccrscy_time_icon.png | Bin 0 -> 2075 bytes ...c_assets_images_staking_staking_nav_bg.png | Bin 0 -> 8335 bytes ...rc_assets_images_staking_staking_nomin.png | Bin 0 -> 2136 bytes ...sets_images_staking_staking_stake_icon.png | Bin 0 -> 2303 bytes ...c_assets_images_staking_staking_top_bg.png | Bin 0 -> 32564 bytes ...ssets_images_staking_staking_top_bg_no.png | Bin 0 -> 26573 bytes ...gationstack_dist_views_assets_backicon.png | Bin .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../src/main/res/mipmap-ldpi/ic_launcher.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin ...iveecharts_src_components_echarts_tpl.html | 63 - android/app/src/main/res/values/strings.xml | 0 android/app/src/main/res/values/styles.xml | 0 android/build.gradle | 10 +- android/gradle.properties | 0 android/gradle/wrapper/gradle-wrapper.jar | Bin .../gradle/wrapper/gradle-wrapper.properties | 2 +- android/gradlew | 0 android/gradlew.bat | 168 +- android/keystores/BUCK | 0 android/keystores/debug.keystore.properties | 0 android/settings.gradle | 10 + app.json | 2 +- babel.config.js | 1 + index.js | 26 +- ios/Polkawallet-tvOS/Info.plist | 0 ios/Polkawallet-tvOSTests/Info.plist | 0 ios/Polkawallet.xcodeproj/project.pbxproj | 407 +- .../xcschemes/Polkawallet-tvOS.xcscheme | 0 .../xcschemes/Polkawallet.xcscheme | 0 ios/Polkawallet/AppDelegate.h | 0 ios/Polkawallet/AppDelegate.m | 51 + ios/Polkawallet/Base.lproj/LaunchScreen.xib | 0 .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/icon-1024@1x.png | Bin .../AppIcon.appiconset/icon-20@2x.png | Bin .../AppIcon.appiconset/icon-20@3x.png | Bin .../AppIcon.appiconset/icon-29@2x.png | Bin .../AppIcon.appiconset/icon-29@3x.png | Bin .../AppIcon.appiconset/icon-40@2x.png | Bin .../AppIcon.appiconset/icon-40@3x.png | Bin .../AppIcon.appiconset/icon-60@2x.png | Bin .../AppIcon.appiconset/icon-60@3x.png | Bin ios/Polkawallet/Images.xcassets/Contents.json | 0 .../LaunchImage.launchimage/Contents.json | 0 .../Start_page1125x2436.jpg | Bin .../Start_page1242x2208-1.jpg | Bin .../Start_page1242x2208.jpg | Bin .../Start_page1242x2688.jpg | Bin .../Start_page320x480.jpg | Bin .../Start_page640x1136-1.jpg | Bin .../Start_page640x1136.jpg | Bin .../Start_page640x960.jpg | Bin .../Start_page750x1334.jpg | Bin .../Start_page828x1792.jpg | Bin ios/Polkawallet/Info.plist | 4 +- ios/Polkawallet/Polkawallet.entitlements | 8 + ios/Polkawallet/main.m | 0 ios/PolkawalletTests/Info.plist | 0 ios/PolkawalletTests/PolkawalletTests.m | 0 metro.config.js | 22 +- package-lock.json | 6060 ++++++++--- package.json | 89 +- postinstall.sh | 0 .../src/assets/images/Assets/Assets_bg.png | Bin 0 -> 27218 bytes .../src/assets/images/Assets/Assets_bg@2x.png | Bin 0 -> 144100 bytes .../src/assets/images/Assets/Assets_bg@3x.png | Bin 0 -> 204070 bytes .../src/assets/images/Assets/Assets_nav_0.png | Bin 0 -> 3476 bytes .../assets/images/Assets/Assets_nav_0@2x.png | Bin 0 -> 7112 bytes .../assets/images/Assets/Assets_nav_0@3x.png | Bin 0 -> 10916 bytes .../assets/images/Assets/Assets_nav_code.png | Bin 0 -> 1345 bytes .../images/Assets/Assets_nav_code@2x.png | Bin 0 -> 1641 bytes .../images/Assets/Assets_nav_code@3x.png | Bin 0 -> 1931 bytes .../assets/images/Assets/Assets_nav_title.png | Bin 0 -> 966 bytes .../images/Assets/Assets_nav_title@2x.png | Bin 0 -> 1026 bytes .../images/Assets/Assets_nav_title@3x.png | Bin 0 -> 1079 bytes .../images/Assets/Assets_title_line.png | Bin 0 -> 1004 bytes .../images/Assets/Assets_title_line@2x.png | Bin 0 -> 1091 bytes .../images/Assets/Assets_title_line@3x.png | Bin 0 -> 1153 bytes .../src/assets/images/Assets/Menu_Create.png | Bin 0 -> 1141 bytes .../assets/images/Assets/Menu_Create@2x.png | Bin 0 -> 1372 bytes .../assets/images/Assets/Menu_Create@3x.png | Bin 0 -> 1618 bytes .../src/assets/images/Assets/Menu_line.png | Bin 0 -> 999 bytes .../src/assets/images/Assets/Menu_line@2x.png | Bin 0 -> 1098 bytes .../src/assets/images/Assets/Menu_line@3x.png | Bin 0 -> 1183 bytes .../src/assets/images/Assets/Menu_scan.png | Bin 0 -> 1074 bytes .../src/assets/images/Assets/Menu_scan@2x.png | Bin 0 -> 1211 bytes .../src/assets/images/Assets/Menu_scan@3x.png | Bin 0 -> 1414 bytes .../src/assets/images/Assets/Nextstep.png | Bin 0 -> 13615 bytes .../src/assets/images/Assets/Nextstep@2x.png | Bin 0 -> 46644 bytes .../src/assets/images/Assets/Nextstep@3x.png | Bin 0 -> 99605 bytes .../assets/src/assets/images/Assets/logo.png | Bin 0 -> 3886 bytes .../src/assets/images/Assets/logo@2x.png | Bin 0 -> 5581 bytes .../src/assets/images/Assets/logo@3x.png | Bin 0 -> 13903 bytes .../assets/images/Assets/sweep_code_line.png | Bin 0 -> 1697 bytes .../images/Assets/sweep_code_line@2x.png | Bin 0 -> 2544 bytes .../images/Assets/sweep_code_line@3x.png | Bin 0 -> 3419 bytes .../images/Assets/sweep_code_return.png | Bin 0 -> 1067 bytes .../images/Assets/sweep_code_return@2x.png | Bin 0 -> 1224 bytes .../images/Assets/sweep_code_return@3x.png | Bin 0 -> 1429 bytes .../src/assets/images/public/About_logo.png | Bin 0 -> 7956 bytes .../assets/images/public/About_logo@2x.png | Bin 0 -> 19644 bytes .../assets/images/public/About_logo@3x.png | Bin 0 -> 31297 bytes .../src/assets/images/public/About_return.png | Bin 0 -> 1115 bytes .../assets/images/public/About_return@2x.png | Bin 0 -> 1445 bytes .../assets/images/public/About_return@3x.png | Bin 0 -> 1761 bytes .../src/assets/images/public/Assets_dark.png | Bin 0 -> 1246 bytes .../assets/images/public/Assets_dark@2x.png | Bin 0 -> 1579 bytes .../assets/images/public/Assets_dark@3x.png | Bin 0 -> 1945 bytes .../assets/images/public/Change_button.png | Bin 0 -> 13337 bytes .../assets/images/public/Change_button@2x.png | Bin 0 -> 46164 bytes .../assets/images/public/Change_button@3x.png | Bin 0 -> 99197 bytes .../assets/images/public/Democrscy_dark.png | Bin 0 -> 1307 bytes .../images/public/Democrscy_dark@2x.png | Bin 0 -> 1739 bytes .../images/public/Democrscy_dark@3x.png | Bin 0 -> 2167 bytes .../src/assets/images/public/Pro-Setting.png | Bin 0 -> 1339 bytes .../assets/images/public/Pro-Setting@2x.png | Bin 0 -> 1913 bytes .../assets/images/public/Pro-Setting@3x.png | Bin 0 -> 2523 bytes .../src/assets/images/public/Pro_Addre.png | Bin 0 -> 1315 bytes .../src/assets/images/public/Pro_Addre@2x.png | Bin 0 -> 1697 bytes .../src/assets/images/public/Pro_Addre@3x.png | Bin 0 -> 2103 bytes .../src/assets/images/public/Pro_about.png | Bin 0 -> 1282 bytes .../src/assets/images/public/Pro_about@2x.png | Bin 0 -> 1814 bytes .../src/assets/images/public/Pro_about@3x.png | Bin 0 -> 2326 bytes .../src/assets/images/public/Profile.png | Bin 0 -> 1581 bytes .../src/assets/images/public/Profile@2x.png | Bin 0 -> 3227 bytes .../src/assets/images/public/Profile@3x.png | Bin 0 -> 5309 bytes .../src/assets/images/public/Staking_dark.png | Bin 0 -> 1551 bytes .../assets/images/public/Staking_dark@2x.png | Bin 0 -> 2301 bytes .../assets/images/public/Staking_dark@3x.png | Bin 0 -> 3083 bytes .../images/public/addaddresses_code.png | Bin 0 -> 1091 bytes .../images/public/addaddresses_code@2x.png | Bin 0 -> 1285 bytes .../images/public/addaddresses_code@3x.png | Bin 0 -> 1532 bytes .../images/public/addaddresses_save.png | Bin 0 -> 13154 bytes .../images/public/addaddresses_save@2x.png | Bin 0 -> 45955 bytes .../images/public/addaddresses_save@3x.png | Bin 0 -> 98890 bytes .../assets/images/public/addresses_add.png | Bin 0 -> 990 bytes .../assets/images/public/addresses_add@2x.png | Bin 0 -> 1073 bytes .../assets/images/public/addresses_add@3x.png | Bin 0 -> 1133 bytes .../assets/images/public/addresses_nav_go.png | Bin 0 -> 1094 bytes .../images/public/addresses_nav_go@2x.png | Bin 0 -> 1269 bytes .../images/public/addresses_nav_go@3x.png | Bin 0 -> 1538 bytes .../assets/images/public/assets_btc_down.png | Bin 0 -> 1032 bytes .../images/public/assets_btc_down@2x.png | Bin 0 -> 1124 bytes .../images/public/assets_btc_down@3x.png | Bin 0 -> 1223 bytes .../images/public/assets_btc_receive.png | Bin 0 -> 1315 bytes .../images/public/assets_btc_receive@2x.png | Bin 0 -> 1589 bytes .../images/public/assets_btc_receive@3x.png | Bin 0 -> 1890 bytes .../assets/images/public/assets_btc_send.png | Bin 0 -> 1209 bytes .../images/public/assets_btc_send@2x.png | Bin 0 -> 1573 bytes .../images/public/assets_btc_send@3x.png | Bin 0 -> 1932 bytes .../assets/images/public/assets_btc_up.png | Bin 0 -> 1014 bytes .../assets/images/public/assets_btc_up@2x.png | Bin 0 -> 1115 bytes .../assets/images/public/assets_btc_up@3x.png | Bin 0 -> 1191 bytes .../assets/src/assets/images/public/copy.png | Bin 0 -> 1155 bytes .../src/assets/images/public/copy@2x.png | Bin 0 -> 1359 bytes .../src/assets/images/public/copy@3x.png | Bin 0 -> 1593 bytes .../src/assets/images/public/dontscreen.png | Bin 0 -> 1695 bytes .../assets/images/public/dontscreen@2x.png | Bin 0 -> 2350 bytes .../assets/images/public/dontscreen@3x.png | Bin 0 -> 3017 bytes .../assets/src/assets/images/public/eye.png | Bin 0 -> 1371 bytes .../src/assets/images/public/eye@2x.png | Bin 0 -> 1945 bytes .../src/assets/images/public/eye@3x.png | Bin 0 -> 2651 bytes .../assets/src/assets/images/public/icon1.png | Bin 0 -> 1610 bytes .../src/assets/images/public/icon1@2x.png | Bin 0 -> 2636 bytes .../src/assets/images/public/icon1@3x.png | Bin 0 -> 4566 bytes .../assets/src/assets/images/public/icon2.png | Bin 0 -> 1544 bytes .../src/assets/images/public/icon2@2x.png | Bin 0 -> 2173 bytes .../src/assets/images/public/icon2@3x.png | Bin 0 -> 3600 bytes .../assets/src/assets/images/public/set.png | Bin 0 -> 1296 bytes .../src/assets/images/public/set@2x.png | Bin 0 -> 1639 bytes .../src/assets/images/public/set@3x.png | Bin 0 -> 2043 bytes .../src/assets/images/public/success.png | Bin 0 -> 1528 bytes .../src/assets/images/public/success@2x.png | Bin 0 -> 2249 bytes .../src/assets/images/public/success@3x.png | Bin 0 -> 3016 bytes .../images/staking/Demccrscy_time_icon.png | Bin 0 -> 1262 bytes .../images/staking/Demccrscy_time_icon@2x.png | Bin 0 -> 1684 bytes .../images/staking/Demccrscy_time_icon@3x.png | Bin 0 -> 2075 bytes .../assets/images/staking/staking_nav_bg.png | Bin 0 -> 2390 bytes .../images/staking/staking_nav_bg@2x.png | Bin 0 -> 3767 bytes .../images/staking/staking_nav_bg@3x.png | Bin 0 -> 8335 bytes .../assets/images/staking/staking_nomin.png | Bin 0 -> 1293 bytes .../images/staking/staking_nomin@2x.png | Bin 0 -> 1691 bytes .../images/staking/staking_nomin@3x.png | Bin 0 -> 2136 bytes .../images/staking/staking_stake_icon.png | Bin 0 -> 1219 bytes .../images/staking/staking_stake_icon@2x.png | Bin 0 -> 1622 bytes .../images/staking/staking_stake_icon@3x.png | Bin 0 -> 2303 bytes .../images/staking/staking_top_bg_no.png | Bin 0 -> 17691 bytes .../images/staking/staking_top_bg_no@2x.png | Bin 0 -> 22469 bytes .../images/staking/staking_top_bg_no@3x.png | Bin 0 -> 26573 bytes .../src/images/Assets/Create_Account/back.png | Bin 1283 -> 0 bytes .../src/images/Assets/Create_Account/copy.png | Bin 1400 -> 0 bytes .../src/images/Assets/Create_Account/next.png | Bin 1140 -> 0 bytes release_ios/assets/src/images/Assets/DOT.png | Bin 8495 -> 0 bytes .../assets/src/images/Assets/QrButton.png | Bin 1613 -> 0 bytes .../src/images/Assets/coin_details/down.png | Bin 1409 -> 0 bytes .../images/Assets/coin_details/receive.png | Bin 1612 -> 0 bytes .../src/images/Assets/coin_details/send.png | Bin 1608 -> 0 bytes .../src/images/Assets/coin_details/up.png | Bin 1389 -> 0 bytes release_ios/assets/src/images/Assets/copy.png | Bin 1273 -> 0 bytes release_ios/assets/src/images/Assets/logo.png | Bin 5399 -> 0 bytes .../assets/src/images/Assets/rightMenu.png | Bin 1281 -> 0 bytes .../Assets/right_menu/Create_Account.png | Bin 1235 -> 0 bytes .../assets/src/images/Assets/share.png | Bin 1348 -> 0 bytes .../assets/src/images/Assets/transfer/eye.png | Bin 1342 -> 0 bytes .../src/images/Assets/transfer/successed.png | Bin 3168 -> 0 bytes .../assets/src/images/Bottom/assetc_icon.png | Bin 27621 -> 0 bytes .../assets/src/images/Bottom/profile_icon.png | Bin 27624 -> 0 bytes .../src/images/Democracy/green_ellipse.png | Bin 1252 -> 0 bytes .../src/images/Democracy/red_ellipse.png | Bin 1242 -> 0 bytes .../assets/src/images/Democracy/time.png | Bin 1533 -> 0 bytes .../assets/src/images/Profile/next.png | Bin 1092 -> 0 bytes .../assets/src/images/Staking/accountIMG.png | Bin 15779 -> 0 bytes .../assets/src/images/Staking/branch.png | Bin 1491 -> 0 bytes .../assets/src/images/Staking/greysharp.png | Bin 1587 -> 0 bytes .../assets/src/images/Staking/loss.png | Bin 1897 -> 0 bytes .../assets/src/images/Staking/profit.png | Bin 2741 -> 0 bytes .../assets/src/images/Staking/whitesharp.png | Bin 1455 -> 0 bytes shim.js | 0 src/assets/images/Assets/Assets_Signal_bg.png | Bin 0 -> 4511 bytes .../images/Assets/Assets_Signal_bg@2x.png | Bin 0 -> 19218 bytes .../images/Assets/Assets_Signal_bg@3x.png | Bin 0 -> 27724 bytes src/assets/images/Assets/Assets_bg.png | Bin 0 -> 27218 bytes src/assets/images/Assets/Assets_bg@2x.png | Bin 0 -> 144100 bytes src/assets/images/Assets/Assets_bg@3x.png | Bin 0 -> 204070 bytes src/assets/images/Assets/Assets_nav_0.png | Bin 0 -> 3476 bytes src/assets/images/Assets/Assets_nav_0@2x.png | Bin 0 -> 7112 bytes src/assets/images/Assets/Assets_nav_0@3x.png | Bin 0 -> 10916 bytes src/assets/images/Assets/Assets_nav_1.png | Bin 0 -> 3213 bytes src/assets/images/Assets/Assets_nav_1@2x.png | Bin 0 -> 7293 bytes src/assets/images/Assets/Assets_nav_1@3x.png | Bin 0 -> 12275 bytes src/assets/images/Assets/Assets_nav_2.png | Bin 0 -> 2565 bytes src/assets/images/Assets/Assets_nav_2@2x.png | Bin 0 -> 5711 bytes src/assets/images/Assets/Assets_nav_2@3x.png | Bin 0 -> 10090 bytes src/assets/images/Assets/Assets_nav_3.png | Bin 0 -> 2632 bytes src/assets/images/Assets/Assets_nav_3@2x.png | Bin 0 -> 6049 bytes src/assets/images/Assets/Assets_nav_3@3x.png | Bin 0 -> 10788 bytes src/assets/images/Assets/Assets_nav_4.png | Bin 0 -> 1786 bytes src/assets/images/Assets/Assets_nav_4@2x.png | Bin 0 -> 2682 bytes src/assets/images/Assets/Assets_nav_4@3x.png | Bin 0 -> 3626 bytes src/assets/images/Assets/Assets_nav_bg.png | Bin 0 -> 4609 bytes src/assets/images/Assets/Assets_nav_bg@2x.png | Bin 0 -> 16088 bytes src/assets/images/Assets/Assets_nav_bg@3x.png | Bin 0 -> 21856 bytes src/assets/images/Assets/Assets_nav_code.png | Bin 0 -> 1345 bytes .../images/Assets/Assets_nav_code@2x.png | Bin 0 -> 1641 bytes .../images/Assets/Assets_nav_code@3x.png | Bin 0 -> 1931 bytes src/assets/images/Assets/Assets_nav_plus.png | Bin 0 -> 1328 bytes .../images/Assets/Assets_nav_plus@2x.png | Bin 0 -> 1889 bytes .../images/Assets/Assets_nav_plus@3x.png | Bin 0 -> 2408 bytes src/assets/images/Assets/Assets_nav_title.png | Bin 0 -> 966 bytes .../images/Assets/Assets_nav_title@2x.png | Bin 0 -> 1026 bytes .../images/Assets/Assets_nav_title@3x.png | Bin 0 -> 1079 bytes src/assets/images/Assets/Assets_title_bg.png | Bin 0 -> 4026 bytes .../images/Assets/Assets_title_bg@2x.png | Bin 0 -> 17124 bytes .../images/Assets/Assets_title_bg@3x.png | Bin 0 -> 24168 bytes .../images/Assets/Assets_title_line.png | Bin 0 -> 1004 bytes .../images/Assets/Assets_title_line@2x.png | Bin 0 -> 1091 bytes .../images/Assets/Assets_title_line@3x.png | Bin 0 -> 1153 bytes src/assets/images/Assets/Menu_Block.png | Bin 0 -> 1296 bytes src/assets/images/Assets/Menu_Block@2x.png | Bin 0 -> 1745 bytes src/assets/images/Assets/Menu_Block@3x.png | Bin 0 -> 2195 bytes src/assets/images/Assets/Menu_Chain.png | Bin 0 -> 1247 bytes src/assets/images/Assets/Menu_Chain@2x.png | Bin 0 -> 1613 bytes src/assets/images/Assets/Menu_Chain@3x.png | Bin 0 -> 2089 bytes src/assets/images/Assets/Menu_Create.png | Bin 0 -> 1141 bytes src/assets/images/Assets/Menu_Create@2x.png | Bin 0 -> 1372 bytes src/assets/images/Assets/Menu_Create@3x.png | Bin 0 -> 1618 bytes src/assets/images/Assets/Menu_Extrin.png | Bin 0 -> 1310 bytes src/assets/images/Assets/Menu_Extrin@2x.png | Bin 0 -> 1847 bytes src/assets/images/Assets/Menu_Extrin@3x.png | Bin 0 -> 2330 bytes src/assets/images/Assets/Menu_help.png | Bin 0 -> 1197 bytes src/assets/images/Assets/Menu_help@2x.png | Bin 0 -> 1582 bytes src/assets/images/Assets/Menu_help@3x.png | Bin 0 -> 1955 bytes src/assets/images/Assets/Menu_line.png | Bin 0 -> 999 bytes src/assets/images/Assets/Menu_line@2x.png | Bin 0 -> 1098 bytes src/assets/images/Assets/Menu_line@3x.png | Bin 0 -> 1183 bytes src/assets/images/Assets/Menu_portrait.png | Bin 0 -> 3476 bytes src/assets/images/Assets/Menu_portrait@2x.png | Bin 0 -> 7105 bytes src/assets/images/Assets/Menu_portrait@3x.png | Bin 0 -> 10934 bytes src/assets/images/Assets/Menu_scan.png | Bin 0 -> 1074 bytes src/assets/images/Assets/Menu_scan@2x.png | Bin 0 -> 1211 bytes src/assets/images/Assets/Menu_scan@3x.png | Bin 0 -> 1414 bytes src/assets/images/Assets/Nextstep.png | Bin 0 -> 13615 bytes src/assets/images/Assets/Nextstep@2x.png | Bin 0 -> 46644 bytes src/assets/images/Assets/Nextstep@3x.png | Bin 0 -> 99605 bytes src/assets/images/Assets/logo.png | Bin 0 -> 3886 bytes src/assets/images/Assets/logo@2x.png | Bin 0 -> 5581 bytes src/assets/images/Assets/logo@3x.png | Bin 0 -> 13903 bytes src/assets/images/Assets/sweep_code_bg.png | Bin 0 -> 1455 bytes src/assets/images/Assets/sweep_code_bg@2x.png | Bin 0 -> 2220 bytes src/assets/images/Assets/sweep_code_bg@3x.png | Bin 0 -> 3163 bytes src/assets/images/Assets/sweep_code_line.png | Bin 0 -> 1697 bytes .../images/Assets/sweep_code_line@2x.png | Bin 0 -> 2544 bytes .../images/Assets/sweep_code_line@3x.png | Bin 0 -> 3419 bytes .../images/Assets/sweep_code_nav_bg.png | Bin 0 -> 150346 bytes .../images/Assets/sweep_code_nav_bg@2x.png | Bin 0 -> 589880 bytes .../images/Assets/sweep_code_nav_bg@3x.png | Bin 0 -> 1323467 bytes .../images/Assets/sweep_code_return.png | Bin 0 -> 1067 bytes .../images/Assets/sweep_code_return@2x.png | Bin 0 -> 1224 bytes .../images/Assets/sweep_code_return@3x.png | Bin 0 -> 1429 bytes src/assets/images/Assets/sweep_code_share.png | Bin 0 -> 1142 bytes .../images/Assets/sweep_code_share@2x.png | Bin 0 -> 1324 bytes .../images/Assets/sweep_code_share@3x.png | Bin 0 -> 1495 bytes src/assets/images/Assets/sweep_code_shdow.png | Bin 0 -> 1126 bytes .../images/Assets/sweep_code_shdow@2x.png | Bin 0 -> 1335 bytes .../images/Assets/sweep_code_shdow@3x.png | Bin 0 -> 1589 bytes src/assets/images/public/About_logo.png | Bin 0 -> 7956 bytes src/assets/images/public/About_logo@2x.png | Bin 0 -> 19644 bytes src/assets/images/public/About_logo@3x.png | Bin 0 -> 31297 bytes src/assets/images/public/About_return.png | Bin 0 -> 1115 bytes src/assets/images/public/About_return@2x.png | Bin 0 -> 1445 bytes src/assets/images/public/About_return@3x.png | Bin 0 -> 1761 bytes src/assets/images/public/Addresses_return.png | Bin 0 -> 1056 bytes .../images/public/Addresses_return@2x.png | Bin 0 -> 1238 bytes .../images/public/Addresses_return@3x.png | Bin 0 -> 1428 bytes src/assets/images/public/Assets.png | Bin 0 -> 1541 bytes src/assets/images/public/Assets@2x.png | Bin 0 -> 2961 bytes src/assets/images/public/Assets@3x.png | Bin 0 -> 4833 bytes src/assets/images/public/Assets_dark.png | Bin 0 -> 1246 bytes src/assets/images/public/Assets_dark@2x.png | Bin 0 -> 1579 bytes src/assets/images/public/Assets_dark@3x.png | Bin 0 -> 1945 bytes src/assets/images/public/Change_button.png | Bin 0 -> 13337 bytes src/assets/images/public/Change_button@2x.png | Bin 0 -> 46164 bytes src/assets/images/public/Change_button@3x.png | Bin 0 -> 99197 bytes src/assets/images/public/Democrscy.png | Bin 0 -> 1715 bytes src/assets/images/public/Democrscy@2x.png | Bin 0 -> 3299 bytes src/assets/images/public/Democrscy@3x.png | Bin 0 -> 5467 bytes src/assets/images/public/Democrscy_dark.png | Bin 0 -> 1307 bytes .../images/public/Democrscy_dark@2x.png | Bin 0 -> 1739 bytes .../images/public/Democrscy_dark@3x.png | Bin 0 -> 2167 bytes src/assets/images/public/Pro-Setting.png | Bin 0 -> 1339 bytes src/assets/images/public/Pro-Setting@2x.png | Bin 0 -> 1913 bytes src/assets/images/public/Pro-Setting@3x.png | Bin 0 -> 2523 bytes src/assets/images/public/Pro_Addre.png | Bin 0 -> 1315 bytes src/assets/images/public/Pro_Addre@2x.png | Bin 0 -> 1697 bytes src/assets/images/public/Pro_Addre@3x.png | Bin 0 -> 2103 bytes src/assets/images/public/Pro_about.png | Bin 0 -> 1282 bytes src/assets/images/public/Pro_about@2x.png | Bin 0 -> 1814 bytes src/assets/images/public/Pro_about@3x.png | Bin 0 -> 2326 bytes src/assets/images/public/Profile.png | Bin 0 -> 1581 bytes src/assets/images/public/Profile@2x.png | Bin 0 -> 3227 bytes src/assets/images/public/Profile@3x.png | Bin 0 -> 5309 bytes src/assets/images/public/Profile_dark.png | Bin 0 -> 1365 bytes src/assets/images/public/Profile_dark@2x.png | Bin 0 -> 1893 bytes src/assets/images/public/Profile_dark@3x.png | Bin 0 -> 2536 bytes src/assets/images/public/Staking.png | Bin 0 -> 1901 bytes src/assets/images/public/Staking@2x.png | Bin 0 -> 3781 bytes src/assets/images/public/Staking@3x.png | Bin 0 -> 6211 bytes src/assets/images/public/Staking_dark.png | Bin 0 -> 1551 bytes src/assets/images/public/Staking_dark@2x.png | Bin 0 -> 2301 bytes src/assets/images/public/Staking_dark@3x.png | Bin 0 -> 3083 bytes .../images/public/addaddresses_code.png | Bin 0 -> 1091 bytes .../images/public/addaddresses_code@2x.png | Bin 0 -> 1285 bytes .../images/public/addaddresses_code@3x.png | Bin 0 -> 1532 bytes .../images/public/addaddresses_save.png | Bin 0 -> 13154 bytes .../images/public/addaddresses_save@2x.png | Bin 0 -> 45955 bytes .../images/public/addaddresses_save@3x.png | Bin 0 -> 98890 bytes src/assets/images/public/addresses_add.png | Bin 0 -> 990 bytes src/assets/images/public/addresses_add@2x.png | Bin 0 -> 1073 bytes src/assets/images/public/addresses_add@3x.png | Bin 0 -> 1133 bytes src/assets/images/public/addresses_nav_go.png | Bin 0 -> 1094 bytes .../images/public/addresses_nav_go@2x.png | Bin 0 -> 1269 bytes .../images/public/addresses_nav_go@3x.png | Bin 0 -> 1538 bytes src/assets/images/public/assets_btc_down.png | Bin 0 -> 1032 bytes .../images/public/assets_btc_down@2x.png | Bin 0 -> 1124 bytes .../images/public/assets_btc_down@3x.png | Bin 0 -> 1223 bytes src/assets/images/public/assets_btc_fail.png | Bin 0 -> 1024 bytes .../images/public/assets_btc_fail@2x.png | Bin 0 -> 1194 bytes .../images/public/assets_btc_fail@3x.png | Bin 0 -> 1312 bytes .../images/public/assets_btc_receive.png | Bin 0 -> 1315 bytes .../images/public/assets_btc_receive@2x.png | Bin 0 -> 1589 bytes .../images/public/assets_btc_receive@3x.png | Bin 0 -> 1890 bytes src/assets/images/public/assets_btc_send.png | Bin 0 -> 1209 bytes .../images/public/assets_btc_send@2x.png | Bin 0 -> 1573 bytes .../images/public/assets_btc_send@3x.png | Bin 0 -> 1932 bytes src/assets/images/public/assets_btc_up.png | Bin 0 -> 1014 bytes src/assets/images/public/assets_btc_up@2x.png | Bin 0 -> 1115 bytes src/assets/images/public/assets_btc_up@3x.png | Bin 0 -> 1191 bytes src/assets/images/public/copy.png | Bin 0 -> 1155 bytes src/assets/images/public/copy@2x.png | Bin 0 -> 1359 bytes src/assets/images/public/copy@3x.png | Bin 0 -> 1593 bytes src/assets/images/public/dontscreen.png | Bin 0 -> 1695 bytes src/assets/images/public/dontscreen@2x.png | Bin 0 -> 2350 bytes src/assets/images/public/dontscreen@3x.png | Bin 0 -> 3017 bytes src/assets/images/public/eye.png | Bin 0 -> 1371 bytes src/assets/images/public/eye@2x.png | Bin 0 -> 1945 bytes src/assets/images/public/eye@3x.png | Bin 0 -> 2651 bytes src/assets/images/public/icon1.png | Bin 0 -> 1610 bytes src/assets/images/public/icon1@2x.png | Bin 0 -> 2636 bytes src/assets/images/public/icon1@3x.png | Bin 0 -> 4566 bytes src/assets/images/public/icon2.png | Bin 0 -> 1544 bytes src/assets/images/public/icon2@2x.png | Bin 0 -> 2173 bytes src/assets/images/public/icon2@3x.png | Bin 0 -> 3600 bytes src/assets/images/public/set.png | Bin 0 -> 1296 bytes src/assets/images/public/set@2x.png | Bin 0 -> 1639 bytes src/assets/images/public/set@3x.png | Bin 0 -> 2043 bytes src/assets/images/public/success.png | Bin 0 -> 1528 bytes src/assets/images/public/success@2x.png | Bin 0 -> 2249 bytes src/assets/images/public/success@3x.png | Bin 0 -> 3016 bytes .../images/staking/Demccrscy_time_icon.png | Bin 0 -> 1262 bytes .../images/staking/Demccrscy_time_icon@2x.png | Bin 0 -> 1684 bytes .../images/staking/Demccrscy_time_icon@3x.png | Bin 0 -> 2075 bytes src/assets/images/staking/or.png | Bin 0 -> 1271 bytes src/assets/images/staking/or@2x.png | Bin 0 -> 1673 bytes src/assets/images/staking/or@3x.png | Bin 0 -> 2105 bytes .../images/staking/staking_Signal_bg.png | Bin 0 -> 993 bytes .../images/staking/staking_Signal_bg@2x.png | Bin 0 -> 1090 bytes .../images/staking/staking_Signal_bg@3x.png | Bin 0 -> 1225 bytes src/assets/images/staking/staking_nav_1.png | Bin 0 -> 1610 bytes .../images/staking/staking_nav_1@2x.png | Bin 0 -> 2628 bytes .../images/staking/staking_nav_1@3x.png | Bin 0 -> 4566 bytes src/assets/images/staking/staking_nav_bg.png | Bin 0 -> 2390 bytes .../images/staking/staking_nav_bg@2x.png | Bin 0 -> 3767 bytes .../images/staking/staking_nav_bg@3x.png | Bin 0 -> 8335 bytes src/assets/images/staking/staking_nomin.png | Bin 0 -> 1293 bytes .../images/staking/staking_nomin@2x.png | Bin 0 -> 1691 bytes .../images/staking/staking_nomin@3x.png | Bin 0 -> 2136 bytes .../images/staking/staking_stake_icon.png | Bin 0 -> 1219 bytes .../images/staking/staking_stake_icon@2x.png | Bin 0 -> 1622 bytes .../images/staking/staking_stake_icon@3x.png | Bin 0 -> 2303 bytes src/assets/images/staking/staking_tab_bg.png | Bin 0 -> 1500 bytes .../images/staking/staking_tab_bg@2x.png | Bin 0 -> 2510 bytes .../images/staking/staking_tab_bg@3x.png | Bin 0 -> 3740 bytes .../images/staking/staking_title_bg.png | Bin 0 -> 2468 bytes .../images/staking/staking_title_bg@2x.png | Bin 0 -> 5748 bytes .../images/staking/staking_title_bg@3x.png | Bin 0 -> 9105 bytes .../images/staking/staking_top_bg.png} | Bin 26860 -> 19039 bytes .../images/staking/staking_top_bg@2x.png | Bin 0 -> 25535 bytes .../images/staking/staking_top_bg@3x.png | Bin 0 -> 32564 bytes .../images/staking/staking_top_bg_no.png | Bin 0 -> 17691 bytes .../images/staking/staking_top_bg_no@2x.png | Bin 0 -> 22469 bytes .../images/staking/staking_top_bg_no@3x.png | Bin 0 -> 26573 bytes src/code/Assets/Assets.js | 594 -- src/code/Assets/secondary/Backup_Account.js | 221 - src/code/Assets/secondary/Create_Account.js | 764 -- src/code/Assets/secondary/QR_Code.js | 160 - src/code/Assets/secondary/Transfer/Receive.js | 0 .../secondary/Transfer/Transfer_details.js | 212 - .../secondary/Transfer/make_transfer.js | 378 - .../Assets/secondary/Transfer/transfer.js | 388 - src/code/Assets/secondary/camera.js | 94 - src/code/Assets/secondary/coin_details.js | 384 - src/code/Assets/secondary/right_menu.js | 338 - src/code/Assets/secondary/shiyan.js | 146 - src/code/CrossChain/CrossChain.js | 16 - src/code/Democracy/Democracy.js | 114 - src/code/Democracy/proposals.js | 208 - src/code/Democracy/referendums.js | 82 - src/code/Democracy/referendums/Active.js | 309 - src/code/Democracy/referendums/History.js | 131 - src/code/Democracy/referendums/MyRecord.js | 124 - src/code/Democracy/secondary/NayorAye.js | 288 - src/code/Profile/Profile.js | 125 - src/code/Profile/secondary/About.js | 120 - src/code/Profile/secondary/Addresses.js | 194 - .../Profile/secondary/Change/Change_Name.js | 236 - .../secondary/Change/Change_Password.js | 248 - src/code/Profile/secondary/Manage_Account.js | 474 - src/code/Profile/secondary/Settings.js | 243 - .../Profile/secondary/Settings/Gesture.js | 136 - .../Profile/secondary/Settings/Set_Node.js | 206 - src/code/Profile/secondary/add_address.js | 219 - .../Profile/secondary/address_information.js | 241 - src/code/Staking/Staking.js | 941 -- src/code/Staking/secondary/Validator_Info.js | 370 - src/code/Staking/secondary/nominate.js | 308 - src/code/Staking/secondary/preferences.js | 469 - src/code/Staking/secondary/stake.js | 298 - src/code/Staking/secondary/unnominate.js | 291 - src/code/Staking/secondary/unstake.js | 288 - src/code/Start.js | 22 - src/code/Tabbed_Navigation.js | 108 - src/code/bottom.js | 16 - src/components/Active.js | 516 + src/components/CoinRow.js | 59 + src/components/Header.js | 66 + src/components/Loading.js | 93 + src/components/LoadingUtil.js | 16 + src/components/ProposalsRow.js | 130 + src/components/RNKeyboardAvoidView.js | 14 + src/components/RNPicker.js | 120 + src/components/bottom.js | 14 + src/images/Assets/Create_Account/back.png | Bin 1283 -> 0 bytes src/images/Assets/Create_Account/copy.png | Bin 1400 -> 0 bytes src/images/Assets/Create_Account/next.png | Bin 1140 -> 0 bytes src/images/Assets/DOT.png | Bin 8495 -> 0 bytes src/images/Assets/QrButton.png | Bin 1613 -> 0 bytes src/images/Assets/accountIMG.png | Bin 15779 -> 0 bytes src/images/Assets/addAssets.png | Bin 1808 -> 0 bytes src/images/Assets/coin_details/QR.png | Bin 1070 -> 0 bytes src/images/Assets/coin_details/account.png | Bin 2363 -> 0 bytes src/images/Assets/coin_details/books.png | Bin 1440 -> 0 bytes src/images/Assets/coin_details/down.png | Bin 1409 -> 0 bytes src/images/Assets/coin_details/eye.png | Bin 1342 -> 0 bytes src/images/Assets/coin_details/receive.png | Bin 1612 -> 0 bytes src/images/Assets/coin_details/send.png | Bin 1608 -> 0 bytes src/images/Assets/coin_details/up.png | Bin 1389 -> 0 bytes src/images/Assets/copy.png | Bin 1273 -> 0 bytes src/images/Assets/logo.png | Bin 5399 -> 0 bytes src/images/Assets/rightMenu.png | Bin 1281 -> 0 bytes .../Assets/right_menu/BlockChain_Explorer.png | Bin 1493 -> 0 bytes src/images/Assets/right_menu/Chain_State.png | Bin 2253 -> 0 bytes .../Assets/right_menu/Create_Account.png | Bin 1235 -> 0 bytes src/images/Assets/right_menu/Extrinsics.png | Bin 1883 -> 0 bytes src/images/Assets/right_menu/Scan.png | Bin 1119 -> 0 bytes src/images/Assets/right_menu/help.png | Bin 1614 -> 0 bytes src/images/Assets/round.png | Bin 2228 -> 0 bytes src/images/Assets/share.png | Bin 1348 -> 0 bytes src/images/Assets/transfer/address.png | Bin 2378 -> 0 bytes src/images/Assets/transfer/camera.png | Bin 1070 -> 0 bytes src/images/Assets/transfer/copy.png | Bin 1273 -> 0 bytes src/images/Assets/transfer/eye.png | Bin 1342 -> 0 bytes src/images/Assets/transfer/successed.png | Bin 3168 -> 0 bytes src/images/Bottom/assetc_icon.png | Bin 27621 -> 0 bytes src/images/Bottom/crosschain_icon.png | Bin 27624 -> 0 bytes src/images/Bottom/democrscy_icon.png | Bin 27624 -> 0 bytes src/images/Bottom/profile_icon.png | Bin 27624 -> 0 bytes src/images/Bottom/staking_icon.png | Bin 27182 -> 0 bytes src/images/Democracy/green_ellipse.png | Bin 1252 -> 0 bytes src/images/Democracy/red_ellipse.png | Bin 1242 -> 0 bytes src/images/Democracy/time.png | Bin 1533 -> 0 bytes src/images/Profile/About.png | Bin 27302 -> 0 bytes src/images/Profile/Settings.png | Bin 27302 -> 0 bytes src/images/Profile/Support.png | Bin 27302 -> 0 bytes src/images/Profile/accountIMG.png | Bin 15779 -> 0 bytes src/images/Profile/more.png | Bin 1059 -> 0 bytes src/images/Profile/next.png | Bin 1092 -> 0 bytes src/images/Profile/secondary/add_address.png | Bin 1098 -> 0 bytes src/images/Profile/secondary/camera.png | Bin 1119 -> 0 bytes src/images/Profile/secondary/logo.png | Bin 142785 -> 0 bytes src/images/Staking/SetPrefs.png | Bin 1473 -> 0 bytes src/images/Staking/accountIMG.png | Bin 15779 -> 0 bytes src/images/Staking/back.png | Bin 1339 -> 0 bytes src/images/Staking/bluerund.png | Bin 2309 -> 0 bytes src/images/Staking/branch.png | Bin 1491 -> 0 bytes src/images/Staking/greysharp.png | Bin 1587 -> 0 bytes src/images/Staking/loss.png | Bin 1897 -> 0 bytes src/images/Staking/profit.png | Bin 2741 -> 0 bytes src/images/Staking/whitesharp.png | Bin 1455 -> 0 bytes src/locales/en-US/Assets/index.js | 84 + src/locales/en-US/Democracy/index.js | 24 + src/locales/en-US/Profile/index.js | 85 + src/locales/en-US/Staking/index.js | 91 + src/locales/en-US/index.js | 46 + src/locales/i18n.js | 25 + src/locales/zh-CN/Assets/index.js | 84 + src/locales/zh-CN/Democracy/index.js | 24 + src/locales/zh-CN/Profile/index.js | 83 + src/locales/zh-CN/Staking/index.js | 88 + src/locales/zh-CN/index.js | 45 + src/mobx/mobx.js | 344 +- src/page/Assets/Assets.js | 734 ++ src/page/Assets/secondary/BackupAccount.js | 206 + src/page/Assets/secondary/Camera.js | 128 + src/page/Assets/secondary/CoinDetails.js | 475 + src/page/Assets/secondary/CreateAccount.js | 700 ++ src/page/Assets/secondary/MnemonicWord_1.js | 206 + src/page/Assets/secondary/MnemonicWord_2.js | 131 + src/page/Assets/secondary/MnemonicWord_3.js | 333 + src/page/Assets/secondary/QRCode.js | 142 + src/page/Assets/secondary/RightMenu.js | 201 + .../Assets/secondary/Transfer/MakeTransfer.js | 470 + .../Assets/secondary/Transfer/Transfer.js | 393 + .../secondary/Transfer/TransferDetails.js | 289 + src/page/Democracy/Democracy.js | 171 + src/page/Democracy/Proposals.js | 128 + src/page/Democracy/Referendums.js | 59 + src/page/Democracy/secondary/History.js | 345 + src/page/Democracy/secondary/NayorAye.js | 358 + src/page/Profile/Profile.js | 207 + src/page/Profile/secondary/About.js | 102 + src/page/Profile/secondary/AddAddress.js | 221 + .../Profile/secondary/AddressInformation.js | 217 + src/page/Profile/secondary/Addresses.js | 182 + .../Profile/secondary/Change/ChangeName.js | 222 + .../secondary/Change/ChangePassword.js | 252 + src/page/Profile/secondary/ManageAccount.js | 489 + src/page/Profile/secondary/Settings.js | 277 + .../Profile/secondary/Settings/Gesture.js | 137 + .../Profile/secondary/Settings/SetNode.js | 249 + src/page/Staking/Staking.js | 1694 +++ src/page/Staking/secondary/BondAdditional.js | 522 + src/page/Staking/secondary/BondFunds.js | 606 ++ src/page/Staking/secondary/Nominate.js | 433 + src/page/Staking/secondary/SetSessionKey.js | 494 + src/page/Staking/secondary/Stake.js | 570 + src/page/Staking/secondary/Unbond.js | 527 + src/page/Staking/secondary/Unnominate.js | 383 + src/page/Staking/secondary/Unstake.js | 385 + src/page/Staking/secondary/ValidatorInfo.js | 603 ++ src/page/TabbedNavigation.js | 144 + src/util/Common.js | 172 + src/util/DataRepository.js | 86 + src/util/error_guard.js | 24 + src/util/formatBalance.ts | 86 - src/util/formatDecimal.ts | 13 - src/util/polkadotAPI.js | 516 + src/util/si.ts | 47 - tsconfig.json | 10 +- update.json | 8 +- yarn.lock | 9253 +++++++++++++++++ 793 files changed, 32654 insertions(+), 12842 deletions(-) mode change 100644 => 100755 .babelrc mode change 100644 => 100755 .buckconfig create mode 100755 .eslintrc.js mode change 100644 => 100755 .flowconfig create mode 100755 .prettierrc.js mode change 100644 => 100755 .update mode change 100644 => 100755 .watchmanconfig mode change 100644 => 100755 App.js mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README.md create mode 100755 __test__/Api.test.js create mode 100755 __test__/Common.test.js create mode 100755 __test__/polkadotAPI.test.js mode change 100644 => 100755 android/app/BUCK mode change 100644 => 100755 android/app/build.gradle mode change 100644 => 100755 android/app/proguard-rules.pro mode change 100644 => 100755 android/app/src/main/AndroidManifest.xml mode change 100644 => 100755 android/app/src/main/assets/index.android.bundle create mode 100755 android/app/src/main/assets/index.android.map mode change 100644 => 100755 android/app/src/main/assets/tpl.html mode change 100644 => 100755 android/app/src/main/java/com/polkawallet/MainActivity.java mode change 100644 => 100755 android/app/src/main/java/com/polkawallet/MainApplication.java mode change 100644 => 100755 android/app/src/main/res/drawable-hdpi/node_modules_reactnavigationstack_dist_views_assets_backicon.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/node_modules_reactnavigationstack_dist_views_assets_backicon.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/node_modules_reactnavigationstack_dist_views_assets_backiconmask.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_assets_assets_bg.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_assets_assets_nav_0.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_assets_assets_nav_code.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_assets_assets_nav_title.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_assets_assets_title_line.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_assets_logo.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_assets_menu_create.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_assets_menu_line.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_assets_menu_scan.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_assets_nextstep.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_assets_sweep_code_line.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_assets_sweep_code_return.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_about_logo.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_about_return.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_addaddresses_code.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_addaddresses_save.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_addresses_add.png rename src/images/Assets/coin_details/kuang.png => android/app/src/main/res/drawable-mdpi/src_assets_images_public_addresses_nav_go.png (53%) mode change 100644 => 100755 create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_assets_btc_down.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_assets_btc_receive.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_assets_btc_send.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_assets_btc_up.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_assets_dark.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_change_button.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_copy.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_democrscy_dark.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_dontscreen.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_eye.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_icon1.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_icon2.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_pro_about.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_pro_addre.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_profile.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_prosetting.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_set.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_staking_dark.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_public_success.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_staking_demccrscy_time_icon.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_staking_staking_nav_bg.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_staking_staking_nomin.png create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_staking_staking_stake_icon.png rename src/images/Profile/Addresses.png => android/app/src/main/res/drawable-mdpi/src_assets_images_staking_staking_top_bg.png (50%) create mode 100755 android/app/src/main/res/drawable-mdpi/src_assets_images_staking_staking_top_bg_no.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_assets_coin_details_down.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_assets_coin_details_receive.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_assets_coin_details_send.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_assets_coin_details_up.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_assets_copy.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_assets_create_account_back.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_assets_create_account_copy.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_assets_create_account_next.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_assets_dot.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_assets_logo.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_assets_qrbutton.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_assets_right_menu_create_account.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_assets_right_menu_scan.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_assets_rightmenu.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_assets_transfer_address.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_assets_transfer_camera.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_assets_transfer_eye.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_assets_transfer_successed.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_bottom_assetc_icon.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_bottom_democrscy_icon.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_bottom_profile_icon.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_bottom_staking_icon.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_democracy_green_ellipse.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_democracy_red_ellipse.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_democracy_time.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_profile_about.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_profile_addresses.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_profile_next.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_profile_secondary_add_address.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_profile_secondary_camera.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_profile_secondary_logo.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_profile_settings.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_staking_back.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_staking_branch.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_staking_greysharp.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_staking_loss.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_staking_profit.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_staking_setprefs.png mode change 100644 => 100755 android/app/src/main/res/drawable-mdpi/src_images_staking_whitesharp.png mode change 100644 => 100755 android/app/src/main/res/drawable-xhdpi/node_modules_reactnavigationstack_dist_views_assets_backicon.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_assets_assets_bg.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_assets_assets_nav_0.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_assets_assets_nav_code.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_assets_assets_nav_title.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_assets_assets_title_line.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_assets_logo.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_assets_menu_create.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_assets_menu_line.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_assets_menu_scan.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_assets_nextstep.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_assets_sweep_code_line.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_assets_sweep_code_return.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_about_logo.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_about_return.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_addaddresses_code.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_addaddresses_save.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_addresses_add.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_addresses_nav_go.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_assets_btc_down.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_assets_btc_receive.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_assets_btc_send.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_assets_btc_up.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_assets_dark.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_change_button.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_copy.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_democrscy_dark.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_dontscreen.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_eye.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_icon1.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_icon2.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_pro_about.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_pro_addre.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_profile.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_prosetting.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_set.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_staking_dark.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_public_success.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_staking_demccrscy_time_icon.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_staking_staking_nav_bg.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_staking_staking_nomin.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_staking_staking_stake_icon.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_staking_staking_top_bg.png create mode 100755 android/app/src/main/res/drawable-xhdpi/src_assets_images_staking_staking_top_bg_no.png mode change 100644 => 100755 android/app/src/main/res/drawable-xxhdpi/node_modules_reactnavigationstack_dist_views_assets_backicon.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_assets_assets_bg.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_assets_assets_nav_0.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_assets_assets_nav_code.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_assets_assets_nav_title.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_assets_assets_title_line.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_assets_logo.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_assets_menu_create.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_assets_menu_line.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_assets_menu_scan.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_assets_nextstep.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_assets_sweep_code_line.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_assets_sweep_code_return.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_about_logo.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_about_return.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_addaddresses_code.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_addaddresses_save.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_addresses_add.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_addresses_nav_go.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_assets_btc_down.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_assets_btc_receive.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_assets_btc_send.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_assets_btc_up.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_assets_dark.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_change_button.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_copy.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_democrscy_dark.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_dontscreen.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_eye.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_icon1.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_icon2.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_pro_about.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_pro_addre.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_profile.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_prosetting.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_set.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_staking_dark.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_public_success.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_staking_demccrscy_time_icon.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_staking_staking_nav_bg.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_staking_staking_nomin.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_staking_staking_stake_icon.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_staking_staking_top_bg.png create mode 100755 android/app/src/main/res/drawable-xxhdpi/src_assets_images_staking_staking_top_bg_no.png mode change 100644 => 100755 android/app/src/main/res/drawable-xxxhdpi/node_modules_reactnavigationstack_dist_views_assets_backicon.png mode change 100644 => 100755 android/app/src/main/res/mipmap-hdpi/ic_launcher.png mode change 100644 => 100755 android/app/src/main/res/mipmap-ldpi/ic_launcher.png mode change 100644 => 100755 android/app/src/main/res/mipmap-mdpi/ic_launcher.png mode change 100644 => 100755 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png mode change 100644 => 100755 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png mode change 100644 => 100755 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/raw/node_modules_nativeecharts_src_components_echarts_tpl.html mode change 100644 => 100755 android/app/src/main/res/values/strings.xml mode change 100644 => 100755 android/app/src/main/res/values/styles.xml mode change 100644 => 100755 android/build.gradle mode change 100644 => 100755 android/gradle.properties mode change 100644 => 100755 android/gradle/wrapper/gradle-wrapper.jar mode change 100644 => 100755 android/gradle/wrapper/gradle-wrapper.properties mode change 100644 => 100755 android/gradlew mode change 100644 => 100755 android/gradlew.bat mode change 100644 => 100755 android/keystores/BUCK mode change 100644 => 100755 android/keystores/debug.keystore.properties mode change 100644 => 100755 android/settings.gradle mode change 100644 => 100755 app.json create mode 100755 babel.config.js mode change 100644 => 100755 index.js mode change 100644 => 100755 ios/Polkawallet-tvOS/Info.plist mode change 100644 => 100755 ios/Polkawallet-tvOSTests/Info.plist mode change 100644 => 100755 ios/Polkawallet.xcodeproj/project.pbxproj mode change 100644 => 100755 ios/Polkawallet.xcodeproj/xcshareddata/xcschemes/Polkawallet-tvOS.xcscheme mode change 100644 => 100755 ios/Polkawallet.xcodeproj/xcshareddata/xcschemes/Polkawallet.xcscheme mode change 100644 => 100755 ios/Polkawallet/AppDelegate.h mode change 100644 => 100755 ios/Polkawallet/AppDelegate.m mode change 100644 => 100755 ios/Polkawallet/Base.lproj/LaunchScreen.xib mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/AppIcon.appiconset/Contents.json mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/AppIcon.appiconset/icon-1024@1x.png mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/AppIcon.appiconset/icon-20@2x.png mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/AppIcon.appiconset/icon-20@3x.png mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/AppIcon.appiconset/icon-29@2x.png mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/AppIcon.appiconset/icon-29@3x.png mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/AppIcon.appiconset/icon-40@2x.png mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/AppIcon.appiconset/icon-40@3x.png mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/AppIcon.appiconset/icon-60@2x.png mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/AppIcon.appiconset/icon-60@3x.png mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/Contents.json mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/LaunchImage.launchimage/Contents.json mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/LaunchImage.launchimage/Start_page1125x2436.jpg mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/LaunchImage.launchimage/Start_page1242x2208-1.jpg mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/LaunchImage.launchimage/Start_page1242x2208.jpg mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/LaunchImage.launchimage/Start_page1242x2688.jpg mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/LaunchImage.launchimage/Start_page320x480.jpg mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/LaunchImage.launchimage/Start_page640x1136-1.jpg mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/LaunchImage.launchimage/Start_page640x1136.jpg mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/LaunchImage.launchimage/Start_page640x960.jpg mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/LaunchImage.launchimage/Start_page750x1334.jpg mode change 100644 => 100755 ios/Polkawallet/Images.xcassets/LaunchImage.launchimage/Start_page828x1792.jpg mode change 100644 => 100755 ios/Polkawallet/Info.plist create mode 100644 ios/Polkawallet/Polkawallet.entitlements mode change 100644 => 100755 ios/Polkawallet/main.m mode change 100644 => 100755 ios/PolkawalletTests/Info.plist mode change 100644 => 100755 ios/PolkawalletTests/PolkawalletTests.m mode change 100644 => 100755 metro.config.js mode change 100644 => 100755 package-lock.json mode change 100644 => 100755 package.json mode change 100644 => 100755 postinstall.sh create mode 100755 release_ios/assets/src/assets/images/Assets/Assets_bg.png create mode 100755 release_ios/assets/src/assets/images/Assets/Assets_bg@2x.png create mode 100755 release_ios/assets/src/assets/images/Assets/Assets_bg@3x.png create mode 100755 release_ios/assets/src/assets/images/Assets/Assets_nav_0.png create mode 100755 release_ios/assets/src/assets/images/Assets/Assets_nav_0@2x.png create mode 100755 release_ios/assets/src/assets/images/Assets/Assets_nav_0@3x.png create mode 100755 release_ios/assets/src/assets/images/Assets/Assets_nav_code.png create mode 100755 release_ios/assets/src/assets/images/Assets/Assets_nav_code@2x.png create mode 100755 release_ios/assets/src/assets/images/Assets/Assets_nav_code@3x.png create mode 100755 release_ios/assets/src/assets/images/Assets/Assets_nav_title.png create mode 100755 release_ios/assets/src/assets/images/Assets/Assets_nav_title@2x.png create mode 100755 release_ios/assets/src/assets/images/Assets/Assets_nav_title@3x.png create mode 100755 release_ios/assets/src/assets/images/Assets/Assets_title_line.png create mode 100755 release_ios/assets/src/assets/images/Assets/Assets_title_line@2x.png create mode 100755 release_ios/assets/src/assets/images/Assets/Assets_title_line@3x.png create mode 100755 release_ios/assets/src/assets/images/Assets/Menu_Create.png create mode 100755 release_ios/assets/src/assets/images/Assets/Menu_Create@2x.png create mode 100755 release_ios/assets/src/assets/images/Assets/Menu_Create@3x.png create mode 100755 release_ios/assets/src/assets/images/Assets/Menu_line.png create mode 100755 release_ios/assets/src/assets/images/Assets/Menu_line@2x.png create mode 100755 release_ios/assets/src/assets/images/Assets/Menu_line@3x.png create mode 100755 release_ios/assets/src/assets/images/Assets/Menu_scan.png create mode 100755 release_ios/assets/src/assets/images/Assets/Menu_scan@2x.png create mode 100755 release_ios/assets/src/assets/images/Assets/Menu_scan@3x.png create mode 100755 release_ios/assets/src/assets/images/Assets/Nextstep.png create mode 100755 release_ios/assets/src/assets/images/Assets/Nextstep@2x.png create mode 100755 release_ios/assets/src/assets/images/Assets/Nextstep@3x.png create mode 100755 release_ios/assets/src/assets/images/Assets/logo.png create mode 100755 release_ios/assets/src/assets/images/Assets/logo@2x.png create mode 100755 release_ios/assets/src/assets/images/Assets/logo@3x.png create mode 100755 release_ios/assets/src/assets/images/Assets/sweep_code_line.png create mode 100755 release_ios/assets/src/assets/images/Assets/sweep_code_line@2x.png create mode 100755 release_ios/assets/src/assets/images/Assets/sweep_code_line@3x.png create mode 100755 release_ios/assets/src/assets/images/Assets/sweep_code_return.png create mode 100755 release_ios/assets/src/assets/images/Assets/sweep_code_return@2x.png create mode 100755 release_ios/assets/src/assets/images/Assets/sweep_code_return@3x.png create mode 100755 release_ios/assets/src/assets/images/public/About_logo.png create mode 100755 release_ios/assets/src/assets/images/public/About_logo@2x.png create mode 100755 release_ios/assets/src/assets/images/public/About_logo@3x.png create mode 100755 release_ios/assets/src/assets/images/public/About_return.png create mode 100755 release_ios/assets/src/assets/images/public/About_return@2x.png create mode 100755 release_ios/assets/src/assets/images/public/About_return@3x.png create mode 100755 release_ios/assets/src/assets/images/public/Assets_dark.png create mode 100755 release_ios/assets/src/assets/images/public/Assets_dark@2x.png create mode 100755 release_ios/assets/src/assets/images/public/Assets_dark@3x.png create mode 100755 release_ios/assets/src/assets/images/public/Change_button.png create mode 100755 release_ios/assets/src/assets/images/public/Change_button@2x.png create mode 100755 release_ios/assets/src/assets/images/public/Change_button@3x.png create mode 100755 release_ios/assets/src/assets/images/public/Democrscy_dark.png create mode 100755 release_ios/assets/src/assets/images/public/Democrscy_dark@2x.png create mode 100755 release_ios/assets/src/assets/images/public/Democrscy_dark@3x.png create mode 100755 release_ios/assets/src/assets/images/public/Pro-Setting.png create mode 100755 release_ios/assets/src/assets/images/public/Pro-Setting@2x.png create mode 100755 release_ios/assets/src/assets/images/public/Pro-Setting@3x.png create mode 100755 release_ios/assets/src/assets/images/public/Pro_Addre.png create mode 100755 release_ios/assets/src/assets/images/public/Pro_Addre@2x.png create mode 100755 release_ios/assets/src/assets/images/public/Pro_Addre@3x.png create mode 100755 release_ios/assets/src/assets/images/public/Pro_about.png create mode 100755 release_ios/assets/src/assets/images/public/Pro_about@2x.png create mode 100755 release_ios/assets/src/assets/images/public/Pro_about@3x.png create mode 100755 release_ios/assets/src/assets/images/public/Profile.png create mode 100755 release_ios/assets/src/assets/images/public/Profile@2x.png create mode 100755 release_ios/assets/src/assets/images/public/Profile@3x.png create mode 100755 release_ios/assets/src/assets/images/public/Staking_dark.png create mode 100755 release_ios/assets/src/assets/images/public/Staking_dark@2x.png create mode 100755 release_ios/assets/src/assets/images/public/Staking_dark@3x.png create mode 100755 release_ios/assets/src/assets/images/public/addaddresses_code.png create mode 100755 release_ios/assets/src/assets/images/public/addaddresses_code@2x.png create mode 100755 release_ios/assets/src/assets/images/public/addaddresses_code@3x.png create mode 100755 release_ios/assets/src/assets/images/public/addaddresses_save.png create mode 100755 release_ios/assets/src/assets/images/public/addaddresses_save@2x.png create mode 100755 release_ios/assets/src/assets/images/public/addaddresses_save@3x.png create mode 100755 release_ios/assets/src/assets/images/public/addresses_add.png create mode 100755 release_ios/assets/src/assets/images/public/addresses_add@2x.png create mode 100755 release_ios/assets/src/assets/images/public/addresses_add@3x.png create mode 100755 release_ios/assets/src/assets/images/public/addresses_nav_go.png create mode 100755 release_ios/assets/src/assets/images/public/addresses_nav_go@2x.png create mode 100755 release_ios/assets/src/assets/images/public/addresses_nav_go@3x.png create mode 100755 release_ios/assets/src/assets/images/public/assets_btc_down.png create mode 100755 release_ios/assets/src/assets/images/public/assets_btc_down@2x.png create mode 100755 release_ios/assets/src/assets/images/public/assets_btc_down@3x.png create mode 100755 release_ios/assets/src/assets/images/public/assets_btc_receive.png create mode 100755 release_ios/assets/src/assets/images/public/assets_btc_receive@2x.png create mode 100755 release_ios/assets/src/assets/images/public/assets_btc_receive@3x.png create mode 100755 release_ios/assets/src/assets/images/public/assets_btc_send.png create mode 100755 release_ios/assets/src/assets/images/public/assets_btc_send@2x.png create mode 100755 release_ios/assets/src/assets/images/public/assets_btc_send@3x.png create mode 100755 release_ios/assets/src/assets/images/public/assets_btc_up.png create mode 100755 release_ios/assets/src/assets/images/public/assets_btc_up@2x.png create mode 100755 release_ios/assets/src/assets/images/public/assets_btc_up@3x.png create mode 100755 release_ios/assets/src/assets/images/public/copy.png create mode 100755 release_ios/assets/src/assets/images/public/copy@2x.png create mode 100755 release_ios/assets/src/assets/images/public/copy@3x.png create mode 100755 release_ios/assets/src/assets/images/public/dontscreen.png create mode 100755 release_ios/assets/src/assets/images/public/dontscreen@2x.png create mode 100755 release_ios/assets/src/assets/images/public/dontscreen@3x.png create mode 100755 release_ios/assets/src/assets/images/public/eye.png create mode 100755 release_ios/assets/src/assets/images/public/eye@2x.png create mode 100755 release_ios/assets/src/assets/images/public/eye@3x.png create mode 100755 release_ios/assets/src/assets/images/public/icon1.png create mode 100755 release_ios/assets/src/assets/images/public/icon1@2x.png create mode 100755 release_ios/assets/src/assets/images/public/icon1@3x.png create mode 100755 release_ios/assets/src/assets/images/public/icon2.png create mode 100755 release_ios/assets/src/assets/images/public/icon2@2x.png create mode 100755 release_ios/assets/src/assets/images/public/icon2@3x.png create mode 100755 release_ios/assets/src/assets/images/public/set.png create mode 100755 release_ios/assets/src/assets/images/public/set@2x.png create mode 100755 release_ios/assets/src/assets/images/public/set@3x.png create mode 100755 release_ios/assets/src/assets/images/public/success.png create mode 100755 release_ios/assets/src/assets/images/public/success@2x.png create mode 100755 release_ios/assets/src/assets/images/public/success@3x.png create mode 100755 release_ios/assets/src/assets/images/staking/Demccrscy_time_icon.png create mode 100755 release_ios/assets/src/assets/images/staking/Demccrscy_time_icon@2x.png create mode 100755 release_ios/assets/src/assets/images/staking/Demccrscy_time_icon@3x.png create mode 100755 release_ios/assets/src/assets/images/staking/staking_nav_bg.png create mode 100755 release_ios/assets/src/assets/images/staking/staking_nav_bg@2x.png create mode 100755 release_ios/assets/src/assets/images/staking/staking_nav_bg@3x.png create mode 100755 release_ios/assets/src/assets/images/staking/staking_nomin.png create mode 100755 release_ios/assets/src/assets/images/staking/staking_nomin@2x.png create mode 100755 release_ios/assets/src/assets/images/staking/staking_nomin@3x.png create mode 100755 release_ios/assets/src/assets/images/staking/staking_stake_icon.png create mode 100755 release_ios/assets/src/assets/images/staking/staking_stake_icon@2x.png create mode 100755 release_ios/assets/src/assets/images/staking/staking_stake_icon@3x.png create mode 100755 release_ios/assets/src/assets/images/staking/staking_top_bg_no.png create mode 100755 release_ios/assets/src/assets/images/staking/staking_top_bg_no@2x.png create mode 100755 release_ios/assets/src/assets/images/staking/staking_top_bg_no@3x.png delete mode 100644 release_ios/assets/src/images/Assets/Create_Account/back.png delete mode 100644 release_ios/assets/src/images/Assets/Create_Account/copy.png delete mode 100644 release_ios/assets/src/images/Assets/Create_Account/next.png delete mode 100644 release_ios/assets/src/images/Assets/DOT.png delete mode 100644 release_ios/assets/src/images/Assets/QrButton.png delete mode 100644 release_ios/assets/src/images/Assets/coin_details/down.png delete mode 100644 release_ios/assets/src/images/Assets/coin_details/receive.png delete mode 100644 release_ios/assets/src/images/Assets/coin_details/send.png delete mode 100644 release_ios/assets/src/images/Assets/coin_details/up.png delete mode 100644 release_ios/assets/src/images/Assets/copy.png delete mode 100644 release_ios/assets/src/images/Assets/logo.png delete mode 100644 release_ios/assets/src/images/Assets/rightMenu.png delete mode 100644 release_ios/assets/src/images/Assets/right_menu/Create_Account.png delete mode 100644 release_ios/assets/src/images/Assets/share.png delete mode 100644 release_ios/assets/src/images/Assets/transfer/eye.png delete mode 100644 release_ios/assets/src/images/Assets/transfer/successed.png delete mode 100644 release_ios/assets/src/images/Bottom/assetc_icon.png delete mode 100644 release_ios/assets/src/images/Bottom/profile_icon.png delete mode 100644 release_ios/assets/src/images/Democracy/green_ellipse.png delete mode 100644 release_ios/assets/src/images/Democracy/red_ellipse.png delete mode 100644 release_ios/assets/src/images/Democracy/time.png delete mode 100644 release_ios/assets/src/images/Profile/next.png delete mode 100644 release_ios/assets/src/images/Staking/accountIMG.png delete mode 100644 release_ios/assets/src/images/Staking/branch.png delete mode 100644 release_ios/assets/src/images/Staking/greysharp.png delete mode 100644 release_ios/assets/src/images/Staking/loss.png delete mode 100644 release_ios/assets/src/images/Staking/profit.png delete mode 100644 release_ios/assets/src/images/Staking/whitesharp.png mode change 100644 => 100755 shim.js create mode 100755 src/assets/images/Assets/Assets_Signal_bg.png create mode 100755 src/assets/images/Assets/Assets_Signal_bg@2x.png create mode 100755 src/assets/images/Assets/Assets_Signal_bg@3x.png create mode 100755 src/assets/images/Assets/Assets_bg.png create mode 100755 src/assets/images/Assets/Assets_bg@2x.png create mode 100755 src/assets/images/Assets/Assets_bg@3x.png create mode 100755 src/assets/images/Assets/Assets_nav_0.png create mode 100755 src/assets/images/Assets/Assets_nav_0@2x.png create mode 100755 src/assets/images/Assets/Assets_nav_0@3x.png create mode 100755 src/assets/images/Assets/Assets_nav_1.png create mode 100755 src/assets/images/Assets/Assets_nav_1@2x.png create mode 100755 src/assets/images/Assets/Assets_nav_1@3x.png create mode 100755 src/assets/images/Assets/Assets_nav_2.png create mode 100755 src/assets/images/Assets/Assets_nav_2@2x.png create mode 100755 src/assets/images/Assets/Assets_nav_2@3x.png create mode 100755 src/assets/images/Assets/Assets_nav_3.png create mode 100755 src/assets/images/Assets/Assets_nav_3@2x.png create mode 100755 src/assets/images/Assets/Assets_nav_3@3x.png create mode 100755 src/assets/images/Assets/Assets_nav_4.png create mode 100755 src/assets/images/Assets/Assets_nav_4@2x.png create mode 100755 src/assets/images/Assets/Assets_nav_4@3x.png create mode 100755 src/assets/images/Assets/Assets_nav_bg.png create mode 100755 src/assets/images/Assets/Assets_nav_bg@2x.png create mode 100755 src/assets/images/Assets/Assets_nav_bg@3x.png create mode 100755 src/assets/images/Assets/Assets_nav_code.png create mode 100755 src/assets/images/Assets/Assets_nav_code@2x.png create mode 100755 src/assets/images/Assets/Assets_nav_code@3x.png create mode 100755 src/assets/images/Assets/Assets_nav_plus.png create mode 100755 src/assets/images/Assets/Assets_nav_plus@2x.png create mode 100755 src/assets/images/Assets/Assets_nav_plus@3x.png create mode 100755 src/assets/images/Assets/Assets_nav_title.png create mode 100755 src/assets/images/Assets/Assets_nav_title@2x.png create mode 100755 src/assets/images/Assets/Assets_nav_title@3x.png create mode 100755 src/assets/images/Assets/Assets_title_bg.png create mode 100755 src/assets/images/Assets/Assets_title_bg@2x.png create mode 100755 src/assets/images/Assets/Assets_title_bg@3x.png create mode 100755 src/assets/images/Assets/Assets_title_line.png create mode 100755 src/assets/images/Assets/Assets_title_line@2x.png create mode 100755 src/assets/images/Assets/Assets_title_line@3x.png create mode 100755 src/assets/images/Assets/Menu_Block.png create mode 100755 src/assets/images/Assets/Menu_Block@2x.png create mode 100755 src/assets/images/Assets/Menu_Block@3x.png create mode 100755 src/assets/images/Assets/Menu_Chain.png create mode 100755 src/assets/images/Assets/Menu_Chain@2x.png create mode 100755 src/assets/images/Assets/Menu_Chain@3x.png create mode 100755 src/assets/images/Assets/Menu_Create.png create mode 100755 src/assets/images/Assets/Menu_Create@2x.png create mode 100755 src/assets/images/Assets/Menu_Create@3x.png create mode 100755 src/assets/images/Assets/Menu_Extrin.png create mode 100755 src/assets/images/Assets/Menu_Extrin@2x.png create mode 100755 src/assets/images/Assets/Menu_Extrin@3x.png create mode 100755 src/assets/images/Assets/Menu_help.png create mode 100755 src/assets/images/Assets/Menu_help@2x.png create mode 100755 src/assets/images/Assets/Menu_help@3x.png create mode 100755 src/assets/images/Assets/Menu_line.png create mode 100755 src/assets/images/Assets/Menu_line@2x.png create mode 100755 src/assets/images/Assets/Menu_line@3x.png create mode 100755 src/assets/images/Assets/Menu_portrait.png create mode 100755 src/assets/images/Assets/Menu_portrait@2x.png create mode 100755 src/assets/images/Assets/Menu_portrait@3x.png create mode 100755 src/assets/images/Assets/Menu_scan.png create mode 100755 src/assets/images/Assets/Menu_scan@2x.png create mode 100755 src/assets/images/Assets/Menu_scan@3x.png create mode 100755 src/assets/images/Assets/Nextstep.png create mode 100755 src/assets/images/Assets/Nextstep@2x.png create mode 100755 src/assets/images/Assets/Nextstep@3x.png create mode 100755 src/assets/images/Assets/logo.png create mode 100755 src/assets/images/Assets/logo@2x.png create mode 100755 src/assets/images/Assets/logo@3x.png create mode 100755 src/assets/images/Assets/sweep_code_bg.png create mode 100755 src/assets/images/Assets/sweep_code_bg@2x.png create mode 100755 src/assets/images/Assets/sweep_code_bg@3x.png create mode 100755 src/assets/images/Assets/sweep_code_line.png create mode 100755 src/assets/images/Assets/sweep_code_line@2x.png create mode 100755 src/assets/images/Assets/sweep_code_line@3x.png create mode 100755 src/assets/images/Assets/sweep_code_nav_bg.png create mode 100755 src/assets/images/Assets/sweep_code_nav_bg@2x.png create mode 100755 src/assets/images/Assets/sweep_code_nav_bg@3x.png create mode 100755 src/assets/images/Assets/sweep_code_return.png create mode 100755 src/assets/images/Assets/sweep_code_return@2x.png create mode 100755 src/assets/images/Assets/sweep_code_return@3x.png create mode 100755 src/assets/images/Assets/sweep_code_share.png create mode 100755 src/assets/images/Assets/sweep_code_share@2x.png create mode 100755 src/assets/images/Assets/sweep_code_share@3x.png create mode 100755 src/assets/images/Assets/sweep_code_shdow.png create mode 100755 src/assets/images/Assets/sweep_code_shdow@2x.png create mode 100755 src/assets/images/Assets/sweep_code_shdow@3x.png create mode 100755 src/assets/images/public/About_logo.png create mode 100755 src/assets/images/public/About_logo@2x.png create mode 100755 src/assets/images/public/About_logo@3x.png create mode 100755 src/assets/images/public/About_return.png create mode 100755 src/assets/images/public/About_return@2x.png create mode 100755 src/assets/images/public/About_return@3x.png create mode 100755 src/assets/images/public/Addresses_return.png create mode 100755 src/assets/images/public/Addresses_return@2x.png create mode 100755 src/assets/images/public/Addresses_return@3x.png create mode 100755 src/assets/images/public/Assets.png create mode 100755 src/assets/images/public/Assets@2x.png create mode 100755 src/assets/images/public/Assets@3x.png create mode 100755 src/assets/images/public/Assets_dark.png create mode 100755 src/assets/images/public/Assets_dark@2x.png create mode 100755 src/assets/images/public/Assets_dark@3x.png create mode 100755 src/assets/images/public/Change_button.png create mode 100755 src/assets/images/public/Change_button@2x.png create mode 100755 src/assets/images/public/Change_button@3x.png create mode 100755 src/assets/images/public/Democrscy.png create mode 100755 src/assets/images/public/Democrscy@2x.png create mode 100755 src/assets/images/public/Democrscy@3x.png create mode 100755 src/assets/images/public/Democrscy_dark.png create mode 100755 src/assets/images/public/Democrscy_dark@2x.png create mode 100755 src/assets/images/public/Democrscy_dark@3x.png create mode 100755 src/assets/images/public/Pro-Setting.png create mode 100755 src/assets/images/public/Pro-Setting@2x.png create mode 100755 src/assets/images/public/Pro-Setting@3x.png create mode 100755 src/assets/images/public/Pro_Addre.png create mode 100755 src/assets/images/public/Pro_Addre@2x.png create mode 100755 src/assets/images/public/Pro_Addre@3x.png create mode 100755 src/assets/images/public/Pro_about.png create mode 100755 src/assets/images/public/Pro_about@2x.png create mode 100755 src/assets/images/public/Pro_about@3x.png create mode 100755 src/assets/images/public/Profile.png create mode 100755 src/assets/images/public/Profile@2x.png create mode 100755 src/assets/images/public/Profile@3x.png create mode 100755 src/assets/images/public/Profile_dark.png create mode 100755 src/assets/images/public/Profile_dark@2x.png create mode 100755 src/assets/images/public/Profile_dark@3x.png create mode 100755 src/assets/images/public/Staking.png create mode 100755 src/assets/images/public/Staking@2x.png create mode 100755 src/assets/images/public/Staking@3x.png create mode 100755 src/assets/images/public/Staking_dark.png create mode 100755 src/assets/images/public/Staking_dark@2x.png create mode 100755 src/assets/images/public/Staking_dark@3x.png create mode 100755 src/assets/images/public/addaddresses_code.png create mode 100755 src/assets/images/public/addaddresses_code@2x.png create mode 100755 src/assets/images/public/addaddresses_code@3x.png create mode 100755 src/assets/images/public/addaddresses_save.png create mode 100755 src/assets/images/public/addaddresses_save@2x.png create mode 100755 src/assets/images/public/addaddresses_save@3x.png create mode 100755 src/assets/images/public/addresses_add.png create mode 100755 src/assets/images/public/addresses_add@2x.png create mode 100755 src/assets/images/public/addresses_add@3x.png create mode 100755 src/assets/images/public/addresses_nav_go.png create mode 100755 src/assets/images/public/addresses_nav_go@2x.png create mode 100755 src/assets/images/public/addresses_nav_go@3x.png create mode 100755 src/assets/images/public/assets_btc_down.png create mode 100755 src/assets/images/public/assets_btc_down@2x.png create mode 100755 src/assets/images/public/assets_btc_down@3x.png create mode 100755 src/assets/images/public/assets_btc_fail.png create mode 100755 src/assets/images/public/assets_btc_fail@2x.png create mode 100755 src/assets/images/public/assets_btc_fail@3x.png create mode 100755 src/assets/images/public/assets_btc_receive.png create mode 100755 src/assets/images/public/assets_btc_receive@2x.png create mode 100755 src/assets/images/public/assets_btc_receive@3x.png create mode 100755 src/assets/images/public/assets_btc_send.png create mode 100755 src/assets/images/public/assets_btc_send@2x.png create mode 100755 src/assets/images/public/assets_btc_send@3x.png create mode 100755 src/assets/images/public/assets_btc_up.png create mode 100755 src/assets/images/public/assets_btc_up@2x.png create mode 100755 src/assets/images/public/assets_btc_up@3x.png create mode 100755 src/assets/images/public/copy.png create mode 100755 src/assets/images/public/copy@2x.png create mode 100755 src/assets/images/public/copy@3x.png create mode 100755 src/assets/images/public/dontscreen.png create mode 100755 src/assets/images/public/dontscreen@2x.png create mode 100755 src/assets/images/public/dontscreen@3x.png create mode 100755 src/assets/images/public/eye.png create mode 100755 src/assets/images/public/eye@2x.png create mode 100755 src/assets/images/public/eye@3x.png create mode 100755 src/assets/images/public/icon1.png create mode 100755 src/assets/images/public/icon1@2x.png create mode 100755 src/assets/images/public/icon1@3x.png create mode 100755 src/assets/images/public/icon2.png create mode 100755 src/assets/images/public/icon2@2x.png create mode 100755 src/assets/images/public/icon2@3x.png create mode 100755 src/assets/images/public/set.png create mode 100755 src/assets/images/public/set@2x.png create mode 100755 src/assets/images/public/set@3x.png create mode 100755 src/assets/images/public/success.png create mode 100755 src/assets/images/public/success@2x.png create mode 100755 src/assets/images/public/success@3x.png create mode 100755 src/assets/images/staking/Demccrscy_time_icon.png create mode 100755 src/assets/images/staking/Demccrscy_time_icon@2x.png create mode 100755 src/assets/images/staking/Demccrscy_time_icon@3x.png create mode 100755 src/assets/images/staking/or.png create mode 100755 src/assets/images/staking/or@2x.png create mode 100755 src/assets/images/staking/or@3x.png create mode 100755 src/assets/images/staking/staking_Signal_bg.png create mode 100755 src/assets/images/staking/staking_Signal_bg@2x.png create mode 100755 src/assets/images/staking/staking_Signal_bg@3x.png create mode 100755 src/assets/images/staking/staking_nav_1.png create mode 100755 src/assets/images/staking/staking_nav_1@2x.png create mode 100755 src/assets/images/staking/staking_nav_1@3x.png create mode 100755 src/assets/images/staking/staking_nav_bg.png create mode 100755 src/assets/images/staking/staking_nav_bg@2x.png create mode 100755 src/assets/images/staking/staking_nav_bg@3x.png create mode 100755 src/assets/images/staking/staking_nomin.png create mode 100755 src/assets/images/staking/staking_nomin@2x.png create mode 100755 src/assets/images/staking/staking_nomin@3x.png create mode 100755 src/assets/images/staking/staking_stake_icon.png create mode 100755 src/assets/images/staking/staking_stake_icon@2x.png create mode 100755 src/assets/images/staking/staking_stake_icon@3x.png create mode 100755 src/assets/images/staking/staking_tab_bg.png create mode 100755 src/assets/images/staking/staking_tab_bg@2x.png create mode 100755 src/assets/images/staking/staking_tab_bg@3x.png create mode 100755 src/assets/images/staking/staking_title_bg.png create mode 100755 src/assets/images/staking/staking_title_bg@2x.png create mode 100755 src/assets/images/staking/staking_title_bg@3x.png rename src/{images/Profile/Notifications.png => assets/images/staking/staking_top_bg.png} (50%) create mode 100755 src/assets/images/staking/staking_top_bg@2x.png create mode 100755 src/assets/images/staking/staking_top_bg@3x.png create mode 100755 src/assets/images/staking/staking_top_bg_no.png create mode 100755 src/assets/images/staking/staking_top_bg_no@2x.png create mode 100755 src/assets/images/staking/staking_top_bg_no@3x.png delete mode 100644 src/code/Assets/Assets.js delete mode 100644 src/code/Assets/secondary/Backup_Account.js delete mode 100644 src/code/Assets/secondary/Create_Account.js delete mode 100644 src/code/Assets/secondary/QR_Code.js delete mode 100644 src/code/Assets/secondary/Transfer/Receive.js delete mode 100644 src/code/Assets/secondary/Transfer/Transfer_details.js delete mode 100644 src/code/Assets/secondary/Transfer/make_transfer.js delete mode 100644 src/code/Assets/secondary/Transfer/transfer.js delete mode 100644 src/code/Assets/secondary/camera.js delete mode 100644 src/code/Assets/secondary/coin_details.js delete mode 100644 src/code/Assets/secondary/right_menu.js delete mode 100644 src/code/Assets/secondary/shiyan.js delete mode 100644 src/code/CrossChain/CrossChain.js delete mode 100644 src/code/Democracy/Democracy.js delete mode 100644 src/code/Democracy/proposals.js delete mode 100644 src/code/Democracy/referendums.js delete mode 100644 src/code/Democracy/referendums/Active.js delete mode 100644 src/code/Democracy/referendums/History.js delete mode 100644 src/code/Democracy/referendums/MyRecord.js delete mode 100644 src/code/Democracy/secondary/NayorAye.js delete mode 100644 src/code/Profile/Profile.js delete mode 100644 src/code/Profile/secondary/About.js delete mode 100644 src/code/Profile/secondary/Addresses.js delete mode 100644 src/code/Profile/secondary/Change/Change_Name.js delete mode 100644 src/code/Profile/secondary/Change/Change_Password.js delete mode 100644 src/code/Profile/secondary/Manage_Account.js delete mode 100644 src/code/Profile/secondary/Settings.js delete mode 100644 src/code/Profile/secondary/Settings/Gesture.js delete mode 100644 src/code/Profile/secondary/Settings/Set_Node.js delete mode 100644 src/code/Profile/secondary/add_address.js delete mode 100644 src/code/Profile/secondary/address_information.js delete mode 100644 src/code/Staking/Staking.js delete mode 100644 src/code/Staking/secondary/Validator_Info.js delete mode 100644 src/code/Staking/secondary/nominate.js delete mode 100644 src/code/Staking/secondary/preferences.js delete mode 100644 src/code/Staking/secondary/stake.js delete mode 100644 src/code/Staking/secondary/unnominate.js delete mode 100644 src/code/Staking/secondary/unstake.js delete mode 100644 src/code/Start.js delete mode 100644 src/code/Tabbed_Navigation.js delete mode 100644 src/code/bottom.js create mode 100755 src/components/Active.js create mode 100755 src/components/CoinRow.js create mode 100755 src/components/Header.js create mode 100755 src/components/Loading.js create mode 100755 src/components/LoadingUtil.js create mode 100755 src/components/ProposalsRow.js create mode 100755 src/components/RNKeyboardAvoidView.js create mode 100755 src/components/RNPicker.js create mode 100755 src/components/bottom.js delete mode 100644 src/images/Assets/Create_Account/back.png delete mode 100644 src/images/Assets/Create_Account/copy.png delete mode 100644 src/images/Assets/Create_Account/next.png delete mode 100644 src/images/Assets/DOT.png delete mode 100644 src/images/Assets/QrButton.png delete mode 100644 src/images/Assets/accountIMG.png delete mode 100644 src/images/Assets/addAssets.png delete mode 100644 src/images/Assets/coin_details/QR.png delete mode 100644 src/images/Assets/coin_details/account.png delete mode 100644 src/images/Assets/coin_details/books.png delete mode 100644 src/images/Assets/coin_details/down.png delete mode 100644 src/images/Assets/coin_details/eye.png delete mode 100644 src/images/Assets/coin_details/receive.png delete mode 100644 src/images/Assets/coin_details/send.png delete mode 100644 src/images/Assets/coin_details/up.png delete mode 100644 src/images/Assets/copy.png delete mode 100644 src/images/Assets/logo.png delete mode 100644 src/images/Assets/rightMenu.png delete mode 100644 src/images/Assets/right_menu/BlockChain_Explorer.png delete mode 100644 src/images/Assets/right_menu/Chain_State.png delete mode 100644 src/images/Assets/right_menu/Create_Account.png delete mode 100644 src/images/Assets/right_menu/Extrinsics.png delete mode 100644 src/images/Assets/right_menu/Scan.png delete mode 100644 src/images/Assets/right_menu/help.png delete mode 100644 src/images/Assets/round.png delete mode 100644 src/images/Assets/share.png delete mode 100644 src/images/Assets/transfer/address.png delete mode 100644 src/images/Assets/transfer/camera.png delete mode 100644 src/images/Assets/transfer/copy.png delete mode 100644 src/images/Assets/transfer/eye.png delete mode 100644 src/images/Assets/transfer/successed.png delete mode 100644 src/images/Bottom/assetc_icon.png delete mode 100644 src/images/Bottom/crosschain_icon.png delete mode 100644 src/images/Bottom/democrscy_icon.png delete mode 100644 src/images/Bottom/profile_icon.png delete mode 100644 src/images/Bottom/staking_icon.png delete mode 100755 src/images/Democracy/green_ellipse.png delete mode 100755 src/images/Democracy/red_ellipse.png delete mode 100755 src/images/Democracy/time.png delete mode 100755 src/images/Profile/About.png delete mode 100755 src/images/Profile/Settings.png delete mode 100755 src/images/Profile/Support.png delete mode 100644 src/images/Profile/accountIMG.png delete mode 100755 src/images/Profile/more.png delete mode 100755 src/images/Profile/next.png delete mode 100644 src/images/Profile/secondary/add_address.png delete mode 100755 src/images/Profile/secondary/camera.png delete mode 100644 src/images/Profile/secondary/logo.png delete mode 100644 src/images/Staking/SetPrefs.png delete mode 100644 src/images/Staking/accountIMG.png delete mode 100644 src/images/Staking/back.png delete mode 100644 src/images/Staking/bluerund.png delete mode 100644 src/images/Staking/branch.png delete mode 100644 src/images/Staking/greysharp.png delete mode 100644 src/images/Staking/loss.png delete mode 100644 src/images/Staking/profit.png delete mode 100644 src/images/Staking/whitesharp.png create mode 100755 src/locales/en-US/Assets/index.js create mode 100755 src/locales/en-US/Democracy/index.js create mode 100755 src/locales/en-US/Profile/index.js create mode 100755 src/locales/en-US/Staking/index.js create mode 100755 src/locales/en-US/index.js create mode 100755 src/locales/i18n.js create mode 100755 src/locales/zh-CN/Assets/index.js create mode 100755 src/locales/zh-CN/Democracy/index.js create mode 100755 src/locales/zh-CN/Profile/index.js create mode 100755 src/locales/zh-CN/Staking/index.js create mode 100755 src/locales/zh-CN/index.js mode change 100644 => 100755 src/mobx/mobx.js create mode 100755 src/page/Assets/Assets.js create mode 100755 src/page/Assets/secondary/BackupAccount.js create mode 100755 src/page/Assets/secondary/Camera.js create mode 100755 src/page/Assets/secondary/CoinDetails.js create mode 100755 src/page/Assets/secondary/CreateAccount.js create mode 100755 src/page/Assets/secondary/MnemonicWord_1.js create mode 100755 src/page/Assets/secondary/MnemonicWord_2.js create mode 100755 src/page/Assets/secondary/MnemonicWord_3.js create mode 100755 src/page/Assets/secondary/QRCode.js create mode 100755 src/page/Assets/secondary/RightMenu.js create mode 100755 src/page/Assets/secondary/Transfer/MakeTransfer.js create mode 100755 src/page/Assets/secondary/Transfer/Transfer.js create mode 100755 src/page/Assets/secondary/Transfer/TransferDetails.js create mode 100755 src/page/Democracy/Democracy.js create mode 100755 src/page/Democracy/Proposals.js create mode 100755 src/page/Democracy/Referendums.js create mode 100755 src/page/Democracy/secondary/History.js create mode 100755 src/page/Democracy/secondary/NayorAye.js create mode 100755 src/page/Profile/Profile.js create mode 100755 src/page/Profile/secondary/About.js create mode 100755 src/page/Profile/secondary/AddAddress.js create mode 100755 src/page/Profile/secondary/AddressInformation.js create mode 100755 src/page/Profile/secondary/Addresses.js create mode 100755 src/page/Profile/secondary/Change/ChangeName.js create mode 100755 src/page/Profile/secondary/Change/ChangePassword.js create mode 100755 src/page/Profile/secondary/ManageAccount.js create mode 100755 src/page/Profile/secondary/Settings.js create mode 100755 src/page/Profile/secondary/Settings/Gesture.js create mode 100755 src/page/Profile/secondary/Settings/SetNode.js create mode 100755 src/page/Staking/Staking.js create mode 100755 src/page/Staking/secondary/BondAdditional.js create mode 100755 src/page/Staking/secondary/BondFunds.js create mode 100755 src/page/Staking/secondary/Nominate.js create mode 100755 src/page/Staking/secondary/SetSessionKey.js create mode 100755 src/page/Staking/secondary/Stake.js create mode 100755 src/page/Staking/secondary/Unbond.js create mode 100755 src/page/Staking/secondary/Unnominate.js create mode 100755 src/page/Staking/secondary/Unstake.js create mode 100755 src/page/Staking/secondary/ValidatorInfo.js create mode 100755 src/page/TabbedNavigation.js create mode 100755 src/util/Common.js create mode 100755 src/util/DataRepository.js create mode 100755 src/util/error_guard.js delete mode 100644 src/util/formatBalance.ts delete mode 100644 src/util/formatDecimal.ts create mode 100755 src/util/polkadotAPI.js delete mode 100644 src/util/si.ts mode change 100644 => 100755 tsconfig.json mode change 100644 => 100755 update.json create mode 100755 yarn.lock diff --git a/.babelrc b/.babelrc old mode 100644 new mode 100755 index a824f8cc..dc88527f --- a/.babelrc +++ b/.babelrc @@ -1,11 +1,27 @@ { "presets": ["module:metro-react-native-babel-preset"], "plugins": [ - ["@babel/plugin-proposal-decorators", { "legacy": true }], - ["@babel/transform-runtime", { - "helpers": true, - "regenerator": false - }] + [ + "@babel/plugin-transform-flow-strip-types" + ], + [ + "@babel/plugin-proposal-decorators", + { + "legacy": true + } + ], + [ + "@babel/plugin-proposal-class-properties", + { + "loose":true + } + ], + [ + "@babel/transform-runtime", + { + "helpers": true, + "regenerator": false + } + ] ] - } \ No newline at end of file diff --git a/.buckconfig b/.buckconfig old mode 100644 new mode 100755 diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100755 index 00000000..555dbb52 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,945 @@ +module.exports = { + env: { + browser: true, + es6: true + }, + extends: ['eslint:recommended', 'airbnb', 'prettier', 'plugin:prettier/recommended'], + globals: { + Atomics: 'readonly', + SharedArrayBuffer: 'readonly', + document: true, + localStorage: true, + window: true, + require: true, + __DEV__: true, + global: true, + stateStore: true, + require: true + }, + parser: 'babel-eslint', + parserOptions: { + ecmaFeatures: { + jsx: true + }, + ecmaVersion: 2018, + sourceType: 'module' + }, + plugins: ['react', 'prettier'], + rules: { + eqeqeq: 0, + 'no-loop-func': 0, + 'func-names': 0, + 'consistent-return': 0, + 'import/no-extraneous-dependencies': 0, + 'class-methods-use-this': 0, + 'no-unused-expressions': 0, + 'no-restricted-syntax': 0, + 'react/no-access-state-in-setstate': 0, + 'array-callback-return': 0, + 'import/extensions': 0, + 'guard-for-in': 0, + 'react/jsx-indent': 0, + 'react/jsx-one-expression-per-line': 0, + + quotes: [0, 'single'], //单引号 + 'no-console': 0, //不禁用console + 'no-debugger': 2, //禁用debugger + 'no-var': 0, //对var警告 + semi: 0, //不强制使用分号 + 'no-irregular-whitespace': 0, //不规则的空白不允许 + 'no-trailing-spaces': 1, //一行结束后面有空格就发出警告 + 'eol-last': 0, //文件以单一的换行符结束 + 'no-unused-vars': [2, { vars: 'all', args: 'after-used' }], //不能有声明后未被使用的变量或参数 + 'no-underscore-dangle': 0, //标识符不能以_开头或结尾 + 'no-alert': 2, //禁止使用alert confirm prompt + 'no-lone-blocks': 0, //禁止不必要的嵌套块 + 'no-class-assign': 2, //禁止给类赋值 + 'no-cond-assign': 2, //禁止在条件表达式中使用赋值语句 + 'no-const-assign': 2, //禁止修改const声明的变量 + 'no-delete-var': 2, //不能对var声明的变量使用delete操作符 + 'no-dupe-keys': 2, //在创建对象字面量时不允许键重复 + 'no-duplicate-case': 2, //switch中的case标签不能重复 + 'no-dupe-args': 2, //函数参数不能重复 + 'no-empty': 0, //块语句中的内容不能为空 + 'no-func-assign': 2, //禁止重复的函数声明 + 'no-invalid-this': 0, //禁止无效的this,只能用在构造器,类,对象字面量 + 'no-redeclare': 2, //禁止重复声明变量 + 'no-spaced-func': 2, //函数调用时 函数名与()之间不能有空格 + 'no-this-before-super': 0, //在调用super()之前不能使用this或super + 'no-undef': 2, //不能有未定义的变量 + 'no-use-before-define': 0, //未定义前不能使用 + camelcase: 0, //强制驼峰法命名 + 'jsx-quotes': [2, 'prefer-double'], //强制在JSX属性(jsx-quotes)中一致使用双引号 + 'react/display-name': 0, //防止在React组件定义中丢失displayName + 'react/forbid-prop-types': [0, { forbid: ['any'] }], //禁止某些propTypes + 'react/jsx-boolean-value': 2, //在JSX中强制布尔属性符号 + 'react/jsx-closing-bracket-location': 1, //在JSX中验证右括号位置 + 'react/jsx-key': 2, //在数组或迭代器中验证JSX具有key属性 + 'react/jsx-max-props-per-line': [1, { maximum: 1 }], // 限制JSX中单行上的props的最大数量 + 'react/jsx-no-bind': 0, //JSX中不允许使用箭头函数和bind + 'react/jsx-no-duplicate-props': 2, //防止在JSX中重复的props + 'react/jsx-no-literals': 0, //防止使用未包装的JSX字符串 + 'react/jsx-no-undef': 1, //在JSX中禁止未声明的变量 + 'react/jsx-pascal-case': 0, //为用户定义的JSX组件强制使用PascalCase + 'react/jsx-sort-props': 2, //强化props按字母排序 + 'react/jsx-uses-react': 1, //防止反应被错误地标记为未使用 + 'react/jsx-uses-vars': 2, //防止在JSX中使用的变量被错误地标记为未使用 + 'react/no-danger': 0, //防止使用危险的JSX属性 + 'react/no-did-mount-set-state': 0, //防止在componentDidMount中使用setState + 'react/no-did-update-set-state': 1, //防止在componentDidUpdate中使用setState + 'react/no-direct-mutation-state': 2, //防止this.state的直接变异 + 'react/no-multi-comp': 0, //防止每个文件有多个组件定义 + 'react/no-set-state': 0, //防止使用setState + 'react/no-unknown-property': 2, //防止使用未知的DOM属性 + 'react/prefer-es6-class': 2, //为React组件强制执行ES5或ES6类 + 'react/prop-types': 0, //防止在React组件定义中丢失props验证 + 'react/react-in-jsx-scope': 2, //使用JSX时防止丢失React + 'react/self-closing-comp': 0, //防止没有children的组件的额外结束标签 + 'react/sort-comp': 0, //强制组件方法顺序 + 'no-extra-boolean-cast': 0, //禁止不必要的bool转换 + 'react/no-array-index-key': 0, //防止在数组中遍历中使用数组key做索引 + 'react/no-deprecated': 1, //不使用弃用的方法 + 'react/jsx-equals-spacing': 2, //在JSX属性中强制或禁止等号周围的空格 + 'no-unreachable': 1, //不能有无法执行的代码 + 'comma-dangle': 2, //对象字面量项尾不能有逗号 + 'no-mixed-spaces-and-tabs': 0, //禁止混用tab和空格 + 'prefer-arrow-callback': 0, //比较喜欢箭头回调 + 'arrow-parens': 0, //箭头函数用小括号括起来 + 'arrow-spacing': 0, //=>的前/后括号 + // + // + // 可能的错误 + // 这些规则与 JavaScript 代码中可能的语法错误或逻辑错误有关 + // + // 禁止 for 循环出现方向错误的循环,比如 for (i = 0; i < 10; i--) + 'for-direction': 'error', + // getter 必须有返回值,并且禁止返回空,比如 return; + 'getter-return': [ + 'error', + { + allowImplicit: false + } + ], + // 禁止将 await 写在循环里,因为这样就无法同时发送多个异步请求了 + // @off 要求太严格了,有时需要在循环中写 await + 'no-await-in-loop': 'off', + // 禁止与负零进行比较 + 'no-compare-neg-zero': 'error', + // 禁止在测试表达式中使用赋值语句,除非这个赋值语句被括号包起来了 + 'no-cond-assign': ['error', 'except-parens'], + // 禁止使用 console + // @off console 的使用很常见 + 'no-console': 'off', + // 禁止将常量作为分支条件判断中的测试表达式,但允许作为循环条件判断中的测试表达式 + 'no-constant-condition': [ + 'error', + { + checkLoops: false + } + ], + // 禁止在正则表达式中出现 Ctrl 键的 ASCII 表示,即禁止使用 /\x1f/ + // @off 几乎不会遇到这种场景 + 'no-control-regex': 'off', + // @fixable 禁止使用 debugger + 'no-debugger': 'error', + // 禁止在函数参数中出现重复名称的参数 + 'no-dupe-args': 'error', + // 禁止在对象字面量中出现重复名称的键名 + 'no-dupe-keys': 'error', + // 禁止在 switch 语句中出现重复测试表达式的 case + 'no-duplicate-case': 'error', + // 禁止出现空代码块,允许 catch 为空代码块 + 'no-empty': [ + 'error', + { + allowEmptyCatch: true + } + ], + // 禁止在正则表达式中使用空的字符集 [] + 'no-empty-character-class': 'error', + // 禁止将 catch 的第一个参数 error 重新赋值 + 'no-ex-assign': 'error', + // @fixable 禁止不必要的布尔类型转换,比如 !! 或 Boolean + 'no-extra-boolean-cast': 'error', + // @fixable 禁止函数表达式中出现多余的括号,比如 let foo = (function () { return 1 }) + 'no-extra-parens': ['error', 'functions'], + // @fixable 禁止出现多余的分号 + 'no-extra-semi': 'off', + // 禁止将一个函数声明重新赋值,如: + // function foo() {} + // foo = bar + 'no-func-assign': 'error', + // 禁止在 RegExp 构造函数中出现非法的正则表达式 + 'no-invalid-regexp': 'error', + // 禁止使用特殊空白符(比如全角空格),除非是出现在字符串、正则表达式或模版字符串中 + 'no-irregular-whitespace': [ + 'error', + { + skipStrings: true, + skipComments: false, + skipRegExps: true, + skipTemplates: true + } + ], + // 禁止将 Math, JSON 或 Reflect 直接作为函数调用 + 'no-obj-calls': 'error', + // 禁止使用 hasOwnProperty, isPrototypeOf 或 propertyIsEnumerable + // @off hasOwnProperty 比较常用 + 'no-prototype-builtins': 'off', + // @fixable 禁止在正则表达式中出现连续的空格,必须使用 /foo {3}bar/ 代替 + 'no-regex-spaces': 'error', + // 禁止在数组中出现连续的逗号,如 let foo = [,,] + 'no-sparse-arrays': 'error', + // 禁止在普通字符串中出现模版字符串里的变量形式,如 'Hello ${name}!' + 'no-template-curly-in-string': 'error', + // 禁止出现难以理解的多行表达式,如: + // let foo = bar + // [1, 2, 3].forEach(baz); + 'no-unexpected-multiline': 'error', + // 禁止在 return, throw, break 或 continue 之后还有代码 + 'no-unreachable': 'error', + // 禁止在 finally 中出现 return, throw, break 或 continue + 'no-unsafe-finally': 'error', + // @fixable 禁止在 in 或 instanceof 操作符的左侧使用感叹号,如 if (!key in object) + 'no-unsafe-negation': 'error', + // 必须使用 isNaN(foo) 而不是 foo === NaN + 'use-isnan': 'error', + // 注释必须符合 jsdoc 的规范 + // @off jsdoc 要求太严格 + 'valid-jsdoc': 'off', + // typeof 表达式比较的对象必须是 'undefined', 'object', 'boolean', 'number', 'string', 'function' 或 'symbol' + 'valid-typeof': 'error', + + // + // + // 最佳实践 + // 这些规则通过一些最佳实践帮助你避免问题 + // + // setter 必须有对应的 getter,getter 可以没有对应的 setter + 'accessor-pairs': [ + 'error', + { + setWithoutGet: true, + getWithoutSet: false + } + ], + // 将 var 定义的变量视为块作用域,禁止在块外使用 + 'block-scoped-var': 'error', + // 在类的非静态方法中,必须存在对 this 的引用 + // @off 太严格了 + 'class-methods-use-this': 'off', + // 禁止函数在不同分支返回不同类型的值 + // @off 太严格了 + 'consistent-return': 'off', + // @fixable if 后面必须要有 {,除非是单行 if + curly: ['error', 'multi-line', 'consistent'], + // switch 语句必须有 default + // @off 太严格了 + 'default-case': 'off', + // @fixable 链式调用的时候,点号必须放在第二行开头处,禁止放在第一行结尾处 + 'dot-location': ['error', 'property'], + // @fixable 禁止出现 foo['bar'],必须写成 foo.bar + // @off 当需要写一系列属性的时候,可以更统一 + 'dot-notation': 'off', + // 禁止使用 alert + // @off alert 很常用 + 'no-alert': 'off', + // 禁止使用 caller 或 callee + 'no-caller': 'error', + // switch 的 case 内有变量定义的时候,必须使用大括号将 case 内变成一个代码块 + 'no-case-declarations': 'error', + // 禁止在正则表达式中出现形似除法操作符的开头,如 let a = /=foo/ + // @off 有代码高亮的话,在阅读这种代码时,也完全不会产生歧义或理解上的困难 + 'no-div-regex': 'off', + // @fixable 禁止在 else 内使用 return,必须改为提前结束 + // @off else 中使用 return 可以使代码结构更清晰 + 'no-else-return': 'off', + // 不允许有空函数,除非是将一个空函数设置为某个项的默认值 + 'no-empty-function': [ + 'error', + { + allow: ['functions', 'arrowFunctions'] + } + ], + // 禁止解构中出现空 {} 或 [] + 'no-empty-pattern': 'error', + // 禁止使用 foo == null 或 foo != null,必须使用 foo === null 或 foo !== null + // @off foo == null 用于判断 foo 不是 undefined 并且不是 null,比较常用,故允许此写法 + 'no-eq-null': 'off', + // 禁止使用 eval + 'no-eval': 'error', + // 禁止修改原生对象 + 'no-extend-native': 'error', + // @fixable 禁止出现没必要的 bind + 'no-extra-bind': 'error', + // @fixable 禁止出现没必要的 label + 'no-extra-label': 'error', + // switch 的 case 内必须有 break, return 或 throw + 'no-fallthrough': 'error', + // @fixable 表示小数时,禁止省略 0,比如 .5 + 'no-floating-decimal': 'error', + // 禁止对全局变量赋值 + 'no-global-assign': 'error', + // @fixable 禁止使用 !! ~ 等难以理解的运算符 + // 仅允许使用 !! + 'no-implicit-coercion': [ + 'error', + { + allow: ['!!'] + } + ], + // 禁止在全局作用域下定义变量或申明函数 + 'no-implicit-globals': 'error', + // 禁止在 setTimeout 或 setInterval 中传入字符串,如 setTimeout('alert("Hi!")', 100); + 'no-implied-eval': 'error', + // 禁止在类之外的地方使用 this + // @off this 的使用很灵活,事件回调中可以表示当前元素,函数也可以先用 this,等以后被调用的时候再 call + 'no-invalid-this': 'off', + // 禁止使用 __iterator__ + 'no-iterator': 'error', + // 禁止使用 label + 'no-labels': 'error', + // 禁止使用没必要的 {} 作为代码块 + 'no-lone-blocks': 'error', + // 禁止使用 magic numbers + // @off 太严格了 + 'no-magic-numbers': 'off', + // @fixable 禁止出现连续的多个空格,除非是注释前,或对齐对象的属性、变量定义、import 等 + 'no-multi-spaces': [ + 'error', + { + ignoreEOLComments: true, + exceptions: { + Property: true, + BinaryExpression: false, + VariableDeclarator: true, + ImportDeclaration: true + } + } + ], + // 禁止使用 \ 来换行字符串 + 'no-multi-str': 'error', + // 禁止直接 new 一个类而不赋值 + 'no-new': 'error', + // 禁止使用 new Function,比如 let x = new Function("a", "b", "return a + b"); + 'no-new-func': 'error', + // 禁止使用 new 来生成 String, Number 或 Boolean + 'no-new-wrappers': 'error', + // 禁止使用 0 开头的数字表示八进制数 + 'no-octal': 'error', + // 禁止使用八进制的转义符 + 'no-octal-escape': 'error', + // 禁止对函数的参数重新赋值 + 'no-param-reassign': 'off', + // 禁止使用 __proto__ + 'no-proto': 'error', + // 禁止重复定义变量 + 'no-redeclare': 'error', + // 禁止使用指定的对象属性 + // @off 它用于限制某个具体的 api 不能使用 + 'no-restricted-properties': 'off', + // 禁止在 return 语句里赋值 + 'no-return-assign': ['error', 'always'], + // 禁止在 return 语句里使用 await + 'no-return-await': 'error', + // 禁止出现 location.href = 'javascript:void(0)'; + 'no-script-url': 'error', + // 禁止将自己赋值给自己 + 'no-self-assign': 'error', + // 禁止将自己与自己比较 + 'no-self-compare': 'error', + // 禁止使用逗号操作符 + 'no-sequences': 'error', + // 禁止 throw 字面量,必须 throw 一个 Error 对象 + 'no-throw-literal': 'error', + // 循环内必须对循环条件的变量有修改 + 'no-unmodified-loop-condition': 'error', + // @fixable 禁止出现没用的 label + 'no-unused-labels': 'error', + // 禁止出现没必要的 call 或 apply + 'no-useless-call': 'error', + // 禁止出现没必要的字符串连接 + 'no-useless-concat': 'error', + // 禁止出现没必要的转义 + // @off 转义可以使代码更易懂 + 'no-useless-escape': 'off', + // @fixable 禁止没必要的 return + // @off 没必要限制 return + 'no-useless-return': 'off', + // 禁止使用 void + 'no-void': 'error', + // 禁止注释中出现 TODO 和 FIXME + // @off TODO 很常用 + 'no-warning-comments': 'off', + // 禁止使用 with + 'no-with': 'error', + // Promise 的 reject 中必须传入 Error 对象,而不是字面量 + 'prefer-promise-reject-errors': 'error', + // parseInt 必须传入第二个参数 + radix: 'error', + // async 函数中必须存在 await 语句 + // @off async function 中没有 await 的写法很常见,比如 koa 的示例中就有这种用法 + 'require-await': 'off', + // var 必须在作用域的最前面 + // @off var 不在最前面也是很常见的用法 + 'vars-on-top': 'off', + // @fixable 立即执行的函数必须符合如下格式 (function () { alert('Hello') })() + 'wrap-iife': [ + 'error', + 'inside', + { + functionPrototypeMethods: true + } + ], + // @fixable 必须使用 if (foo === 5) 而不是 if (5 === foo) + yoda: [ + 'error', + 'never', + { + onlyEquality: true + } + ], + + // + // + // 严格模式 + // 这些规则与严格模式指令有关 + // + // @fixable 禁止使用 'strict'; + strict: ['error', 'never'], + + // + // + // 变量 + // 这些规则与变量申明有关 + // + // 变量必须在定义的时候赋值 + // @off 先定义后赋值很常见 + 'init-declarations': 'off', + // 禁止 catch 的参数名与定义过的变量重复 + // @off 太严格了 + 'no-catch-shadow': 'off', + // 禁止使用 delete + 'no-delete-var': 'error', + // 禁止 label 名称与定义过的变量重复 + 'no-label-var': 'error', + // 禁止使用指定的全局变量 + // @off 它用于限制某个具体的变量名不能使用 + 'no-restricted-globals': 'off', + // 禁止变量名与上层作用域内的定义过的变量重复 + // @off 很多时候函数的形参和传参是同名的 + 'no-shadow': 'off', + // 禁止使用保留字作为变量名 + 'no-shadow-restricted-names': 'error', + // 禁止使用未定义的变量 + 'no-undef': [ + 'error', + { + typeof: false + } + ], + // @fixable 禁止将 undefined 赋值给变量 + 'no-undef-init': 'error', + // 禁止对 undefined 重新赋值 + 'no-undefined': 'error', + // 定义过的变量必须使用 + 'no-unused-vars': [ + 'error', + { + vars: 'all', + args: 'none', + caughtErrors: 'none', + ignoreRestSiblings: true + } + ], + // 变量必须先定义后使用 + 'no-use-before-define': [ + 'error', + { + functions: false, + classes: false, + variables: false + } + ], + + // + // + // Node.js 和 CommonJS + // 这些规则与在 Node.js 中运行的代码或浏览器中使用的 CommonJS 有关 + // + // callback 之后必须立即 return + // @off Limitations 太多了 + 'callback-return': 'off', + // require 必须在全局作用域下 + // @off 条件加载很常见 + 'global-require': 'off', + // callback 中的 error 必须被处理 + 'handle-callback-err': 'error', + // 禁止直接使用 Buffer + 'no-buffer-constructor': 'error', + // 相同类型的 require 必须放在一起 + // @off 太严格了 + 'no-mixed-requires': 'off', + // 禁止直接 new require('foo') + 'no-new-require': 'error', + // 禁止对 __dirname 或 __filename 使用字符串连接 + 'no-path-concat': 'error', + // 禁止使用 process.env.NODE_ENV + // @off 使用很常见 + 'no-process-env': 'off', + // 禁止使用 process.exit(0) + // @off 使用很常见 + 'no-process-exit': 'off', + // 禁止使用指定的模块 + // @off 它用于限制某个具体的模块不能使用 + 'no-restricted-modules': 'off', + // 禁止使用 node 中的同步的方法,比如 fs.readFileSync + // @off 使用很常见 + 'no-sync': 'off', + + // + // + // 风格问题 + // 这些规则与代码风格有关,所以是非常主观的 + // + // @fixable 配置数组的中括号内前后的换行格式 + // @off 配置项无法配制成想要的样子 + 'array-bracket-newline': 'off', + // @fixable 数组的括号内的前后禁止有空格 + 'array-bracket-spacing': ['error', 'never'], + // @fixable 配置数组的元素之间的换行格式 + // @off 允许一行包含多个元素,方便大数量的数组的书写 + 'array-element-newline': 'off', + // @fixable 代码块如果在一行内,那么大括号内的首尾必须有空格,比如 function () { alert('Hello') } + 'block-spacing': ['error', 'always'], + // @fixable if 与 else 的大括号风格必须一致 + // @off else 代码块可能前面需要有一行注释 + 'brace-style': 'off', + // 变量名必须是 camelcase 风格的 + // @off 很多 api 或文件名都不是 camelcase + camelcase: 'off', + // @fixable 注释的首字母必须大写 + // @off 没必要限制 + 'capitalized-comments': 'off', + // @fixable 对象的最后一个属性末尾必须有逗号 + // @off 没必要限制 + 'comma-dangle': 'off', + // @fixable 逗号前禁止有空格,逗号后必须要有空格 + 'comma-spacing': [ + 'error', + { + before: false, + after: true + } + ], + // @fixable 禁止在行首写逗号 + 'comma-style': ['error', 'last'], + // @fixable 用作对象的计算属性时,中括号内的首尾禁止有空格 + 'computed-property-spacing': ['error', 'never'], + // 限制 this 的别名 + // @off 没必要限制 + 'consistent-this': 'off', + // @fixable 文件最后一行必须有一个空行 + // @off 没必要限制 + 'eol-last': 'off', + // @fixable 函数名和执行它的括号之间禁止有空格 + 'func-call-spacing': ['error', 'never'], + // 函数赋值给变量的时候,函数名必须与变量名一致 + 'func-name-matching': [ + 'error', + 'always', + { + includeCommonJSModuleExports: false + } + ], + // 函数必须有名字 + // @off 没必要限制 + 'func-names': 'off', + // 必须只使用函数声明或只使用函数表达式 + // @off 没必要限制 + 'func-style': 'off', + // 禁止使用指定的标识符 + // @off 它用于限制某个具体的标识符不能使用 + 'id-blacklist': 'off', + // 限制变量名长度 + // @off 没必要限制变量名长度 + 'id-length': 'off', + // 限制变量名必须匹配指定的正则表达式 + // @off 没必要限制变量名 + 'id-match': 'off', + // @fixable jsx 中的属性必须用双引号 + 'jsx-quotes': ['error', 'prefer-double'], + // @fixable 对象字面量中冒号前面禁止有空格,后面必须有空格 + 'key-spacing': [ + 'error', + { + beforeColon: false, + afterColon: true, + mode: 'strict' + } + ], + // 单行注释必须写在上一行 + // @off 没必要限制 + 'line-comment-position': 'off', + // @fixable 限制换行符为 LF 或 CRLF + // @off 没必要限制 + 'linebreak-style': 'off', + // @fixable 注释前后必须有空行 + // @off 没必要限制 + 'lines-around-comment': 'off', + // 限制一行的长度 + // @off 现在编辑器已经很智能了,不需要限制一行的长度 + 'max-len': 'off', + // 限制一个文件最多的行数 + // @off 没必要限制 + 'max-lines': 'off', + // 函数的参数禁止超过 7 个 + 'max-params': ['error', 7], + // 限制函数块中的语句数量 + // @off 没必要限制 + 'max-statements': 'off', + // 限制一行中的语句数量 + // @off 没必要限制 + 'max-statements-per-line': 'off', + // 三元表达式必须得换行 + // @off 三元表达式可以随意使用 + 'multiline-ternary': 'off', + // new 后面的类名必须首字母大写 + 'new-cap': [ + 'error', + { + newIsCap: true, + capIsNew: false, + properties: true + } + ], + // @fixable new 后面的类必须有小括号 + 'new-parens': 'error', + // 链式调用必须换行 + // @off 没必要限制 + 'newline-per-chained-call': 'off', + // 禁止使用 Array 构造函数 + 'no-array-constructor': 'error', + // 禁止使用位运算 + // @off 位运算很常见 + 'no-bitwise': 'off', + // 禁止使用 continue + // @off continue 很常用 + 'no-continue': 'off', + // 禁止在代码后添加内联注释 + // @off 内联注释很常用 + 'no-inline-comments': 'off', + // @fixable 禁止 else 中只有一个单独的 if + // @off 单独的 if 可以把逻辑表达的更清楚 + 'no-lonely-if': 'off', + // 禁止混用不同的操作符,比如 let foo = a && b < 0 || c > 0 || d + 1 === 0 + // @off 太严格了,可以由使用者自己去判断如何混用操作符 + 'no-mixed-operators': 'off', + // 禁止混用空格和缩进 + 'no-mixed-spaces-and-tabs': 'error', + // 禁止连续赋值,比如 a = b = c = 5 + // @off 没必要限制 + 'no-multi-assign': 'off', + // @fixable 禁止出现超过三行的连续空行 + 'no-multiple-empty-lines': [ + 'error', + { + max: 3, + maxEOF: 1, + maxBOF: 1 + } + ], + // 禁止 if 里面有否定的表达式,比如: + // if (a !== b) { + // doSomething(); + // } else { + // doSomethingElse(); + // } + // @off 否定的表达式可以把逻辑表达的更清楚 + 'no-negated-condition': 'off', + // 禁止使用嵌套的三元表达式,比如 a ? b : c ? d : e + // @off 没必要限制 + 'no-nested-ternary': 'off', + // 禁止直接 new Object + 'no-new-object': 'error', + // 禁止使用 ++ 或 -- + // @off 没必要限制 + 'no-plusplus': 'off', + // 禁止使用特定的语法 + // @off 它用于限制某个具体的语法不能使用 + 'no-restricted-syntax': 'off', + // 禁止使用 tabs + 'no-tabs': 'error', + // 禁止使用三元表达式 + // @off 三元表达式很常用 + 'no-ternary': 'off', + // @fixable 禁止行尾有空格 + 'no-trailing-spaces': 'error', + // 禁止变量名出现下划线 + // @off 下划线在变量名中很常用 + 'no-underscore-dangle': 'off', + // @fixable 必须使用 !a 替代 a ? false : true + // @off 后者表达的更清晰 + 'no-unneeded-ternary': 'off', + // @fixable 禁止属性前有空格,比如 foo. bar() + 'no-whitespace-before-property': 'error', + // @fixable 对象字面量内的属性每行必须只有一个 + // @off 没必要限制 + 'object-property-newline': 'off', + // 禁止变量申明时用逗号一次申明多个 + 'one-var': 0, + // @fixable 必须使用 x = x + y 而不是 x += y + // @off 没必要限制 + 'operator-assignment': 'off', + // @fixable 需要换行的时候,操作符必须放在行末,比如: + // let foo = 1 + + // 2 + // @off 有时放在第二行开始处更易读 + 'operator-linebreak': 'off', + // @fixable 代码块首尾必须要空行 + // @off 没必要限制 + 'padded-blocks': 'off', + // @fixable 限制语句之间的空行规则,比如变量定义完之后必须要空行 + // @off 没必要限制 + 'padding-line-between-statements': 'off', + // @fixable 对象字面量的键名禁止用引号括起来 + // @off 没必要限制 + 'quote-props': 'off', + // 必须使用 jsdoc 风格的注释 + // @off 太严格了 + 'require-jsdoc': 'off', + // 对象字面量的键名必须排好序 + // @off 没必要限制 + 'sort-keys': 'off', + // 变量申明必须排好序 + // @off 没必要限制 + 'sort-vars': 'off', + // @fixable 正则表达式必须有括号包起来 + // @off 没必要限制 + 'wrap-regex': 'off', + + // + // + // ECMAScript 6 + // 这些规则与 ES6(即通常所说的 ES2015)有关 + // + // @fixable 箭头函数能够省略 return 的时候,必须省略,比如必须写成 () => 0,禁止写成 () => { return 0 } + // @off 箭头函数的返回值,应该允许灵活设置 + 'arrow-body-style': 'off', + // @fixable 箭头函数只有一个参数的时候,必须加括号 + // @off 应该允许灵活设置 + 'arrow-parens': 'off', + // constructor 中必须有 super + 'constructor-super': 'error', + // 禁止对定义过的 class 重新赋值 + 'no-class-assign': 'error', + // 禁止对使用 const 定义的常量重新赋值 + 'no-const-assign': 'error', + // 禁止重复定义类 + 'no-dupe-class-members': 'error', + // 禁止重复 import 模块 + 'no-duplicate-imports': 'error', + // 禁止使用 new 来生成 Symbol + 'no-new-symbol': 'error', + // 禁止 import 指定的模块 + // @off 它用于限制某个具体的模块不能使用 + 'no-restricted-imports': 'off', + // 禁止在 super 被调用之前使用 this 或 super + 'no-this-before-super': 'error', + // @fixable 禁止出现没必要的计算键名,比如 let a = { ['0']: 0 }; + 'no-useless-computed-key': 'error', + // 禁止出现没必要的 constructor,比如 constructor(value) { super(value) } + 'no-useless-constructor': 'off', + // @fixable 禁止解构时出现同样名字的的重命名,比如 let { foo: foo } = bar; + 'no-useless-rename': 'off', + // @fixable 禁止使用 var + 'no-var': 'error', + // @fixable 必须使用 a = {b} 而不是 a = {b: b} + // @off 没必要强制要求 + 'object-shorthand': 'off', + // @fixable 必须使用箭头函数作为回调 + // @off 没必要强制要求 + 'prefer-arrow-callback': 'off', + // @fixable 申明后不再被修改的变量必须使用 const 来申明 + // @off 没必要强制要求 + 'prefer-const': 'off', + // 必须使用解构 + // @off 没必要强制要求 + 'prefer-destructuring': 'off', + // @fixable 必须使用 0b11111011 而不是 parseInt('111110111', 2) + // @off 没必要强制要求 + 'prefer-numeric-literals': 'off', + // 必须使用 ...args 而不是 arguments + // @off 没必要强制要求 + 'prefer-rest-params': 'off', + // @fixable 必须使用 ... 而不是 apply,比如 foo(...args) + // @off apply 很常用 + 'prefer-spread': 'off', + // @fixable 必须使用模版字符串而不是字符串连接 + // @off 字符串连接很常用 + 'prefer-template': 'off', + // generator 函数内必须有 yield + 'require-yield': 'error', + // @fixable ... 的后面禁止有空格 + 'rest-spread-spacing': ['error', 'never'], + // @fixable import 必须按规则排序 + // @off 没必要强制要求 + 'sort-imports': 'off', + // 创建 Symbol 时必须传入参数 + 'symbol-description': 'error', + // @fixable ${name} 内的首尾禁止有空格 + 'template-curly-spacing': ['error', 'never'], + // @fixable yield* 后面必须要有空格 + 'yield-star-spacing': ['error', 'after'], + // 布尔值类型的 propTypes 的 name 必须为 is 或 has 开头 + // @off 不强制要求写 propTypes + 'react/boolean-prop-naming': 'off', + // 一个 defaultProps 必须有对应的 propTypes + // @off 不强制要求写 propTypes + 'react/default-props-match-prop-types': 'off', + // 组件必须有 displayName 属性 + // @off 不强制要求写 displayName + 'react/display-name': 'off', + // 禁止在自定义组件中使用一些指定的 props + // @off 没必要限制 + 'react/forbid-component-props': 'off', + // 禁止使用一些指定的 elements + // @off 没必要限制 + 'react/forbid-elements': 'off', + // 禁止使用一些指定的 propTypes + // @off 不强制要求写 propTypes + 'react/forbid-prop-types': 'off', + // 禁止直接使用别的组建的 propTypes + // @off 不强制要求写 propTypes + 'react/forbid-foreign-prop-types': 'off', + // 禁止使用数组的 index 作为 key + // @off 太严格了 + 'react/no-array-index-key': 'off', + // 禁止使用 children 做 props + 'react/no-children-prop': 'error', + // 禁止使用 dangerouslySetInnerHTML + // @off 没必要限制 + 'react/no-danger': 'off', + // 禁止在使用了 dangerouslySetInnerHTML 的组建内添加 children + 'react/no-danger-with-children': 'error', + // 禁止使用已废弃的 api + 'react/no-deprecated': 'error', + // 禁止在 componentDidMount 里面使用 setState + // @off 同构应用需要在 didMount 里写 setState + 'react/no-did-mount-set-state': 'off', + // 禁止在 componentDidUpdate 里面使用 setState + 'react/no-did-update-set-state': 'error', + // 禁止直接修改 this.state + 'react/no-direct-mutation-state': 'error', + // 禁止使用 findDOMNode + 'react/no-find-dom-node': 'error', + // 禁止使用 isMounted + 'react/no-is-mounted': 'error', + 'react/destructuring-assignment': 0, + // 禁止在一个文件创建两个组件 + // @off 有一个 bug https://github.com/yannickcr/eslint-plugin-react/issues/1181 + 'react/no-multi-comp': 'off', + // 禁止在 PureComponent 中使用 shouldComponentUpdate + 'react/no-redundant-should-component-update': 'error', + // 禁止使用 ReactDOM.render 的返回值 + 'react/no-render-return-value': 'error', + // 禁止使用 setState + // @off setState 很常用 + 'react/no-set-state': 'off', + // 禁止拼写错误 + 'react/no-typos': 'error', + // 禁止使用字符串 ref + 'react/no-string-refs': 'error', + // 禁止在组件的内部存在未转义的 >, ", ' 或 } + 'react/no-unescaped-entities': 'error', + // @fixable 禁止出现 HTML 中的属性,如 class + 'react/no-unknown-property': 'error', + // 禁止出现未使用的 propTypes + // @off 不强制要求写 propTypes + 'react/no-unused-prop-types': 'off', + // 定义过的 state 必须使用 + // @off 没有官方文档,并且存在很多 bug: https://github.com/yannickcr/eslint-plugin-react/search?q=no-unused-state&type=Issues&utf8=%E2%9C%93 + 'react/no-unused-state': 'off', + // 禁止在 componentWillUpdate 中使用 setState + 'react/no-will-update-set-state': 'error', + // 必须使用 Class 的形式创建组件 + 'react/prefer-es6-class': ['error', 'always'], + // 必须使用 pure function + // @off 没必要限制 + 'react/prefer-stateless-function': 'off', + // 组件必须写 propTypes + // @off 不强制要求写 propTypes + 'react/prop-types': 'off', + // 出现 jsx 的地方必须 import React + // @off 已经在 no-undef 中限制了 + 'react/react-in-jsx-scope': 'off', + // 非 required 的 prop 必须有 defaultProps + // @off 不强制要求写 propTypes + 'react/require-default-props': 'off', + // 组件必须有 shouldComponentUpdate + // @off 没必要限制 + 'react/require-optimization': 'off', + // render 方法中必须有返回值 + 'react/require-render-return': 'error', + // @fixable 组件内没有 children 时,必须使用自闭和写法 + // @off 没必要限制 + 'react/self-closing-comp': 'off', + // @fixable 组件内方法必须按照一定规则排序 + // propTypes 的熟悉必须按照字母排序 + // @off 没必要限制 + 'react/sort-prop-types': 'off', + // style 属性的取值必须是 object + 'react/style-prop-object': 'error', + // HTML 中的自闭和标签禁止有 children + 'react/void-dom-elements-no-children': 'error', + // @fixable 布尔值的属性必须显式的写 someprop={true} + // @off 没必要限制 + 'react/jsx-boolean-value': 'off', + // @fixable 结束标签必须与开始标签的那一行对齐 + // @off 已经在 jsx-indent 中限制了 + 'react/jsx-closing-tag-location': 'off', + // @fixable props 与 value 之间的等号前后禁止有空格 + 'react/jsx-equals-spacing': ['error', 'never'], + // 限制文件后缀 + // @off 没必要限制 + 'react/jsx-filename-extension': 'off', + // @fixable 第一个 prop 必须得换行 + // @off 没必要限制 + 'react/jsx-first-prop-new-line': 'off', + // handler 的名称必须是 onXXX 或 handleXXX + // @off 没必要限制 + 'react/jsx-handler-names': 'off', + // 数组中的 jsx 必须有 key + 'react/jsx-key': 'error', + // @fixable 限制每行的 props 数量 + // @off 没必要限制 + 'react/jsx-max-props-per-line': 'off', + // jsx 中禁止使用 bind + // @off 太严格了 + 'react/jsx-no-bind': 'off', + // 禁止在 jsx 中使用像注释的字符串 + 'react/jsx-no-comment-textnodes': 'error', + // 禁止出现重复的 props + 'react/jsx-no-duplicate-props': 'error', + // 禁止在 jsx 中出现字符串 + // @off 没必要限制 + 'react/jsx-no-literals': 'off', + // 禁止使用 target="_blank" + // @off 没必要限制 + 'react/jsx-no-target-blank': 'off', + // 禁止使用未定义的 jsx elemet + 'react/jsx-no-undef': 'error', + // 禁止使用 pascal 写法的 jsx,比如 + 'react/jsx-pascal-case': 'off', + // @fixable props 必须排好序 + // @off 没必要限制 + 'react/jsx-sort-props': 'off', + // jsx 文件必须 import React + 'react/jsx-uses-react': 'error', + // 定义了的 jsx element 必须使用 + 'react/jsx-uses-vars': 'error', + // @fixable 多行的 jsx 必须有括号包起来 + // @off 没必要限制 + 'react/jsx-wrap-multilines': 'off' + } +} diff --git a/.flowconfig b/.flowconfig old mode 100644 new mode 100755 diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100755 index 00000000..65abf034 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,11 @@ +module.exports = { + printWidth: 120, // 换行字符串阈值 | Newline string threshold + semi: false, // 句末加分号 | Add a semicolon at the end of the sentence + singleQuote: true, // 用单引号 | Use single quote + trailingComma: 'none', // 最后一个对象元素加逗号 | Last object element with comma + bracketSpacing: true, // 对象,数组加空格 | Object, array plus space + jsxBracketSameLine: false, // jsx > 是否另起一行 | Jsx > whether to start another line + arrowParens: 'avoid', // (x) => {} 是否要有小括号 | (x) => {} Need parentheses + requirePragma: false, // 是否要注释来决定是否格式化代码 | Comment to decide whether to format the code? + proseWrap: 'preserve' // 是否要换行 | Whether or not to break a line +} diff --git a/.update b/.update old mode 100644 new mode 100755 index 142bbaf6..538828d1 --- a/.update +++ b/.update @@ -1,3 +1,3 @@ { - "token": "Deleted...Need add it by yourself:)" -} + "token": "Need add yourself token" +} \ No newline at end of file diff --git a/.watchmanconfig b/.watchmanconfig old mode 100644 new mode 100755 index 9e26dfee..0967ef42 --- a/.watchmanconfig +++ b/.watchmanconfig @@ -1 +1 @@ -{} \ No newline at end of file +{} diff --git a/App.js b/App.js old mode 100644 new mode 100755 index 1fed56ec..7ba75101 --- a/App.js +++ b/App.js @@ -1,83 +1,104 @@ -import React, { Component } from 'react'; -import { - View, - StyleSheet -} from 'react-native'; -import {StackNavigator} from 'react-navigation' -import Tabbed_Navigation from './src/code/Tabbed_Navigation.js' -import Create_Account from './src/code/Assets/secondary/Create_Account' -import Backup_Account from './src/code/Assets/secondary/Backup_Account' -import QR_Code from './src/code/Assets/secondary/QR_Code' -import Coin_details from './src/code/Assets/secondary/coin_details' -import Manage_Account from './src/code/Profile/secondary/Manage_Account' -import Transfer from './src/code/Assets/secondary/Transfer/transfer' -import Make_transfer from './src/code/Assets/secondary/Transfer/make_transfer' -import Transfer_details from './src/code/Assets/secondary/Transfer/Transfer_details' -import Addresses from './src/code/Profile/secondary/Addresses' -import Add_address from './src/code/Profile/secondary/add_address' -import Address_information from './src/code/Profile/secondary/address_information' -import Camera from './src/code/Assets/secondary/camera' -import Validator_Info from './src/code/Staking/secondary/Validator_Info' -import Stake from './src/code/Staking/secondary/stake' -import Nominate from './src/code/Staking/secondary/nominate' -import Unstake from './src/code/Staking/secondary/unstake' -import Unnominate from './src/code/Staking/secondary/unnominate' -import Preferences from './src/code/Staking/secondary/preferences' -import Change_Password from './src/code/Profile/secondary/Change/Change_Password' -import Change_Name from './src/code/Profile/secondary/Change/Change_Name' -import NayorAye from './src/code/Democracy/secondary/NayorAye' -import Settings from './src/code/Profile/secondary/Settings' -import Set_Node from './src/code/Profile/secondary/Settings/Set_Node' -import About from './src/code/Profile/secondary/About' -import Gesture from './src/code/Profile/secondary/Settings/Gesture' - - - - -import {Provider} from 'mobx-react' - //获取store实例 +import React, { Component } from 'react' +import { StackNavigator } from 'react-navigation' +import { Provider } from 'mobx-react' +import Api from '@polkadot/api/promise' +import WsProvider from '@polkadot/rpc-provider/ws' +import Tabbed_Navigation from './src/page/TabbedNavigation' +import Create_Account from './src/page/Assets/secondary/CreateAccount' +import Backup_Account from './src/page/Assets/secondary/BackupAccount' +import MnemonicWord_1 from './src/page/Assets/secondary/MnemonicWord_1' +import MnemonicWord_2 from './src/page/Assets/secondary/MnemonicWord_2' +import MnemonicWord_3 from './src/page/Assets/secondary/MnemonicWord_3' +import QR_Code from './src/page/Assets/secondary/QRCode' +import Coin_details from './src/page/Assets/secondary/CoinDetails' +import Manage_Account from './src/page/Profile/secondary/ManageAccount' +import Transfer from './src/page/Assets/secondary/Transfer/Transfer' +import Make_transfer from './src/page/Assets/secondary/Transfer/MakeTransfer' +import Transfer_details from './src/page/Assets/secondary/Transfer/TransferDetails' +import Addresses from './src/page/Profile/secondary/Addresses' +import Add_address from './src/page/Profile/secondary/AddAddress' +import Address_information from './src/page/Profile/secondary/AddressInformation' +import Camera from './src/page/Assets/secondary/Camera' +import Validator_Info from './src/page/Staking/secondary/ValidatorInfo' +import Stake from './src/page/Staking/secondary/Stake' +import BondFunds from './src/page/Staking/secondary/BondFunds' +import Unbond from './src/page/Staking/secondary/Unbond' +import BondAdditional from './src/page/Staking/secondary/BondAdditional' +import SetSessionKey from './src/page/Staking/secondary/SetSessionKey' +import Nominate from './src/page/Staking/secondary/Nominate' +import Unstake from './src/page/Staking/secondary/Unstake' +import Unnominate from './src/page/Staking/secondary/Unnominate' +import Change_Password from './src/page/Profile/secondary/Change/ChangePassword' +import Change_Name from './src/page/Profile/secondary/Change/ChangeName' +import NayorAye from './src/page/Democracy/secondary/NayorAye' +import Settings from './src/page/Profile/secondary/Settings' +import Set_Node from './src/page/Profile/secondary/Settings/SetNode' +import About from './src/page/Profile/secondary/About' +import Gesture from './src/page/Profile/secondary/Settings/Gesture' +import { setJSExceptionHandler } from './src/util/error_guard' +// 获取store实例 | Get store instance import AppState from './src/mobx/mobx' -const Polkawallet_App = StackNavigator({ - Tabbed_Navigation:{screen:Tabbed_Navigation,navigationOptions:{header:null}}, - Create_Account:{screen:Create_Account,navigationOptions:{header:null}}, - Backup_Account:{screen:Backup_Account,navigationOptions:{header:null}}, - QR_Code:{screen:QR_Code,navigationOptions:{header:null}}, - Coin_details:{screen:Coin_details,navigationOptions:{header:null}}, - Manage_Account:{screen:Manage_Account,navigationOptions:{header:null}}, - Transfer:{screen:Transfer,navigationOptions:{header:null}}, - Make_transfer:{screen:Make_transfer,navigationOptions:{header:null}}, - Transfer_details:{screen:Transfer_details,navigationOptions:{header:null}}, - Addresses:{screen:Addresses,navigationOptions:{header:null}}, - Add_address:{screen:Add_address,navigationOptions:{header:null}}, - Address_information:{screen:Address_information,navigationOptions:{header:null}}, - Camera:{screen:Camera,navigationOptions:{header:null}}, - Validator_Info:{screen:Validator_Info,navigationOptions:{header:null}}, - Stake:{screen:Stake,navigationOptions:{header:null}}, - Nominate:{screen:Nominate,navigationOptions:{header:null}}, - Unstake:{screen:Unstake,navigationOptions:{header:null}}, - Unnominate:{screen:Unnominate,navigationOptions:{header:null}}, - Preferences:{screen:Preferences,navigationOptions:{header:null}}, - Change_Password:{screen:Change_Password,navigationOptions:{header:null}}, - Change_Name:{screen:Change_Name,navigationOptions:{header:null}}, - NayorAye:{screen:NayorAye,navigationOptions:{header:null}}, - Settings:{screen:Settings,navigationOptions:{header:null}}, - Set_Node:{screen:Set_Node,navigationOptions:{header:null}}, - About:{screen:About,navigationOptions:{header:null}}, - Gesture:{screen:Gesture,navigationOptions:{header:null}}, +const Polkawallet_App = StackNavigator({ + Tabbed_Navigation: { + screen: Tabbed_Navigation, + navigationOptions: { header: null } + }, + Create_Account: { screen: Create_Account, navigationOptions: { header: null } }, + Backup_Account: { screen: Backup_Account, navigationOptions: { header: null } }, + QR_Code: { screen: QR_Code, navigationOptions: { header: null } }, + Coin_details: { screen: Coin_details, navigationOptions: { header: null } }, + Manage_Account: { screen: Manage_Account, navigationOptions: { header: null } }, + Transfer: { screen: Transfer, navigationOptions: { header: null } }, + Make_transfer: { screen: Make_transfer, navigationOptions: { header: null } }, + Transfer_details: { + screen: Transfer_details, + navigationOptions: { header: null } + }, + Addresses: { screen: Addresses, navigationOptions: { header: null } }, + Add_address: { screen: Add_address, navigationOptions: { header: null } }, + Address_information: { + screen: Address_information, + navigationOptions: { header: null } + }, + Camera: { screen: Camera, navigationOptions: { header: null } }, + Validator_Info: { screen: Validator_Info, navigationOptions: { header: null } }, + Stake: { screen: Stake, navigationOptions: { header: null } }, + BondFunds: { screen: BondFunds, navigationOptions: { header: null } }, + Unbond: { screen: Unbond, navigationOptions: { header: null } }, + BondAdditional: { screen: BondAdditional, navigationOptions: { header: null } }, + SetSessionKey: { screen: SetSessionKey, navigationOptions: { header: null } }, + Nominate: { screen: Nominate, navigationOptions: { header: null } }, + Unstake: { screen: Unstake, navigationOptions: { header: null } }, + Unnominate: { screen: Unnominate, navigationOptions: { header: null } }, + Change_Password: { screen: Change_Password, navigationOptions: { header: null } }, + Change_Name: { screen: Change_Name, navigationOptions: { header: null } }, + NayorAye: { screen: NayorAye, navigationOptions: { header: null } }, + Settings: { screen: Settings, navigationOptions: { header: null } }, + Set_Node: { screen: Set_Node, navigationOptions: { header: null } }, + About: { screen: About, navigationOptions: { header: null } }, + Gesture: { screen: Gesture, navigationOptions: { header: null } }, + MnemonicWord_1: { screen: MnemonicWord_1, navigationOptions: { header: null } }, + MnemonicWord_2: { screen: MnemonicWord_2, navigationOptions: { header: null } }, + MnemonicWord_3: { screen: MnemonicWord_3, navigationOptions: { header: null } } +}) - }) - - +setJSExceptionHandler(() => {}, true) export default class Polkawallet extends Component { + componentWillMount() { + ;(async () => { + const provider = new WsProvider(AppState.stateStore.ENDPOINT) + const api = await Api.create(provider) + AppState.stateStore.API = api + })() + } + render() { return ( - + - - ); + ) } } - diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/__test__/Api.test.js b/__test__/Api.test.js new file mode 100755 index 00000000..1158ac50 --- /dev/null +++ b/__test__/Api.test.js @@ -0,0 +1,54 @@ +/* eslint-disable new-cap */ +/* eslint-disable no-undef */ +let _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault') + +let _types = require('@polkadot/types') + +let _index = _interopRequireDefault(require('@polkadot/rpc-provider/mock/index')) + +let _ = require('@polkadot/api') + +// Copyright 2017-2019 @polkadot/api authors & contributors +// This software may be modified and distributed under the terms +// of the Apache-2.0 license. See the LICENSE file for details. + +describe.skip('Metadata queries', () => { + let mock + beforeEach(() => { + jest.setTimeout(3000000) + mock = new _index.default() + }) + it('Create API instance with metadata map and makes the runtime, rpc, state & extrinsics available', async () => { + const rpcData = await mock.send('state_getMetadata', []) + const genesisHash = new _types.Hash(await mock.send('chain_getBlockHash', [])).toHex() + const specVersion = 0 + const metadata = {} + const key = ''.concat(genesisHash, '-').concat(specVersion) + metadata[key] = rpcData + const api = await _.ApiPromise.create({ + provider: mock, + metadata + }) + expect(api.genesisHash).toBeDefined() + expect(api.runtimeMetadata.toJSON()).toEqual(new _types.Metadata(rpcData).toJSON()) + expect(api.runtimeVersion).toBeDefined() + expect(api.rpc).toBeDefined() + expect(api.query).toBeDefined() + expect(api.tx).toBeDefined() + expect(api.derive).toBeDefined() + }) + it('Create API instance without metadata and makes the runtime, rpc, state & extrinsics available', async () => { + const metadata = {} + const api = await _.ApiPromise.create({ + provider: mock, + metadata + }) + expect(api.genesisHash).toBeDefined() + expect(api.runtimeMetadata).toBeDefined() + expect(api.runtimeVersion).toBeDefined() + expect(api.rpc).toBeDefined() + expect(api.query).toBeDefined() + expect(api.tx).toBeDefined() + expect(api.derive).toBeDefined() + }) +}) diff --git a/__test__/Common.test.js b/__test__/Common.test.js new file mode 100755 index 00000000..cfe9d1df --- /dev/null +++ b/__test__/Common.test.js @@ -0,0 +1,69 @@ +/* eslint-disable no-undef */ +const { ScreenWidth, ScreenHeight, getUnit, formatData } = require('../src/util/Common') + +test('formatData', () => { + expect(formatData({})).toEqual({}) +}) + +test('ScreenWidth', () => { + expect(ScreenWidth).not.toBeNull() +}) +test('ScreenHeight', () => { + expect(ScreenHeight).not.toBeNull() +}) + +test('getUnit femto', () => { + expect(getUnit('femto')).toBe('1') +}) + +test('getUnit pico', () => { + expect(getUnit('pico')).toBe('1000') +}) + +test('getUnit nano', () => { + expect(getUnit('nano')).toBe('1000000') +}) + +test('getUnit micro', () => { + expect(getUnit('micro')).toBe('1000000000') +}) + +test('getUnit milli', () => { + expect(getUnit('milli')).toBe('1000000000000') +}) + +test('getUnit DOT', () => { + expect(getUnit('DOT')).toBe('1000000000000000') +}) + +test('getUnit Kilo', () => { + expect(getUnit('Kilo')).toBe('1000000000000000000') +}) + +test('getUnit Mega', () => { + expect(getUnit('Mega')).toBe('1000000000000000000000') +}) + +test('getUnit Giga', () => { + expect(getUnit('Giga')).toBe('1000000000000000000000000') +}) + +test('getUnit Tera', () => { + expect(getUnit('Tera')).toBe('1000000000000000000000000000') +}) + +test('getUnit Peta', () => { + expect(getUnit('Peta')).toBe('1000000000000000000000000000000') +}) + +test('getUnit Exa', () => { + expect(getUnit('Exa')).toBe('1000000000000000000000000000000000') +}) + +test('getUnit Zeta', () => { + expect(getUnit('Zeta')).toBe('1000000000000000000000000000000000000') +}) + +test('getUnit Yotta', () => { + expect(getUnit('Yotta')).toBe('1000000000000000000000000000000000000000') +}) diff --git a/__test__/polkadotAPI.test.js b/__test__/polkadotAPI.test.js new file mode 100755 index 00000000..312f7f92 --- /dev/null +++ b/__test__/polkadotAPI.test.js @@ -0,0 +1,110 @@ +/* eslint-disable new-cap */ +/* eslint-disable no-undef */ +let _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault') + +let _types = require('@polkadot/types') + +let _index = _interopRequireDefault(require('@polkadot/rpc-provider/mock/index')) + +let _ = require('@polkadot/api') + +let mock +beforeEach(() => { + mock = new _index.default() +}) + +test('Create API instance with metadata map and makes the runtime, rpc, state & extrinsics available', async () => { + const rpcData = await mock.send('state_getMetadata', []) + const genesisHash = new _types.Hash(await mock.send('chain_getBlockHash', [])).toHex() + const specVersion = 0 + const metadata = {} + const key = ''.concat(genesisHash, '-').concat(specVersion) + metadata[key] = rpcData + const api = await _.ApiPromise.create({ + provider: mock, + metadata + }) + expect(api.query.timestamp.now()).toBeDefined() + expect(api.rpc.system.properties).toBeDefined() + expect(api.derive.balances.fees()).toBeDefined() + expect(api.query.democracy.publicPropCount()).toBeDefined() + expect(api.query.democracy.referendumCount()).toBeDefined() + expect(api.query.democracy.publicProps()).toBeDefined() + expect(api.derive.democracy.referendums()).toBeDefined() + expect(api.query.democracy.launchPeriod()).toBeDefined() + expect(api.derive.chain.bestNumber()).toBeDefined() + expect(api.query.democracy.depositOf).toBeDefined() + expect(api.tx.staking.chill()).toBeDefined() + expect(api.query.staking.validatorCount()).toBeDefined() + expect(api.query.session.sessionLength()).toBeDefined() + expect(api.derive.session.eraLength()).toBeDefined() + expect(api.derive.session.sessionProgress()).toBeDefined() + expect(api.derive.session.eraProgress()).toBeDefined() + expect(api.query.session.validators()).toBeDefined() + expect(api.derive.staking.controllers()).toBeDefined() + expect(api.tx.democracy.vote(1, true)).toBeDefined() + expect(api.tx.staking.bondExtra(1)).toBeDefined() + expect( + api.tx.staking.validate({ + unstakeThreshold: '1', + validatorPayment: 1 + }) + ).toBeDefined() + expect(api.tx.staking.unbond(1)).toBeDefined() + expect(api.derive.democracy.referendumVotesFor(1)).toBeDefined() + expect(api.query.balances.freeBalance).toBeDefined() + expect(api.tx.staking.bond).toBeDefined() + expect(api.derive.staking.info).toBeDefined() + expect(api.query.staking.nominators).toBeDefined() + expect(api.tx.staking.nominate).toBeDefined() + expect(api.tx.session.setKey).toBeDefined() + expect(api.query.staking.bonded).toBeDefined() + expect(api.query.staking.ledger).toBeDefined() + expect(api.query.system.accountNonce).toBeDefined() + expect(api.tx.balances.transfer).toBeDefined() +}) +test('Create API instance without metadata and makes the runtime, rpc, state & extrinsics available', async () => { + const metadata = {} + const api = await _.ApiPromise.create({ + provider: mock, + metadata + }) + expect(api.query.timestamp.now()).toBeDefined() + expect(api.rpc.system.properties).toBeDefined() + expect(api.derive.balances.fees()).toBeDefined() + expect(api.query.democracy.publicPropCount()).toBeDefined() + expect(api.query.democracy.referendumCount()).toBeDefined() + expect(api.query.democracy.publicProps()).toBeDefined() + expect(api.derive.democracy.referendums()).toBeDefined() + expect(api.query.democracy.launchPeriod()).toBeDefined() + expect(api.derive.chain.bestNumber()).toBeDefined() + expect(api.query.democracy.depositOf).toBeDefined() + expect(api.tx.staking.chill()).toBeDefined() + expect(api.query.staking.validatorCount()).toBeDefined() + expect(api.query.session.sessionLength()).toBeDefined() + expect(api.derive.session.eraLength()).toBeDefined() + expect(api.derive.session.sessionProgress()).toBeDefined() + expect(api.derive.session.eraProgress()).toBeDefined() + expect(api.query.session.validators()).toBeDefined() + expect(api.derive.staking.controllers()).toBeDefined() + expect(api.tx.democracy.vote(1, true)).toBeDefined() + expect(api.tx.staking.bondExtra(1)).toBeDefined() + expect( + api.tx.staking.validate({ + unstakeThreshold: '1', + validatorPayment: 1 + }) + ).toBeDefined() + expect(api.tx.staking.unbond(1)).toBeDefined() + expect(api.derive.democracy.referendumVotesFor(1)).toBeDefined() + expect(api.query.balances.freeBalance).toBeDefined() + expect(api.tx.staking.bond).toBeDefined() + expect(api.derive.staking.info).toBeDefined() + expect(api.query.staking.nominators).toBeDefined() + expect(api.tx.staking.nominate).toBeDefined() + expect(api.tx.session.setKey).toBeDefined() + expect(api.query.staking.bonded).toBeDefined() + expect(api.query.staking.ledger).toBeDefined() + expect(api.query.system.accountNonce).toBeDefined() + expect(api.tx.balances.transfer).toBeDefined() +}) diff --git a/android/app/BUCK b/android/app/BUCK old mode 100644 new mode 100755 diff --git a/android/app/build.gradle b/android/app/build.gradle old mode 100644 new mode 100755 index e57a8067..cbb432ea --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -103,6 +103,11 @@ android { targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 versionName "1.0" + manifestPlaceholders = [ + JPUSH_APPKEY: "6f7aadcc0ccf0f3db8467c38", + APP_CHANNEL : "default" + ] + ndk { abiFilters "armeabi-v7a", "x86" } @@ -154,6 +159,10 @@ configurations.all { } dependencies { + implementation project(':jcore-react-native') + implementation project(':jpush-react-native') + implementation project(':react-native-qr-scanner') + implementation project(':react-native-i18n') compile project(':react-native-update') compile project(':react-native-udp') compile project(':react-native-tcp') diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro old mode 100644 new mode 100755 diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml old mode 100644 new mode 100755 index 55604270..5eaaa175 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -25,6 +25,13 @@ + + + diff --git a/android/app/src/main/assets/index.android.bundle b/android/app/src/main/assets/index.android.bundle old mode 100644 new mode 100755 diff --git a/android/app/src/main/assets/index.android.map b/android/app/src/main/assets/index.android.map new file mode 100755 index 00000000..e277bdff --- /dev/null +++ b/android/app/src/main/assets/index.android.map @@ -0,0 +1 @@ +{"version":3,"sources":["__prelude__","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/metro/src/lib/polyfills/require.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/polyfills/Object.es6.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/polyfills/console.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/polyfills/error-guard.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/polyfills/Number.es6.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/polyfills/String.prototype.es6.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/polyfills/Array.prototype.es6.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/polyfills/Array.es6.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/polyfills/Object.es7.js","/Users/wushuaipeng/Documents/spwuc/polkdot/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/interopRequireDefault.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/regenerator/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/regenerator-runtime/runtime-module.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/regenerator-runtime/runtime.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/node-libs-react-native/globals.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/node-libs-react-native/node_modules/buffer/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/base64-js/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/ieee754/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/process/browser.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/react-native/react-native-implementation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/fbjs/lib/invariant.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/AccessibilityInfo/AccessibilityInfo.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/BatchedBridge/NativeModules.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/objectWithoutProperties.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/extends.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/slicedToArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/arrayWithHoles.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/nonIterableRest.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/BatchedBridge/BatchedBridge.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/toConsumableArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/iterableToArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/nonIterableSpread.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/classCallCheck.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/createClass.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/core/ErrorUtils.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Performance/Systrace.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/stringifySafe.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/defineLazyObjectProperty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/EventEmitter/RCTDeviceEventEmitter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/typeof.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/assertThisInitialized.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/getPrototypeOf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/get.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/superPropBase.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/inherits.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/setPrototypeOf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/emitter/EventEmitter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/emitter/EmitterSubscription.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/emitter/EventSubscription.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/emitter/EventSubscriptionVendor.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/fbjs/lib/emptyFunction.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/ReactNative/UIManager.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/Platform.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/objectSpread.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/defineProperty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/react-native/React.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react/cjs/react.production.min.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/object-assign/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/StyleSheet/StyleSheet.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/PixelRatio.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/Dimensions.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/DeviceInfo.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/View/ReactNativeStyleAttributes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Image/ImageStylePropTypes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/StyleSheet/ColorPropType.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Color/normalizeColor.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Image/ImageResizeMode.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/fbjs/lib/keyMirror.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/StyleSheet/LayoutPropTypes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/prop-types/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/prop-types/factoryWithThrowingShims.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/prop-types/lib/ReactPropTypesSecret.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/View/ShadowPropTypesIOS.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/StyleSheet/TransformPropTypes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/deprecatedPropType.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Text/TextStylePropTypes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/View/ViewStylePropTypes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/StyleSheet/processColor.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/StyleSheet/processTransform.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/MatrixMath.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/differ/sizesDiffer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/StyleSheet/StyleSheetValidation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/StyleSheet/flattenStyle.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/View/View.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Text/TextAncestor.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/View/ViewNativeComponent.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Renderer/shims/ReactNative.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Renderer/oss/ReactNativeRenderer-prod.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Core/InitializeCore.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/PolyfillFunctions.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/core/_shouldPolyfillES6Collection.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/core/Map.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/core/guid.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/fbjs/lib/isNode.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/core/toIterator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/core/Set.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Core/ExceptionsManager.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Core/Devtools/parseErrorStack.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/stacktrace-parser/dist/stack-trace-parser.umd.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Core/ReactNativeVersionCheck.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Core/ReactNativeVersion.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Promise.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/fbjs/lib/Promise.native.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/promise/setimmediate/es6-extensions.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/promise/setimmediate/core.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/promise/setimmediate/done.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/node_modules/regenerator-runtime/runtime.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Core/Timers/JSTimers.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/fbjs/lib/performanceNow.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/fbjs/lib/performance.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/fbjs/lib/ExecutionEnvironment.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/fbjs/lib/warning.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Network/XMLHttpRequest.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/event-target-shim/lib/event-target.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/event-target-shim/lib/commons.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/event-target-shim/lib/custom-event-target.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/event-target-shim/lib/event-wrapper.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Network/RCTNetworking.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/EventEmitter/MissingNativeEventEmitterShim.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Network/convertRequestBody.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/binaryToBase64.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Blob/Blob.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Blob/BlobManager.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Blob/BlobRegistry.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Network/FormData.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Network/fetch.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/core/whatwg-fetch.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/WebSocket/WebSocket.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/WebSocket/WebSocketEvent.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Blob/File.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Blob/FileReader.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Blob/URL.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Alert/Alert.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Alert/AlertIOS.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Geolocation/Geolocation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/logError.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/PermissionsAndroid/PermissionsAndroid.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/HeapCapture.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Performance/SamplingProfiler.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/RCTLog.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/EventEmitter/RCTNativeAppEventEmitter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/PerformanceLogger.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/infoLog.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/JSDevSupportModule.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/EventEmitter/RCTEventEmitter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/differ/deepDiffer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/TextInput/TextInputState.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/scheduler/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/scheduler/cjs/scheduler.production.min.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/ReactNative/requireNativeComponent.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Renderer/shims/createReactNativeComponentClass.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/ReactNative/getNativeComponentAttributes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/differ/insetsDiffer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/differ/matricesDiffer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/differ/pointsDiffer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Image/resolveAssetSource.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Image/AssetRegistry.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Image/AssetSourceResolver.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/local-cli/bundle/assetPathUtils.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/ART/ReactNativeART.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/art/core/color.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/ART/ARTSerializablePath.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/art/core/class.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/art/core/path.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/art/core/transform.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/View/ReactNativeViewAttributes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/core/merge.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/core/mergeInto.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/core/mergeHelpers.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Button.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Text/Text.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Text/TextPropTypes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/StyleSheet/EdgeInsetsPropType.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/StyleSheet/StyleSheetPropType.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/createStrictShapeTypeChecker.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Touchable/Touchable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Touchable/BoundingDimensions.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Touchable/PooledClass.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Touchable/Position.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/AppleTV/TVEventHandler.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/fbjs/lib/TouchEventUtils.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/fbjs/lib/nullthrows.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Touchable/TouchableNativeFeedback.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-timer-mixin/TimerMixin.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/create-react-class/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/create-react-class/factory.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/create-react-class/node_modules/fbjs/lib/emptyObject.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/create-react-class/node_modules/fbjs/lib/invariant.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Touchable/ensurePositiveDelayProps.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/View/ViewAccessibility.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/Animated.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/AnimatedImplementation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/AnimatedEvent.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedValue.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedInterpolation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedNode.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/NativeAnimatedHelper.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedWithChildren.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Interaction/InteractionManager.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Interaction/TaskQueue.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedAddition.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedDiffClamp.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedDivision.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedModulo.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedMultiplication.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedProps.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedStyle.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedTransform.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedSubtraction.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedTracking.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/nodes/AnimatedValueXY.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/animations/DecayAnimation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/animations/Animation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/animations/SpringAnimation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/SpringConfig.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/animations/TimingAnimation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/Easing.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/bezier.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Animated/src/createAnimatedComponent.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Lists/FlatList.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Lists/MetroListView.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Lists/ListView/ListView.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Lists/ListView/InternalListViewType.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Lists/ListView/ListViewDataSource.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/core/isEmpty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/ScrollResponder.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Interaction/FrameRateLogger.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Keyboard/Keyboard.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/LayoutAnimation/LayoutAnimation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/dismissKeyboard.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Subscribable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewStickyHeader.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/ScrollView/InternalScrollViewType.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/ScrollView/processDecelerationRate.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/StaticRenderer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-clone-referenced-element/cloneReferencedElement.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/RefreshControl/RefreshControl.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Lists/VirtualizedList.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Interaction/Batchinator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Lists/FillRateHelper.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Lists/ViewabilityHelper.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Lists/VirtualizeUtils.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Image/Image.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/View/ViewPropTypes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/View/PlatformViewPropTypes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/AppleTV/TVViewPropTypes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Lists/SectionList.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Lists/VirtualizedSectionList.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Renderer/shims/NativeMethodsMixin.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/CheckBox/CheckBox.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/DatePicker/DatePickerIOS.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/StatusBar/StatusBar.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Image/ImageBackground.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Touchable/ensureComponentIsNative.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Image/ImageEditor.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Image/ImageStore.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/TextInput/InputAccessoryView.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Keyboard/KeyboardAvoidingView.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/MaskedView/MaskedViewIOS.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/UnimplementedViews/UnimplementedView.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Modal/Modal.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/ReactNative/AppContainer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/ReactNative/I18nManager.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Navigation/NavigatorIOS.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Picker/Picker.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Picker/PickerIOS.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Picker/PickerAndroid.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/ProgressViewIOS/ProgressViewIOS.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/SafeAreaView/SafeAreaView.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Slider/Slider.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/RCTTest/SnapshotViewIOS.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Switch/Switch.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Switch/SwitchNativeComponent.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Experimental/SwipeableRow/SwipeableFlatList.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Experimental/SwipeableRow/SwipeableRow.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Interaction/PanResponder.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Interaction/TouchHistoryMath.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Experimental/SwipeableRow/SwipeableListView.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Experimental/SwipeableRow/SwipeableListViewDataSource.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarIOS.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarItemIOS.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/TextInput/TextInput.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/document/selection/DocumentSelectionState.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/emitter/mixInEventEmitter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/emitter/EventEmitterWithHolding.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/vendor/emitter/EventHolder.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/fbjs/lib/keyOf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/ToastAndroid/ToastAndroid.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/ToolbarAndroid/ToolbarAndroid.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/ViewPager/ViewPagerAndroid.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/WebView/WebView.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/WebView/WebViewShared.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/escape-string-regexp/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/ActionSheetIOS/ActionSheetIOS.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/ReactNative/AppRegistry.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/BugReporting/BugReporting.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/BugReporting/dumpReactTree.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/SceneTracker.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/ReactNative/renderApplication.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/ReactNative/ReactFabricIndicator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/BackHandler.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Renderer/shims/ReactFabric.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Renderer/oss/ReactFabric-prod.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/ReactNative/FabricUIManager.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/AppState/AppState.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Storage/AsyncStorage.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Utilities/BackAndroid.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/CameraRoll/CameraRoll.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/Clipboard/Clipboard.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/DatePickerAndroid/DatePickerAndroid.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/CameraRoll/ImagePickerIOS.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Linking/Linking.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Network/NetInfo.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/PushNotificationIOS/PushNotificationIOS.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Settings/Settings.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Share/Share.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/StatusBar/StatusBarIOS.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Components/TimePickerAndroid/TimePickerAndroid.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Vibration/Vibration.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/Vibration/VibrationIOS.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/YellowBox/YellowBox.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/ReactNative/takeSnapshot.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native/Libraries/StyleSheet/PointPropType.js","/Users/wushuaipeng/Documents/spwuc/polkdot/App.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/interopRequireWildcard.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/react-navigation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/createNavigationContainer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-lifecycles-compat/react-lifecycles-compat.cjs.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/NavigationActions.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/getNavigation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/routers/getNavigationActionCreators.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/utils/invariant.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/getChildNavigation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/getChildEventSubscriber.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/getChildRouter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/utils/docsUrl.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/routers/pathUtils.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/path-to-regexp/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/path-to-regexp/node_modules/isarray/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/query-string/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/strict-uri-encode/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/decode-uri-component/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/StateUtils.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/navigators/createNavigator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/navigators/createKeyboardAwareNavigator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/views/NavigationContext.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/create-react-context/lib/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/create-react-context/lib/implementation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/gud/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/create-react-context/node_modules/fbjs/lib/warning.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/create-react-context/node_modules/fbjs/lib/emptyFunction.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/navigators/createContainedStackNavigator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/navigators/createStackNavigator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/views/StackView/StackView.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/views/StackView/StackViewLayout.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/utils/clamp.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-screens/src/screens.native.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/views/StackView/StackViewCard.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/views/StackView/createPointerEventsContainer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/utils/invariant.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/views/Header/Header.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/views/Header/HeaderTitle.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/views/Header/HeaderBackButton.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/views/TouchableItem.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/views/assets/back-icon.png","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/views/Header/ModularHeaderBackButton.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/views/Header/HeaderStyleInterpolator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/utils/getSceneIndicesForInterpolationInputRange.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/views/assets/back-icon-mask.png","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/views/StackView/StackViewTransitionConfigs.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/views/StackView/StackViewStyleInterpolator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/utils/ReactNativeFeatures.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/views/Transitioner.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/views/ScenesReducer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-stack/dist/utils/shallowEqual.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/navigators/createContainedSwitchNavigator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/navigators/createSwitchNavigator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/routers/SwitchRouter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/routers/getScreenForRouteName.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-is/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-is/cjs/react-is.production.min.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/routers/createConfigGetter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/routers/validateScreenOptions.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/routers/StackActions.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/routers/validateRouteConfigMap.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/views/SwitchView/SwitchView.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/views/SceneView.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-drawer/dist/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-drawer/dist/navigators/createDrawerNavigator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-drawer/dist/routers/DrawerRouter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-drawer/dist/routers/DrawerActions.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-drawer/dist/views/DrawerView.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-drawer-layout-polyfill/dist/index.android.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-drawer/dist/views/DrawerSidebar.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-drawer/dist/utils/invariant.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-drawer/dist/views/DrawerNavigatorItems.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-drawer/dist/views/TouchableItem.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-deprecated-tab-navigator/src/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-deprecated-tab-navigator/src/createTabNavigator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-deprecated-tab-navigator/src/views/TabView.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-tab-view/src/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-tab-view/src/TabViewAnimated.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-tab-view/src/TabViewPropTypes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-tab-view/src/TabViewPagerAndroid.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-tab-view/src/TabViewPagerScroll.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-tab-view/src/TabViewPagerPan.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-tab-view/src/TabViewPagerExperimental.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-tab-view/src/TabBar.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-tab-view/src/TouchableItem.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-tab-view/src/SceneMap.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-deprecated-tab-navigator/src/views/TabBarTop.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-deprecated-tab-navigator/src/views/TabBarIcon.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-deprecated-tab-navigator/src/views/TabBarBottom.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/src/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/src/navigators/createBottomTabNavigator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/src/utils/createTabNavigator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/src/views/BottomTabBar.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/src/views/CrossFadeIcon.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/src/utils/withDimensions.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/src/views/ResourceSavingScene.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/src/navigators/createMaterialTopTabNavigator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/node_modules/react-native-tab-view/src/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/node_modules/react-native-tab-view/src/TabView.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/node_modules/react-native-tab-view/src/TabBar.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/node_modules/react-native-tab-view/src/TouchableItem.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/node_modules/react-native-tab-view/src/PropTypes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/node_modules/react-native-tab-view/src/PagerDefault.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/node_modules/react-native-tab-view/src/PagerAndroid.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/node_modules/react-native-tab-view/src/PagerScroll.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/node_modules/react-native-tab-view/src/PagerPan.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/node_modules/react-native-tab-view/src/PagerExperimental.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/node_modules/react-native-tab-view/src/SceneMap.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation-tabs/src/views/MaterialTopTabBar.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/routers/StackRouter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/routers/KeyGenerator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/routers/TabRouter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/utils/withDefaultValue.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/utils/getActiveChildNavigationOptions.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-safe-area-view/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-safe-area-view/withOrientation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/views/ResourceSavingSceneView.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/views/NavigationEvents.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/views/withNavigation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/views/withNavigationFocus.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-navigation/src/views/withOrientation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/TabbedNavigation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Assets/Assets.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/locales/i18n.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-i18n/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/i18n-js/app/assets/javascripts/i18n.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/locales/en-US/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/locales/en-US/Assets/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/locales/en-US/Staking/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/locales/en-US/Democracy/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/locales/en-US/Profile/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/locales/zh-CN/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/locales/zh-CN/Assets/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/locales/zh-CN/Staking/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/locales/zh-CN/Democracy/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/locales/zh-CN/Profile/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/util/DataRepository.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-update/lib/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/promise/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/interopRequireDefault.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/promise/Api.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/toConsumableArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/iterableToArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/nonIterableSpread.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/regenerator/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/regenerator-runtime/runtime.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/classCallCheck.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/typeof.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/assertThisInitialized.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/createClass.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/inherits.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/setPrototypeOf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/getPrototypeOf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/get.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/superPropBase.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/objectSpread.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/defineProperty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/Observable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/canReportError.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/Subscriber.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/isFunction.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/Observer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/config.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/hostReportError.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/Subscription.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/isArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/isObject.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/UnsubscriptionError.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/symbol/rxSubscriber.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/toSubscriber.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/symbol/observable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/pipe.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/noop.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/ConnectableObservable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/Subject.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/ObjectUnsubscribedError.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/SubjectSubscription.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/refCount.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/groupBy.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/BehaviorSubject.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/ReplaySubject.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduler/queue.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduler/QueueAction.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduler/AsyncAction.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduler/Action.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduler/QueueScheduler.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduler/AsyncScheduler.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/Scheduler.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/observeOn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/Notification.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/empty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/of.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/isScheduler.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/fromArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/subscribeToArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduled/scheduleArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/throwError.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/AsyncSubject.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduler/asap.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduler/AsapAction.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/Immediate.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduler/AsapScheduler.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduler/async.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduler/animationFrame.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduler/AnimationFrameAction.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduler/AnimationFrameScheduler.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduler/VirtualTimeScheduler.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/identity.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/isObservable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/ArgumentOutOfRangeError.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/EmptyError.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/TimeoutError.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/bindCallback.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/map.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/bindNodeCallback.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/combineLatest.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/OuterSubscriber.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/subscribeToResult.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/InnerSubscriber.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/subscribeTo.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/subscribeToPromise.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/subscribeToIterable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/symbol/iterator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/subscribeToObservable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/isArrayLike.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/isPromise.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/concat.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/concatAll.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/mergeAll.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/mergeMap.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/from.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduled/scheduled.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduled/scheduleObservable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduled/schedulePromise.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/scheduled/scheduleIterable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/isInteropObservable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/isIterable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/defer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/forkJoin.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/fromEvent.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/fromEventPattern.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/generate.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/iif.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/interval.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/isNumeric.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/merge.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/never.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/onErrorResumeNext.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/pairs.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/partition.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/not.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/filter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/race.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/range.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/timer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/using.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/zip.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/operators/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/audit.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/auditTime.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/buffer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/bufferCount.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/bufferTime.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/bufferToggle.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/bufferWhen.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/catchError.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/combineAll.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/combineLatest.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/concat.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/concatMap.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/concatMapTo.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/count.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/debounce.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/debounceTime.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/defaultIfEmpty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/delay.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/util/isDate.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/delayWhen.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/dematerialize.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/distinct.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/distinctUntilChanged.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/distinctUntilKeyChanged.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/elementAt.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/throwIfEmpty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/take.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/endWith.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/every.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/exhaust.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/exhaustMap.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/expand.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/finalize.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/find.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/findIndex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/first.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/ignoreElements.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/isEmpty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/last.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/takeLast.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/mapTo.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/materialize.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/max.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/reduce.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/scan.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/merge.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/mergeMapTo.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/mergeScan.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/min.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/multicast.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/onErrorResumeNext.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/pairwise.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/partition.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/pluck.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/publish.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/publishBehavior.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/publishLast.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/publishReplay.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/race.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/repeat.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/repeatWhen.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/retry.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/retryWhen.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/sample.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/sampleTime.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/sequenceEqual.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/share.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/shareReplay.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/single.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/skip.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/skipLast.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/skipUntil.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/skipWhile.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/startWith.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/subscribeOn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/observable/SubscribeOnObservable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/switchAll.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/switchMap.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/switchMapTo.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/takeUntil.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/takeWhile.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/tap.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/throttle.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/throttleTime.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/timeInterval.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/timeout.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/timeoutWith.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/timestamp.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/toArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/window.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/windowCount.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/windowTime.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/windowToggle.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/windowWhen.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/withLatestFrom.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/zip.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/rxjs/internal/operators/zipAll.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/node_modules/@babel/runtime/helpers/interopRequireDefault.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/polyfill/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/polyfill/fill.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/polyfill/padEnd.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/polyfill/padStart.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/polyfill/setPrototypeOf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/polyfill/textDecoder.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/util/util.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/util/support/isBufferBrowser.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/inherits/inherits_browser.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/polyfill/textEncoder.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/assert.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/ext/error.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/node_modules/@babel/runtime/helpers/classCallCheck.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/node_modules/@babel/runtime/helpers/typeof.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/node_modules/@babel/runtime/helpers/assertThisInitialized.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/node_modules/@babel/runtime/helpers/getPrototypeOf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/node_modules/@babel/runtime/helpers/inherits.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/node_modules/@babel/runtime/helpers/setPrototypeOf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/node_modules/@babel/runtime/helpers/wrapNativeSuper.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/node_modules/@babel/runtime/helpers/isNativeFunction.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/node_modules/@babel/runtime/helpers/construct.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/is/function.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/assertSingletonPackage.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/is/undefined.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/logger.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/chalk/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/ansi-styles/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/color-convert/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/color-convert/conversions.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/color-name/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/color-convert/route.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/supports-color/browser.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/chalk/templates.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/moment/moment.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/is/bn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/bn.js/lib/bn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/buffer/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/isarray/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/is/buffer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/is/instanceOf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/is/object.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/is/u8a.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/u8a/toHex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/promisify.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/array/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/array/filter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/is/null.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/bn/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/bn/fromHex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/hex/toBn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/node_modules/@babel/runtime/helpers/objectSpread.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/node_modules/@babel/runtime/helpers/defineProperty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/is/boolean.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/hex/stripPrefix.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/hex/hasPrefix.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/is/hex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/is/string.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/bn/max.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/bn/min.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/bn/toBn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/bn/toHex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/is/number.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/bn/toU8a.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/u8a/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/u8a/concat.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/u8a/toU8a.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/buffer/toU8a.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/hex/toU8a.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/string/toU8a.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/u8a/fixLength.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/u8a/toBn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/u8a/toBuffer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/u8a/toString.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/buffer/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/compact/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/compact/addLength.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/compact/toU8a.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/compact/stripLength.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/node_modules/@babel/runtime/helpers/slicedToArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/node_modules/@babel/runtime/helpers/arrayWithHoles.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/node_modules/@babel/runtime/helpers/nonIterableRest.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/compact/defaults.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/compact/fromU8a.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/ext/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/format/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/format/formatBalance.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/format/si.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/format/formatDecimal.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/format/formatElapsed.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/format/formatNumber.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/hex/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/hex/addPrefix.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/hex/fixLength.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/hex/toNumber.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/is/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/is/error.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/is/ip.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/ip-regex/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/is/jsonObject.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/is/observable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/is/testChain.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/number/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/number/toHex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/number/toU8a.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/string/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/string/camelCase.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/camelcase/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/string/lowerFirst.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/string/shorten.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util/string/upperFirst.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/Base.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/slicedToArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/arrayWithHoles.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/nonIterableRest.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/eventemitter3/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/interopRequireWildcard.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/accounts/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/accounts/idAndIndex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/node_modules/@babel/runtime/helpers/classCallCheck.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/node_modules/@babel/runtime/helpers/createClass.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/node_modules/@babel/runtime/helpers/interopRequireDefault.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/node_modules/@babel/runtime/helpers/interopRequireDefault.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/polyfill.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/wasm-crypto/crypto-polyfill.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-crypto/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-randombytes/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/sjcl/sjcl.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/create-hash/browser.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/md5.js/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/hash-base/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/safe-buffer/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/stream-browserify/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/events/events.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/readable-stream/readable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/readable-stream/lib/_stream_readable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/readable-stream/node_modules/isarray/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-util-is/lib/util.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/string_decoder/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/readable-stream/lib/_stream_writable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/readable-stream/lib/_stream_duplex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/readable-stream/lib/_stream_transform.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/readable-stream/lib/_stream_passthrough.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/readable-stream/writable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/readable-stream/duplex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/readable-stream/transform.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/readable-stream/passthrough.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/ripemd160/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/sha.js/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/sha.js/sha.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/sha.js/hash.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/sha.js/sha1.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/sha.js/sha224.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/sha.js/sha256.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/sha.js/sha384.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/sha.js/sha512.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/cipher-base/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/create-hmac/browser.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/create-hmac/legacy.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/create-hash/md5.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-sign/algos.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-sign/browser/algorithms.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-crypto/node_modules/pbkdf2/browser.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-crypto/node_modules/pbkdf2/precondition.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-cipher/browser.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-des/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/des.js/lib/des.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/des.js/lib/des/utils.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/des.js/lib/des/cipher.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/minimalistic-assert/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/des.js/lib/des/des.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/des.js/lib/des/cbc.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/des.js/lib/des/ede.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-aes/browser.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-aes/encrypter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-aes/modes/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-aes/modes/ecb.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-aes/modes/cbc.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/buffer-xor/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-aes/modes/cfb.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-aes/modes/cfb8.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-aes/modes/cfb1.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-aes/modes/ofb.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-aes/modes/ctr.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-aes/incr32.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-aes/modes/list.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-aes/authCipher.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-aes/aes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-aes/ghash.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-aes/streamCipher.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/evp_bytestokey/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-aes/decrypter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-des/modes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/diffie-hellman/browser.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/diffie-hellman/lib/generatePrime.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/randombytes/browser.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/miller-rabin/lib/mr.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/brorand/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/diffie-hellman/lib/primes.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/diffie-hellman/lib/dh.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-sign/browser/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-sign/browser/sign.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-rsa/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/elliptic/lib/elliptic.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/elliptic/package.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/elliptic/lib/elliptic/utils.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/minimalistic-crypto-utils/lib/utils.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/elliptic/lib/elliptic/curve/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/elliptic/lib/elliptic/curve/base.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/elliptic/lib/elliptic/curve/short.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/elliptic/lib/elliptic/curve/mont.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/elliptic/lib/elliptic/curve/edwards.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/elliptic/lib/elliptic/curves.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/hash.js/lib/hash.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/hash.js/lib/hash/utils.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/hash.js/lib/hash/common.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/hash.js/lib/hash/sha.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/hash.js/lib/hash/sha/1.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/hash.js/lib/hash/sha/common.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/hash.js/lib/hash/sha/224.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/hash.js/lib/hash/sha/256.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/hash.js/lib/hash/sha/384.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/hash.js/lib/hash/sha/512.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/hash.js/lib/hash/ripemd.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/hash.js/lib/hash/hmac.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/elliptic/lib/elliptic/ec/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/hmac-drbg/lib/hmac-drbg.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/elliptic/lib/elliptic/ec/key.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/elliptic/lib/elliptic/ec/signature.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/elliptic/lib/elliptic/eddsa/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/elliptic/lib/elliptic/eddsa/key.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/elliptic/lib/elliptic/eddsa/signature.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/parse-asn1/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/parse-asn1/asn1.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/asn1.js/lib/asn1.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/asn1.js/lib/asn1/api.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/vm-browserify/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/indexof/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/asn1.js/lib/asn1/base/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/asn1.js/lib/asn1/base/reporter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/asn1.js/lib/asn1/base/buffer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/asn1.js/lib/asn1/base/node.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/asn1.js/lib/asn1/constants/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/asn1.js/lib/asn1/constants/der.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/asn1.js/lib/asn1/decoders/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/asn1.js/lib/asn1/decoders/der.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/asn1.js/lib/asn1/decoders/pem.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/asn1.js/lib/asn1/encoders/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/asn1.js/lib/asn1/encoders/der.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/asn1.js/lib/asn1/encoders/pem.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/parse-asn1/certificate.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/parse-asn1/aesid.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/parse-asn1/fixProc.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pbkdf2/browser.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pbkdf2/lib/async.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pbkdf2/lib/precondition.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pbkdf2/lib/default-encoding.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pbkdf2/lib/sync-browser.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-sign/browser/curves.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/browserify-sign/browser/verify.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/create-ecdh/browser.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/public-encrypt/browser.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/public-encrypt/publicEncrypt.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/public-encrypt/mgf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/public-encrypt/xor.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/public-encrypt/withPublic.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/public-encrypt/privateDecrypt.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/wasm-crypto/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/wasm-crypto/wasm.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/wasm-crypto/wasm_bg.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/wasm-crypto/package.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/wasm-crypto/wasm_wasm.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/blake2/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/blake2/asHex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/blake2/asU8a.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/blakejs/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/blakejs/blake2b.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/blakejs/util.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/blakejs/blake2s.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/keccak/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/keccak/asHex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/keccak/asU8a.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/js-sha3/src/sha3.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/key/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/key/extractPath.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/key/DeriveJunction.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/node_modules/@babel/runtime/helpers/classCallCheck.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/node_modules/@babel/runtime/helpers/createClass.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/node_modules/@babel/runtime/helpers/slicedToArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/node_modules/@babel/runtime/helpers/arrayWithHoles.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/node_modules/@babel/runtime/helpers/nonIterableRest.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/key/extractSuri.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/key/fromPath.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/key/hdkdEd25519.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/nacl/deriveHard.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/nacl/keypair/fromSeed.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/tweetnacl/nacl-fast.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/key/hdkdSr25519.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/schnorrkel/deriveHard.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/schnorrkel/keypair/fromU8a.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/schnorrkel/keypair/toU8a.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/schnorrkel/deriveSoft.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/mnemonic/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/mnemonic/generate.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/bip39/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/unorm/lib/unorm.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/bip39/wordlists/chinese_simplified.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/bip39/wordlists/chinese_traditional.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/bip39/wordlists/english.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/bip39/wordlists/french.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/bip39/wordlists/italian.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/bip39/wordlists/japanese.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/bip39/wordlists/korean.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/bip39/wordlists/spanish.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/mnemonic/toEntropy.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/mnemonic/toMiniSecret.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/mnemonic/toSeed.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/mnemonic/validate.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/nacl/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/nacl/decrypt.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/nacl/encrypt.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/random/asU8a.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/nacl/keypair/fromRandom.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/nacl/keypair/fromSecret.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/nacl/keypair/fromString.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/nacl/sign.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/nacl/verify.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/random/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/random/asHex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/random/asNumber.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/schnorrkel/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/schnorrkel/keypair/fromSeed.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/schnorrkel/sign.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/schnorrkel/verify.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/secp256k1/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/secp256k1/recover.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/secp256k1/elliptic.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/secp256k1/lib/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/secp256k1/lib/assert.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/secp256k1/lib/der.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/bip66/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/secp256k1/lib/messages.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/secp256k1/lib/elliptic/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/sha512/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/sha512/asU8a.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/xxhash/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/xxhash/asHex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/xxhash/asU8a.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/xxhash/xxhash64/asBn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/xxhash/xxhash64/asRaw.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/util-crypto/xxhash/xxhash64/asValue.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/xxhashjs/lib/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/xxhashjs/lib/xxhash.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/cuint/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/cuint/lib/uint32.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/cuint/lib/uint64.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/xxhashjs/lib/xxhash64.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/address/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/address/decode.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/bs58/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/base-x/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/address/defaults.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/address/sshash.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/address/encode.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/address/setPrefix.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/defaults.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/pair/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/node_modules/@babel/runtime/helpers/objectSpread.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/node_modules/@babel/runtime/helpers/defineProperty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/pair/decode.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/pair/defaults.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/pair/encode.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/pair/toJson.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/keyring/pairs.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/interopRequireDefault.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/ContractAbi.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/classCallCheck.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/createClass.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/objectSpread.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/defineProperty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/Compact.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/typeof.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/assertThisInitialized.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/getPrototypeOf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/inherits.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/setPrototypeOf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/slicedToArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/arrayWithHoles.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/nonIterableRest.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/Base.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/createType.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/Null.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/Enum.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/EnumType.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/Linkage.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/interopRequireWildcard.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/Option.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/Set.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/toConsumableArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/iterableToArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/nonIterableSpread.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/get.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/superPropBase.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/wrapNativeSuper.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/isNativeFunction.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/construct.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/utils/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/utils/compareArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/utils/compareMap.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/utils/decodeU8a.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/Struct.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/Tuple.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/AbstractArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/Vector.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/U8a.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/UInt.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/AbstractInt.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/typeRegistry.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/index.types.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/Metadata.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/MagicNumber.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/U32.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/MetadataVersioned.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v0/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v0/Metadata.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/util/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/util/flattenUniq.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/util/validateTypes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v0/Calls.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/Text.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/U16.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v0/Events.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/Type.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v0/Modules.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v0/Storage.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/Bytes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/StorageData.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v1/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v1/Metadata.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v1/Calls.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v1/Events.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v1/Storage.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v2/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v2/Metadata.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v2/Calls.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v2/Events.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v2/Storage.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/Bool.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v3/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v3/Metadata.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v3/Calls.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v3/Events.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v3/Storage.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v4/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v4/Metadata.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v4/Calls.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v4/Events.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v4/Storage.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/StorageHasher.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v0/toV1.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v1/toV2.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v2/toV3.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/Metadata/v3/toV4.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/AccountId.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/U8aFixed.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/AccountIndex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/AccountInfo.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/U64.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/Address.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/Event.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/EventRecord.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/Hash.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/H256.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/Data.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/H160.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/H512.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/I8.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/codec/Int.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/I16.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/I32.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/I64.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/I128.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/I256.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/Method.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/Moment.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/Origin.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/StorageKey.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/node_modules/@babel/runtime/helpers/toArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/U8.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/U128.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/U256.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/primitive/USize.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/rpc/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/rpc/Block.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/Extrinsics.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/Extrinsic.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/ExtrinsicSignature.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/ExtrinsicEra.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/NonceCompact.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/Nonce.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/Signature.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/SignaturePayload.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/rpc/Header.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/BlockNumber.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/rpc/Digest.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/AuthorityId.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/rpc/ChainProperties.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/rpc/Json.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/rpc/ExtrinsicStatus.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/rpc/Health.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/rpc/NetworkState.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/rpc/PeerInfo.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/rpc/PendingExtrinsics.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/rpc/RuntimeVersion.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/rpc/SignedBlock.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/Justification.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/Bft.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/rpc/StorageChangeSet.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/KeyValue.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/Amount.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/Balance.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/AssetOf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/AttestedCandidate.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/ParaId.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/SessionKey.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/BalanceLock.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/LockIdentifier.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/WithdrawReasons.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/CodeHash.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/ContractInfo.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/Exposure.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/IndividualExposure.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/Gas.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/InherentOfflineReport.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/Key.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/LockPeriods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/MisbehaviorReport.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/NewAccountOutcome.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/Permill.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/Perbill.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/PrefabWasmModule.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/PropIndex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/Proposal.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/ProposalIndex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/ReferendumIndex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/ReferendumInfo.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/VoteThreshold.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/RewardDestination.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/Schedule.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/SeedOf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/StakingLedger.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/UnlockChunk.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/StoredPendingChange.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/TreasuryProposal.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/ValidatorPrefs.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/VestingSchedule.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/Vote.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/types/type/VoteIndex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/accounts/idToIndex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/accounts/indexes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/toConsumableArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/iterableToArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/nonIterableSpread.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/util/drr.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/accounts/indexToId.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/balances/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/balances/all.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/interopRequireDefault.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/slicedToArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/arrayWithHoles.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/nonIterableRest.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/balances/fees.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/balances/validatingBalance.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/objectSpread.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/defineProperty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/balances/votingBalance.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/balances/votingBalancesNominatorsFor.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/balances/votingBalances.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/balances/validatingBalances.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/chain/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/chain/bestNumber.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/chain/bestNumberFinalized.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/chain/bestNumberLag.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/chain/getHeader.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/type/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/type/HeaderExtended.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/classCallCheck.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/createClass.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/typeof.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/assertThisInitialized.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/getPrototypeOf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/get.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/superPropBase.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/inherits.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/node_modules/@babel/runtime/helpers/setPrototypeOf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/chain/subscribeNewHead.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/democracy/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/democracy/referendumInfos.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/democracy/referendumInfo.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/democracy/referendums.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/democracy/referendumVotesFor.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/democracy/votes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/session/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/session/eraLength.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/session/info.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/session/eraProgress.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/session/sessionProgress.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/staking/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/staking/controllers.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/staking/info.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api-derive/staking/intentionsBalances.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/extrinsics/fromMetadata/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/extrinsics/node_modules/@babel/runtime/helpers/interopRequireDefault.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/extrinsics/node_modules/@babel/runtime/helpers/objectSpread.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/extrinsics/node_modules/@babel/runtime/helpers/defineProperty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/extrinsics/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/extrinsics/fromMetadata/createUnchecked.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-core/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-core/node_modules/@babel/runtime/regenerator/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-core/node_modules/regenerator-runtime/runtime.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-core/node_modules/@babel/runtime/helpers/classCallCheck.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-core/node_modules/@babel/runtime/helpers/createClass.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-core/node_modules/@babel/runtime/helpers/interopRequireDefault.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-core/node_modules/@babel/runtime/helpers/slicedToArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-core/node_modules/@babel/runtime/helpers/arrayWithHoles.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-core/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-core/node_modules/@babel/runtime/helpers/nonIterableRest.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/jsonrpc/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/jsonrpc/node_modules/@babel/runtime/helpers/interopRequireDefault.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/jsonrpc/author.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/jsonrpc/create/method.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/jsonrpc/create/param.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/jsonrpc/chain.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/jsonrpc/state.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/jsonrpc/system.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-provider/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-provider/node_modules/@babel/runtime/helpers/interopRequireDefault.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-provider/http/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-provider/node_modules/@babel/runtime/regenerator/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-provider/node_modules/regenerator-runtime/runtime.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-provider/node_modules/@babel/runtime/helpers/classCallCheck.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-provider/node_modules/@babel/runtime/helpers/createClass.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-provider/http/polyfill.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/isomorphic-fetch/fetch-npm-browserify.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/whatwg-fetch/dist/fetch.umd.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-provider/coder/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-provider/defaults.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-provider/ws/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-provider/ws/Provider.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-provider/node_modules/@babel/runtime/helpers/objectSpread.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-provider/node_modules/@babel/runtime/helpers/defineProperty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-provider/ws/polyfill.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/websocket/lib/browser.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/websocket/lib/version.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/websocket/package.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-rx/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-rx/node_modules/@babel/runtime/helpers/toConsumableArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-rx/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-rx/node_modules/@babel/runtime/helpers/iterableToArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-rx/node_modules/@babel/runtime/helpers/nonIterableSpread.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-rx/node_modules/@babel/runtime/helpers/classCallCheck.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-rx/node_modules/@babel/runtime/helpers/createClass.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/rpc-rx/node_modules/@babel/runtime/helpers/interopRequireDefault.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoizee/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/normalize-options.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/is-value.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/function/noop.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoizee/lib/resolve-length.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/number/to-pos-integer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/number/to-integer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/math/sign/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/math/sign/is-implemented.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/math/sign/shim.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoizee/plain.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/valid-callable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/for-each.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/_iterate.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/valid-value.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoizee/lib/registered-extensions.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoizee/lib/configure-map.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/error/custom.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/assign/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/assign/is-implemented.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/assign/shim.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/keys/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/keys/is-implemented.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/keys/shim.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/is-object.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/function/_define-length.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/mixin.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/d/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/is-callable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/string/#/contains/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/string/#/contains/is-implemented.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/string/#/contains/shim.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/event-emitter/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoizee/lib/resolve-resolve.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/array/to-array.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/array/from/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/array/from/is-implemented.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/array/from/shim.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es6-symbol/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es6-symbol/is-implemented.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es6-symbol/polyfill.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es6-symbol/validate-symbol.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es6-symbol/is-symbol.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/function/is-arguments.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/function/is-function.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/string/is-string.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoizee/lib/resolve-normalize.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoizee/normalizers/primitive.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoizee/normalizers/get-primitive-fixed.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoizee/normalizers/get.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/array/#/e-index-of.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/number/is-nan/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/number/is-nan/is-implemented.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/number/is-nan/shim.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoizee/normalizers/get-1.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoizee/normalizers/get-fixed.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoizee/ext/async.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/map.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/next-tick/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoizee/ext/promise.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/primitive-set.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/validate-stringifiable-value.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/object/validate-stringifiable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/to-short-string-representation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/es5-ext/safe-to-string.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/is-promise/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoizee/ext/dispose.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoizee/ext/max-age.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/timers-ext/valid-timeout.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/timers-ext/max-timeout.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoizee/ext/max.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lru-queue/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoizee/ext/ref-counter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/storage/fromMetadata/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/storage/node_modules/@babel/runtime/helpers/interopRequireDefault.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/storage/node_modules/@babel/runtime/helpers/objectSpread.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/storage/node_modules/@babel/runtime/helpers/defineProperty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/storage/fromMetadata/createFunction.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/storage/fromMetadata/getHasher.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/storage/fromMetadata/storage.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/storage/node_modules/@babel/runtime/helpers/interopRequireWildcard.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/storage/fromMetadata/substrate.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/nodeCompat.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/SubmittableExtrinsic.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/util/filterEvents.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/util/logging.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/package.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/promise/Combinator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/api/node_modules/@babel/runtime/helpers/toArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/update.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/polkadot-identicon-react-native/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-copy-to-clipboard/lib/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-copy-to-clipboard/lib/Component.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/copy-to-clipboard/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/toggle-selection/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/styled-components/native/dist/styled-components.native.cjs.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/stylis/stylis.min.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/stylis-rule-sheet/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@emotion/unitless/dist/unitless.browser.cjs.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/css-to-react-native/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/postcss-value-parser/lib/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/postcss-value-parser/lib/parse.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/postcss-value-parser/lib/walk.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/postcss-value-parser/lib/stringify.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/postcss-value-parser/lib/unit.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/css-color-keywords/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/css-color-keywords/colors.json","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/camelize/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/memoize-one/dist/memoize-one.cjs.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/ui-settings/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/store/dist/store.legacy.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/store/src/store-engine.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/store/src/util.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/store/storages/all.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/store/storages/localStorage.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/store/storages/oldFF-globalStorage.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/store/storages/oldIE-userDataStorage.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/store/storages/cookieStorage.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/store/storages/sessionStorage.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/store/storages/memoryStorage.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/store/plugins/json2.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/store/plugins/lib/json2.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@polkadot/ui-settings/defaults.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/polkadot-identicon-react-native/Empty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/Rect.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/Path.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/Shape.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/lib/SvgTouchableMixin.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/lodash.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/lib/extract/extractProps.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/lib/extract/extractFill.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/lib/extract/extractBrush.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/color/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/color-string/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/simple-swizzle/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/simple-swizzle/node_modules/is-arrayish/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/lib/extract/patternReg.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/lib/extract/extractOpacity.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/lib/extract/extractStroke.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/lib/extract/extractLengthList.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/lib/extract/extractTransform.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/lib/Matrix2D.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/peg.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/utils/arrays.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/utils/objects.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/grammar-error.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/utils/classes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/parser.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/compiler/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/compiler/visitor.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/compiler/passes/report-undefined-rules.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/compiler/asts.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/compiler/passes/report-duplicate-rules.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/compiler/passes/report-duplicate-labels.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/compiler/passes/report-infinite-recursion.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/compiler/passes/report-infinite-repetition.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/compiler/passes/remove-proxy-rules.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/compiler/passes/generate-bytecode.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/compiler/opcodes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/compiler/js.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/pegjs/lib/compiler/passes/generate-js.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/lib/extract/extractClipPath.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/lib/extract/extractResponder.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/Circle.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/Ellipse.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/Polygon.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/lib/extract/extractPolyPoints.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/Polyline.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/Line.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/Svg.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/lib/extract/extractViewBox.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/G.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/lib/extract/extractText.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/Text.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/TSpan.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/TextPath.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/Use.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/Image.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/Symbol.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/Defs.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/LinearGradient.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/lib/extract/extractGradient.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/lib/units.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/RadialGradient.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/Stop.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/ClipPath.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/Pattern.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-svg/elements/Mask.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/polkadot-identicon-react-native/Polkadot.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/web.dom.iterable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/es6.array.iterator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_add-to-unscopables.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_wks.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_shared.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_core.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_global.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_library.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_uid.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_hide.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_object-dp.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_an-object.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_is-object.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_ie8-dom-define.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_descriptors.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_fails.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_dom-create.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_to-primitive.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_property-desc.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_iter-step.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_iterators.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_to-iobject.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_iobject.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_cof.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_defined.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_iter-define.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_export.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_redefine.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_has.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_ctx.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_a-function.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_iter-create.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_object-create.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_object-dps.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_object-keys.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_object-keys-internal.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_array-includes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_to-length.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_to-integer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_to-absolute-index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_shared-key.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_enum-bug-keys.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_html.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_set-to-string-tag.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_object-gpo.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/core-js/modules/_to-object.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/polkadot-identicon-react-native/Substrate.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/polkadot-identicon-react-native/beachball/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/polkadot-identicon-react-native/beachball/colors.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/polkadot-identicon-react-native/node_modules/color/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/polkadot-identicon-react-native/beachball/defaults.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/polkadot-identicon-react-native/beachball/container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/polkadot-identicon-react-native/beachball/seeder.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/polkadot-identicon-react-native/beachball/shape/circle.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/polkadot-identicon-react-native/beachball/svg/circle.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/polkadot-identicon-react-native/beachball/svg/svg.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/polkadot-identicon-react-native/beachball/svg/element.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-sensitive-info/RNSensitiveInfo.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Assets/secondary/RightMenu.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/util/Common.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/mobx-react/native.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/mobx/lib/mobx.module.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/Assets/Menu_line.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/Assets/Assets_nav_0.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/Assets/Menu_scan.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/Assets/Menu_Create.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/util/polkadotAPI.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/mobx/mobx.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/initializerDefineProperty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/@babel/runtime/helpers/initializerWarningHelper.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/components/Loading.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/components/LoadingUtil.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/Assets/Assets_bg.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/Assets/logo.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/Assets/Assets_title_line.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/Assets/Assets_nav_code.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/Assets/Assets_nav_title.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Staking/Staking.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/native-echarts/src/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/native-echarts/src/components/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/native-echarts/src/components/Container/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/native-echarts/src/style.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/native-echarts/src/components/Echarts/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/native-echarts/src/components/Echarts/renderChart.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/native-echarts/src/components/Echarts/echarts.min.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/native-echarts/src/util/toString.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/native-echarts/src/components/Echarts/tpl.html","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/staking/staking_top_bg_no.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/staking/staking_nav_bg.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/set.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/staking/staking_nomin.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/staking/staking_stake_icon.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/icon2.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/icon1.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Democracy/Democracy.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Democracy/Referendums.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/components/Active.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-animation/victory-animation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/d3-ease/dist/d3-ease.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-animation/util.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/orderBy.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseOrderBy.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_arrayMap.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseIteratee.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseMatches.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseIsMatch.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_Stack.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_ListCache.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_listCacheClear.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_listCacheDelete.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_assocIndexOf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/eq.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_listCacheGet.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_listCacheHas.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_listCacheSet.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_stackClear.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_stackDelete.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_stackGet.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_stackHas.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_stackSet.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_Map.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_getNative.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseIsNative.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/isFunction.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseGetTag.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_Symbol.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_root.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_freeGlobal.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_getRawTag.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_objectToString.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/isObject.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_isMasked.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_coreJsData.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_toSource.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_getValue.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_MapCache.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_mapCacheClear.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_Hash.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_hashClear.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_nativeCreate.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_hashDelete.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_hashGet.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_hashHas.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_hashSet.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_mapCacheDelete.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_getMapData.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_isKeyable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_mapCacheGet.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_mapCacheHas.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_mapCacheSet.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseIsEqual.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseIsEqualDeep.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_equalArrays.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_SetCache.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_setCacheAdd.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_setCacheHas.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_arraySome.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_cacheHas.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_equalByTag.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_Uint8Array.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_mapToArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_setToArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_equalObjects.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_getAllKeys.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseGetAllKeys.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_arrayPush.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/isArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_getSymbols.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_arrayFilter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/stubArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/keys.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_arrayLikeKeys.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseTimes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/isArguments.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseIsArguments.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/isObjectLike.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/isBuffer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/stubFalse.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_isIndex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/isTypedArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseIsTypedArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/isLength.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseUnary.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_nodeUtil.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseKeys.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_isPrototype.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_nativeKeys.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_overArg.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/isArrayLike.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_getTag.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_DataView.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_Promise.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_Set.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_WeakMap.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_getMatchData.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_isStrictComparable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_matchesStrictComparable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseMatchesProperty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/get.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseGet.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_castPath.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_isKey.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/isSymbol.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_stringToPath.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_memoizeCapped.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/memoize.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/toString.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseToString.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_toKey.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/hasIn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseHasIn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_hasPath.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/identity.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/property.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseProperty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_basePropertyDeep.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseMap.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseEach.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseForOwn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseFor.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_createBaseFor.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_createBaseEach.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseSortBy.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_compareMultiple.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_compareAscending.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/isPlainObject.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_getPrototype.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/d3-interpolate/dist/d3-interpolate.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/d3-color/dist/d3-color.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/timer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/d3-timer/dist/d3-timer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-container/victory-container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/uniqueId.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/defaults.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseRest.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_overRest.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_apply.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_setToString.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseSetToString.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/constant.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_defineProperty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_shortOut.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_isIterateeCall.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/keysIn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseKeysIn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_nativeKeysIn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/assign.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_assignValue.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseAssignValue.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_copyObject.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_createAssigner.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/prop-types.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/find.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_createFind.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/findIndex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseFindIndex.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/toInteger.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/toFinite.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/toNumber.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/log.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-portal/portal.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/helpers.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/pick.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_basePick.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_basePickBy.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseSet.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_flatRest.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/flatten.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseFlatten.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_isFlattenable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-label/victory-label.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/isEmpty.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-portal/victory-portal.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/label-helpers.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/style.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-primitives/tspan.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-fast-compare/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-primitives/text.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-transition/victory-transition.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/collection.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/transitions.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-clip-container/victory-clip-container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-primitives/clip-path.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-primitives/circle.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-primitives/rect.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-theme/victory-theme.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-theme/material.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-theme/grayscale.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-primitives/arc.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/common-props.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-primitives/path.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-primitives/border.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-primitives/line-segment.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-primitives/line.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-primitives/point.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-primitives/path-helpers.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/range.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_createRange.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseRange.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-primitives/whisker.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/add-events.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/isNil.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/without.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseDifference.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_arrayIncludes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseIndexOf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseIsNaN.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_strictIndexOf.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_arrayIncludesWith.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/isArrayLikeObject.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/events.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/includes.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/isString.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/values.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseValues.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/uniq.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseUniq.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_createSet.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/noop.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/pickBy.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_getAllKeysIn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_getSymbolsIn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/data.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/isEqual.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/last.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/scale.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/d3-scale/build/d3-scale.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/d3-array/dist/d3-array.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/d3-collection/dist/d3-collection.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/d3-format/dist/d3-format.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/d3-time/dist/d3-time.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/d3-time-format/dist/d3-time-format.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/immutable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/default-transitions.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/domain.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/sortedUniq.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseSortedUniq.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/selection.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/textsize.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/wrapper.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/groupBy.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_createAggregator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_arrayAggregator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseAggregator.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/some.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseSome.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/es/victory-util/axis.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/invert.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_createInverter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseInverter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-shared-events/es/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-shared-events/es/victory-shared-events.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/fromPairs.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-animation/victory-animation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-animation/util.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/timer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-container/victory-container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/prop-types.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/log.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-portal/portal.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/helpers.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-label/victory-label.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-portal/victory-portal.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/label-helpers.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/style.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-primitives/tspan.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-primitives/text.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-transition/victory-transition.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/collection.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/transitions.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-clip-container/victory-clip-container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-primitives/clip-path.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-primitives/circle.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-primitives/rect.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-theme/victory-theme.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-theme/material.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-theme/grayscale.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-primitives/arc.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/common-props.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-primitives/path.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-primitives/border.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-primitives/line-segment.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-primitives/line.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-primitives/point.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-primitives/path-helpers.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-primitives/whisker.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/add-events.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/events.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/data.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/scale.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/immutable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/default-transitions.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/domain.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/selection.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/textsize.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/wrapper.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-core/lib/victory-util/axis.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/circle.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/helpers/native-helpers.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/line.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/path.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/rect.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/text.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/tspan.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/arc.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/area.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-area/es/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-area/es/victory-area.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-area/es/helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-area/es/area.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/d3-shape/dist/d3-shape.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/d3-path/dist/d3-path.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/bar.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-bar/es/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-bar/es/victory-bar.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-bar/es/helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-bar/es/bar.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-bar/es/path-helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-bar/es/geometry-helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/border.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/candle.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-candlestick/es/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-candlestick/es/victory-candlestick.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-candlestick/es/candle.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-candlestick/es/helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/clip-path.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/curve.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-line/es/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-line/es/victory-line.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-line/es/helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-line/es/curve.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/error-bar.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-errorbar/es/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-errorbar/es/victory-errorbar.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-errorbar/es/error-bar.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-errorbar/es/helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/line-segment.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/point.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/slice.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-pie/es/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-pie/es/victory-pie.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-pie/es/slice.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-pie/es/helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/voronoi.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-voronoi/es/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-voronoi/es/victory-voronoi.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-voronoi/es/voronoi.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-voronoi/es/helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/d3-voronoi/dist/d3-voronoi.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/flyout.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-tooltip/es/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-tooltip/es/victory-tooltip.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-tooltip/es/flyout.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-primitives/whisker.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-tooltip.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-label.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-portal/victory-portal.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-portal/portal.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-area.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-clip-container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-axis.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-axis/es/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-axis/es/victory-axis.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-axis/es/helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-polar-axis.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-polar-axis/es/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-polar-axis/es/victory-polar-axis.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-polar-axis/es/helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/uniqBy.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-bar.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-boxplot.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-box-plot/es/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-box-plot/es/victory-box-plot.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-box-plot/es/helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/isNaN.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/isNumber.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-group.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-group/es/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-group/es/victory-group.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-shared-events/lib/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-shared-events/lib/victory-shared-events.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-group/es/helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-line.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-scatter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-scatter/es/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-scatter/es/victory-scatter.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-scatter/es/helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-stack.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-stack/es/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-stack/es/victory-stack.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-stack/es/helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-chart.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-chart/es/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-chart/es/victory-chart.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-axis/lib/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-axis/lib/victory-axis.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-axis/lib/helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-polar-axis/lib/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-polar-axis/lib/victory-polar-axis.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-polar-axis/lib/helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-chart/es/helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-errorbar.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-candlestick.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-voronoi.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-pie.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-legend.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-legend/es/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-legend/es/victory-legend.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-legend/es/helper-methods.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/sum.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseSum.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/helpers/native-zoom-helpers.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-zoom-container/lib/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-zoom-container/lib/victory-zoom-container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-zoom-container/lib/zoom-helpers.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/throttle.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/debounce.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/now.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-zoom-container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-voronoi-container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-voronoi-container/lib/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-voronoi-container/lib/victory-voronoi-container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-tooltip/lib/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-tooltip/lib/victory-tooltip.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-tooltip/lib/flyout.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-voronoi-container/lib/voronoi-helpers.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-selection-container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-selection-container/lib/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-selection-container/lib/victory-selection-container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-selection-container/lib/selection-helpers.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-cursor-container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-cursor-container/lib/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-cursor-container/lib/victory-cursor-container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-cursor-container/lib/cursor-helpers.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/mapValues.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/components/victory-brush-container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-brush-container/lib/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-brush-container/lib/victory-brush-container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-brush-container/lib/brush-helpers.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-native/lib/helpers/create-container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-create-container/lib/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/victory-create-container/lib/create-container.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/flow.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_createFlow.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_LodashWrapper.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseCreate.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseLodash.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_getData.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_metaMap.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_getFuncName.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_realNames.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_isLaziable.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_LazyWrapper.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/wrapperLodash.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_wrapperClone.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_copyArray.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/forOwn.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_castFunction.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/toPairs.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_createToPairs.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_baseToPairs.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/lodash/_setToPairs.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/staking/Demccrscy_time_icon.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Democracy/secondary/History.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Democracy/Proposals.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/components/ProposalsRow.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Profile/Profile.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/Pro_Addre.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/addresses_nav_go.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/Pro-Setting.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/Pro_about.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/components/bottom.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/Assets_dark.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/Staking_dark.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/Democrscy_dark.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/Profile.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Assets/secondary/CreateAccount.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/components/RNKeyboardAvoidView.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/components/RNPicker.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/About_return.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Assets/secondary/BackupAccount.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/components/Header.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/Assets/sweep_code_return.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/copy.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Assets/secondary/MnemonicWord_1.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/dontscreen.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/Assets/Nextstep.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Assets/secondary/MnemonicWord_2.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Assets/secondary/MnemonicWord_3.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Assets/secondary/QRCode.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-qrcode/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-qrcode/lib/QRCode.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-qrcode/lib/Canvas.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/qr.js/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/qr.js/lib/QRCode.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/qr.js/lib/8BitByte.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/qr.js/lib/mode.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/qr.js/lib/RSBlock.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/qr.js/lib/ErrorCorrectLevel.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/qr.js/lib/BitBuffer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/qr.js/lib/util.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/qr.js/lib/Polynomial.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/qr.js/lib/math.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/Assets/sweep_code_line.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Assets/secondary/CoinDetails.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/components/CoinRow.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/assets_btc_down.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/assets_btc_up.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/assets_btc_send.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/assets_btc_receive.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Profile/secondary/ManageAccount.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Assets/secondary/Transfer/Transfer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/addaddresses_code.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Assets/secondary/Transfer/MakeTransfer.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/eye.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Assets/secondary/Transfer/TransferDetails.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/success.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Profile/secondary/Addresses.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/addresses_add.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Profile/secondary/AddAddress.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/addaddresses_save.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Profile/secondary/AddressInformation.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Assets/secondary/Camera.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-qr-scanner/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-qr-scanner/src/QRScanner.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-camera/src/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-camera/src/RNCamera.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-camera/src/FaceDetector.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-qr-scanner/node_modules/prop-types/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-qr-scanner/node_modules/prop-types/factoryWithThrowingShims.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-qr-scanner/node_modules/fbjs/lib/emptyFunction.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-qr-scanner/node_modules/fbjs/lib/invariant.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-qr-scanner/node_modules/prop-types/lib/ReactPropTypesSecret.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-qr-scanner/src/QRScannerView.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Staking/secondary/ValidatorInfo.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Staking/secondary/Stake.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Staking/secondary/BondFunds.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Staking/secondary/Unbond.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Staking/secondary/BondAdditional.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Staking/secondary/SetSessionKey.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Staking/secondary/Nominate.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Staking/secondary/Unstake.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Staking/secondary/Unnominate.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Profile/secondary/Change/ChangePassword.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/Change_button.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Profile/secondary/Change/ChangeName.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Democracy/secondary/NayorAye.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Profile/secondary/Settings.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Profile/secondary/Settings/SetNode.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Profile/secondary/About.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/assets/images/public/About_logo.png","/Users/wushuaipeng/Documents/spwuc/polkdot/src/page/Profile/secondary/Settings/Gesture.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-gesture-password/source/index.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-gesture-password/source/helper.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-gesture-password/source/line.js","/Users/wushuaipeng/Documents/spwuc/polkdot/node_modules/react-native-gesture-password/source/circle.js","/Users/wushuaipeng/Documents/spwuc/polkdot/src/util/error_guard.js","/Users/wushuaipeng/Documents/spwuc/polkdot/app.json"],"sourcesContent":["var __DEV__=false,__BUNDLE_START_TIME__=this.nativePerformanceNow?nativePerformanceNow():Date.now(),process=this.process||{};process.env=process.env||{};process.env.NODE_ENV=\"production\";","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @polyfill\n *\n * @format\n */\n\n\"use strict\";\n\n/* eslint-disable no-bitwise */\n\nglobal.__r = metroRequire;\nglobal.__d = define;\nglobal.__c = clear;\n\nvar modules = clear();\n\n// Don't use a Symbol here, it would pull in an extra polyfill with all sorts of\n// additional stuff (e.g. Array.from).\nvar EMPTY = {};\nvar _ref = {},\n hasOwnProperty = _ref.hasOwnProperty;\n\nfunction clear() {\n modules =\n typeof __NUM_MODULES__ === \"number\"\n ? Array(__NUM_MODULES__ | 0)\n : Object.create(null);\n\n // We return modules here so that we can assign an initial value to modules\n // when defining it. Otherwise, we would have to do \"let modules = null\",\n // which will force us to add \"nullthrows\" everywhere.\n return modules;\n}\n\nif (__DEV__) {\n var verboseNamesToModuleIds = Object.create(null);\n var initializingModuleIds = [];\n}\n\nfunction define(factory, moduleId, dependencyMap) {\n if (modules[moduleId] != null) {\n if (__DEV__) {\n // (We take `inverseDependencies` from `arguments` to avoid an unused\n // named parameter in `define` in production.\n var inverseDependencies = arguments[4];\n\n // If the module has already been defined and the define method has been\n // called with inverseDependencies, we can hot reload it.\n if (inverseDependencies) {\n global.__accept(moduleId, factory, dependencyMap, inverseDependencies);\n } else {\n console.warn(\n \"Trying to define twice module ID \" + moduleId + \" in the same bundle\"\n );\n }\n }\n\n // prevent repeated calls to `global.nativeRequire` to overwrite modules\n // that are already loaded\n return;\n }\n modules[moduleId] = {\n dependencyMap: dependencyMap,\n factory: factory,\n hasError: false,\n importedAll: EMPTY,\n importedDefault: EMPTY,\n isInitialized: false,\n publicModule: { exports: {} }\n };\n if (__DEV__) {\n // HMR\n modules[moduleId].hot = createHotReloadingObject();\n\n // DEBUGGABLE MODULES NAMES\n // we take `verboseName` from `arguments` to avoid an unused named parameter\n // in `define` in production.\n var _verboseName = arguments[3];\n if (_verboseName) {\n modules[moduleId].verboseName = _verboseName;\n verboseNamesToModuleIds[_verboseName] = moduleId;\n }\n }\n}\n\nfunction metroRequire(moduleId) {\n if (__DEV__ && typeof moduleId === \"string\") {\n var _verboseName2 = moduleId;\n moduleId = verboseNamesToModuleIds[_verboseName2];\n if (moduleId == null) {\n throw new Error('Unknown named module: \"' + _verboseName2 + '\"');\n } else {\n console.warn(\n 'Requiring module \"' +\n _verboseName2 +\n '\" by name is only supported for ' +\n \"debugging purposes and will BREAK IN PRODUCTION!\"\n );\n }\n }\n\n //$FlowFixMe: at this point we know that moduleId is a number\n var moduleIdReallyIsNumber = moduleId;\n\n if (__DEV__) {\n var initializingIndex = initializingModuleIds.indexOf(\n moduleIdReallyIsNumber\n );\n if (initializingIndex !== -1) {\n var cycle = initializingModuleIds\n .slice(initializingIndex)\n .map(function(id) {\n return modules[id].verboseName;\n });\n // We want to show A -> B -> A:\n cycle.push(cycle[0]);\n console.warn(\n \"Require cycle: \" +\n cycle.join(\" -> \") +\n \"\\n\\n\" +\n \"Require cycles are allowed, but can result in uninitialized values. \" +\n \"Consider refactoring to remove the need for a cycle.\"\n );\n }\n }\n\n var module = modules[moduleIdReallyIsNumber];\n\n return module && module.isInitialized\n ? module.publicModule.exports\n : guardedLoadModule(moduleIdReallyIsNumber, module);\n}\n\nfunction metroImportDefault(moduleId) {\n if (__DEV__ && typeof moduleId === \"string\") {\n var _verboseName3 = moduleId;\n moduleId = verboseNamesToModuleIds[_verboseName3];\n }\n\n //$FlowFixMe: at this point we know that moduleId is a number\n var moduleIdReallyIsNumber = moduleId;\n\n if (\n modules[moduleIdReallyIsNumber] &&\n modules[moduleIdReallyIsNumber].importedDefault !== EMPTY\n ) {\n return modules[moduleIdReallyIsNumber].importedDefault;\n }\n\n var exports = metroRequire(moduleIdReallyIsNumber);\n var importedDefault =\n exports && exports.__esModule ? exports.default : exports;\n\n return (modules[moduleIdReallyIsNumber].importedDefault = importedDefault);\n}\n\nfunction metroImportAll(moduleId) {\n if (__DEV__ && typeof moduleId === \"string\") {\n var _verboseName4 = moduleId;\n moduleId = verboseNamesToModuleIds[_verboseName4];\n }\n\n //$FlowFixMe: at this point we know that moduleId is a number\n var moduleIdReallyIsNumber = moduleId;\n\n if (\n modules[moduleIdReallyIsNumber] &&\n modules[moduleIdReallyIsNumber].importedAll !== EMPTY\n ) {\n return modules[moduleIdReallyIsNumber].importedAll;\n }\n\n var exports = metroRequire(moduleIdReallyIsNumber);\n var importedAll = void 0;\n\n if (exports && exports.__esModule) {\n importedAll = exports;\n } else {\n importedAll = {};\n\n // Refrain from using Object.assign, it has to work in ES3 environments.\n if (exports) {\n for (var _key in exports) {\n if (hasOwnProperty.call(exports, _key)) {\n importedAll[_key] = exports[_key];\n }\n }\n }\n\n importedAll.default = exports;\n }\n\n return (modules[moduleIdReallyIsNumber].importedAll = importedAll);\n}\n\nvar inGuard = false;\nfunction guardedLoadModule(moduleId, module) {\n if (!inGuard && global.ErrorUtils) {\n inGuard = true;\n var returnValue = void 0;\n try {\n returnValue = loadModuleImplementation(moduleId, module);\n } catch (e) {\n global.ErrorUtils.reportFatalError(e);\n }\n inGuard = false;\n return returnValue;\n } else {\n return loadModuleImplementation(moduleId, module);\n }\n}\n\nvar ID_MASK_SHIFT = 16;\nvar LOCAL_ID_MASK = ~0 >>> ID_MASK_SHIFT;\n\nfunction unpackModuleId(moduleId) {\n var segmentId = moduleId >>> ID_MASK_SHIFT;\n var localId = moduleId & LOCAL_ID_MASK;\n return { segmentId: segmentId, localId: localId };\n}\nmetroRequire.unpackModuleId = unpackModuleId;\n\nfunction packModuleId(value) {\n return (value.segmentId << ID_MASK_SHIFT) + value.localId;\n}\nmetroRequire.packModuleId = packModuleId;\n\nvar hooks = [];\nfunction registerHook(cb) {\n var hook = { cb: cb };\n hooks.push(hook);\n return {\n release: function release() {\n for (var i = 0; i < hooks.length; ++i) {\n if (hooks[i] === hook) {\n hooks.splice(i, 1);\n break;\n }\n }\n }\n };\n}\nmetroRequire.registerHook = registerHook;\n\nfunction loadModuleImplementation(moduleId, module) {\n if (!module && global.__defineModule) {\n global.__defineModule(moduleId);\n module = modules[moduleId];\n }\n\n var nativeRequire = global.nativeRequire;\n if (!module && nativeRequire) {\n var _unpackModuleId = unpackModuleId(moduleId),\n _segmentId = _unpackModuleId.segmentId,\n _localId = _unpackModuleId.localId;\n\n nativeRequire(_localId, _segmentId);\n module = modules[moduleId];\n }\n\n if (!module) {\n throw unknownModuleError(moduleId);\n }\n\n if (module.hasError) {\n throw moduleThrewError(moduleId, module.error);\n }\n\n // `metroRequire` calls into the require polyfill itself are not analyzed and\n // replaced so that they use numeric module IDs.\n // The systrace module will expose itself on the metroRequire function so that\n // it can be used here.\n // TODO(davidaurelio) Scan polyfills for dependencies, too (t9759686)\n if (__DEV__) {\n var Systrace = metroRequire.Systrace;\n }\n\n // We must optimistically mark module as initialized before running the\n // factory to keep any require cycles inside the factory from causing an\n // infinite require loop.\n module.isInitialized = true;\n\n var _module = module,\n factory = _module.factory,\n dependencyMap = _module.dependencyMap;\n\n if (__DEV__) {\n initializingModuleIds.push(moduleId);\n }\n try {\n if (__DEV__) {\n // $FlowFixMe: we know that __DEV__ is const and `Systrace` exists\n Systrace.beginEvent(\"JS_require_\" + (module.verboseName || moduleId));\n }\n\n var _moduleObject = module.publicModule;\n\n if (__DEV__) {\n if (module.hot) {\n _moduleObject.hot = module.hot;\n }\n }\n _moduleObject.id = moduleId;\n\n if (hooks.length > 0) {\n for (var i = 0; i < hooks.length; ++i) {\n hooks[i].cb(moduleId, _moduleObject);\n }\n }\n\n // keep args in sync with with defineModuleCode in\n // metro/src/Resolver/index.js\n // and metro/src/ModuleGraph/worker.js\n factory(\n global,\n metroRequire,\n metroImportDefault,\n metroImportAll,\n _moduleObject,\n _moduleObject.exports,\n dependencyMap\n );\n\n // avoid removing factory in DEV mode as it breaks HMR\n if (!__DEV__) {\n // $FlowFixMe: This is only sound because we never access `factory` again\n module.factory = undefined;\n module.dependencyMap = undefined;\n }\n\n if (__DEV__) {\n // $FlowFixMe: we know that __DEV__ is const and `Systrace` exists\n Systrace.endEvent();\n }\n return _moduleObject.exports;\n } catch (e) {\n module.hasError = true;\n module.error = e;\n module.isInitialized = false;\n module.publicModule.exports = undefined;\n throw e;\n } finally {\n if (__DEV__) {\n if (initializingModuleIds.pop() !== moduleId) {\n throw new Error(\n \"initializingModuleIds is corrupt; something is terribly wrong\"\n );\n }\n }\n }\n}\n\nfunction unknownModuleError(id) {\n var message = 'Requiring unknown module \"' + id + '\".';\n if (__DEV__) {\n message +=\n \"If you are sure the module is there, try restarting Metro Bundler. \" +\n \"You may also want to run `yarn`, or `npm install` (depending on your environment).\";\n }\n return Error(message);\n}\n\nfunction moduleThrewError(id, error) {\n var displayName = (__DEV__ && modules[id] && modules[id].verboseName) || id;\n return Error(\n 'Requiring module \"' + displayName + '\", which threw an exception: ' + error\n );\n}\n\nif (__DEV__) {\n metroRequire.Systrace = {\n beginEvent: function beginEvent() {},\n endEvent: function endEvent() {}\n };\n\n metroRequire.getModules = function() {\n return modules;\n };\n\n // HOT MODULE RELOADING\n var createHotReloadingObject = function createHotReloadingObject() {\n var hot = {\n acceptCallback: null,\n accept: function accept(callback) {\n hot.acceptCallback = callback;\n },\n disposeCallback: null,\n dispose: function dispose(callback) {\n hot.disposeCallback = callback;\n }\n };\n return hot;\n };\n\n var metroAcceptAll = function metroAcceptAll(\n dependentModules,\n inverseDependencies,\n patchedModules\n ) {\n if (!dependentModules || dependentModules.length === 0) {\n return true;\n }\n\n var notAccepted = dependentModules.filter(function(module) {\n return !metroAccept(\n module,\n /*factory*/ undefined,\n /*dependencyMap*/ undefined,\n inverseDependencies,\n patchedModules\n );\n });\n\n var parents = [];\n for (var i = 0; i < notAccepted.length; i++) {\n // if the module has no parents then the change cannot be hot loaded\n if (inverseDependencies[notAccepted[i]].length === 0) {\n return false;\n }\n\n parents.push.apply(parents, inverseDependencies[notAccepted[i]]);\n }\n\n return parents.length == 0;\n };\n\n var metroAccept = function metroAccept(\n id,\n factory,\n dependencyMap,\n inverseDependencies\n ) {\n var patchedModules =\n arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n\n if (id in patchedModules) {\n // Do not patch the same module more that once during an update.\n return true;\n }\n patchedModules[id] = true;\n\n var mod = modules[id];\n\n if (!mod && factory) {\n // New modules are going to be handled by the define() method.\n return true;\n }\n\n var hot = mod.hot;\n\n if (!hot) {\n console.warn(\n \"Cannot accept module because Hot Module Replacement \" +\n \"API was not installed.\"\n );\n return false;\n }\n\n if (hot.disposeCallback) {\n try {\n hot.disposeCallback();\n } catch (error) {\n console.error(\n \"Error while calling dispose handler for module \" + id + \": \",\n error\n );\n }\n }\n\n // replace and initialize factory\n if (factory) {\n mod.factory = factory;\n }\n if (dependencyMap) {\n mod.dependencyMap = dependencyMap;\n }\n mod.hasError = false;\n mod.isInitialized = false;\n metroRequire(id);\n\n if (hot.acceptCallback) {\n try {\n hot.acceptCallback();\n return true;\n } catch (error) {\n console.error(\n \"Error while calling accept handler for module \" + id + \": \",\n error\n );\n }\n }\n\n // need to have inverseDependencies to bubble up accept\n if (!inverseDependencies) {\n throw new Error(\"Undefined `inverseDependencies`\");\n }\n\n // accept parent modules recursively up until all siblings are accepted\n return metroAcceptAll(\n inverseDependencies[id],\n inverseDependencies,\n patchedModules\n );\n };\n\n global.__accept = metroAccept;\n}\n","/**\n * Copyright (c) 2015-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 * @format\n * @polyfill\n * @nolint\n */\n\n// WARNING: This is an optimized version that fails on hasOwnProperty checks\n// and non objects. It's not spec-compliant. It's a perf optimization.\n// This is only needed for iOS 8 and current Android JSC.\n\nObject.assign = function(target, sources) {\n if (__DEV__) {\n if (target == null) {\n throw new TypeError('Object.assign target cannot be null or undefined');\n }\n if (typeof target !== 'object' && typeof target !== 'function') {\n throw new TypeError(\n 'In this environment the target of assign MUST be an object. ' +\n 'This error is a performance optimization and not spec compliant.',\n );\n }\n }\n\n for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) {\n var nextSource = arguments[nextIndex];\n if (nextSource == null) {\n continue;\n }\n\n if (__DEV__) {\n if (typeof nextSource !== 'object' && typeof nextSource !== 'function') {\n throw new TypeError(\n 'In this environment the sources for assign MUST be an object. ' +\n 'This error is a performance optimization and not spec compliant.',\n );\n }\n }\n\n // We don't currently support accessors nor proxies. Therefore this\n // copy cannot throw. If we ever supported this then we must handle\n // exceptions and side-effects.\n\n for (var key in nextSource) {\n if (__DEV__) {\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n if (!hasOwnProperty.call(nextSource, key)) {\n throw new TypeError(\n 'One of the sources for assign has an enumerable key on the ' +\n 'prototype chain. Are you trying to assign a prototype property? ' +\n \"We don't allow it, as this is an edge case that we do not support. \" +\n 'This error is a performance optimization and not spec compliant.',\n );\n }\n }\n target[key] = nextSource[key];\n }\n }\n\n return target;\n};\n","/**\n * Copyright (c) 2015-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 * @polyfill\n * @nolint\n * @format\n */\n\n/* eslint-disable no-shadow, eqeqeq, curly, no-unused-vars, no-void */\n\n/**\n * This pipes all of our console logging functions to native logging so that\n * JavaScript errors in required modules show up in Xcode via NSLog.\n */\nconst inspect = (function() {\n // Copyright Joyent, Inc. and other Node contributors.\n //\n // Permission is hereby granted, free of charge, to any person obtaining a\n // copy of this software and associated documentation files (the\n // \"Software\"), to deal in the Software without restriction, including\n // without limitation the rights to use, copy, modify, merge, publish,\n // distribute, sublicense, and/or sell copies of the Software, and to permit\n // persons to whom the Software is furnished to do so, subject to the\n // following conditions:\n //\n // The above copyright notice and this permission notice shall be included\n // in all copies or substantial portions of the Software.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n // USE OR OTHER DEALINGS IN THE SOFTWARE.\n //\n // https://github.com/joyent/node/blob/master/lib/util.js\n\n function inspect(obj, opts) {\n var ctx = {\n seen: [],\n stylize: stylizeNoColor,\n };\n return formatValue(ctx, obj, opts.depth);\n }\n\n function stylizeNoColor(str, styleType) {\n return str;\n }\n\n function arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n }\n\n function formatValue(ctx, value, recurseTimes) {\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (\n isError(value) &&\n (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)\n ) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '',\n array = false,\n braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(\n ctx,\n value,\n recurseTimes,\n visibleKeys,\n key,\n array,\n );\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n }\n\n function formatPrimitive(ctx, value) {\n if (isUndefined(value)) return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple =\n \"'\" +\n JSON.stringify(value)\n .replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') +\n \"'\";\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value)) return ctx.stylize('' + value, 'number');\n if (isBoolean(value)) return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value)) return ctx.stylize('null', 'null');\n }\n\n function formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n }\n\n function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(\n formatProperty(\n ctx,\n value,\n recurseTimes,\n visibleKeys,\n String(i),\n true,\n ),\n );\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(\n formatProperty(ctx, value, recurseTimes, visibleKeys, key, true),\n );\n }\n });\n return output;\n }\n\n function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || {value: value[key]};\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str\n .split('\\n')\n .map(function(line) {\n return ' ' + line;\n })\n .join('\\n')\n .substr(2);\n } else {\n str =\n '\\n' +\n str\n .split('\\n')\n .map(function(line) {\n return ' ' + line;\n })\n .join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n }\n\n function reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return (\n braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1]\n );\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n }\n\n // NOTE: These type checking functions intentionally don't use `instanceof`\n // because it is fragile and can be easily faked with `Object.create()`.\n function isArray(ar) {\n return Array.isArray(ar);\n }\n\n function isBoolean(arg) {\n return typeof arg === 'boolean';\n }\n\n function isNull(arg) {\n return arg === null;\n }\n\n function isNullOrUndefined(arg) {\n return arg == null;\n }\n\n function isNumber(arg) {\n return typeof arg === 'number';\n }\n\n function isString(arg) {\n return typeof arg === 'string';\n }\n\n function isSymbol(arg) {\n return typeof arg === 'symbol';\n }\n\n function isUndefined(arg) {\n return arg === void 0;\n }\n\n function isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n }\n\n function isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n }\n\n function isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n }\n\n function isError(e) {\n return (\n isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error)\n );\n }\n\n function isFunction(arg) {\n return typeof arg === 'function';\n }\n\n function isPrimitive(arg) {\n return (\n arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined'\n );\n }\n\n function objectToString(o) {\n return Object.prototype.toString.call(o);\n }\n\n function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n return inspect;\n})();\n\nconst OBJECT_COLUMN_NAME = '(index)';\nconst LOG_LEVELS = {\n trace: 0,\n info: 1,\n warn: 2,\n error: 3,\n};\nconst INSPECTOR_LEVELS = [];\nINSPECTOR_LEVELS[LOG_LEVELS.trace] = 'debug';\nINSPECTOR_LEVELS[LOG_LEVELS.info] = 'log';\nINSPECTOR_LEVELS[LOG_LEVELS.warn] = 'warning';\nINSPECTOR_LEVELS[LOG_LEVELS.error] = 'error';\n\n// Strip the inner function in getNativeLogFunction(), if in dev also\n// strip method printing to originalConsole.\nconst INSPECTOR_FRAMES_TO_SKIP = __DEV__ ? 2 : 1;\n\nfunction getNativeLogFunction(level) {\n return function() {\n let str;\n if (arguments.length === 1 && typeof arguments[0] === 'string') {\n str = arguments[0];\n } else {\n str = Array.prototype.map\n .call(arguments, function(arg) {\n return inspect(arg, {depth: 10});\n })\n .join(', ');\n }\n\n let logLevel = level;\n if (str.slice(0, 9) === 'Warning: ' && logLevel >= LOG_LEVELS.error) {\n // React warnings use console.error so that a stack trace is shown,\n // but we don't (currently) want these to show a redbox\n // (Note: Logic duplicated in ExceptionsManager.js.)\n logLevel = LOG_LEVELS.warn;\n }\n if (global.__inspectorLog) {\n global.__inspectorLog(\n INSPECTOR_LEVELS[logLevel],\n str,\n [].slice.call(arguments),\n INSPECTOR_FRAMES_TO_SKIP,\n );\n }\n if (groupStack.length) {\n str = groupFormat('', str);\n }\n global.nativeLoggingHook(str, logLevel);\n };\n}\n\nfunction repeat(element, n) {\n return Array.apply(null, Array(n)).map(function() {\n return element;\n });\n}\n\nfunction consoleTablePolyfill(rows) {\n // convert object -> array\n if (!Array.isArray(rows)) {\n var data = rows;\n rows = [];\n for (var key in data) {\n if (data.hasOwnProperty(key)) {\n var row = data[key];\n row[OBJECT_COLUMN_NAME] = key;\n rows.push(row);\n }\n }\n }\n if (rows.length === 0) {\n global.nativeLoggingHook('', LOG_LEVELS.info);\n return;\n }\n\n var columns = Object.keys(rows[0]).sort();\n var stringRows = [];\n var columnWidths = [];\n\n // Convert each cell to a string. Also\n // figure out max cell width for each column\n columns.forEach(function(k, i) {\n columnWidths[i] = k.length;\n for (var j = 0; j < rows.length; j++) {\n var cellStr = (rows[j][k] || '?').toString();\n stringRows[j] = stringRows[j] || [];\n stringRows[j][i] = cellStr;\n columnWidths[i] = Math.max(columnWidths[i], cellStr.length);\n }\n });\n\n // Join all elements in the row into a single string with | separators\n // (appends extra spaces to each cell to make separators | aligned)\n function joinRow(row, space) {\n var cells = row.map(function(cell, i) {\n var extraSpaces = repeat(' ', columnWidths[i] - cell.length).join('');\n return cell + extraSpaces;\n });\n space = space || ' ';\n return cells.join(space + '|' + space);\n }\n\n var separators = columnWidths.map(function(columnWidth) {\n return repeat('-', columnWidth).join('');\n });\n var separatorRow = joinRow(separators, '-');\n var header = joinRow(columns);\n var table = [header, separatorRow];\n\n for (var i = 0; i < rows.length; i++) {\n table.push(joinRow(stringRows[i]));\n }\n\n // Notice extra empty line at the beginning.\n // Native logging hook adds \"RCTLog >\" at the front of every\n // logged string, which would shift the header and screw up\n // the table\n global.nativeLoggingHook('\\n' + table.join('\\n'), LOG_LEVELS.info);\n}\n\nconst GROUP_PAD = '\\u2502'; // Box light vertical\nconst GROUP_OPEN = '\\u2510'; // Box light down+left\nconst GROUP_CLOSE = '\\u2518'; // Box light up+left\n\nconst groupStack = [];\n\nfunction groupFormat(prefix, msg) {\n // Insert group formatting before the console message\n return groupStack.join('') + prefix + ' ' + (msg || '');\n}\n\nfunction consoleGroupPolyfill(label) {\n global.nativeLoggingHook(groupFormat(GROUP_OPEN, label), LOG_LEVELS.info);\n groupStack.push(GROUP_PAD);\n}\n\nfunction consoleGroupEndPolyfill() {\n groupStack.pop();\n global.nativeLoggingHook(groupFormat(GROUP_CLOSE), LOG_LEVELS.info);\n}\n\nif (global.nativeLoggingHook) {\n const originalConsole = global.console;\n global.console = {\n error: getNativeLogFunction(LOG_LEVELS.error),\n info: getNativeLogFunction(LOG_LEVELS.info),\n log: getNativeLogFunction(LOG_LEVELS.info),\n warn: getNativeLogFunction(LOG_LEVELS.warn),\n trace: getNativeLogFunction(LOG_LEVELS.trace),\n debug: getNativeLogFunction(LOG_LEVELS.trace),\n table: consoleTablePolyfill,\n group: consoleGroupPolyfill,\n groupEnd: consoleGroupEndPolyfill,\n };\n\n // If available, also call the original `console` method since that is\n // sometimes useful. Ex: on OS X, this will let you see rich output in\n // the Safari Web Inspector console.\n if (__DEV__ && originalConsole) {\n // Preserve the original `console` as `originalConsole`\n const descriptor = Object.getOwnPropertyDescriptor(global, 'console');\n if (descriptor) {\n Object.defineProperty(global, 'originalConsole', descriptor);\n }\n\n Object.keys(console).forEach(methodName => {\n const reactNativeMethod = console[methodName];\n if (originalConsole[methodName]) {\n console[methodName] = function() {\n originalConsole[methodName](...arguments);\n reactNativeMethod.apply(console, arguments);\n };\n }\n });\n }\n} else if (!global.console) {\n const log = global.print || function consoleLoggingStub() {};\n global.console = {\n error: log,\n info: log,\n log: log,\n warn: log,\n trace: log,\n debug: log,\n table: log,\n };\n}\n","/**\n * Copyright (c) 2015-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 * @format\n * @polyfill\n * @nolint\n */\n\nlet _inGuard = 0;\n\n/**\n * This is the error handler that is called when we encounter an exception\n * when loading a module. This will report any errors encountered before\n * ExceptionsManager is configured.\n */\nlet _globalHandler = function onError(e) {\n throw e;\n};\n\n/**\n * The particular require runtime that we are using looks for a global\n * `ErrorUtils` object and if it exists, then it requires modules with the\n * error handler specified via ErrorUtils.setGlobalHandler by calling the\n * require function with applyWithGuard. Since the require module is loaded\n * before any of the modules, this ErrorUtils must be defined (and the handler\n * set) globally before requiring anything.\n */\nconst ErrorUtils = {\n setGlobalHandler(fun) {\n _globalHandler = fun;\n },\n getGlobalHandler() {\n return _globalHandler;\n },\n reportError(error) {\n _globalHandler && _globalHandler(error);\n },\n reportFatalError(error) {\n _globalHandler && _globalHandler(error, true);\n },\n applyWithGuard(fun, context, args) {\n try {\n _inGuard++;\n return fun.apply(context, args);\n } catch (e) {\n ErrorUtils.reportError(e);\n } finally {\n _inGuard--;\n }\n return null;\n },\n applyWithGuardIfNeeded(fun, context, args) {\n if (ErrorUtils.inGuard()) {\n return fun.apply(context, args);\n } else {\n ErrorUtils.applyWithGuard(fun, context, args);\n }\n return null;\n },\n inGuard() {\n return _inGuard;\n },\n guard(fun, name, context) {\n if (typeof fun !== 'function') {\n console.warn('A function must be passed to ErrorUtils.guard, got ', fun);\n return null;\n }\n name = name || fun.name || '';\n function guarded() {\n return ErrorUtils.applyWithGuard(\n fun,\n context || this,\n arguments,\n null,\n name,\n );\n }\n\n return guarded;\n },\n};\n\nglobal.ErrorUtils = ErrorUtils;\n","/**\n * Copyright (c) 2015-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 * @format\n * @polyfill\n * @nolint\n */\n\nif (Number.EPSILON === undefined) {\n Object.defineProperty(Number, 'EPSILON', {\n value: Math.pow(2, -52),\n });\n}\nif (Number.MAX_SAFE_INTEGER === undefined) {\n Object.defineProperty(Number, 'MAX_SAFE_INTEGER', {\n value: Math.pow(2, 53) - 1,\n });\n}\nif (Number.MIN_SAFE_INTEGER === undefined) {\n Object.defineProperty(Number, 'MIN_SAFE_INTEGER', {\n value: -(Math.pow(2, 53) - 1),\n });\n}\nif (!Number.isNaN) {\n // https://github.com/dherman/tc39-codex-wiki/blob/master/data/es6/number/index.md#polyfill-for-numberisnan\n const globalIsNaN = global.isNaN;\n Object.defineProperty(Number, 'isNaN', {\n configurable: true,\n enumerable: false,\n value: function isNaN(value) {\n return typeof value === 'number' && globalIsNaN(value);\n },\n writable: true,\n });\n}\n","/**\n * Copyright (c) 2013-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 * @format\n * @polyfill\n * @nolint\n */\n\n/* eslint-disable no-extend-native, no-bitwise */\n\n/*\n * NOTE: We use (Number(x) || 0) to replace NaN values with zero.\n */\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search) {\n 'use strict';\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var pos = arguments.length > 1 ? Number(arguments[1]) || 0 : 0;\n var start = Math.min(Math.max(pos, 0), string.length);\n return string.indexOf(String(search), pos) === start;\n };\n}\n\nif (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search) {\n 'use strict';\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var stringLength = string.length;\n var searchString = String(search);\n var pos = arguments.length > 1 ? Number(arguments[1]) || 0 : stringLength;\n var end = Math.min(Math.max(pos, 0), stringLength);\n var start = end - searchString.length;\n if (start < 0) {\n return false;\n }\n return string.lastIndexOf(searchString, start) === start;\n };\n}\n\nif (!String.prototype.repeat) {\n String.prototype.repeat = function(count) {\n 'use strict';\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n count = Number(count) || 0;\n if (count < 0 || count === Infinity) {\n throw RangeError();\n }\n if (count === 1) {\n return string;\n }\n var result = '';\n while (count) {\n if (count & 1) {\n result += string;\n }\n if ((count >>= 1)) {\n string += string;\n }\n }\n return result;\n };\n}\n\nif (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n 'use strict';\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > this.length) {\n return false;\n } else {\n return this.indexOf(search, start) !== -1;\n }\n };\n}\n\nif (!String.prototype.codePointAt) {\n String.prototype.codePointAt = function(position) {\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var size = string.length;\n // `ToInteger`\n var index = position ? Number(position) : 0;\n if (Number.isNaN(index)) {\n index = 0;\n }\n // Account for out-of-bounds indices:\n if (index < 0 || index >= size) {\n return undefined;\n }\n // Get the first code unit\n var first = string.charCodeAt(index);\n var second;\n if (\n // check if it’s the start of a surrogate pair\n first >= 0xd800 &&\n first <= 0xdbff && // high surrogate\n size > index + 1 // there is a next code unit\n ) {\n second = string.charCodeAt(index + 1);\n if (second >= 0xdc00 && second <= 0xdfff) {\n // low surrogate\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xd800) * 0x400 + second - 0xdc00 + 0x10000;\n }\n }\n return first;\n };\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd\nif (!String.prototype.padEnd) {\n String.prototype.padEnd = function padEnd(targetLength, padString) {\n targetLength = targetLength >> 0; //floor if number or convert non-number to 0;\n padString = String(typeof padString !== 'undefined' ? padString : ' ');\n if (this.length > targetLength) {\n return String(this);\n } else {\n targetLength = targetLength - this.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n return String(this) + padString.slice(0, targetLength);\n }\n };\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart\nif (!String.prototype.padStart) {\n String.prototype.padStart = function padStart(targetLength, padString) {\n targetLength = targetLength >> 0; //truncate if number or convert non-number to 0;\n padString = String(typeof padString !== 'undefined' ? padString : ' ');\n if (this.length > targetLength) {\n return String(this);\n } else {\n targetLength = targetLength - this.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n return padString.slice(0, targetLength) + String(this);\n }\n };\n}\n","/**\n * Copyright (c) 2015-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 * @format\n * @polyfill\n * @nolint\n */\n\n/* eslint-disable no-bitwise, no-extend-native, radix, no-self-compare */\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex\nfunction findIndex(predicate, context) {\n if (this == null) {\n throw new TypeError(\n 'Array.prototype.findIndex called on null or undefined',\n );\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n for (var i = 0; i < length; i++) {\n if (predicate.call(context, list[i], i, list)) {\n return i;\n }\n }\n return -1;\n}\n\nif (!Array.prototype.findIndex) {\n Object.defineProperty(Array.prototype, 'findIndex', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: findIndex,\n });\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\nif (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, 'find', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: function(predicate, context) {\n if (this == null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n var index = findIndex.call(this, predicate, context);\n return index === -1 ? undefined : this[index];\n },\n });\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes\nif (!Array.prototype.includes) {\n Object.defineProperty(Array.prototype, 'includes', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: function(searchElement) {\n var O = Object(this);\n var len = parseInt(O.length) || 0;\n if (len === 0) {\n return false;\n }\n var n = parseInt(arguments[1]) || 0;\n var k;\n if (n >= 0) {\n k = n;\n } else {\n k = len + n;\n if (k < 0) {\n k = 0;\n }\n }\n var currentElement;\n while (k < len) {\n currentElement = O[k];\n if (\n searchElement === currentElement ||\n (searchElement !== searchElement && currentElement !== currentElement)\n ) {\n return true;\n }\n k++;\n }\n return false;\n },\n });\n}\n","/**\n * Copyright (c) 2013-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 * @format\n * @polyfill\n * @nolint\n */\n\n/* eslint-disable consistent-this */\n\n/**\n * Creates an array from array like objects.\n *\n * https://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from\n */\nif (!Array.from) {\n Array.from = function(arrayLike /*, mapFn, thisArg */) {\n if (arrayLike == null) {\n throw new TypeError('Object is null or undefined');\n }\n\n // Optional args.\n var mapFn = arguments[1];\n var thisArg = arguments[2];\n\n var C = this;\n var items = Object(arrayLike);\n var symbolIterator =\n typeof Symbol === 'function' ? Symbol.iterator : '@@iterator';\n var mapping = typeof mapFn === 'function';\n var usingIterator = typeof items[symbolIterator] === 'function';\n var key = 0;\n var ret;\n var value;\n\n if (usingIterator) {\n ret = typeof C === 'function' ? new C() : [];\n var it = items[symbolIterator]();\n var next;\n\n while (!(next = it.next()).done) {\n value = next.value;\n\n if (mapping) {\n value = mapFn.call(thisArg, value, key);\n }\n\n ret[key] = value;\n key += 1;\n }\n\n ret.length = key;\n return ret;\n }\n\n var len = items.length;\n if (isNaN(len) || len < 0) {\n len = 0;\n }\n\n ret = typeof C === 'function' ? new C(len) : new Array(len);\n\n while (key < len) {\n value = items[key];\n\n if (mapping) {\n value = mapFn.call(thisArg, value, key);\n }\n\n ret[key] = value;\n\n key += 1;\n }\n\n ret.length = key;\n return ret;\n };\n}\n","/**\n * Copyright (c) 2015-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 * @format\n * @polyfill\n * @nolint\n */\n\n(function() {\n 'use strict';\n\n const hasOwnProperty = Object.prototype.hasOwnProperty;\n\n /**\n * Returns an array of the given object's own enumerable entries.\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries\n */\n if (typeof Object.entries !== 'function') {\n Object.entries = function(object) {\n // `null` and `undefined` values are not allowed.\n if (object == null) {\n throw new TypeError('Object.entries called on non-object');\n }\n\n const entries = [];\n for (const key in object) {\n if (hasOwnProperty.call(object, key)) {\n entries.push([key, object[key]]);\n }\n }\n return entries;\n };\n }\n\n /**\n * Returns an array of the given object's own enumerable entries.\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values\n */\n if (typeof Object.values !== 'function') {\n Object.values = function(object) {\n // `null` and `undefined` values are not allowed.\n if (object == null) {\n throw new TypeError('Object.values called on non-object');\n }\n\n const values = [];\n for (const key in object) {\n if (hasOwnProperty.call(object, key)) {\n values.push(object[key]);\n }\n }\n return values;\n };\n }\n})();\n","/** @format */\nimport 'node-libs-react-native/globals';\nimport {AppRegistry} from 'react-native';\nimport App from './App';\nimport {name as appName} from './app.json';\nconsole.ignoredYellowBox = [\n 'Warning: BackAndroid is deprecated. Please use BackHandler instead.',\n 'source.uri should not be an empty string',\n 'Invalid props.style key',\n];\n\nconsole.disableYellowBox = true;\nimport AppState from './src/mobx/mobx';\nimport Api from '@polkadot/api/promise';\nimport WsProvider from '@polkadot/rpc-provider/ws';\n(async () => {\n const provider = new WsProvider (AppState.stateStore.ENDPOINT);\n const api = await Api.create (provider);\n AppState.stateStore.API = api;\n}) ();\nAppRegistry.registerComponent (appName, () => App);\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","module.exports = require(\"regenerator-runtime\");\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\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\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\n!(function(global) {\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 var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\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 runtime.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 GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\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 prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.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 runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\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 runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\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 Promise.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 Promise.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 Promise(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 runtime.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 runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.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 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 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 runtime.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 runtime.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 // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n","global.Buffer = require('buffer').Buffer;\nglobal.process = require('process');\n\n// Needed so that 'stream-http' chooses the right default protocol.\nglobal.location = {\n protocol: 'file:',\n};\n\n// Some modules expect userAgent to be a string\nglobal.navigator.userAgent = 'React Native';\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\n// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\nif (typeof Symbol !== 'undefined' && Symbol.species != null &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayLike(value)\n }\n\n if (value == null) {\n throw TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nBuffer.prototype.__proto__ = Uint8Array.prototype\nBuffer.__proto__ = Uint8Array\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n buf = Buffer.from(buf)\n }\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n newBuf.__proto__ = Buffer.prototype\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (var i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n for (var i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst invariant = require('fbjs/lib/invariant');\n\nlet showedListViewDeprecation = false;\nlet showedSwipeableListViewDeprecation = false;\n\n// Export React, plus some native additions.\nconst ReactNative = {\n // Components\n get AccessibilityInfo() {\n return require('AccessibilityInfo');\n },\n get ActivityIndicator() {\n return require('ActivityIndicator');\n },\n get ART() {\n return require('ReactNativeART');\n },\n get Button() {\n return require('Button');\n },\n get CheckBox() {\n return require('CheckBox');\n },\n get DatePickerIOS() {\n return require('DatePickerIOS');\n },\n get DrawerLayoutAndroid() {\n return require('DrawerLayoutAndroid');\n },\n get FlatList() {\n return require('FlatList');\n },\n get Image() {\n return require('Image');\n },\n get ImageBackground() {\n return require('ImageBackground');\n },\n get ImageEditor() {\n return require('ImageEditor');\n },\n get ImageStore() {\n return require('ImageStore');\n },\n get InputAccessoryView() {\n return require('InputAccessoryView');\n },\n get KeyboardAvoidingView() {\n return require('KeyboardAvoidingView');\n },\n get ListView() {\n if (!showedListViewDeprecation) {\n console.warn(\n 'ListView is deprecated and will be removed in a future release. ' +\n 'See https://fb.me/nolistview for more information',\n );\n\n showedListViewDeprecation = true;\n }\n return require('ListView');\n },\n get MaskedViewIOS() {\n return require('MaskedViewIOS');\n },\n get Modal() {\n return require('Modal');\n },\n get NavigatorIOS() {\n return require('NavigatorIOS');\n },\n get Picker() {\n return require('Picker');\n },\n get PickerIOS() {\n return require('PickerIOS');\n },\n get ProgressBarAndroid() {\n return require('ProgressBarAndroid');\n },\n get ProgressViewIOS() {\n return require('ProgressViewIOS');\n },\n get SafeAreaView() {\n return require('SafeAreaView');\n },\n get ScrollView() {\n return require('ScrollView');\n },\n get SectionList() {\n return require('SectionList');\n },\n get SegmentedControlIOS() {\n return require('SegmentedControlIOS');\n },\n get Slider() {\n return require('Slider');\n },\n get SnapshotViewIOS() {\n return require('SnapshotViewIOS');\n },\n get Switch() {\n return require('Switch');\n },\n get RefreshControl() {\n return require('RefreshControl');\n },\n get StatusBar() {\n return require('StatusBar');\n },\n get SwipeableFlatList() {\n return require('SwipeableFlatList');\n },\n get SwipeableListView() {\n if (!showedSwipeableListViewDeprecation) {\n console.warn(\n 'ListView and SwipeableListView are deprecated and will be removed in a future release. ' +\n 'See https://fb.me/nolistview for more information',\n );\n\n showedSwipeableListViewDeprecation = true;\n }\n return require('SwipeableListView');\n },\n get TabBarIOS() {\n return require('TabBarIOS');\n },\n get Text() {\n return require('Text');\n },\n get TextInput() {\n return require('TextInput');\n },\n get ToastAndroid() {\n return require('ToastAndroid');\n },\n get ToolbarAndroid() {\n return require('ToolbarAndroid');\n },\n get Touchable() {\n return require('Touchable');\n },\n get TouchableHighlight() {\n return require('TouchableHighlight');\n },\n get TouchableNativeFeedback() {\n return require('TouchableNativeFeedback');\n },\n get TouchableOpacity() {\n return require('TouchableOpacity');\n },\n get TouchableWithoutFeedback() {\n return require('TouchableWithoutFeedback');\n },\n get View() {\n return require('View');\n },\n get ViewPagerAndroid() {\n return require('ViewPagerAndroid');\n },\n get VirtualizedList() {\n return require('VirtualizedList');\n },\n get WebView() {\n return require('WebView');\n },\n\n // APIs\n get ActionSheetIOS() {\n return require('ActionSheetIOS');\n },\n get Alert() {\n return require('Alert');\n },\n get AlertIOS() {\n return require('AlertIOS');\n },\n get Animated() {\n return require('Animated');\n },\n get AppRegistry() {\n return require('AppRegistry');\n },\n get AppState() {\n return require('AppState');\n },\n get AsyncStorage() {\n return require('AsyncStorage');\n },\n get BackAndroid() {\n return require('BackAndroid');\n }, // deprecated: use BackHandler instead\n get BackHandler() {\n return require('BackHandler');\n },\n get CameraRoll() {\n return require('CameraRoll');\n },\n get Clipboard() {\n return require('Clipboard');\n },\n get DatePickerAndroid() {\n return require('DatePickerAndroid');\n },\n get DeviceInfo() {\n return require('DeviceInfo');\n },\n get Dimensions() {\n return require('Dimensions');\n },\n get Easing() {\n return require('Easing');\n },\n get findNodeHandle() {\n return require('ReactNative').findNodeHandle;\n },\n get I18nManager() {\n return require('I18nManager');\n },\n get ImagePickerIOS() {\n return require('ImagePickerIOS');\n },\n get InteractionManager() {\n return require('InteractionManager');\n },\n get Keyboard() {\n return require('Keyboard');\n },\n get LayoutAnimation() {\n return require('LayoutAnimation');\n },\n get Linking() {\n return require('Linking');\n },\n get NativeEventEmitter() {\n return require('NativeEventEmitter');\n },\n get NetInfo() {\n return require('NetInfo');\n },\n get PanResponder() {\n return require('PanResponder');\n },\n get PermissionsAndroid() {\n return require('PermissionsAndroid');\n },\n get PixelRatio() {\n return require('PixelRatio');\n },\n get PushNotificationIOS() {\n return require('PushNotificationIOS');\n },\n get Settings() {\n return require('Settings');\n },\n get Share() {\n return require('Share');\n },\n get StatusBarIOS() {\n return require('StatusBarIOS');\n },\n get StyleSheet() {\n return require('StyleSheet');\n },\n get Systrace() {\n return require('Systrace');\n },\n get TimePickerAndroid() {\n return require('TimePickerAndroid');\n },\n get TVEventHandler() {\n return require('TVEventHandler');\n },\n get UIManager() {\n return require('UIManager');\n },\n get unstable_batchedUpdates() {\n return require('ReactNative').unstable_batchedUpdates;\n },\n get Vibration() {\n return require('Vibration');\n },\n get VibrationIOS() {\n return require('VibrationIOS');\n },\n get YellowBox() {\n return require('YellowBox');\n },\n\n // Plugins\n get DeviceEventEmitter() {\n return require('RCTDeviceEventEmitter');\n },\n get NativeAppEventEmitter() {\n return require('RCTNativeAppEventEmitter');\n },\n get NativeModules() {\n return require('NativeModules');\n },\n get Platform() {\n return require('Platform');\n },\n get processColor() {\n return require('processColor');\n },\n get requireNativeComponent() {\n return require('requireNativeComponent');\n },\n get takeSnapshot() {\n return require('takeSnapshot');\n },\n\n // Prop Types\n get ColorPropType() {\n return require('ColorPropType');\n },\n get EdgeInsetsPropType() {\n return require('EdgeInsetsPropType');\n },\n get PointPropType() {\n return require('PointPropType');\n },\n get ViewPropTypes() {\n return require('ViewPropTypes');\n },\n\n // Deprecated\n get Navigator() {\n invariant(\n false,\n 'Navigator is deprecated and has been removed from this package. It can now be installed ' +\n 'and imported from `react-native-deprecated-custom-components` instead of `react-native`. ' +\n 'Learn about alternative navigation solutions at http://facebook.github.io/react-native/docs/navigation.html',\n );\n },\n};\n\nmodule.exports = ReactNative;\n","/**\n * Copyright (c) 2013-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 * \n */\n'use strict';\n\nvar validateFormat = process.env.NODE_ENV !== \"production\" ? function (format) {} : function (format) {\n if (format === undefined) {\n throw new Error('invariant(...): Second argument must be a string.');\n }\n};\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments to provide\n * information about what broke and what you were expecting.\n *\n * The invariant message will be stripped in production, but the invariant will\n * remain to ensure logic does not differ in production.\n */\n\nfunction invariant(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n validateFormat(format);\n\n if (!condition) {\n var error;\n\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return String(args[argIndex++]);\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // Skip invariant's own stack frame.\n\n throw error;\n }\n}\n\nmodule.exports = invariant;","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst NativeModules = require('NativeModules');\nconst RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nconst UIManager = require('UIManager');\n\nconst RCTAccessibilityInfo = NativeModules.AccessibilityInfo;\n\nconst TOUCH_EXPLORATION_EVENT = 'touchExplorationDidChange';\n\ntype ChangeEventName = $Enum<{\n change: string,\n}>;\n\nconst _subscriptions = new Map();\n\n/**\n * Sometimes it's useful to know whether or not the device has a screen reader\n * that is currently active. The `AccessibilityInfo` API is designed for this\n * purpose. You can use it to query the current state of the screen reader as\n * well as to register to be notified when the state of the screen reader\n * changes.\n *\n * See http://facebook.github.io/react-native/docs/accessibilityinfo.html\n */\n\nconst AccessibilityInfo = {\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n fetch: function(): Promise {\n return new Promise((resolve, reject) => {\n RCTAccessibilityInfo.isTouchExplorationEnabled(function(resp) {\n resolve(resp);\n });\n });\n },\n\n addEventListener: function(\n eventName: ChangeEventName,\n handler: Function,\n ): void {\n const listener = RCTDeviceEventEmitter.addListener(\n TOUCH_EXPLORATION_EVENT,\n enabled => {\n handler(enabled);\n },\n );\n _subscriptions.set(handler, listener);\n },\n\n removeEventListener: function(\n eventName: ChangeEventName,\n handler: Function,\n ): void {\n const listener = _subscriptions.get(handler);\n if (!listener) {\n return;\n }\n listener.remove();\n _subscriptions.delete(handler);\n },\n\n /**\n * Set accessibility focus to a react component.\n *\n * See http://facebook.github.io/react-native/docs/accessibilityinfo.html#setaccessibilityfocus\n */\n setAccessibilityFocus: function(reactTag: number): void {\n UIManager.sendAccessibilityEvent(\n reactTag,\n UIManager.AccessibilityEventTypes.typeViewFocused,\n );\n },\n};\n\nmodule.exports = AccessibilityInfo;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst BatchedBridge = require('BatchedBridge');\n\nconst invariant = require('fbjs/lib/invariant');\n\nimport type {ExtendedError} from 'parseErrorStack';\n\ntype ModuleConfig = [\n string /* name */,\n ?Object /* constants */,\n Array /* functions */,\n Array /* promise method IDs */,\n Array /* sync method IDs */,\n];\n\nexport type MethodType = 'async' | 'promise' | 'sync';\n\nfunction genModule(\n config: ?ModuleConfig,\n moduleID: number,\n): ?{name: string, module?: Object} {\n if (!config) {\n return null;\n }\n\n const [moduleName, constants, methods, promiseMethods, syncMethods] = config;\n invariant(\n !moduleName.startsWith('RCT') && !moduleName.startsWith('RK'),\n \"Module name prefixes should've been stripped by the native side \" +\n \"but wasn't for \" +\n moduleName,\n );\n\n if (!constants && !methods) {\n // Module contents will be filled in lazily later\n return {name: moduleName};\n }\n\n const module = {};\n methods &&\n methods.forEach((methodName, methodID) => {\n const isPromise =\n promiseMethods && arrayContains(promiseMethods, methodID);\n const isSync = syncMethods && arrayContains(syncMethods, methodID);\n invariant(\n !isPromise || !isSync,\n 'Cannot have a method that is both async and a sync hook',\n );\n const methodType = isPromise ? 'promise' : isSync ? 'sync' : 'async';\n module[methodName] = genMethod(moduleID, methodID, methodType);\n });\n Object.assign(module, constants);\n\n if (__DEV__) {\n BatchedBridge.createDebugLookup(moduleID, moduleName, methods);\n }\n\n return {name: moduleName, module};\n}\n\n// export this method as a global so we can call it from native\nglobal.__fbGenNativeModule = genModule;\n\nfunction loadModule(name: string, moduleID: number): ?Object {\n invariant(\n global.nativeRequireModuleConfig,\n \"Can't lazily create module without nativeRequireModuleConfig\",\n );\n const config = global.nativeRequireModuleConfig(name);\n const info = genModule(config, moduleID);\n return info && info.module;\n}\n\nfunction genMethod(moduleID: number, methodID: number, type: MethodType) {\n let fn = null;\n if (type === 'promise') {\n fn = function(...args: Array) {\n return new Promise((resolve, reject) => {\n BatchedBridge.enqueueNativeCall(\n moduleID,\n methodID,\n args,\n data => resolve(data),\n errorData => reject(createErrorFromErrorData(errorData)),\n );\n });\n };\n } else if (type === 'sync') {\n fn = function(...args: Array) {\n if (__DEV__) {\n invariant(\n global.nativeCallSyncHook,\n 'Calling synchronous methods on native ' +\n 'modules is not supported in Chrome.\\n\\n Consider providing alternative ' +\n 'methods to expose this method in debug mode, e.g. by exposing constants ' +\n 'ahead-of-time.',\n );\n }\n return global.nativeCallSyncHook(moduleID, methodID, args);\n };\n } else {\n fn = function(...args: Array) {\n const lastArg = args.length > 0 ? args[args.length - 1] : null;\n const secondLastArg = args.length > 1 ? args[args.length - 2] : null;\n const hasSuccessCallback = typeof lastArg === 'function';\n const hasErrorCallback = typeof secondLastArg === 'function';\n hasErrorCallback &&\n invariant(\n hasSuccessCallback,\n 'Cannot have a non-function arg after a function arg.',\n );\n const onSuccess = hasSuccessCallback ? lastArg : null;\n const onFail = hasErrorCallback ? secondLastArg : null;\n const callbackCount = hasSuccessCallback + hasErrorCallback;\n args = args.slice(0, args.length - callbackCount);\n BatchedBridge.enqueueNativeCall(\n moduleID,\n methodID,\n args,\n onFail,\n onSuccess,\n );\n };\n }\n fn.type = type;\n return fn;\n}\n\nfunction arrayContains(array: Array, value: T): boolean {\n return array.indexOf(value) !== -1;\n}\n\nfunction createErrorFromErrorData(errorData: {message: string}): ExtendedError {\n const {message, ...extraErrorInfo} = errorData || {};\n const error: ExtendedError = new Error(message);\n error.framesToPop = 1;\n return Object.assign(error, extraErrorInfo);\n}\n\nlet NativeModules: {[moduleName: string]: Object} = {};\nif (global.nativeModuleProxy) {\n NativeModules = global.nativeModuleProxy;\n} else if (!global.nativeExtensions) {\n const bridgeConfig = global.__fbBatchedBridgeConfig;\n invariant(\n bridgeConfig,\n '__fbBatchedBridgeConfig is not set, cannot invoke native modules',\n );\n\n const defineLazyObjectProperty = require('defineLazyObjectProperty');\n (bridgeConfig.remoteModuleConfig || []).forEach(\n (config: ModuleConfig, moduleID: number) => {\n // Initially this config will only contain the module name when running in JSC. The actual\n // configuration of the module will be lazily loaded.\n const info = genModule(config, moduleID);\n if (!info) {\n return;\n }\n\n if (info.module) {\n NativeModules[info.name] = info.module;\n }\n // If there's no module config, define a lazy getter\n else {\n defineLazyObjectProperty(NativeModules, info.name, {\n get: () => loadModule(info.name, moduleID),\n });\n }\n },\n );\n}\n\nmodule.exports = NativeModules;\n","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst MessageQueue = require('MessageQueue');\n\nconst BatchedBridge = new MessageQueue();\n\n// Wire up the batched bridge on the global object so that we can call into it.\n// Ideally, this would be the inverse relationship. I.e. the native environment\n// provides this global directly with its script embedded. Then this module\n// would export it. A possible fix would be to trim the dependencies in\n// MessageQueue to its minimal features and embed that in the native runtime.\n\nObject.defineProperty(global, '__fbBatchedBridge', {\n configurable: true,\n value: BatchedBridge,\n});\n\nmodule.exports = BatchedBridge;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n\n'use strict';\n\nconst ErrorUtils = require('ErrorUtils');\nconst Systrace = require('Systrace');\n\nconst deepFreezeAndThrowOnMutationInDev = require('deepFreezeAndThrowOnMutationInDev');\nconst invariant = require('fbjs/lib/invariant');\nconst stringifySafe = require('stringifySafe');\n\nexport type SpyData = {\n type: number,\n module: ?string,\n method: string | number,\n args: any[],\n};\n\nconst TO_JS = 0;\nconst TO_NATIVE = 1;\n\nconst MODULE_IDS = 0;\nconst METHOD_IDS = 1;\nconst PARAMS = 2;\nconst MIN_TIME_BETWEEN_FLUSHES_MS = 5;\n\n// eslint-disable-next-line no-bitwise\nconst TRACE_TAG_REACT_APPS = 1 << 17;\n\nconst DEBUG_INFO_LIMIT = 32;\n\nclass MessageQueue {\n _lazyCallableModules: {[key: string]: (void) => Object};\n _queue: [number[], number[], any[], number];\n _successCallbacks: {[key: number]: ?Function};\n _failureCallbacks: {[key: number]: ?Function};\n _callID: number;\n _lastFlush: number;\n _eventLoopStartTime: number;\n _immediatesCallback: ?() => void;\n\n _debugInfo: {[number]: [number, number]};\n _remoteModuleTable: {[number]: string};\n _remoteMethodTable: {[number]: string[]};\n\n __spy: ?(data: SpyData) => void;\n\n constructor() {\n this._lazyCallableModules = {};\n this._queue = [[], [], [], 0];\n this._successCallbacks = {};\n this._failureCallbacks = {};\n this._callID = 0;\n this._lastFlush = 0;\n this._eventLoopStartTime = Date.now();\n this._immediatesCallback = null;\n\n if (__DEV__) {\n this._debugInfo = {};\n this._remoteModuleTable = {};\n this._remoteMethodTable = {};\n }\n\n (this: any).callFunctionReturnFlushedQueue = this.callFunctionReturnFlushedQueue.bind(\n this,\n );\n (this: any).callFunctionReturnResultAndFlushedQueue = this.callFunctionReturnResultAndFlushedQueue.bind(\n this,\n );\n (this: any).flushedQueue = this.flushedQueue.bind(this);\n (this: any).invokeCallbackAndReturnFlushedQueue = this.invokeCallbackAndReturnFlushedQueue.bind(\n this,\n );\n }\n\n /**\n * Public APIs\n */\n\n static spy(spyOrToggle: boolean | ((data: SpyData) => void)) {\n if (spyOrToggle === true) {\n MessageQueue.prototype.__spy = info => {\n console.log(\n `${info.type === TO_JS ? 'N->JS' : 'JS->N'} : ` +\n `${info.module ? info.module + '.' : ''}${info.method}` +\n `(${JSON.stringify(info.args)})`,\n );\n };\n } else if (spyOrToggle === false) {\n MessageQueue.prototype.__spy = null;\n } else {\n MessageQueue.prototype.__spy = spyOrToggle;\n }\n }\n\n callFunctionReturnFlushedQueue(module: string, method: string, args: any[]) {\n this.__guard(() => {\n this.__callFunction(module, method, args);\n });\n\n return this.flushedQueue();\n }\n\n callFunctionReturnResultAndFlushedQueue(\n module: string,\n method: string,\n args: any[],\n ) {\n let result;\n this.__guard(() => {\n result = this.__callFunction(module, method, args);\n });\n\n return [result, this.flushedQueue()];\n }\n\n invokeCallbackAndReturnFlushedQueue(cbID: number, args: any[]) {\n this.__guard(() => {\n this.__invokeCallback(cbID, args);\n });\n\n return this.flushedQueue();\n }\n\n flushedQueue() {\n this.__guard(() => {\n this.__callImmediates();\n });\n\n const queue = this._queue;\n this._queue = [[], [], [], this._callID];\n return queue[0].length ? queue : null;\n }\n\n getEventLoopRunningTime() {\n return Date.now() - this._eventLoopStartTime;\n }\n\n registerCallableModule(name: string, module: Object) {\n this._lazyCallableModules[name] = () => module;\n }\n\n registerLazyCallableModule(name: string, factory: void => Object) {\n let module: Object;\n let getValue: ?(void) => Object = factory;\n this._lazyCallableModules[name] = () => {\n if (getValue) {\n module = getValue();\n getValue = null;\n }\n return module;\n };\n }\n\n getCallableModule(name: string) {\n const getValue = this._lazyCallableModules[name];\n return getValue ? getValue() : null;\n }\n\n enqueueNativeCall(\n moduleID: number,\n methodID: number,\n params: any[],\n onFail: ?Function,\n onSucc: ?Function,\n ) {\n if (onFail || onSucc) {\n if (__DEV__) {\n this._debugInfo[this._callID] = [moduleID, methodID];\n if (this._callID > DEBUG_INFO_LIMIT) {\n delete this._debugInfo[this._callID - DEBUG_INFO_LIMIT];\n }\n }\n // Encode callIDs into pairs of callback identifiers by shifting left and using the rightmost bit\n // to indicate fail (0) or success (1)\n // eslint-disable-next-line no-bitwise\n onFail && params.push(this._callID << 1);\n // eslint-disable-next-line no-bitwise\n onSucc && params.push((this._callID << 1) | 1);\n this._successCallbacks[this._callID] = onSucc;\n this._failureCallbacks[this._callID] = onFail;\n }\n\n if (__DEV__) {\n global.nativeTraceBeginAsyncFlow &&\n global.nativeTraceBeginAsyncFlow(\n TRACE_TAG_REACT_APPS,\n 'native',\n this._callID,\n );\n }\n this._callID++;\n\n this._queue[MODULE_IDS].push(moduleID);\n this._queue[METHOD_IDS].push(methodID);\n\n if (__DEV__) {\n // Validate that parameters passed over the bridge are\n // folly-convertible. As a special case, if a prop value is a\n // function it is permitted here, and special-cased in the\n // conversion.\n const isValidArgument = val => {\n const t = typeof val;\n if (\n t === 'undefined' ||\n t === 'null' ||\n t === 'boolean' ||\n t === 'number' ||\n t === 'string'\n ) {\n return true;\n }\n if (t === 'function' || t !== 'object') {\n return false;\n }\n if (Array.isArray(val)) {\n return val.every(isValidArgument);\n }\n for (const k in val) {\n if (typeof val[k] !== 'function' && !isValidArgument(val[k])) {\n return false;\n }\n }\n return true;\n };\n\n invariant(\n isValidArgument(params),\n '%s is not usable as a native method argument',\n params,\n );\n\n // The params object should not be mutated after being queued\n deepFreezeAndThrowOnMutationInDev((params: any));\n }\n this._queue[PARAMS].push(params);\n\n const now = Date.now();\n if (\n global.nativeFlushQueueImmediate &&\n now - this._lastFlush >= MIN_TIME_BETWEEN_FLUSHES_MS\n ) {\n const queue = this._queue;\n this._queue = [[], [], [], this._callID];\n this._lastFlush = now;\n global.nativeFlushQueueImmediate(queue);\n }\n Systrace.counterEvent('pending_js_to_native_queue', this._queue[0].length);\n if (__DEV__ && this.__spy && isFinite(moduleID)) {\n this.__spy({\n type: TO_NATIVE,\n module: this._remoteModuleTable[moduleID],\n method: this._remoteMethodTable[moduleID][methodID],\n args: params,\n });\n } else if (this.__spy) {\n this.__spy({\n type: TO_NATIVE,\n module: moduleID + '',\n method: methodID,\n args: params,\n });\n }\n }\n\n createDebugLookup(moduleID: number, name: string, methods: string[]) {\n if (__DEV__) {\n this._remoteModuleTable[moduleID] = name;\n this._remoteMethodTable[moduleID] = methods;\n }\n }\n\n // For JSTimers to register its callback. Otherwise a circular dependency\n // between modules is introduced. Note that only one callback may be\n // registered at a time.\n setImmediatesCallback(fn: () => void) {\n this._immediatesCallback = fn;\n }\n\n /**\n * Private methods\n */\n\n __guard(fn: () => void) {\n if (this.__shouldPauseOnThrow()) {\n fn();\n } else {\n try {\n fn();\n } catch (error) {\n ErrorUtils.reportFatalError(error);\n }\n }\n }\n\n // MessageQueue installs a global handler to catch all exceptions where JS users can register their own behavior\n // This handler makes all exceptions to be propagated from inside MessageQueue rather than by the VM at their origin\n // This makes stacktraces to be placed at MessageQueue rather than at where they were launched\n // The parameter DebuggerInternal.shouldPauseOnThrow is used to check before catching all exceptions and\n // can be configured by the VM or any Inspector\n __shouldPauseOnThrow() {\n return (\n // $FlowFixMe\n typeof DebuggerInternal !== 'undefined' &&\n DebuggerInternal.shouldPauseOnThrow === true // eslint-disable-line no-undef\n );\n }\n\n __callImmediates() {\n Systrace.beginEvent('JSTimers.callImmediates()');\n if (this._immediatesCallback != null) {\n this._immediatesCallback();\n }\n Systrace.endEvent();\n }\n\n __callFunction(module: string, method: string, args: any[]): any {\n this._lastFlush = Date.now();\n this._eventLoopStartTime = this._lastFlush;\n if (__DEV__ || this.__spy) {\n Systrace.beginEvent(`${module}.${method}(${stringifySafe(args)})`);\n } else {\n Systrace.beginEvent(`${module}.${method}(...)`);\n }\n if (this.__spy) {\n this.__spy({type: TO_JS, module, method, args});\n }\n const moduleMethods = this.getCallableModule(module);\n invariant(\n !!moduleMethods,\n 'Module %s is not a registered callable module (calling %s)',\n module,\n method,\n );\n invariant(\n !!moduleMethods[method],\n 'Method %s does not exist on module %s',\n method,\n module,\n );\n const result = moduleMethods[method].apply(moduleMethods, args);\n Systrace.endEvent();\n return result;\n }\n\n __invokeCallback(cbID: number, args: any[]) {\n this._lastFlush = Date.now();\n this._eventLoopStartTime = this._lastFlush;\n\n // The rightmost bit of cbID indicates fail (0) or success (1), the other bits are the callID shifted left.\n // eslint-disable-next-line no-bitwise\n const callID = cbID >>> 1;\n // eslint-disable-next-line no-bitwise\n const isSuccess = cbID & 1;\n const callback = isSuccess\n ? this._successCallbacks[callID]\n : this._failureCallbacks[callID];\n\n if (__DEV__) {\n const debug = this._debugInfo[callID];\n const module = debug && this._remoteModuleTable[debug[0]];\n const method = debug && this._remoteMethodTable[debug[0]][debug[1]];\n if (!callback) {\n let errorMessage = `Callback with id ${cbID}: ${module}.${method}() not found`;\n if (method) {\n errorMessage =\n `The callback ${method}() exists in module ${module}, ` +\n 'but only one callback may be registered to a function in a native module.';\n }\n invariant(callback, errorMessage);\n }\n const profileName = debug\n ? ''\n : cbID;\n if (callback && this.__spy) {\n this.__spy({type: TO_JS, module: null, method: profileName, args});\n }\n Systrace.beginEvent(\n `MessageQueue.invokeCallback(${profileName}, ${stringifySafe(args)})`,\n );\n }\n\n if (!callback) {\n return;\n }\n\n delete this._successCallbacks[callID];\n delete this._failureCallbacks[callID];\n callback(...args);\n\n if (__DEV__) {\n Systrace.endEvent();\n }\n }\n}\n\nmodule.exports = MessageQueue;\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict\n */\n\n/* eslint-disable strict */\n\n/**\n * The particular require runtime that we are using looks for a global\n * `ErrorUtils` object and if it exists, then it requires modules with the\n * error handler specified via ErrorUtils.setGlobalHandler by calling the\n * require function with applyWithGuard. Since the require module is loaded\n * before any of the modules, this ErrorUtils must be defined (and the handler\n * set) globally before requiring anything.\n *\n * However, we still want to treat ErrorUtils as a module so that other modules\n * that use it aren't just using a global variable, so simply export the global\n * variable here. ErrorUtils is originally defined in a file named error-guard.js.\n */\nmodule.exports = global.ErrorUtils;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n\n'use strict';\n\nconst invariant = require('fbjs/lib/invariant');\n\nconst TRACE_TAG_REACT_APPS = 1 << 17; // eslint-disable-line no-bitwise\nconst TRACE_TAG_JS_VM_CALLS = 1 << 27; // eslint-disable-line no-bitwise\n\nlet _enabled = false;\nlet _asyncCookie = 0;\nconst _markStack = [];\nlet _markStackIndex = -1;\nlet _canInstallReactHook = false;\n\n// Implements a subset of User Timing API necessary for React measurements.\n// https://developer.mozilla.org/en-US/docs/Web/API/User_Timing_API\nconst REACT_MARKER = '\\u269B';\nconst userTimingPolyfill = __DEV__\n ? {\n mark(markName: string) {\n if (_enabled) {\n _markStackIndex++;\n _markStack[_markStackIndex] = markName;\n let systraceLabel = markName;\n // Since perf measurements are a shared namespace in User Timing API,\n // we prefix all React results with a React emoji.\n if (markName[0] === REACT_MARKER) {\n // This is coming from React.\n // Removing component IDs keeps trace colors stable.\n const indexOfId = markName.lastIndexOf(' (#');\n const cutoffIndex = indexOfId !== -1 ? indexOfId : markName.length;\n // Also cut off the emoji because it breaks Systrace\n systraceLabel = markName.slice(2, cutoffIndex);\n }\n Systrace.beginEvent(systraceLabel);\n }\n },\n measure(measureName: string, startMark: ?string, endMark: ?string) {\n if (_enabled) {\n invariant(\n typeof measureName === 'string' &&\n typeof startMark === 'string' &&\n typeof endMark === 'undefined',\n 'Only performance.measure(string, string) overload is supported.',\n );\n const topMark = _markStack[_markStackIndex];\n invariant(\n startMark === topMark,\n 'There was a mismatching performance.measure() call. ' +\n 'Expected \"%s\" but got \"%s.\"',\n topMark,\n startMark,\n );\n _markStackIndex--;\n // We can't use more descriptive measureName because Systrace doesn't\n // let us edit labels post factum.\n Systrace.endEvent();\n }\n },\n clearMarks(markName: string) {\n if (_enabled) {\n if (_markStackIndex === -1) {\n return;\n }\n if (markName === _markStack[_markStackIndex]) {\n // React uses this for \"cancelling\" started measurements.\n // Systrace doesn't support deleting measurements, so we just stop them.\n if (userTimingPolyfill != null) {\n userTimingPolyfill.measure(markName, markName);\n }\n }\n }\n },\n clearMeasures() {\n // React calls this to avoid memory leaks in browsers, but we don't keep\n // measurements anyway.\n },\n }\n : null;\n\nconst Systrace = {\n installReactHook() {\n if (_enabled) {\n if (__DEV__) {\n global.performance = userTimingPolyfill;\n }\n }\n _canInstallReactHook = true;\n },\n\n setEnabled(enabled: boolean) {\n if (_enabled !== enabled) {\n if (__DEV__) {\n if (enabled) {\n global.nativeTraceBeginLegacy &&\n global.nativeTraceBeginLegacy(TRACE_TAG_JS_VM_CALLS);\n } else {\n global.nativeTraceEndLegacy &&\n global.nativeTraceEndLegacy(TRACE_TAG_JS_VM_CALLS);\n }\n if (_canInstallReactHook) {\n if (enabled && global.performance === undefined) {\n global.performance = userTimingPolyfill;\n }\n }\n }\n _enabled = enabled;\n }\n },\n\n isEnabled(): boolean {\n return _enabled;\n },\n\n /**\n * beginEvent/endEvent for starting and then ending a profile within the same call stack frame\n **/\n beginEvent(profileName?: any, args?: any) {\n if (_enabled) {\n profileName =\n typeof profileName === 'function' ? profileName() : profileName;\n global.nativeTraceBeginSection(TRACE_TAG_REACT_APPS, profileName, args);\n }\n },\n\n endEvent() {\n if (_enabled) {\n global.nativeTraceEndSection(TRACE_TAG_REACT_APPS);\n }\n },\n\n /**\n * beginAsyncEvent/endAsyncEvent for starting and then ending a profile where the end can either\n * occur on another thread or out of the current stack frame, eg await\n * the returned cookie variable should be used as input into the endAsyncEvent call to end the profile\n **/\n beginAsyncEvent(profileName?: any): any {\n const cookie = _asyncCookie;\n if (_enabled) {\n _asyncCookie++;\n profileName =\n typeof profileName === 'function' ? profileName() : profileName;\n global.nativeTraceBeginAsyncSection(\n TRACE_TAG_REACT_APPS,\n profileName,\n cookie,\n );\n }\n return cookie;\n },\n\n endAsyncEvent(profileName?: any, cookie?: any) {\n if (_enabled) {\n profileName =\n typeof profileName === 'function' ? profileName() : profileName;\n global.nativeTraceEndAsyncSection(\n TRACE_TAG_REACT_APPS,\n profileName,\n cookie,\n );\n }\n },\n\n /**\n * counterEvent registers the value to the profileName on the systrace timeline\n **/\n counterEvent(profileName?: any, value?: any) {\n if (_enabled) {\n profileName =\n typeof profileName === 'function' ? profileName() : profileName;\n global.nativeTraceCounter &&\n global.nativeTraceCounter(TRACE_TAG_REACT_APPS, profileName, value);\n }\n },\n};\n\nif (__DEV__) {\n // This is needed, because require callis in polyfills are not processed as\n // other files. Therefore, calls to `require('moduleId')` are not replaced\n // with numeric IDs\n // TODO(davidaurelio) Scan polyfills for dependencies, too (t9759686)\n (require: any).Systrace = Systrace;\n}\n\nmodule.exports = Systrace;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\n/**\n * If your application is accepting different values for the same field over\n * time and is doing a diff on them, you can either (1) create a copy or\n * (2) ensure that those values are not mutated behind two passes.\n * This function helps you with (2) by freezing the object and throwing if\n * the user subsequently modifies the value.\n *\n * There are two caveats with this function:\n * - If the call site is not in strict mode, it will only throw when\n * mutating existing fields, adding a new one\n * will unfortunately fail silently :(\n * - If the object is already frozen or sealed, it will not continue the\n * deep traversal and will leave leaf nodes unfrozen.\n *\n * Freezing the object and adding the throw mechanism is expensive and will\n * only be used in DEV.\n */\nfunction deepFreezeAndThrowOnMutationInDev(object: T): T {\n if (__DEV__) {\n if (\n typeof object !== 'object' ||\n object === null ||\n Object.isFrozen(object) ||\n Object.isSealed(object)\n ) {\n return object;\n }\n\n const keys = Object.keys(object);\n const hasOwnProperty = Object.prototype.hasOwnProperty;\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (hasOwnProperty.call(object, key)) {\n Object.defineProperty(object, key, {\n get: identity.bind(null, object[key]),\n });\n Object.defineProperty(object, key, {\n set: throwOnImmutableMutation.bind(null, key),\n });\n }\n }\n\n Object.freeze(object);\n Object.seal(object);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (hasOwnProperty.call(object, key)) {\n deepFreezeAndThrowOnMutationInDev(object[key]);\n }\n }\n }\n return object;\n}\n\nfunction throwOnImmutableMutation(key, value) {\n throw Error(\n 'You attempted to set the key `' +\n key +\n '` with the value `' +\n JSON.stringify(value) +\n '` on an object that is meant to be immutable ' +\n 'and has been frozen.',\n );\n}\n\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = deepFreezeAndThrowOnMutationInDev;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\n/**\n * Tries to stringify with JSON.stringify and toString, but catches exceptions\n * (e.g. from circular objects) and always returns a string and never throws.\n */\nfunction stringifySafe(arg: any): string {\n let ret;\n const type = typeof arg;\n if (arg === undefined) {\n ret = 'undefined';\n } else if (arg === null) {\n ret = 'null';\n } else if (type === 'string') {\n ret = '\"' + arg + '\"';\n } else if (type === 'function') {\n try {\n ret = arg.toString();\n } catch (e) {\n ret = '[function unknown]';\n }\n } else {\n // Perform a try catch, just in case the object has a circular\n // reference or stringify throws for some other reason.\n try {\n ret = JSON.stringify(arg);\n } catch (e) {\n if (typeof arg.toString === 'function') {\n try {\n ret = arg.toString();\n } catch (E) {}\n }\n }\n }\n return ret || '[\"' + type + '\" failed to stringify]';\n}\n\nmodule.exports = stringifySafe;\n","/**\n * Copyright (c) 2013-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 * @format\n * @flow\n */\n\n'use strict';\n\n/**\n * Defines a lazily evaluated property on the supplied `object`.\n */\nfunction defineLazyObjectProperty(\n object: Object,\n name: string,\n descriptor: {\n get: () => T,\n enumerable?: boolean,\n writable?: boolean,\n },\n): void {\n const {get} = descriptor;\n const enumerable = descriptor.enumerable !== false;\n const writable = descriptor.writable !== false;\n\n let value;\n let valueSet = false;\n function getValue(): T {\n // WORKAROUND: A weird infinite loop occurs where calling `getValue` calls\n // `setValue` which calls `Object.defineProperty` which somehow triggers\n // `getValue` again. Adding `valueSet` breaks this loop.\n if (!valueSet) {\n // Calling `get()` here can trigger an infinite loop if it fails to\n // remove the getter on the property, which can happen when executing\n // JS in a V8 context. `valueSet = true` will break this loop, and\n // sets the value of the property to undefined, until the code in `get()`\n // finishes, at which point the property is set to the correct value.\n valueSet = true;\n setValue(get());\n }\n return value;\n }\n function setValue(newValue: T): void {\n value = newValue;\n valueSet = true;\n Object.defineProperty(object, name, {\n value: newValue,\n configurable: true,\n enumerable,\n writable,\n });\n }\n\n Object.defineProperty(object, name, {\n get: getValue,\n set: setValue,\n configurable: true,\n enumerable,\n });\n}\n\nmodule.exports = defineLazyObjectProperty;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst EventEmitter = require('EventEmitter');\nconst EventSubscriptionVendor = require('EventSubscriptionVendor');\n\nimport type EmitterSubscription from 'EmitterSubscription';\n\nfunction checkNativeEventModule(eventType: ?string) {\n if (eventType) {\n if (eventType.lastIndexOf('statusBar', 0) === 0) {\n throw new Error(\n '`' +\n eventType +\n '` event should be registered via the StatusBarIOS module',\n );\n }\n if (eventType.lastIndexOf('keyboard', 0) === 0) {\n throw new Error(\n '`' +\n eventType +\n '` event should be registered via the Keyboard module',\n );\n }\n if (eventType === 'appStateDidChange' || eventType === 'memoryWarning') {\n throw new Error(\n '`' +\n eventType +\n '` event should be registered via the AppState module',\n );\n }\n }\n}\n\n/**\n * Deprecated - subclass NativeEventEmitter to create granular event modules instead of\n * adding all event listeners directly to RCTDeviceEventEmitter.\n */\nclass RCTDeviceEventEmitter extends EventEmitter {\n sharedSubscriber: EventSubscriptionVendor;\n\n constructor() {\n const sharedSubscriber = new EventSubscriptionVendor();\n super(sharedSubscriber);\n this.sharedSubscriber = sharedSubscriber;\n }\n\n addListener(\n eventType: string,\n listener: Function,\n context: ?Object,\n ): EmitterSubscription {\n if (__DEV__) {\n checkNativeEventModule(eventType);\n }\n return super.addListener(eventType, listener, context);\n }\n\n removeAllListeners(eventType: ?string) {\n if (__DEV__) {\n checkNativeEventModule(eventType);\n }\n super.removeAllListeners(eventType);\n }\n\n removeSubscription(subscription: EmitterSubscription) {\n if (subscription.emitter !== this) {\n subscription.emitter.removeSubscription(subscription);\n } else {\n super.removeSubscription(subscription);\n }\n }\n}\n\nmodule.exports = new RCTDeviceEventEmitter();\n","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar superPropBase = require(\"./superPropBase\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","/**\n * Copyright (c) 2015-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 * @format\n * @noflow\n * @typecheck\n */\n\n'use strict';\n\nconst EmitterSubscription = require('EmitterSubscription');\nconst EventSubscriptionVendor = require('EventSubscriptionVendor');\n\nconst emptyFunction = require('fbjs/lib/emptyFunction');\nconst invariant = require('fbjs/lib/invariant');\n\n/**\n * @class EventEmitter\n * @description\n * An EventEmitter is responsible for managing a set of listeners and publishing\n * events to them when it is told that such events happened. In addition to the\n * data for the given event it also sends a event control object which allows\n * the listeners/handlers to prevent the default behavior of the given event.\n *\n * The emitter is designed to be generic enough to support all the different\n * contexts in which one might want to emit events. It is a simple multicast\n * mechanism on top of which extra functionality can be composed. For example, a\n * more advanced emitter may use an EventHolder and EventFactory.\n */\nclass EventEmitter {\n _subscriber: EventSubscriptionVendor;\n _currentSubscription: ?EmitterSubscription;\n\n /**\n * @constructor\n *\n * @param {EventSubscriptionVendor} subscriber - Optional subscriber instance\n * to use. If omitted, a new subscriber will be created for the emitter.\n */\n constructor(subscriber: ?EventSubscriptionVendor) {\n this._subscriber = subscriber || new EventSubscriptionVendor();\n }\n\n /**\n * Adds a listener to be invoked when events of the specified type are\n * emitted. An optional calling context may be provided. The data arguments\n * emitted will be passed to the listener function.\n *\n * TODO: Annotate the listener arg's type. This is tricky because listeners\n * can be invoked with varargs.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n addListener(\n eventType: string,\n listener: Function,\n context: ?Object,\n ): EmitterSubscription {\n return (this._subscriber.addSubscription(\n eventType,\n new EmitterSubscription(this, this._subscriber, listener, context),\n ): any);\n }\n\n /**\n * Similar to addListener, except that the listener is removed after it is\n * invoked once.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke only once when the\n * specified event is emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n once(\n eventType: string,\n listener: Function,\n context: ?Object,\n ): EmitterSubscription {\n return this.addListener(eventType, (...args) => {\n this.removeCurrentListener();\n listener.apply(context, args);\n });\n }\n\n /**\n * Removes all of the registered listeners, including those registered as\n * listener maps.\n *\n * @param {?string} eventType - Optional name of the event whose registered\n * listeners to remove\n */\n removeAllListeners(eventType: ?string) {\n this._subscriber.removeAllSubscriptions(eventType);\n }\n\n /**\n * Provides an API that can be called during an eventing cycle to remove the\n * last listener that was invoked. This allows a developer to provide an event\n * object that can remove the listener (or listener map) during the\n * invocation.\n *\n * If it is called when not inside of an emitting cycle it will throw.\n *\n * @throws {Error} When called not during an eventing cycle\n *\n * @example\n * var subscription = emitter.addListenerMap({\n * someEvent: function(data, event) {\n * console.log(data);\n * emitter.removeCurrentListener();\n * }\n * });\n *\n * emitter.emit('someEvent', 'abc'); // logs 'abc'\n * emitter.emit('someEvent', 'def'); // does not log anything\n */\n removeCurrentListener() {\n invariant(\n !!this._currentSubscription,\n 'Not in an emitting cycle; there is no current subscription',\n );\n this.removeSubscription(this._currentSubscription);\n }\n\n /**\n * Removes a specific subscription. Called by the `remove()` method of the\n * subscription itself to ensure any necessary cleanup is performed.\n */\n removeSubscription(subscription: EmitterSubscription) {\n invariant(\n subscription.emitter === this,\n 'Subscription does not belong to this emitter.',\n );\n this._subscriber.removeSubscription(subscription);\n }\n\n /**\n * Returns an array of listeners that are currently registered for the given\n * event.\n *\n * @param {string} eventType - Name of the event to query\n * @returns {array}\n */\n listeners(eventType: string): [EmitterSubscription] {\n const subscriptions: ?[\n EmitterSubscription,\n ] = (this._subscriber.getSubscriptionsForType(eventType): any);\n return subscriptions\n ? subscriptions\n .filter(emptyFunction.thatReturnsTrue)\n .map(function(subscription) {\n return subscription.listener;\n })\n : [];\n }\n\n /**\n * Emits an event of the given type with the given data. All handlers of that\n * particular type will be notified.\n *\n * @param {string} eventType - Name of the event to emit\n * @param {...*} Arbitrary arguments to be passed to each registered listener\n *\n * @example\n * emitter.addListener('someEvent', function(message) {\n * console.log(message);\n * });\n *\n * emitter.emit('someEvent', 'abc'); // logs 'abc'\n */\n emit(eventType: string) {\n const subscriptions: ?[\n EmitterSubscription,\n ] = (this._subscriber.getSubscriptionsForType(eventType): any);\n if (subscriptions) {\n for (let i = 0, l = subscriptions.length; i < l; i++) {\n const subscription = subscriptions[i];\n\n // The subscription may have been removed during this event loop.\n if (subscription) {\n this._currentSubscription = subscription;\n subscription.listener.apply(\n subscription.context,\n Array.prototype.slice.call(arguments, 1),\n );\n }\n }\n this._currentSubscription = null;\n }\n }\n\n /**\n * Removes the given listener for event of specific type.\n *\n * @param {string} eventType - Name of the event to emit\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n *\n * @example\n * emitter.removeListener('someEvent', function(message) {\n * console.log(message);\n * }); // removes the listener if already registered\n *\n */\n removeListener(eventType: String, listener) {\n const subscriptions: ?[\n EmitterSubscription,\n ] = (this._subscriber.getSubscriptionsForType(eventType): any);\n if (subscriptions) {\n for (let i = 0, l = subscriptions.length; i < l; i++) {\n const subscription = subscriptions[i];\n\n // The subscription may have been removed during this event loop.\n // its listener matches the listener in method parameters\n if (subscription && subscription.listener === listener) {\n subscription.remove();\n }\n }\n }\n }\n}\n\nmodule.exports = EventEmitter;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst EventSubscription = require('EventSubscription');\n\nimport type EventEmitter from 'EventEmitter';\nimport type EventSubscriptionVendor from 'EventSubscriptionVendor';\n\n/**\n * EmitterSubscription represents a subscription with listener and context data.\n */\nclass EmitterSubscription extends EventSubscription {\n emitter: EventEmitter;\n listener: Function;\n context: ?Object;\n\n /**\n * @param {EventEmitter} emitter - The event emitter that registered this\n * subscription\n * @param {EventSubscriptionVendor} subscriber - The subscriber that controls\n * this subscription\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n constructor(\n emitter: EventEmitter,\n subscriber: EventSubscriptionVendor,\n listener: Function,\n context: ?Object,\n ) {\n super(subscriber);\n this.emitter = emitter;\n this.listener = listener;\n this.context = context;\n }\n\n /**\n * Removes this subscription from the emitter that registered it.\n * Note: we're overriding the `remove()` method of EventSubscription here\n * but deliberately not calling `super.remove()` as the responsibility\n * for removing the subscription lies with the EventEmitter.\n */\n remove() {\n this.emitter.removeSubscription(this);\n }\n}\n\nmodule.exports = EmitterSubscription;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport type EventSubscriptionVendor from 'EventSubscriptionVendor';\n\n/**\n * EventSubscription represents a subscription to a particular event. It can\n * remove its own subscription.\n */\nclass EventSubscription {\n eventType: string;\n key: number;\n subscriber: EventSubscriptionVendor;\n\n /**\n * @param {EventSubscriptionVendor} subscriber the subscriber that controls\n * this subscription.\n */\n constructor(subscriber: EventSubscriptionVendor) {\n this.subscriber = subscriber;\n }\n\n /**\n * Removes this subscription from the subscriber that controls it.\n */\n remove() {\n this.subscriber.removeSubscription(this);\n }\n}\n\nmodule.exports = EventSubscription;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst invariant = require('fbjs/lib/invariant');\n\nimport type EventSubscription from 'EventSubscription';\n\n/**\n * EventSubscriptionVendor stores a set of EventSubscriptions that are\n * subscribed to a particular event type.\n */\nclass EventSubscriptionVendor {\n _subscriptionsForType: Object;\n _currentSubscription: ?EventSubscription;\n\n constructor() {\n this._subscriptionsForType = {};\n this._currentSubscription = null;\n }\n\n /**\n * Adds a subscription keyed by an event type.\n *\n * @param {string} eventType\n * @param {EventSubscription} subscription\n */\n addSubscription(\n eventType: string,\n subscription: EventSubscription,\n ): EventSubscription {\n invariant(\n subscription.subscriber === this,\n 'The subscriber of the subscription is incorrectly set.',\n );\n if (!this._subscriptionsForType[eventType]) {\n this._subscriptionsForType[eventType] = [];\n }\n const key = this._subscriptionsForType[eventType].length;\n this._subscriptionsForType[eventType].push(subscription);\n subscription.eventType = eventType;\n subscription.key = key;\n return subscription;\n }\n\n /**\n * Removes a bulk set of the subscriptions.\n *\n * @param {?string} eventType - Optional name of the event type whose\n * registered supscriptions to remove, if null remove all subscriptions.\n */\n removeAllSubscriptions(eventType: ?string) {\n if (eventType === undefined) {\n this._subscriptionsForType = {};\n } else {\n delete this._subscriptionsForType[eventType];\n }\n }\n\n /**\n * Removes a specific subscription. Instead of calling this function, call\n * `subscription.remove()` directly.\n *\n * @param {object} subscription\n */\n removeSubscription(subscription: Object) {\n const eventType = subscription.eventType;\n const key = subscription.key;\n\n const subscriptionsForType = this._subscriptionsForType[eventType];\n if (subscriptionsForType) {\n delete subscriptionsForType[key];\n }\n }\n\n /**\n * Returns the array of subscriptions that are currently registered for the\n * given event type.\n *\n * Note: This array can be potentially sparse as subscriptions are deleted\n * from it when they are removed.\n *\n * TODO: This returns a nullable array. wat?\n *\n * @param {string} eventType\n * @returns {?array}\n */\n getSubscriptionsForType(eventType: string): ?[EventSubscription] {\n return this._subscriptionsForType[eventType];\n }\n}\n\nmodule.exports = EventSubscriptionVendor;\n","\"use strict\";\n\n/**\n * Copyright (c) 2013-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 * \n */\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\n\n\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\n\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;","/**\n * Copyright (c) 2015-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 * @flow strict-local\n * @format\n */\n'use strict';\n\nconst NativeModules = require('NativeModules');\nconst Platform = require('Platform');\n\nconst defineLazyObjectProperty = require('defineLazyObjectProperty');\nconst invariant = require('fbjs/lib/invariant');\n\nconst {UIManager} = NativeModules;\n\ninvariant(\n UIManager,\n 'UIManager is undefined. The native module config is probably incorrect.',\n);\n\n// In past versions of ReactNative users called UIManager.takeSnapshot()\n// However takeSnapshot was moved to ReactNative in order to support flat\n// bundles and to avoid a cyclic dependency between UIManager and ReactNative.\n// UIManager.takeSnapshot still exists though. In order to avoid confusion or\n// accidental usage, mask the method with a deprecation warning.\nUIManager.__takeSnapshot = UIManager.takeSnapshot;\nUIManager.takeSnapshot = function() {\n invariant(\n false,\n 'UIManager.takeSnapshot should not be called directly. ' +\n 'Use ReactNative.takeSnapshot instead.',\n );\n};\n\n/**\n * Copies the ViewManager constants and commands into UIManager. This is\n * only needed for iOS, which puts the constants in the ViewManager\n * namespace instead of UIManager, unlike Android.\n */\nif (Platform.OS === 'ios') {\n Object.keys(UIManager).forEach(viewName => {\n const viewConfig = UIManager[viewName];\n if (viewConfig.Manager) {\n defineLazyObjectProperty(viewConfig, 'Constants', {\n get: () => {\n const viewManager = NativeModules[viewConfig.Manager];\n const constants = {};\n viewManager &&\n Object.keys(viewManager).forEach(key => {\n const value = viewManager[key];\n if (typeof value !== 'function') {\n constants[key] = value;\n }\n });\n return constants;\n },\n });\n defineLazyObjectProperty(viewConfig, 'Commands', {\n get: () => {\n const viewManager = NativeModules[viewConfig.Manager];\n const commands = {};\n let index = 0;\n viewManager &&\n Object.keys(viewManager).forEach(key => {\n const value = viewManager[key];\n if (typeof value === 'function') {\n commands[key] = index++;\n }\n });\n return commands;\n },\n });\n }\n });\n} else if (UIManager.ViewManagerNames) {\n // We want to add all the view managers to the UIManager.\n // However, the way things are set up, the list of view managers is not known at compile time.\n // As Prepack runs at compile it, it cannot process this loop.\n // So we wrap it in a special __residual call, which basically tells Prepack to ignore it.\n let residual = global.__residual\n ? global.__residual\n : (_, f, ...args) => f.apply(undefined, args);\n residual(\n 'void',\n (UIManager, defineLazyObjectProperty) => {\n UIManager.ViewManagerNames.forEach(viewManagerName => {\n defineLazyObjectProperty(UIManager, viewManagerName, {\n get: () => UIManager.getConstantsForViewManager(viewManagerName),\n });\n });\n },\n UIManager,\n defineLazyObjectProperty,\n );\n\n // As Prepack now no longer knows which properties exactly the UIManager has,\n // we also tell Prepack that it has only partial knowledge of the UIManager,\n // so that any accesses to unknown properties along the global code will fail\n // when Prepack encounters them.\n if (global.__makePartial) global.__makePartial(UIManager);\n}\n\nmodule.exports = UIManager;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst NativeModules = require('NativeModules');\n\nconst Platform = {\n OS: 'android',\n get Version() {\n const constants = NativeModules.PlatformConstants;\n return constants && constants.Version;\n },\n get isTesting(): boolean {\n const constants = NativeModules.PlatformConstants;\n return constants && constants.isTesting;\n },\n get isTV(): boolean {\n const constants = NativeModules.PlatformConstants;\n return constants && constants.uiMode === 'tv';\n },\n select: (obj: Object) => ('android' in obj ? obj.android : obj.default),\n};\n\nmodule.exports = Platform;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst Platform = require('Platform');\nconst React = require('React');\nconst StyleSheet = require('StyleSheet');\nconst View = require('View');\n\nconst requireNativeComponent = require('requireNativeComponent');\n\nimport type {NativeComponent} from 'ReactNative';\nimport type {ViewProps} from 'ViewPropTypes';\n\nconst RCTActivityIndicator =\n Platform.OS === 'android'\n ? require('ProgressBarAndroid')\n : requireNativeComponent('RCTActivityIndicatorView');\n\nconst GRAY = '#999999';\n\ntype IndicatorSize = number | 'small' | 'large';\n\ntype IOSProps = $ReadOnly<{|\n /**\n * Whether the indicator should hide when not animating (true by default).\n *\n * See http://facebook.github.io/react-native/docs/activityindicator.html#hideswhenstopped\n */\n hidesWhenStopped?: ?boolean,\n|}>;\ntype Props = $ReadOnly<{|\n ...ViewProps,\n ...IOSProps,\n\n /**\n * Whether to show the indicator (true, the default) or hide it (false).\n *\n * See http://facebook.github.io/react-native/docs/activityindicator.html#animating\n */\n animating?: ?boolean,\n\n /**\n * The foreground color of the spinner (default is gray).\n *\n * See http://facebook.github.io/react-native/docs/activityindicator.html#color\n */\n color?: ?string,\n\n /**\n * Size of the indicator (default is 'small').\n * Passing a number to the size prop is only supported on Android.\n *\n * See http://facebook.github.io/react-native/docs/activityindicator.html#size\n */\n size?: ?IndicatorSize,\n|}>;\n\n/**\n * Displays a circular loading indicator.\n *\n * See http://facebook.github.io/react-native/docs/activityindicator.html\n */\nconst ActivityIndicator = (\n props: Props,\n forwardedRef?: ?React.Ref<'RCTActivityIndicatorView'>,\n) => {\n const {onLayout, style, ...restProps} = props;\n let sizeStyle;\n\n switch (props.size) {\n case 'small':\n sizeStyle = styles.sizeSmall;\n break;\n case 'large':\n sizeStyle = styles.sizeLarge;\n break;\n default:\n sizeStyle = {height: props.size, width: props.size};\n break;\n }\n\n const nativeProps = {\n ...restProps,\n ref: forwardedRef,\n style: sizeStyle,\n styleAttr: 'Normal',\n indeterminate: true,\n };\n\n return (\n \n {/* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was\n * found when making Flow check .android.js files. */}\n \n \n );\n};\n\n// $FlowFixMe - TODO T29156721 `React.forwardRef` is not defined in Flow, yet.\nconst ActivityIndicatorWithRef = React.forwardRef(ActivityIndicator);\nActivityIndicatorWithRef.displayName = 'ActivityIndicator';\n\nActivityIndicatorWithRef.defaultProps = {\n animating: true,\n color: Platform.OS === 'ios' ? GRAY : null,\n hidesWhenStopped: true,\n size: 'small',\n};\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n sizeSmall: {\n width: 20,\n height: 20,\n },\n sizeLarge: {\n width: 36,\n height: 36,\n },\n});\n\nmodule.exports = (ActivityIndicatorWithRef: Class>);\n","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","/**\n * Copyright (c) 2016-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 * @format\n */\n\n'use strict';\n\nmodule.exports = require('react');\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/** @license React v16.6.1\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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\n'use strict';var k=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.concurrent_mode\"):60111,y=n?Symbol.for(\"react.forward_ref\"):60112,z=n?Symbol.for(\"react.suspense\"):60113,A=n?Symbol.for(\"react.memo\"):\n60115,B=n?Symbol.for(\"react.lazy\"):60116,C=\"function\"===typeof Symbol&&Symbol.iterator;function aa(a,b,e,c,d,g,h,f){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[e,c,d,g,h,f],m=0;a=Error(b.replace(/%s/g,function(){return l[m++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction D(a){for(var b=arguments.length-1,e=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=0;cQ.length&&Q.push(a)}\nfunction T(a,b,e,c){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return e(c,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var h=0;h's `style` prop. This ensures call sites of the component\n * can't pass styles that View doesn't support such as `fontSize`.`\n *\n * type Props = {style: ViewStyleProp}\n * const MyComponent = (props: Props) => \n */\nexport type ViewStyleProp = ____ViewStyleProp_Internal;\n\n/**\n * This type should be used as the type for a prop that is passed through\n * to a 's `style` prop. This ensures call sites of the component\n * can't pass styles that Text doesn't support such as `resizeMode`.`\n *\n * type Props = {style: TextStyleProp}\n * const MyComponent = (props: Props) => \n */\nexport type TextStyleProp = ____TextStyleProp_Internal;\n\n/**\n * This type should be used as the type for a prop that is passed through\n * to an 's `style` prop. This ensures call sites of the component\n * can't pass styles that Image doesn't support such as `fontSize`.`\n *\n * type Props = {style: ImageStyleProp}\n * const MyComponent = (props: Props) => \n */\nexport type ImageStyleProp = ____ImageStyleProp_Internal;\n\n/**\n * WARNING: You probably shouldn't be using this type. This type\n * is similar to the ones above except it allows styles that are accepted\n * by all of View, Text, or Image. It is therefore very unsafe to pass this\n * through to an underlying component. Using this is almost always a mistake\n * and using one of the other more restrictive types is likely the right choice.\n */\nexport type DangerouslyImpreciseStyleProp = ____DangerouslyImpreciseStyleProp_Internal;\n\n/**\n * Utility type for getting the values for specific style keys.\n *\n * The following is bad because position is more restrictive than 'string':\n * ```\n * type Props = {position: string};\n * ```\n *\n * You should use the following instead:\n *\n * ```\n * type Props = {position: TypeForStyleKey<'position'>};\n * ```\n *\n * This will correctly give you the type 'absolute' | 'relative'\n */\nexport type TypeForStyleKey<\n +key: $Keys<____DangerouslyImpreciseStyle_Internal>,\n> = $ElementType<____DangerouslyImpreciseStyle_Internal, key>;\n\n/**\n * This type is an object of the different possible style\n * properties that can be specified for View.\n *\n * Note that this isn't a safe way to type a style prop for a component as\n * results from StyleSheet.create return an internal identifier, not\n * an object of styles.\n *\n * If you want to type the style prop of a function,\n * consider using ViewStyleProp.\n *\n * A reasonable usage of this type is for helper functions that return an\n * object of styles to pass to a View that can't be precomputed with\n * StyleSheet.create.\n */\nexport type ViewStyle = ____ViewStyle_Internal;\n\n/**\n * This type is an object of the different possible style\n * properties that can be specified for Text.\n *\n * Note that this isn't a safe way to type a style prop for a component as\n * results from StyleSheet.create return an internal identifier, not\n * an object of styles.\n *\n * If you want to type the style prop of a function,\n * consider using TextStyleProp.\n *\n * A reasonable usage of this type is for helper functions that return an\n * object of styles to pass to a Text that can't be precomputed with\n * StyleSheet.create.\n */\nexport type TextStyle = ____TextStyle_Internal;\n\n/**\n * This type is an object of the different possible style\n * properties that can be specified for Image.\n *\n * Note that this isn't a safe way to type a style prop for a component as\n * results from StyleSheet.create return an internal identifier, not\n * an object of styles.\n *\n * If you want to type the style prop of a function,\n * consider using ImageStyleProp.\n *\n * A reasonable usage of this type is for helper functions that return an\n * object of styles to pass to an Image that can't be precomputed with\n * StyleSheet.create.\n */\nexport type ImageStyle = ____ImageStyle_Internal;\n\n/**\n * WARNING: You probably shouldn't be using this type. This type is an object\n * with all possible style keys and their values. Note that this isn't\n * a safe way to type a style prop for a component as results from\n * StyleSheet.create return an internal identifier, not an object of styles.\n *\n * If you want to type the style prop of a function, consider using\n * ViewStyleProp, TextStyleProp, or ImageStyleProp.\n *\n * This should only be used by very core utilities that operate on an object\n * containing any possible style value.\n */\nexport type DangerouslyImpreciseStyle = ____DangerouslyImpreciseStyle_Internal;\n\n/**\n * These types are simlilar to the style types above. They are objects of the\n * possible style keys in that group. For example, ShadowStyle contains\n * keys like `shadowColor` and `shadowRadius`.\n */\nexport type LayoutStyle = ____LayoutStyle_Internal;\nexport type ShadowStyle = ____ShadowStyle_Internal;\nexport type TransformStyle = ____TransformStyle_Internal;\n\nlet hairlineWidth = PixelRatio.roundToNearestPixel(0.4);\nif (hairlineWidth === 0) {\n hairlineWidth = 1 / PixelRatio.get();\n}\n\nconst absoluteFill: LayoutStyle = {\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n};\nif (__DEV__) {\n Object.freeze(absoluteFill);\n}\n\n/**\n * A StyleSheet is an abstraction similar to CSS StyleSheets\n *\n * Create a new StyleSheet:\n *\n * ```\n * const styles = StyleSheet.create({\n * container: {\n * borderRadius: 4,\n * borderWidth: 0.5,\n * borderColor: '#d6d7da',\n * },\n * title: {\n * fontSize: 19,\n * fontWeight: 'bold',\n * },\n * activeTitle: {\n * color: 'red',\n * },\n * });\n * ```\n *\n * Use a StyleSheet:\n *\n * ```\n * \n * \n * \n * ```\n *\n * Code quality:\n *\n * - By moving styles away from the render function, you're making the code\n * easier to understand.\n * - Naming the styles is a good way to add meaning to the low level components\n * in the render function.\n *\n * Performance:\n *\n * - Making a stylesheet from a style object makes it possible to refer to it\n * by ID instead of creating a new style object every time.\n * - It also allows to send the style only once through the bridge. All\n * subsequent uses are going to refer an id (not implemented yet).\n */\nmodule.exports = {\n /**\n * This is defined as the width of a thin line on the platform. It can be\n * used as the thickness of a border or division between two elements.\n * Example:\n * ```\n * {\n * borderBottomColor: '#bbb',\n * borderBottomWidth: StyleSheet.hairlineWidth\n * }\n * ```\n *\n * This constant will always be a round number of pixels (so a line defined\n * by it look crisp) and will try to match the standard width of a thin line\n * on the underlying platform. However, you should not rely on it being a\n * constant size, because on different platforms and screen densities its\n * value may be calculated differently.\n *\n * A line with hairline width may not be visible if your simulator is downscaled.\n */\n hairlineWidth,\n\n /**\n * A very common pattern is to create overlays with position absolute and zero positioning,\n * so `absoluteFill` can be used for convenience and to reduce duplication of these repeated\n * styles.\n */\n absoluteFill: (absoluteFill: any), // TODO: This should be updated after we fix downstream Flow sites.\n\n /**\n * Sometimes you may want `absoluteFill` but with a couple tweaks - `absoluteFillObject` can be\n * used to create a customized entry in a `StyleSheet`, e.g.:\n *\n * const styles = StyleSheet.create({\n * wrapper: {\n * ...StyleSheet.absoluteFillObject,\n * top: 10,\n * backgroundColor: 'transparent',\n * },\n * });\n */\n absoluteFillObject: absoluteFill,\n\n /**\n * Combines two styles such that `style2` will override any styles in `style1`.\n * If either style is falsy, the other one is returned without allocating an\n * array, saving allocations and maintaining reference equality for\n * PureComponent checks.\n */\n compose(\n style1: ?T,\n style2: ?T,\n ): ?T | $ReadOnlyArray {\n if (style1 != null && style2 != null) {\n return ([style1, style2]: $ReadOnlyArray);\n } else {\n return style1 != null ? style1 : style2;\n }\n },\n\n /**\n * Flattens an array of style objects, into one aggregated style object.\n * Alternatively, this method can be used to lookup IDs, returned by\n * StyleSheet.register.\n *\n * > **NOTE**: Exercise caution as abusing this can tax you in terms of\n * > optimizations.\n * >\n * > IDs enable optimizations through the bridge and memory in general. Refering\n * > to style objects directly will deprive you of these optimizations.\n *\n * Example:\n * ```\n * const styles = StyleSheet.create({\n * listItem: {\n * flex: 1,\n * fontSize: 16,\n * color: 'white'\n * },\n * selectedListItem: {\n * color: 'green'\n * }\n * });\n *\n * StyleSheet.flatten([styles.listItem, styles.selectedListItem])\n * // returns { flex: 1, fontSize: 16, color: 'green' }\n * ```\n * Alternative use:\n * ```\n * StyleSheet.flatten(styles.listItem);\n * // return { flex: 1, fontSize: 16, color: 'white' }\n * // Simply styles.listItem would return its ID (number)\n * ```\n * This method internally uses `StyleSheetRegistry.getStyleByID(style)`\n * to resolve style objects represented by IDs. Thus, an array of style\n * objects (instances of StyleSheet.create), are individually resolved to,\n * their respective objects, merged as one and then returned. This also explains\n * the alternative use.\n */\n flatten,\n\n /**\n * WARNING: EXPERIMENTAL. Breaking changes will probably happen a lot and will\n * not be reliably announced. The whole thing might be deleted, who knows? Use\n * at your own risk.\n *\n * Sets a function to use to pre-process a style property value. This is used\n * internally to process color and transform values. You should not use this\n * unless you really know what you are doing and have exhausted other options.\n */\n setStyleAttributePreprocessor(\n property: string,\n process: (nextProp: mixed) => mixed,\n ) {\n let value;\n\n if (ReactNativeStyleAttributes[property] === true) {\n value = {};\n } else if (typeof ReactNativeStyleAttributes[property] === 'object') {\n value = ReactNativeStyleAttributes[property];\n } else {\n console.error(`${property} is not a valid style attribute`);\n return;\n }\n\n if (__DEV__ && typeof value.process === 'function') {\n console.warn(`Overwriting ${property} style attribute preprocessor`);\n }\n\n ReactNativeStyleAttributes[property] = {...value, process};\n },\n\n /**\n * Creates a StyleSheet style reference from the given object.\n */\n create<+S: ____Styles_Internal>(obj: S): $ObjMap any> {\n // TODO: This should return S as the return type. But first,\n // we need to codemod all the callsites that are typing this\n // return value as a number (even though it was opaque).\n if (__DEV__) {\n for (const key in obj) {\n StyleSheetValidation.validateStyle(key, obj);\n if (obj[key]) {\n Object.freeze(obj[key]);\n }\n }\n }\n return obj;\n },\n};\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst Dimensions = require('Dimensions');\n\n/**\n * PixelRatio class gives access to the device pixel density.\n *\n * ## Fetching a correctly sized image\n *\n * You should get a higher resolution image if you are on a high pixel density\n * device. A good rule of thumb is to multiply the size of the image you display\n * by the pixel ratio.\n *\n * ```\n * var image = getImage({\n * width: PixelRatio.getPixelSizeForLayoutSize(200),\n * height: PixelRatio.getPixelSizeForLayoutSize(100),\n * });\n * \n * ```\n *\n * ## Pixel grid snapping\n *\n * In iOS, you can specify positions and dimensions for elements with arbitrary\n * precision, for example 29.674825. But, ultimately the physical display only\n * have a fixed number of pixels, for example 640×960 for iPhone 4 or 750×1334\n * for iPhone 6. iOS tries to be as faithful as possible to the user value by\n * spreading one original pixel into multiple ones to trick the eye. The\n * downside of this technique is that it makes the resulting element look\n * blurry.\n *\n * In practice, we found out that developers do not want this feature and they\n * have to work around it by doing manual rounding in order to avoid having\n * blurry elements. In React Native, we are rounding all the pixels\n * automatically.\n *\n * We have to be careful when to do this rounding. You never want to work with\n * rounded and unrounded values at the same time as you're going to accumulate\n * rounding errors. Having even one rounding error is deadly because a one\n * pixel border may vanish or be twice as big.\n *\n * In React Native, everything in JavaScript and within the layout engine works\n * with arbitrary precision numbers. It's only when we set the position and\n * dimensions of the native element on the main thread that we round. Also,\n * rounding is done relative to the root rather than the parent, again to avoid\n * accumulating rounding errors.\n *\n */\nclass PixelRatio {\n /**\n * Returns the device pixel density. Some examples:\n *\n * - PixelRatio.get() === 1\n * - mdpi Android devices (160 dpi)\n * - PixelRatio.get() === 1.5\n * - hdpi Android devices (240 dpi)\n * - PixelRatio.get() === 2\n * - iPhone 4, 4S\n * - iPhone 5, 5c, 5s\n * - iPhone 6\n * - xhdpi Android devices (320 dpi)\n * - PixelRatio.get() === 3\n * - iPhone 6 plus\n * - xxhdpi Android devices (480 dpi)\n * - PixelRatio.get() === 3.5\n * - Nexus 6\n */\n static get(): number {\n return Dimensions.get('window').scale;\n }\n\n /**\n * Returns the scaling factor for font sizes. This is the ratio that is used to calculate the\n * absolute font size, so any elements that heavily depend on that should use this to do\n * calculations.\n *\n * If a font scale is not set, this returns the device pixel ratio.\n *\n * Currently this is only implemented on Android and reflects the user preference set in\n * Settings > Display > Font size, on iOS it will always return the default pixel ratio.\n * @platform android\n */\n static getFontScale(): number {\n return Dimensions.get('window').fontScale || PixelRatio.get();\n }\n\n /**\n * Converts a layout size (dp) to pixel size (px).\n *\n * Guaranteed to return an integer number.\n */\n static getPixelSizeForLayoutSize(layoutSize: number): number {\n return Math.round(layoutSize * PixelRatio.get());\n }\n\n /**\n * Rounds a layout size (dp) to the nearest layout size that corresponds to\n * an integer number of pixels. For example, on a device with a PixelRatio\n * of 3, `PixelRatio.roundToNearestPixel(8.4) = 8.33`, which corresponds to\n * exactly (8.33 * 3) = 25 pixels.\n */\n static roundToNearestPixel(layoutSize: number): number {\n const ratio = PixelRatio.get();\n return Math.round(layoutSize * ratio) / ratio;\n }\n\n // No-op for iOS, but used on the web. Should not be documented.\n static startDetecting() {}\n}\n\nmodule.exports = PixelRatio;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst EventEmitter = require('EventEmitter');\nconst Platform = require('Platform');\nconst RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\n\nconst invariant = require('fbjs/lib/invariant');\n\nconst eventEmitter = new EventEmitter();\nlet dimensionsInitialized = false;\nconst dimensions = {};\nclass Dimensions {\n /**\n * This should only be called from native code by sending the\n * didUpdateDimensions event.\n *\n * @param {object} dims Simple string-keyed object of dimensions to set\n */\n static set(dims: {[key: string]: any}): void {\n // We calculate the window dimensions in JS so that we don't encounter loss of\n // precision in transferring the dimensions (which could be non-integers) over\n // the bridge.\n if (dims && dims.windowPhysicalPixels) {\n // parse/stringify => Clone hack\n dims = JSON.parse(JSON.stringify(dims));\n\n const windowPhysicalPixels = dims.windowPhysicalPixels;\n dims.window = {\n width: windowPhysicalPixels.width / windowPhysicalPixels.scale,\n height: windowPhysicalPixels.height / windowPhysicalPixels.scale,\n scale: windowPhysicalPixels.scale,\n fontScale: windowPhysicalPixels.fontScale,\n };\n if (Platform.OS === 'android') {\n // Screen and window dimensions are different on android\n const screenPhysicalPixels = dims.screenPhysicalPixels;\n dims.screen = {\n width: screenPhysicalPixels.width / screenPhysicalPixels.scale,\n height: screenPhysicalPixels.height / screenPhysicalPixels.scale,\n scale: screenPhysicalPixels.scale,\n fontScale: screenPhysicalPixels.fontScale,\n };\n\n // delete so no callers rely on this existing\n delete dims.screenPhysicalPixels;\n } else {\n dims.screen = dims.window;\n }\n // delete so no callers rely on this existing\n delete dims.windowPhysicalPixels;\n }\n\n Object.assign(dimensions, dims);\n if (dimensionsInitialized) {\n // Don't fire 'change' the first time the dimensions are set.\n eventEmitter.emit('change', {\n window: dimensions.window,\n screen: dimensions.screen,\n });\n } else {\n dimensionsInitialized = true;\n }\n }\n\n /**\n * Initial dimensions are set before `runApplication` is called so they should\n * be available before any other require's are run, but may be updated later.\n *\n * Note: Although dimensions are available immediately, they may change (e.g\n * due to device rotation) so any rendering logic or styles that depend on\n * these constants should try to call this function on every render, rather\n * than caching the value (for example, using inline styles rather than\n * setting a value in a `StyleSheet`).\n *\n * Example: `var {height, width} = Dimensions.get('window');`\n *\n * @param {string} dim Name of dimension as defined when calling `set`.\n * @returns {Object?} Value for the dimension.\n */\n static get(dim: string): Object {\n invariant(dimensions[dim], 'No dimension set for key ' + dim);\n return dimensions[dim];\n }\n\n /**\n * Add an event handler. Supported events:\n *\n * - `change`: Fires when a property within the `Dimensions` object changes. The argument\n * to the event handler is an object with `window` and `screen` properties whose values\n * are the same as the return values of `Dimensions.get('window')` and\n * `Dimensions.get('screen')`, respectively.\n */\n static addEventListener(type: string, handler: Function) {\n invariant(\n type === 'change',\n 'Trying to subscribe to unknown event: \"%s\"',\n type,\n );\n eventEmitter.addListener(type, handler);\n }\n\n /**\n * Remove an event handler.\n */\n static removeEventListener(type: string, handler: Function) {\n invariant(\n type === 'change',\n 'Trying to remove listener for unknown event: \"%s\"',\n type,\n );\n eventEmitter.removeListener(type, handler);\n }\n}\n\nlet dims: ?{[key: string]: any} =\n global.nativeExtensions &&\n global.nativeExtensions.DeviceInfo &&\n global.nativeExtensions.DeviceInfo.Dimensions;\nlet nativeExtensionsEnabled = true;\nif (!dims) {\n const DeviceInfo = require('DeviceInfo');\n dims = DeviceInfo.Dimensions;\n nativeExtensionsEnabled = false;\n}\n\ninvariant(\n dims,\n 'Either DeviceInfo native extension or DeviceInfo Native Module must be registered',\n);\nDimensions.set(dims);\nif (!nativeExtensionsEnabled) {\n RCTDeviceEventEmitter.addListener('didUpdateDimensions', function(update) {\n Dimensions.set(update);\n });\n}\n\nmodule.exports = Dimensions;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst DeviceInfo = require('NativeModules').DeviceInfo;\n\nconst invariant = require('fbjs/lib/invariant');\n\ninvariant(DeviceInfo, 'DeviceInfo native module is not installed correctly');\n\nmodule.exports = DeviceInfo;\n","/**\n * Copyright (c) 2015-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 * @format strict-local\n * @flow\n */\n\n'use strict';\n\nconst ImageStylePropTypes = require('ImageStylePropTypes');\nconst TextStylePropTypes = require('TextStylePropTypes');\nconst ViewStylePropTypes = require('ViewStylePropTypes');\n\nconst processColor = require('processColor');\nconst processTransform = require('processTransform');\nconst sizesDiffer = require('sizesDiffer');\n\nconst ReactNativeStyleAttributes = {};\n\nfor (const attributeName of Object.keys({\n ...ViewStylePropTypes,\n ...TextStylePropTypes,\n ...ImageStylePropTypes,\n})) {\n ReactNativeStyleAttributes[attributeName] = true;\n}\n\nReactNativeStyleAttributes.transform = {process: processTransform};\nReactNativeStyleAttributes.shadowOffset = {diff: sizesDiffer};\n\nconst colorAttributes = {process: processColor};\nReactNativeStyleAttributes.backgroundColor = colorAttributes;\nReactNativeStyleAttributes.borderBottomColor = colorAttributes;\nReactNativeStyleAttributes.borderColor = colorAttributes;\nReactNativeStyleAttributes.borderLeftColor = colorAttributes;\nReactNativeStyleAttributes.borderRightColor = colorAttributes;\nReactNativeStyleAttributes.borderTopColor = colorAttributes;\nReactNativeStyleAttributes.borderStartColor = colorAttributes;\nReactNativeStyleAttributes.borderEndColor = colorAttributes;\nReactNativeStyleAttributes.color = colorAttributes;\nReactNativeStyleAttributes.shadowColor = colorAttributes;\nReactNativeStyleAttributes.textDecorationColor = colorAttributes;\nReactNativeStyleAttributes.tintColor = colorAttributes;\nReactNativeStyleAttributes.textShadowColor = colorAttributes;\nReactNativeStyleAttributes.overlayColor = colorAttributes;\n\nmodule.exports = ReactNativeStyleAttributes;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst ColorPropType = require('ColorPropType');\nconst ImageResizeMode = require('ImageResizeMode');\nconst LayoutPropTypes = require('LayoutPropTypes');\nconst ReactPropTypes = require('prop-types');\nconst ShadowPropTypesIOS = require('ShadowPropTypesIOS');\nconst TransformPropTypes = require('TransformPropTypes');\n\nconst ImageStylePropTypes = {\n ...LayoutPropTypes,\n ...ShadowPropTypesIOS,\n ...TransformPropTypes,\n resizeMode: ReactPropTypes.oneOf(Object.keys(ImageResizeMode)),\n backfaceVisibility: ReactPropTypes.oneOf(['visible', 'hidden']),\n backgroundColor: ColorPropType,\n borderColor: ColorPropType,\n borderWidth: ReactPropTypes.number,\n borderRadius: ReactPropTypes.number,\n overflow: ReactPropTypes.oneOf(['visible', 'hidden']),\n\n /**\n * Changes the color of all the non-transparent pixels to the tintColor.\n */\n tintColor: ColorPropType,\n opacity: ReactPropTypes.number,\n /**\n * When the image has rounded corners, specifying an overlayColor will\n * cause the remaining space in the corners to be filled with a solid color.\n * This is useful in cases which are not supported by the Android\n * implementation of rounded corners:\n * - Certain resize modes, such as 'contain'\n * - Animated GIFs\n *\n * A typical way to use this prop is with images displayed on a solid\n * background and setting the `overlayColor` to the same color\n * as the background.\n *\n * For details of how this works under the hood, see\n * http://frescolib.org/docs/rounded-corners-and-circles.html\n *\n * @platform android\n */\n overlayColor: ReactPropTypes.string,\n\n // Android-Specific styles\n borderTopLeftRadius: ReactPropTypes.number,\n borderTopRightRadius: ReactPropTypes.number,\n borderBottomLeftRadius: ReactPropTypes.number,\n borderBottomRightRadius: ReactPropTypes.number,\n};\n\nmodule.exports = ImageStylePropTypes;\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\nconst normalizeColor = require('normalizeColor');\n\nconst colorPropType = function(\n isRequired,\n props,\n propName,\n componentName,\n location,\n propFullName,\n) {\n const color = props[propName];\n if (color === undefined || color === null) {\n if (isRequired) {\n return new Error(\n 'Required ' +\n location +\n ' `' +\n (propFullName || propName) +\n '` was not specified in `' +\n componentName +\n '`.',\n );\n }\n return;\n }\n\n if (typeof color === 'number') {\n // Developers should not use a number, but we are using the prop type\n // both for user provided colors and for transformed ones. This isn't ideal\n // and should be fixed but will do for now...\n return;\n }\n\n if (normalizeColor(color) === null) {\n return new Error(\n 'Invalid ' +\n location +\n ' `' +\n (propFullName || propName) +\n '` supplied to `' +\n componentName +\n '`: ' +\n color +\n '\\n' +\n `Valid color formats are\n - '#f0f' (#rgb)\n - '#f0fc' (#rgba)\n - '#ff00ff' (#rrggbb)\n - '#ff00ff00' (#rrggbbaa)\n - 'rgb(255, 255, 255)'\n - 'rgba(255, 255, 255, 1.0)'\n - 'hsl(360, 100%, 100%)'\n - 'hsla(360, 100%, 100%, 1.0)'\n - 'transparent'\n - 'red'\n - 0xff00ff00 (0xrrggbbaa)\n`,\n );\n }\n};\n\nconst ColorPropType = colorPropType.bind(null, false /* isRequired */);\nColorPropType.isRequired = colorPropType.bind(null, true /* isRequired */);\n\nmodule.exports = ColorPropType;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n/* eslint no-bitwise: 0 */\n'use strict';\n\nfunction normalizeColor(color: string | number): ?number {\n const matchers = getMatchers();\n let match;\n\n if (typeof color === 'number') {\n if (color >>> 0 === color && color >= 0 && color <= 0xffffffff) {\n return color;\n }\n return null;\n }\n\n // Ordered based on occurrences on Facebook codebase\n if ((match = matchers.hex6.exec(color))) {\n return parseInt(match[1] + 'ff', 16) >>> 0;\n }\n\n if (names.hasOwnProperty(color)) {\n return names[color];\n }\n\n if ((match = matchers.rgb.exec(color))) {\n return (\n // b\n ((parse255(match[1]) << 24) | // r\n (parse255(match[2]) << 16) | // g\n (parse255(match[3]) << 8) |\n 0x000000ff) >>> // a\n 0\n );\n }\n\n if ((match = matchers.rgba.exec(color))) {\n return (\n // b\n ((parse255(match[1]) << 24) | // r\n (parse255(match[2]) << 16) | // g\n (parse255(match[3]) << 8) |\n parse1(match[4])) >>> // a\n 0\n );\n }\n\n if ((match = matchers.hex3.exec(color))) {\n return (\n parseInt(\n match[1] +\n match[1] + // r\n match[2] +\n match[2] + // g\n match[3] +\n match[3] + // b\n 'ff', // a\n 16,\n ) >>> 0\n );\n }\n\n // https://drafts.csswg.org/css-color-4/#hex-notation\n if ((match = matchers.hex8.exec(color))) {\n return parseInt(match[1], 16) >>> 0;\n }\n\n if ((match = matchers.hex4.exec(color))) {\n return (\n parseInt(\n match[1] +\n match[1] + // r\n match[2] +\n match[2] + // g\n match[3] +\n match[3] + // b\n match[4] +\n match[4], // a\n 16,\n ) >>> 0\n );\n }\n\n if ((match = matchers.hsl.exec(color))) {\n return (\n (hslToRgb(\n parse360(match[1]), // h\n parsePercentage(match[2]), // s\n parsePercentage(match[3]), // l\n ) |\n 0x000000ff) >>> // a\n 0\n );\n }\n\n if ((match = matchers.hsla.exec(color))) {\n return (\n (hslToRgb(\n parse360(match[1]), // h\n parsePercentage(match[2]), // s\n parsePercentage(match[3]), // l\n ) |\n parse1(match[4])) >>> // a\n 0\n );\n }\n\n return null;\n}\n\nfunction hue2rgb(p: number, q: number, t: number): number {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\n\nfunction hslToRgb(h: number, s: number, l: number): number {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n const r = hue2rgb(p, q, h + 1 / 3);\n const g = hue2rgb(p, q, h);\n const b = hue2rgb(p, q, h - 1 / 3);\n\n return (\n (Math.round(r * 255) << 24) |\n (Math.round(g * 255) << 16) |\n (Math.round(b * 255) << 8)\n );\n}\n\n// var INTEGER = '[-+]?\\\\d+';\nconst NUMBER = '[-+]?\\\\d*\\\\.?\\\\d+';\nconst PERCENTAGE = NUMBER + '%';\n\nfunction call(...args) {\n return '\\\\(\\\\s*(' + args.join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)';\n}\n\nlet cachedMatchers;\n\nfunction getMatchers() {\n if (cachedMatchers === undefined) {\n cachedMatchers = {\n rgb: new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER)),\n rgba: new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER)),\n hsl: new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE)),\n hsla: new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER)),\n hex3: /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex4: /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#([0-9a-fA-F]{6})$/,\n hex8: /^#([0-9a-fA-F]{8})$/,\n };\n }\n return cachedMatchers;\n}\n\nfunction parse255(str: string): number {\n const int = parseInt(str, 10);\n if (int < 0) {\n return 0;\n }\n if (int > 255) {\n return 255;\n }\n return int;\n}\n\nfunction parse360(str: string): number {\n const int = parseFloat(str);\n return (((int % 360) + 360) % 360) / 360;\n}\n\nfunction parse1(str: string): number {\n const num = parseFloat(str);\n if (num < 0) {\n return 0;\n }\n if (num > 1) {\n return 255;\n }\n return Math.round(num * 255);\n}\n\nfunction parsePercentage(str: string): number {\n // parseFloat conveniently ignores the final %\n const int = parseFloat(str);\n if (int < 0) {\n return 0;\n }\n if (int > 100) {\n return 1;\n }\n return int / 100;\n}\n\nconst names = {\n transparent: 0x00000000,\n\n // http://www.w3.org/TR/css3-color/#svg-color\n aliceblue: 0xf0f8ffff,\n antiquewhite: 0xfaebd7ff,\n aqua: 0x00ffffff,\n aquamarine: 0x7fffd4ff,\n azure: 0xf0ffffff,\n beige: 0xf5f5dcff,\n bisque: 0xffe4c4ff,\n black: 0x000000ff,\n blanchedalmond: 0xffebcdff,\n blue: 0x0000ffff,\n blueviolet: 0x8a2be2ff,\n brown: 0xa52a2aff,\n burlywood: 0xdeb887ff,\n burntsienna: 0xea7e5dff,\n cadetblue: 0x5f9ea0ff,\n chartreuse: 0x7fff00ff,\n chocolate: 0xd2691eff,\n coral: 0xff7f50ff,\n cornflowerblue: 0x6495edff,\n cornsilk: 0xfff8dcff,\n crimson: 0xdc143cff,\n cyan: 0x00ffffff,\n darkblue: 0x00008bff,\n darkcyan: 0x008b8bff,\n darkgoldenrod: 0xb8860bff,\n darkgray: 0xa9a9a9ff,\n darkgreen: 0x006400ff,\n darkgrey: 0xa9a9a9ff,\n darkkhaki: 0xbdb76bff,\n darkmagenta: 0x8b008bff,\n darkolivegreen: 0x556b2fff,\n darkorange: 0xff8c00ff,\n darkorchid: 0x9932ccff,\n darkred: 0x8b0000ff,\n darksalmon: 0xe9967aff,\n darkseagreen: 0x8fbc8fff,\n darkslateblue: 0x483d8bff,\n darkslategray: 0x2f4f4fff,\n darkslategrey: 0x2f4f4fff,\n darkturquoise: 0x00ced1ff,\n darkviolet: 0x9400d3ff,\n deeppink: 0xff1493ff,\n deepskyblue: 0x00bfffff,\n dimgray: 0x696969ff,\n dimgrey: 0x696969ff,\n dodgerblue: 0x1e90ffff,\n firebrick: 0xb22222ff,\n floralwhite: 0xfffaf0ff,\n forestgreen: 0x228b22ff,\n fuchsia: 0xff00ffff,\n gainsboro: 0xdcdcdcff,\n ghostwhite: 0xf8f8ffff,\n gold: 0xffd700ff,\n goldenrod: 0xdaa520ff,\n gray: 0x808080ff,\n green: 0x008000ff,\n greenyellow: 0xadff2fff,\n grey: 0x808080ff,\n honeydew: 0xf0fff0ff,\n hotpink: 0xff69b4ff,\n indianred: 0xcd5c5cff,\n indigo: 0x4b0082ff,\n ivory: 0xfffff0ff,\n khaki: 0xf0e68cff,\n lavender: 0xe6e6faff,\n lavenderblush: 0xfff0f5ff,\n lawngreen: 0x7cfc00ff,\n lemonchiffon: 0xfffacdff,\n lightblue: 0xadd8e6ff,\n lightcoral: 0xf08080ff,\n lightcyan: 0xe0ffffff,\n lightgoldenrodyellow: 0xfafad2ff,\n lightgray: 0xd3d3d3ff,\n lightgreen: 0x90ee90ff,\n lightgrey: 0xd3d3d3ff,\n lightpink: 0xffb6c1ff,\n lightsalmon: 0xffa07aff,\n lightseagreen: 0x20b2aaff,\n lightskyblue: 0x87cefaff,\n lightslategray: 0x778899ff,\n lightslategrey: 0x778899ff,\n lightsteelblue: 0xb0c4deff,\n lightyellow: 0xffffe0ff,\n lime: 0x00ff00ff,\n limegreen: 0x32cd32ff,\n linen: 0xfaf0e6ff,\n magenta: 0xff00ffff,\n maroon: 0x800000ff,\n mediumaquamarine: 0x66cdaaff,\n mediumblue: 0x0000cdff,\n mediumorchid: 0xba55d3ff,\n mediumpurple: 0x9370dbff,\n mediumseagreen: 0x3cb371ff,\n mediumslateblue: 0x7b68eeff,\n mediumspringgreen: 0x00fa9aff,\n mediumturquoise: 0x48d1ccff,\n mediumvioletred: 0xc71585ff,\n midnightblue: 0x191970ff,\n mintcream: 0xf5fffaff,\n mistyrose: 0xffe4e1ff,\n moccasin: 0xffe4b5ff,\n navajowhite: 0xffdeadff,\n navy: 0x000080ff,\n oldlace: 0xfdf5e6ff,\n olive: 0x808000ff,\n olivedrab: 0x6b8e23ff,\n orange: 0xffa500ff,\n orangered: 0xff4500ff,\n orchid: 0xda70d6ff,\n palegoldenrod: 0xeee8aaff,\n palegreen: 0x98fb98ff,\n paleturquoise: 0xafeeeeff,\n palevioletred: 0xdb7093ff,\n papayawhip: 0xffefd5ff,\n peachpuff: 0xffdab9ff,\n peru: 0xcd853fff,\n pink: 0xffc0cbff,\n plum: 0xdda0ddff,\n powderblue: 0xb0e0e6ff,\n purple: 0x800080ff,\n rebeccapurple: 0x663399ff,\n red: 0xff0000ff,\n rosybrown: 0xbc8f8fff,\n royalblue: 0x4169e1ff,\n saddlebrown: 0x8b4513ff,\n salmon: 0xfa8072ff,\n sandybrown: 0xf4a460ff,\n seagreen: 0x2e8b57ff,\n seashell: 0xfff5eeff,\n sienna: 0xa0522dff,\n silver: 0xc0c0c0ff,\n skyblue: 0x87ceebff,\n slateblue: 0x6a5acdff,\n slategray: 0x708090ff,\n slategrey: 0x708090ff,\n snow: 0xfffafaff,\n springgreen: 0x00ff7fff,\n steelblue: 0x4682b4ff,\n tan: 0xd2b48cff,\n teal: 0x008080ff,\n thistle: 0xd8bfd8ff,\n tomato: 0xff6347ff,\n turquoise: 0x40e0d0ff,\n violet: 0xee82eeff,\n wheat: 0xf5deb3ff,\n white: 0xffffffff,\n whitesmoke: 0xf5f5f5ff,\n yellow: 0xffff00ff,\n yellowgreen: 0x9acd32ff,\n};\n\nmodule.exports = normalizeColor;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\n/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error\n * found when Flow v0.54 was deployed. To see the error delete this comment and\n * run Flow. */\nconst keyMirror = require('fbjs/lib/keyMirror');\n\n/**\n * ImageResizeMode - Enum for different image resizing modes, set via\n * `resizeMode` style property on `` components.\n */\nconst ImageResizeMode = keyMirror({\n /**\n * contain - The image will be resized such that it will be completely\n * visible, contained within the frame of the View.\n */\n contain: null,\n /**\n * cover - The image will be resized such that the entire area of the view\n * is covered by the image, potentially clipping parts of the image.\n */\n cover: null,\n /**\n * stretch - The image will be stretched to fill the entire frame of the\n * view without clipping. This may change the aspect ratio of the image,\n * distorting it.\n */\n stretch: null,\n /**\n * center - The image will be scaled down such that it is completely visible,\n * if bigger than the area of the view.\n * The image will not be scaled up.\n */\n center: null,\n\n /**\n * repeat - The image will be repeated to cover the frame of the View. The\n * image will keep it's size and aspect ratio.\n */\n repeat: null,\n});\n\nmodule.exports = ImageResizeMode;\n","/**\n * Copyright (c) 2013-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 * @typechecks static-only\n * \n */\n'use strict';\n\nvar invariant = require(\"./invariant\");\n/**\n * Constructs an enumeration with keys equal to their value.\n *\n * For example:\n *\n * var COLORS = keyMirror({blue: null, red: null});\n * var myColor = COLORS.blue;\n * var isColorValid = !!COLORS[myColor];\n *\n * The last line could not be performed if the values of the generated enum were\n * not equal to their keys.\n *\n * Input: {key1: val1, key2: val2}\n * Output: {key1: key1, key2: key2}\n *\n * @param {object} obj\n * @return {object}\n */\n\n\nvar keyMirror = function keyMirror(obj) {\n var ret = {};\n var key;\n !(obj instanceof Object && !Array.isArray(obj)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'keyMirror(...): Argument must be an object.') : invariant(false) : void 0;\n\n for (key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n\n ret[key] = key;\n }\n\n return ret;\n};\n\nmodule.exports = keyMirror;","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict\n */\n\n'use strict';\n\nconst ReactPropTypes = require('prop-types');\n\n/**\n * React Native's layout system is based on Flexbox and is powered both\n * on iOS and Android by an open source project called `Yoga`:\n * https://github.com/facebook/yoga\n *\n * The implementation in Yoga is slightly different from what the\n * Flexbox spec defines - for example, we chose more sensible default\n * values. Since our layout docs are generated from the comments in this\n * file, please keep a brief comment describing each prop type.\n *\n * These properties are a subset of our styles that are consumed by the layout\n * algorithm and affect the positioning and sizing of views.\n */\nconst LayoutPropTypes = {\n /** `display` sets the display type of this component.\n *\n * It works similarly to `display` in CSS, but only support 'flex' and 'none'.\n * 'flex' is the default.\n */\n display: ReactPropTypes.oneOf(['none', 'flex']),\n\n /** `width` sets the width of this component.\n *\n * It works similarly to `width` in CSS, but in React Native you\n * must use points or percentages. Ems and other units are not supported.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/width for more details.\n */\n width: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** `height` sets the height of this component.\n *\n * It works similarly to `height` in CSS, but in React Native you\n * must use points or percentages. Ems and other units are not supported.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/height for more details.\n */\n height: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /**\n * When the direction is `ltr`, `start` is equivalent to `left`.\n * When the direction is `rtl`, `start` is equivalent to `right`.\n *\n * This style takes precedence over the `left`, `right`, and `end` styles.\n */\n start: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /**\n * When the direction is `ltr`, `end` is equivalent to `right`.\n * When the direction is `rtl`, `end` is equivalent to `left`.\n *\n * This style takes precedence over the `left` and `right` styles.\n */\n end: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),\n\n /** `top` is the number of logical pixels to offset the top edge of\n * this component.\n *\n * It works similarly to `top` in CSS, but in React Native you\n * must use points or percentages. Ems and other units are not supported.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/top\n * for more details of how `top` affects layout.\n */\n top: ReactPropTypes.oneOfType([ReactPropTypes.number, ReactPropTypes.string]),\n\n /** `left` is the number of logical pixels to offset the left edge of\n * this component.\n *\n * It works similarly to `left` in CSS, but in React Native you\n * must use points or percentages. Ems and other units are not supported.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/left\n * for more details of how `left` affects layout.\n */\n left: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** `right` is the number of logical pixels to offset the right edge of\n * this component.\n *\n * It works similarly to `right` in CSS, but in React Native you\n * must use points or percentages. Ems and other units are not supported.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/right\n * for more details of how `right` affects layout.\n */\n right: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** `bottom` is the number of logical pixels to offset the bottom edge of\n * this component.\n *\n * It works similarly to `bottom` in CSS, but in React Native you\n * must use points or percentages. Ems and other units are not supported.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/bottom\n * for more details of how `bottom` affects layout.\n */\n bottom: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** `minWidth` is the minimum width for this component, in logical pixels.\n *\n * It works similarly to `min-width` in CSS, but in React Native you\n * must use points or percentages. Ems and other units are not supported.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/min-width\n * for more details.\n */\n minWidth: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** `maxWidth` is the maximum width for this component, in logical pixels.\n *\n * It works similarly to `max-width` in CSS, but in React Native you\n * must use points or percentages. Ems and other units are not supported.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/max-width\n * for more details.\n */\n maxWidth: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** `minHeight` is the minimum height for this component, in logical pixels.\n *\n * It works similarly to `min-height` in CSS, but in React Native you\n * must use points or percentages. Ems and other units are not supported.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/min-height\n * for more details.\n */\n minHeight: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** `maxHeight` is the maximum height for this component, in logical pixels.\n *\n * It works similarly to `max-height` in CSS, but in React Native you\n * must use points or percentages. Ems and other units are not supported.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/max-height\n * for more details.\n */\n maxHeight: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** Setting `margin` has the same effect as setting each of\n * `marginTop`, `marginLeft`, `marginBottom`, and `marginRight`.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/margin\n * for more details.\n */\n margin: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** Setting `marginVertical` has the same effect as setting both\n * `marginTop` and `marginBottom`.\n */\n marginVertical: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** Setting `marginHorizontal` has the same effect as setting\n * both `marginLeft` and `marginRight`.\n */\n marginHorizontal: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** `marginTop` works like `margin-top` in CSS.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/margin-top\n * for more details.\n */\n marginTop: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** `marginBottom` works like `margin-bottom` in CSS.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/margin-bottom\n * for more details.\n */\n marginBottom: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** `marginLeft` works like `margin-left` in CSS.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/margin-left\n * for more details.\n */\n marginLeft: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** `marginRight` works like `margin-right` in CSS.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/margin-right\n * for more details.\n */\n marginRight: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /**\n * When direction is `ltr`, `marginStart` is equivalent to `marginLeft`.\n * When direction is `rtl`, `marginStart` is equivalent to `marginRight`.\n */\n marginStart: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /**\n * When direction is `ltr`, `marginEnd` is equivalent to `marginRight`.\n * When direction is `rtl`, `marginEnd` is equivalent to `marginLeft`.\n */\n marginEnd: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** Setting `padding` has the same effect as setting each of\n * `paddingTop`, `paddingBottom`, `paddingLeft`, and `paddingRight`.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/padding\n * for more details.\n */\n padding: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** Setting `paddingVertical` is like setting both of\n * `paddingTop` and `paddingBottom`.\n */\n paddingVertical: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** Setting `paddingHorizontal` is like setting both of\n * `paddingLeft` and `paddingRight`.\n */\n paddingHorizontal: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** `paddingTop` works like `padding-top` in CSS.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/padding-top\n * for more details.\n */\n paddingTop: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** `paddingBottom` works like `padding-bottom` in CSS.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/padding-bottom\n * for more details.\n */\n paddingBottom: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** `paddingLeft` works like `padding-left` in CSS.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/padding-left\n * for more details.\n */\n paddingLeft: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** `paddingRight` works like `padding-right` in CSS.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/padding-right\n * for more details.\n */\n paddingRight: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /**\n * When direction is `ltr`, `paddingStart` is equivalent to `paddingLeft`.\n * When direction is `rtl`, `paddingStart` is equivalent to `paddingRight`.\n */\n paddingStart: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /**\n * When direction is `ltr`, `paddingEnd` is equivalent to `paddingRight`.\n * When direction is `rtl`, `paddingEnd` is equivalent to `paddingLeft`.\n */\n paddingEnd: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /** `borderWidth` works like `border-width` in CSS.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/border-width\n * for more details.\n */\n borderWidth: ReactPropTypes.number,\n\n /** `borderTopWidth` works like `border-top-width` in CSS.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/border-top-width\n * for more details.\n */\n borderTopWidth: ReactPropTypes.number,\n\n /**\n * When direction is `ltr`, `borderStartWidth` is equivalent to `borderLeftWidth`.\n * When direction is `rtl`, `borderStartWidth` is equivalent to `borderRightWidth`.\n */\n borderStartWidth: ReactPropTypes.number,\n\n /**\n * When direction is `ltr`, `borderEndWidth` is equivalent to `borderRightWidth`.\n * When direction is `rtl`, `borderEndWidth` is equivalent to `borderLeftWidth`.\n */\n borderEndWidth: ReactPropTypes.number,\n\n /** `borderRightWidth` works like `border-right-width` in CSS.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/border-right-width\n * for more details.\n */\n borderRightWidth: ReactPropTypes.number,\n\n /** `borderBottomWidth` works like `border-bottom-width` in CSS.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom-width\n * for more details.\n */\n borderBottomWidth: ReactPropTypes.number,\n\n /** `borderLeftWidth` works like `border-left-width` in CSS.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/border-left-width\n * for more details.\n */\n borderLeftWidth: ReactPropTypes.number,\n\n /** `position` in React Native is similar to regular CSS, but\n * everything is set to `relative` by default, so `absolute`\n * positioning is always just relative to the parent.\n *\n * If you want to position a child using specific numbers of logical\n * pixels relative to its parent, set the child to have `absolute`\n * position.\n *\n * If you want to position a child relative to something\n * that is not its parent, just don't use styles for that. Use the\n * component tree.\n *\n * See https://github.com/facebook/yoga\n * for more details on how `position` differs between React Native\n * and CSS.\n */\n position: ReactPropTypes.oneOf(['absolute', 'relative']),\n\n /** `flexDirection` controls which directions children of a container go.\n * `row` goes left to right, `column` goes top to bottom, and you may\n * be able to guess what the other two do. It works like `flex-direction`\n * in CSS, except the default is `column`.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction\n * for more details.\n */\n flexDirection: ReactPropTypes.oneOf([\n 'row',\n 'row-reverse',\n 'column',\n 'column-reverse',\n ]),\n\n /** `flexWrap` controls whether children can wrap around after they\n * hit the end of a flex container.\n * It works like `flex-wrap` in CSS (default: nowrap).\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/flex-wrap\n * for more details.\n */\n flexWrap: ReactPropTypes.oneOf(['wrap', 'nowrap', 'wrap-reverse']),\n\n /** `justifyContent` aligns children in the main direction.\n * For example, if children are flowing vertically, `justifyContent`\n * controls how they align vertically.\n * It works like `justify-content` in CSS (default: flex-start).\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content\n * for more details.\n */\n justifyContent: ReactPropTypes.oneOf([\n 'flex-start',\n 'flex-end',\n 'center',\n 'space-between',\n 'space-around',\n 'space-evenly',\n ]),\n\n /** `alignItems` aligns children in the cross direction.\n * For example, if children are flowing vertically, `alignItems`\n * controls how they align horizontally.\n * It works like `align-items` in CSS (default: stretch).\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/align-items\n * for more details.\n */\n alignItems: ReactPropTypes.oneOf([\n 'flex-start',\n 'flex-end',\n 'center',\n 'stretch',\n 'baseline',\n ]),\n\n /** `alignSelf` controls how a child aligns in the cross direction,\n * overriding the `alignItems` of the parent. It works like `align-self`\n * in CSS (default: auto).\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/align-self\n * for more details.\n */\n alignSelf: ReactPropTypes.oneOf([\n 'auto',\n 'flex-start',\n 'flex-end',\n 'center',\n 'stretch',\n 'baseline',\n ]),\n\n /** `alignContent` controls how rows align in the cross direction,\n * overriding the `alignContent` of the parent.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/align-content\n * for more details.\n */\n alignContent: ReactPropTypes.oneOf([\n 'flex-start',\n 'flex-end',\n 'center',\n 'stretch',\n 'space-between',\n 'space-around',\n ]),\n\n /** `overflow` controls how children are measured and displayed.\n * `overflow: hidden` causes views to be clipped while `overflow: scroll`\n * causes views to be measured independently of their parents main axis.\n * It works like `overflow` in CSS (default: visible).\n * See https://developer.mozilla.org/en/docs/Web/CSS/overflow\n * for more details.\n * `overflow: visible` only works on iOS. On Android, all views will clip\n * their children.\n */\n overflow: ReactPropTypes.oneOf(['visible', 'hidden', 'scroll']),\n\n /** In React Native `flex` does not work the same way that it does in CSS.\n * `flex` is a number rather than a string, and it works\n * according to the `Yoga` library\n * at https://github.com/facebook/yoga\n *\n * When `flex` is a positive number, it makes the component flexible\n * and it will be sized proportional to its flex value. So a\n * component with `flex` set to 2 will take twice the space as a\n * component with `flex` set to 1.\n *\n * When `flex` is 0, the component is sized according to `width`\n * and `height` and it is inflexible.\n *\n * When `flex` is -1, the component is normally sized according\n * `width` and `height`. However, if there's not enough space,\n * the component will shrink to its `minWidth` and `minHeight`.\n *\n * flexGrow, flexShrink, and flexBasis work the same as in CSS.\n */\n flex: ReactPropTypes.number,\n flexGrow: ReactPropTypes.number,\n flexShrink: ReactPropTypes.number,\n flexBasis: ReactPropTypes.oneOfType([\n ReactPropTypes.number,\n ReactPropTypes.string,\n ]),\n\n /**\n * Aspect ratio control the size of the undefined dimension of a node. Aspect ratio is a\n * non-standard property only available in react native and not CSS.\n *\n * - On a node with a set width/height aspect ratio control the size of the unset dimension\n * - On a node with a set flex basis aspect ratio controls the size of the node in the cross axis\n * if unset\n * - On a node with a measure function aspect ratio works as though the measure function measures\n * the flex basis\n * - On a node with flex grow/shrink aspect ratio controls the size of the node in the cross axis\n * if unset\n * - Aspect ratio takes min/max dimensions into account\n */\n aspectRatio: ReactPropTypes.number,\n\n /** `zIndex` controls which components display on top of others.\n * Normally, you don't use `zIndex`. Components render according to\n * their order in the document tree, so later components draw over\n * earlier ones. `zIndex` may be useful if you have animations or custom\n * modal interfaces where you don't want this behavior.\n *\n * It works like the CSS `z-index` property - components with a larger\n * `zIndex` will render on top. Think of the z-direction like it's\n * pointing from the phone into your eyeball.\n * See https://developer.mozilla.org/en-US/docs/Web/CSS/z-index for\n * more details.\n */\n zIndex: ReactPropTypes.number,\n\n /** `direction` specifies the directional flow of the user interface.\n * The default is `inherit`, except for root node which will have\n * value based on the current locale.\n * See https://facebook.github.io/yoga/docs/rtl/\n * for more details.\n * @platform ios\n */\n direction: ReactPropTypes.oneOf(['inherit', 'ltr', 'rtl']),\n};\n\nmodule.exports = LayoutPropTypes;\n","/**\n * Copyright (c) 2013-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\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-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\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-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\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst ColorPropType = require('ColorPropType');\nconst ReactPropTypes = require('prop-types');\n\n/**\n * These props can be used to dynamically generate shadows on views, images, text, etc.\n *\n * Because they are dynamically generated, they may cause performance regressions. Static\n * shadow image asset may be a better way to go for optimal performance.\n *\n * These properties are iOS only - for similar functionality on Android, use the [`elevation`\n * property](docs/viewstyleproptypes.html#elevation).\n */\nconst ShadowPropTypesIOS = {\n /**\n * Sets the drop shadow color\n * @platform ios\n */\n shadowColor: ColorPropType,\n /**\n * Sets the drop shadow offset\n * @platform ios\n */\n shadowOffset: ReactPropTypes.shape({\n width: ReactPropTypes.number,\n height: ReactPropTypes.number,\n }),\n /**\n * Sets the drop shadow opacity (multiplied by the color's alpha component)\n * @platform ios\n */\n shadowOpacity: ReactPropTypes.number,\n /**\n * Sets the drop shadow blur radius\n * @platform ios\n */\n shadowRadius: ReactPropTypes.number,\n};\n\nmodule.exports = ShadowPropTypesIOS;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst ReactPropTypes = require('prop-types');\n\nconst deprecatedPropType = require('deprecatedPropType');\n\nconst TransformMatrixPropType = function(\n props: Object,\n propName: string,\n componentName: string,\n): ?Error {\n if (props[propName]) {\n return new Error(\n 'The transformMatrix style property is deprecated. ' +\n 'Use `transform: [{ matrix: ... }]` instead.',\n );\n }\n};\n\nconst DecomposedMatrixPropType = function(\n props: Object,\n propName: string,\n componentName: string,\n): ?Error {\n if (props[propName]) {\n return new Error(\n 'The decomposedMatrix style property is deprecated. ' +\n 'Use `transform: [...]` instead.',\n );\n }\n};\n\nconst TransformPropTypes = {\n /**\n * `transform` accepts an array of transformation objects. Each object specifies\n * the property that will be transformed as the key, and the value to use in the\n * transformation. Objects should not be combined. Use a single key/value pair\n * per object.\n *\n * The rotate transformations require a string so that the transform may be\n * expressed in degrees (deg) or radians (rad). For example:\n *\n * `transform([{ rotateX: '45deg' }, { rotateZ: '0.785398rad' }])`\n *\n * The skew transformations require a string so that the transform may be\n * expressed in degrees (deg). For example:\n *\n * `transform([{ skewX: '45deg' }])`\n */\n transform: ReactPropTypes.arrayOf(\n ReactPropTypes.oneOfType([\n ReactPropTypes.shape({perspective: ReactPropTypes.number}),\n ReactPropTypes.shape({rotate: ReactPropTypes.string}),\n ReactPropTypes.shape({rotateX: ReactPropTypes.string}),\n ReactPropTypes.shape({rotateY: ReactPropTypes.string}),\n ReactPropTypes.shape({rotateZ: ReactPropTypes.string}),\n ReactPropTypes.shape({scale: ReactPropTypes.number}),\n ReactPropTypes.shape({scaleX: ReactPropTypes.number}),\n ReactPropTypes.shape({scaleY: ReactPropTypes.number}),\n ReactPropTypes.shape({translateX: ReactPropTypes.number}),\n ReactPropTypes.shape({translateY: ReactPropTypes.number}),\n ReactPropTypes.shape({skewX: ReactPropTypes.string}),\n ReactPropTypes.shape({skewY: ReactPropTypes.string}),\n ]),\n ),\n\n /**\n * Deprecated. Use the transform prop instead.\n */\n transformMatrix: TransformMatrixPropType,\n /**\n * Deprecated. Use the transform prop instead.\n */\n decomposedMatrix: DecomposedMatrixPropType,\n\n /* Deprecated transform props used on Android only */\n scaleX: deprecatedPropType(\n ReactPropTypes.number,\n 'Use the transform prop instead.',\n ),\n scaleY: deprecatedPropType(\n ReactPropTypes.number,\n 'Use the transform prop instead.',\n ),\n rotation: deprecatedPropType(\n ReactPropTypes.number,\n 'Use the transform prop instead.',\n ),\n translateX: deprecatedPropType(\n ReactPropTypes.number,\n 'Use the transform prop instead.',\n ),\n translateY: deprecatedPropType(\n ReactPropTypes.number,\n 'Use the transform prop instead.',\n ),\n};\n\nmodule.exports = TransformPropTypes;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst UIManager = require('UIManager');\n\n/**\n * Adds a deprecation warning when the prop is used.\n */\nfunction deprecatedPropType(\n propType: ReactPropsCheckType,\n explanation: string,\n): ReactPropsCheckType {\n return function validate(props, propName, componentName, ...rest) {\n // Don't warn for native components.\n if (!UIManager[componentName] && props[propName] !== undefined) {\n console.warn(\n `\\`${propName}\\` supplied to \\`${componentName}\\` has been deprecated. ${explanation}`,\n );\n }\n\n return propType(props, propName, componentName, ...rest);\n };\n}\n\nmodule.exports = deprecatedPropType;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst ColorPropType = require('ColorPropType');\nconst ReactPropTypes = require('prop-types');\nconst ViewStylePropTypes = require('ViewStylePropTypes');\n\nconst TextStylePropTypes = {\n ...ViewStylePropTypes,\n\n color: ColorPropType,\n fontFamily: ReactPropTypes.string,\n fontSize: ReactPropTypes.number,\n fontStyle: ReactPropTypes.oneOf(['normal', 'italic']),\n /**\n * Specifies font weight. The values 'normal' and 'bold' are supported for\n * most fonts. Not all fonts have a variant for each of the numeric values,\n * in that case the closest one is chosen.\n */\n fontWeight: ReactPropTypes.oneOf([\n 'normal' /*default*/,\n 'bold',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n ]),\n /**\n * @platform ios\n */\n fontVariant: ReactPropTypes.arrayOf(\n ReactPropTypes.oneOf([\n 'small-caps',\n 'oldstyle-nums',\n 'lining-nums',\n 'tabular-nums',\n 'proportional-nums',\n ]),\n ),\n textShadowOffset: ReactPropTypes.shape({\n width: ReactPropTypes.number,\n height: ReactPropTypes.number,\n }),\n textShadowRadius: ReactPropTypes.number,\n textShadowColor: ColorPropType,\n /**\n * @platform ios\n */\n letterSpacing: ReactPropTypes.number,\n lineHeight: ReactPropTypes.number,\n /**\n * Specifies text alignment. The value 'justify' is only supported on iOS and\n * fallbacks to `left` on Android.\n */\n textAlign: ReactPropTypes.oneOf([\n 'auto' /*default*/,\n 'left',\n 'right',\n 'center',\n 'justify',\n ]),\n /**\n * @platform android\n */\n textAlignVertical: ReactPropTypes.oneOf([\n 'auto' /*default*/,\n 'top',\n 'bottom',\n 'center',\n ]),\n /**\n * Set to `false` to remove extra font padding intended to make space for certain ascenders / descenders.\n * With some fonts, this padding can make text look slightly misaligned when centered vertically.\n * For best results also set `textAlignVertical` to `center`. Default is true.\n * @platform android\n */\n includeFontPadding: ReactPropTypes.bool,\n textDecorationLine: ReactPropTypes.oneOf([\n 'none' /*default*/,\n 'underline',\n 'line-through',\n 'underline line-through',\n ]),\n /**\n * @platform ios\n */\n textDecorationStyle: ReactPropTypes.oneOf([\n 'solid' /*default*/,\n 'double',\n 'dotted',\n 'dashed',\n ]),\n /**\n * @platform ios\n */\n textDecorationColor: ColorPropType,\n textTransform: ReactPropTypes.oneOf([\n 'none' /*default*/,\n 'capitalize',\n 'uppercase',\n 'lowercase',\n ]),\n /**\n * @platform ios\n */\n writingDirection: ReactPropTypes.oneOf(['auto' /*default*/, 'ltr', 'rtl']),\n};\n\nmodule.exports = TextStylePropTypes;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst ColorPropType = require('ColorPropType');\nconst LayoutPropTypes = require('LayoutPropTypes');\nconst ReactPropTypes = require('prop-types');\nconst ShadowPropTypesIOS = require('ShadowPropTypesIOS');\nconst TransformPropTypes = require('TransformPropTypes');\n\n/**\n * Warning: Some of these properties may not be supported in all releases.\n */\nconst ViewStylePropTypes = {\n ...LayoutPropTypes,\n ...ShadowPropTypesIOS,\n ...TransformPropTypes,\n backfaceVisibility: ReactPropTypes.oneOf(['visible', 'hidden']),\n backgroundColor: ColorPropType,\n borderColor: ColorPropType,\n borderTopColor: ColorPropType,\n borderRightColor: ColorPropType,\n borderBottomColor: ColorPropType,\n borderLeftColor: ColorPropType,\n borderStartColor: ColorPropType,\n borderEndColor: ColorPropType,\n borderRadius: ReactPropTypes.number,\n borderTopLeftRadius: ReactPropTypes.number,\n borderTopRightRadius: ReactPropTypes.number,\n borderTopStartRadius: ReactPropTypes.number,\n borderTopEndRadius: ReactPropTypes.number,\n borderBottomLeftRadius: ReactPropTypes.number,\n borderBottomRightRadius: ReactPropTypes.number,\n borderBottomStartRadius: ReactPropTypes.number,\n borderBottomEndRadius: ReactPropTypes.number,\n borderStyle: ReactPropTypes.oneOf(['solid', 'dotted', 'dashed']),\n borderWidth: ReactPropTypes.number,\n borderTopWidth: ReactPropTypes.number,\n borderRightWidth: ReactPropTypes.number,\n borderBottomWidth: ReactPropTypes.number,\n borderLeftWidth: ReactPropTypes.number,\n opacity: ReactPropTypes.number,\n /**\n * (Android-only) Sets the elevation of a view, using Android's underlying\n * [elevation API](https://developer.android.com/training/material/shadows-clipping.html#Elevation).\n * This adds a drop shadow to the item and affects z-order for overlapping views.\n * Only supported on Android 5.0+, has no effect on earlier versions.\n * @platform android\n */\n elevation: ReactPropTypes.number,\n};\n\nmodule.exports = ViewStylePropTypes;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst Platform = require('Platform');\n\nconst normalizeColor = require('normalizeColor');\n\n/* eslint no-bitwise: 0 */\nfunction processColor(color?: ?(string | number)): ?number {\n if (color === undefined || color === null) {\n return color;\n }\n\n let int32Color = normalizeColor(color);\n if (int32Color === null || int32Color === undefined) {\n return undefined;\n }\n\n // Converts 0xrrggbbaa into 0xaarrggbb\n int32Color = ((int32Color << 24) | (int32Color >>> 8)) >>> 0;\n\n if (Platform.OS === 'android') {\n // Android use 32 bit *signed* integer to represent the color\n // We utilize the fact that bitwise operations in JS also operates on\n // signed 32 bit integers, so that we can use those to convert from\n // *unsigned* to *signed* 32bit int that way.\n int32Color = int32Color | 0x0;\n }\n return int32Color;\n}\n\nmodule.exports = processColor;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst MatrixMath = require('MatrixMath');\nconst Platform = require('Platform');\n\nconst invariant = require('fbjs/lib/invariant');\nconst stringifySafe = require('stringifySafe');\n\n/**\n * Generate a transform matrix based on the provided transforms, and use that\n * within the style object instead.\n *\n * This allows us to provide an API that is similar to CSS, where transforms may\n * be applied in an arbitrary order, and yet have a universal, singular\n * interface to native code.\n */\nfunction processTransform(\n transform: Array,\n): Array | Array {\n if (__DEV__) {\n _validateTransforms(transform);\n }\n\n // Android & iOS implementations of transform property accept the list of\n // transform properties as opposed to a transform Matrix. This is necessary\n // to control transform property updates completely on the native thread.\n if (Platform.OS === 'android' || Platform.OS === 'ios') {\n return transform;\n }\n\n const result = MatrixMath.createIdentityMatrix();\n\n transform.forEach(transformation => {\n const key = Object.keys(transformation)[0];\n const value = transformation[key];\n\n switch (key) {\n case 'matrix':\n MatrixMath.multiplyInto(result, result, value);\n break;\n case 'perspective':\n _multiplyTransform(result, MatrixMath.reusePerspectiveCommand, [value]);\n break;\n case 'rotateX':\n _multiplyTransform(result, MatrixMath.reuseRotateXCommand, [\n _convertToRadians(value),\n ]);\n break;\n case 'rotateY':\n _multiplyTransform(result, MatrixMath.reuseRotateYCommand, [\n _convertToRadians(value),\n ]);\n break;\n case 'rotate':\n case 'rotateZ':\n _multiplyTransform(result, MatrixMath.reuseRotateZCommand, [\n _convertToRadians(value),\n ]);\n break;\n case 'scale':\n _multiplyTransform(result, MatrixMath.reuseScaleCommand, [value]);\n break;\n case 'scaleX':\n _multiplyTransform(result, MatrixMath.reuseScaleXCommand, [value]);\n break;\n case 'scaleY':\n _multiplyTransform(result, MatrixMath.reuseScaleYCommand, [value]);\n break;\n case 'translate':\n _multiplyTransform(result, MatrixMath.reuseTranslate3dCommand, [\n value[0],\n value[1],\n value[2] || 0,\n ]);\n break;\n case 'translateX':\n _multiplyTransform(result, MatrixMath.reuseTranslate2dCommand, [\n value,\n 0,\n ]);\n break;\n case 'translateY':\n _multiplyTransform(result, MatrixMath.reuseTranslate2dCommand, [\n 0,\n value,\n ]);\n break;\n case 'skewX':\n _multiplyTransform(result, MatrixMath.reuseSkewXCommand, [\n _convertToRadians(value),\n ]);\n break;\n case 'skewY':\n _multiplyTransform(result, MatrixMath.reuseSkewYCommand, [\n _convertToRadians(value),\n ]);\n break;\n default:\n throw new Error('Invalid transform name: ' + key);\n }\n });\n\n return result;\n}\n\n/**\n * Performs a destructive operation on a transform matrix.\n */\nfunction _multiplyTransform(\n result: Array,\n matrixMathFunction: Function,\n args: Array,\n): void {\n const matrixToApply = MatrixMath.createIdentityMatrix();\n const argsWithIdentity = [matrixToApply].concat(args);\n matrixMathFunction.apply(this, argsWithIdentity);\n MatrixMath.multiplyInto(result, result, matrixToApply);\n}\n\n/**\n * Parses a string like '0.5rad' or '60deg' into radians expressed in a float.\n * Note that validation on the string is done in `_validateTransform()`.\n */\nfunction _convertToRadians(value: string): number {\n const floatValue = parseFloat(value);\n return value.indexOf('rad') > -1 ? floatValue : (floatValue * Math.PI) / 180;\n}\n\nfunction _validateTransforms(transform: Array): void {\n transform.forEach(transformation => {\n const keys = Object.keys(transformation);\n invariant(\n keys.length === 1,\n 'You must specify exactly one property per transform object. Passed properties: %s',\n stringifySafe(transformation),\n );\n const key = keys[0];\n const value = transformation[key];\n _validateTransform(key, value, transformation);\n });\n}\n\nfunction _validateTransform(key, value, transformation) {\n invariant(\n !value.getValue,\n 'You passed an Animated.Value to a normal component. ' +\n 'You need to wrap that component in an Animated. For example, ' +\n 'replace by .',\n );\n\n const multivalueTransforms = ['matrix', 'translate'];\n if (multivalueTransforms.indexOf(key) !== -1) {\n invariant(\n Array.isArray(value),\n 'Transform with key of %s must have an array as the value: %s',\n key,\n stringifySafe(transformation),\n );\n }\n switch (key) {\n case 'matrix':\n invariant(\n value.length === 9 || value.length === 16,\n 'Matrix transform must have a length of 9 (2d) or 16 (3d). ' +\n 'Provided matrix has a length of %s: %s',\n value.length,\n stringifySafe(transformation),\n );\n break;\n case 'translate':\n invariant(\n value.length === 2 || value.length === 3,\n 'Transform with key translate must be an array of length 2 or 3, found %s: %s',\n value.length,\n stringifySafe(transformation),\n );\n break;\n case 'rotateX':\n case 'rotateY':\n case 'rotateZ':\n case 'rotate':\n case 'skewX':\n case 'skewY':\n invariant(\n typeof value === 'string',\n 'Transform with key of \"%s\" must be a string: %s',\n key,\n stringifySafe(transformation),\n );\n invariant(\n value.indexOf('deg') > -1 || value.indexOf('rad') > -1,\n 'Rotate transform must be expressed in degrees (deg) or radians ' +\n '(rad): %s',\n stringifySafe(transformation),\n );\n break;\n case 'perspective':\n invariant(\n typeof value === 'number',\n 'Transform with key of \"%s\" must be a number: %s',\n key,\n stringifySafe(transformation),\n );\n invariant(\n value !== 0,\n 'Transform with key of \"%s\" cannot be zero: %s',\n key,\n stringifySafe(transformation),\n );\n break;\n case 'translateX':\n case 'translateY':\n case 'scale':\n case 'scaleX':\n case 'scaleY':\n invariant(\n typeof value === 'number',\n 'Transform with key of \"%s\" must be a number: %s',\n key,\n stringifySafe(transformation),\n );\n break;\n default:\n invariant(\n false,\n 'Invalid transform %s: %s',\n key,\n stringifySafe(transformation),\n );\n }\n}\n\nmodule.exports = processTransform;\n","/**\n * Copyright (c) 2015-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 * @format\n * @noflow\n */\n\n/* eslint-disable space-infix-ops */\n'use strict';\n\nconst invariant = require('fbjs/lib/invariant');\n\n/**\n * Memory conservative (mutative) matrix math utilities. Uses \"command\"\n * matrices, which are reusable.\n */\nconst MatrixMath = {\n createIdentityMatrix: function() {\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n },\n\n createCopy: function(m) {\n return [\n m[0],\n m[1],\n m[2],\n m[3],\n m[4],\n m[5],\n m[6],\n m[7],\n m[8],\n m[9],\n m[10],\n m[11],\n m[12],\n m[13],\n m[14],\n m[15],\n ];\n },\n\n createOrthographic: function(left, right, bottom, top, near, far) {\n const a = 2 / (right - left);\n const b = 2 / (top - bottom);\n const c = -2 / (far - near);\n\n const tx = -(right + left) / (right - left);\n const ty = -(top + bottom) / (top - bottom);\n const tz = -(far + near) / (far - near);\n\n return [a, 0, 0, 0, 0, b, 0, 0, 0, 0, c, 0, tx, ty, tz, 1];\n },\n\n createFrustum: function(left, right, bottom, top, near, far) {\n const r_width = 1 / (right - left);\n const r_height = 1 / (top - bottom);\n const r_depth = 1 / (near - far);\n const x = 2 * (near * r_width);\n const y = 2 * (near * r_height);\n const A = (right + left) * r_width;\n const B = (top + bottom) * r_height;\n const C = (far + near) * r_depth;\n const D = 2 * (far * near * r_depth);\n return [x, 0, 0, 0, 0, y, 0, 0, A, B, C, -1, 0, 0, D, 0];\n },\n\n /**\n * This create a perspective projection towards negative z\n * Clipping the z range of [-near, -far]\n *\n * @param fovInRadians - field of view in randians\n */\n createPerspective: function(fovInRadians, aspect, near, far) {\n const h = 1 / Math.tan(fovInRadians / 2);\n const r_depth = 1 / (near - far);\n const C = (far + near) * r_depth;\n const D = 2 * (far * near * r_depth);\n return [h / aspect, 0, 0, 0, 0, h, 0, 0, 0, 0, C, -1, 0, 0, D, 0];\n },\n\n createTranslate2d: function(x, y) {\n const mat = MatrixMath.createIdentityMatrix();\n MatrixMath.reuseTranslate2dCommand(mat, x, y);\n return mat;\n },\n\n reuseTranslate2dCommand: function(matrixCommand, x, y) {\n matrixCommand[12] = x;\n matrixCommand[13] = y;\n },\n\n reuseTranslate3dCommand: function(matrixCommand, x, y, z) {\n matrixCommand[12] = x;\n matrixCommand[13] = y;\n matrixCommand[14] = z;\n },\n\n createScale: function(factor) {\n const mat = MatrixMath.createIdentityMatrix();\n MatrixMath.reuseScaleCommand(mat, factor);\n return mat;\n },\n\n reuseScaleCommand: function(matrixCommand, factor) {\n matrixCommand[0] = factor;\n matrixCommand[5] = factor;\n },\n\n reuseScale3dCommand: function(matrixCommand, x, y, z) {\n matrixCommand[0] = x;\n matrixCommand[5] = y;\n matrixCommand[10] = z;\n },\n\n reusePerspectiveCommand: function(matrixCommand, p) {\n matrixCommand[11] = -1 / p;\n },\n\n reuseScaleXCommand(matrixCommand, factor) {\n matrixCommand[0] = factor;\n },\n\n reuseScaleYCommand(matrixCommand, factor) {\n matrixCommand[5] = factor;\n },\n\n reuseScaleZCommand(matrixCommand, factor) {\n matrixCommand[10] = factor;\n },\n\n reuseRotateXCommand: function(matrixCommand, radians) {\n matrixCommand[5] = Math.cos(radians);\n matrixCommand[6] = Math.sin(radians);\n matrixCommand[9] = -Math.sin(radians);\n matrixCommand[10] = Math.cos(radians);\n },\n\n reuseRotateYCommand: function(matrixCommand, amount) {\n matrixCommand[0] = Math.cos(amount);\n matrixCommand[2] = -Math.sin(amount);\n matrixCommand[8] = Math.sin(amount);\n matrixCommand[10] = Math.cos(amount);\n },\n\n // http://www.w3.org/TR/css3-transforms/#recomposing-to-a-2d-matrix\n reuseRotateZCommand: function(matrixCommand, radians) {\n matrixCommand[0] = Math.cos(radians);\n matrixCommand[1] = Math.sin(radians);\n matrixCommand[4] = -Math.sin(radians);\n matrixCommand[5] = Math.cos(radians);\n },\n\n createRotateZ: function(radians) {\n const mat = MatrixMath.createIdentityMatrix();\n MatrixMath.reuseRotateZCommand(mat, radians);\n return mat;\n },\n\n reuseSkewXCommand: function(matrixCommand, radians) {\n matrixCommand[4] = Math.tan(radians);\n },\n\n reuseSkewYCommand: function(matrixCommand, radians) {\n matrixCommand[1] = Math.tan(radians);\n },\n\n multiplyInto: function(out, a, b) {\n const a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3],\n a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7],\n a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11],\n a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n\n let b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n },\n\n determinant(matrix: Array): number {\n const [\n m00,\n m01,\n m02,\n m03,\n m10,\n m11,\n m12,\n m13,\n m20,\n m21,\n m22,\n m23,\n m30,\n m31,\n m32,\n m33,\n ] = matrix;\n return (\n m03 * m12 * m21 * m30 -\n m02 * m13 * m21 * m30 -\n m03 * m11 * m22 * m30 +\n m01 * m13 * m22 * m30 +\n m02 * m11 * m23 * m30 -\n m01 * m12 * m23 * m30 -\n m03 * m12 * m20 * m31 +\n m02 * m13 * m20 * m31 +\n m03 * m10 * m22 * m31 -\n m00 * m13 * m22 * m31 -\n m02 * m10 * m23 * m31 +\n m00 * m12 * m23 * m31 +\n m03 * m11 * m20 * m32 -\n m01 * m13 * m20 * m32 -\n m03 * m10 * m21 * m32 +\n m00 * m13 * m21 * m32 +\n m01 * m10 * m23 * m32 -\n m00 * m11 * m23 * m32 -\n m02 * m11 * m20 * m33 +\n m01 * m12 * m20 * m33 +\n m02 * m10 * m21 * m33 -\n m00 * m12 * m21 * m33 -\n m01 * m10 * m22 * m33 +\n m00 * m11 * m22 * m33\n );\n },\n\n /**\n * Inverse of a matrix. Multiplying by the inverse is used in matrix math\n * instead of division.\n *\n * Formula from:\n * http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n */\n inverse(matrix: Array): Array {\n const det = MatrixMath.determinant(matrix);\n if (!det) {\n return matrix;\n }\n const [\n m00,\n m01,\n m02,\n m03,\n m10,\n m11,\n m12,\n m13,\n m20,\n m21,\n m22,\n m23,\n m30,\n m31,\n m32,\n m33,\n ] = matrix;\n return [\n (m12 * m23 * m31 -\n m13 * m22 * m31 +\n m13 * m21 * m32 -\n m11 * m23 * m32 -\n m12 * m21 * m33 +\n m11 * m22 * m33) /\n det,\n (m03 * m22 * m31 -\n m02 * m23 * m31 -\n m03 * m21 * m32 +\n m01 * m23 * m32 +\n m02 * m21 * m33 -\n m01 * m22 * m33) /\n det,\n (m02 * m13 * m31 -\n m03 * m12 * m31 +\n m03 * m11 * m32 -\n m01 * m13 * m32 -\n m02 * m11 * m33 +\n m01 * m12 * m33) /\n det,\n (m03 * m12 * m21 -\n m02 * m13 * m21 -\n m03 * m11 * m22 +\n m01 * m13 * m22 +\n m02 * m11 * m23 -\n m01 * m12 * m23) /\n det,\n (m13 * m22 * m30 -\n m12 * m23 * m30 -\n m13 * m20 * m32 +\n m10 * m23 * m32 +\n m12 * m20 * m33 -\n m10 * m22 * m33) /\n det,\n (m02 * m23 * m30 -\n m03 * m22 * m30 +\n m03 * m20 * m32 -\n m00 * m23 * m32 -\n m02 * m20 * m33 +\n m00 * m22 * m33) /\n det,\n (m03 * m12 * m30 -\n m02 * m13 * m30 -\n m03 * m10 * m32 +\n m00 * m13 * m32 +\n m02 * m10 * m33 -\n m00 * m12 * m33) /\n det,\n (m02 * m13 * m20 -\n m03 * m12 * m20 +\n m03 * m10 * m22 -\n m00 * m13 * m22 -\n m02 * m10 * m23 +\n m00 * m12 * m23) /\n det,\n (m11 * m23 * m30 -\n m13 * m21 * m30 +\n m13 * m20 * m31 -\n m10 * m23 * m31 -\n m11 * m20 * m33 +\n m10 * m21 * m33) /\n det,\n (m03 * m21 * m30 -\n m01 * m23 * m30 -\n m03 * m20 * m31 +\n m00 * m23 * m31 +\n m01 * m20 * m33 -\n m00 * m21 * m33) /\n det,\n (m01 * m13 * m30 -\n m03 * m11 * m30 +\n m03 * m10 * m31 -\n m00 * m13 * m31 -\n m01 * m10 * m33 +\n m00 * m11 * m33) /\n det,\n (m03 * m11 * m20 -\n m01 * m13 * m20 -\n m03 * m10 * m21 +\n m00 * m13 * m21 +\n m01 * m10 * m23 -\n m00 * m11 * m23) /\n det,\n (m12 * m21 * m30 -\n m11 * m22 * m30 -\n m12 * m20 * m31 +\n m10 * m22 * m31 +\n m11 * m20 * m32 -\n m10 * m21 * m32) /\n det,\n (m01 * m22 * m30 -\n m02 * m21 * m30 +\n m02 * m20 * m31 -\n m00 * m22 * m31 -\n m01 * m20 * m32 +\n m00 * m21 * m32) /\n det,\n (m02 * m11 * m30 -\n m01 * m12 * m30 -\n m02 * m10 * m31 +\n m00 * m12 * m31 +\n m01 * m10 * m32 -\n m00 * m11 * m32) /\n det,\n (m01 * m12 * m20 -\n m02 * m11 * m20 +\n m02 * m10 * m21 -\n m00 * m12 * m21 -\n m01 * m10 * m22 +\n m00 * m11 * m22) /\n det,\n ];\n },\n\n /**\n * Turns columns into rows and rows into columns.\n */\n transpose(m: Array): Array {\n return [\n m[0],\n m[4],\n m[8],\n m[12],\n m[1],\n m[5],\n m[9],\n m[13],\n m[2],\n m[6],\n m[10],\n m[14],\n m[3],\n m[7],\n m[11],\n m[15],\n ];\n },\n\n /**\n * Based on: http://tog.acm.org/resources/GraphicsGems/gemsii/unmatrix.c\n */\n multiplyVectorByMatrix(v: Array, m: Array): Array {\n const [vx, vy, vz, vw] = v;\n return [\n vx * m[0] + vy * m[4] + vz * m[8] + vw * m[12],\n vx * m[1] + vy * m[5] + vz * m[9] + vw * m[13],\n vx * m[2] + vy * m[6] + vz * m[10] + vw * m[14],\n vx * m[3] + vy * m[7] + vz * m[11] + vw * m[15],\n ];\n },\n\n /**\n * From: https://code.google.com/p/webgl-mjs/source/browse/mjs.js\n */\n v3Length(a: Array): number {\n return Math.sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]);\n },\n\n /**\n * Based on: https://code.google.com/p/webgl-mjs/source/browse/mjs.js\n */\n v3Normalize(vector: Array, v3Length: number): Array {\n const im = 1 / (v3Length || MatrixMath.v3Length(vector));\n return [vector[0] * im, vector[1] * im, vector[2] * im];\n },\n\n /**\n * The dot product of a and b, two 3-element vectors.\n * From: https://code.google.com/p/webgl-mjs/source/browse/mjs.js\n */\n v3Dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n },\n\n /**\n * From:\n * http://www.opensource.apple.com/source/WebCore/WebCore-514/platform/graphics/transforms/TransformationMatrix.cpp\n */\n v3Combine(\n a: Array,\n b: Array,\n aScale: number,\n bScale: number,\n ): Array {\n return [\n aScale * a[0] + bScale * b[0],\n aScale * a[1] + bScale * b[1],\n aScale * a[2] + bScale * b[2],\n ];\n },\n\n /**\n * From:\n * http://www.opensource.apple.com/source/WebCore/WebCore-514/platform/graphics/transforms/TransformationMatrix.cpp\n */\n v3Cross(a: Array, b: Array): Array {\n return [\n a[1] * b[2] - a[2] * b[1],\n a[2] * b[0] - a[0] * b[2],\n a[0] * b[1] - a[1] * b[0],\n ];\n },\n\n /**\n * Based on:\n * http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/\n * and:\n * http://quat.zachbennett.com/\n *\n * Note that this rounds degrees to the thousandth of a degree, due to\n * floating point errors in the creation of the quaternion.\n *\n * Also note that this expects the qw value to be last, not first.\n *\n * Also, when researching this, remember that:\n * yaw === heading === z-axis\n * pitch === elevation/attitude === y-axis\n * roll === bank === x-axis\n */\n quaternionToDegreesXYZ(q: Array, matrix, row): Array {\n const [qx, qy, qz, qw] = q;\n const qw2 = qw * qw;\n const qx2 = qx * qx;\n const qy2 = qy * qy;\n const qz2 = qz * qz;\n const test = qx * qy + qz * qw;\n const unit = qw2 + qx2 + qy2 + qz2;\n const conv = 180 / Math.PI;\n\n if (test > 0.49999 * unit) {\n return [0, 2 * Math.atan2(qx, qw) * conv, 90];\n }\n if (test < -0.49999 * unit) {\n return [0, -2 * Math.atan2(qx, qw) * conv, -90];\n }\n\n return [\n MatrixMath.roundTo3Places(\n Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx2 - 2 * qz2) * conv,\n ),\n MatrixMath.roundTo3Places(\n Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy2 - 2 * qz2) * conv,\n ),\n MatrixMath.roundTo3Places(Math.asin(2 * qx * qy + 2 * qz * qw) * conv),\n ];\n },\n\n /**\n * Based on:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round\n */\n roundTo3Places(n: number): number {\n const arr = n.toString().split('e');\n return Math.round(arr[0] + 'e' + (arr[1] ? +arr[1] - 3 : 3)) * 0.001;\n },\n\n /**\n * Decompose a matrix into separate transform values, for use on platforms\n * where applying a precomposed matrix is not possible, and transforms are\n * applied in an inflexible ordering (e.g. Android).\n *\n * Implementation based on\n * http://www.w3.org/TR/css3-transforms/#decomposing-a-2d-matrix\n * http://www.w3.org/TR/css3-transforms/#decomposing-a-3d-matrix\n * which was based on\n * http://tog.acm.org/resources/GraphicsGems/gemsii/unmatrix.c\n */\n decomposeMatrix(transformMatrix: Array): ?Object {\n invariant(\n transformMatrix.length === 16,\n 'Matrix decomposition needs a list of 3d matrix values, received %s',\n transformMatrix,\n );\n\n // output values\n var perspective = [];\n const quaternion = [];\n const scale = [];\n const skew = [];\n const translation = [];\n\n // create normalized, 2d array matrix\n // and normalized 1d array perspectiveMatrix with redefined 4th column\n if (!transformMatrix[15]) {\n return;\n }\n const matrix = [];\n const perspectiveMatrix = [];\n for (var i = 0; i < 4; i++) {\n matrix.push([]);\n for (let j = 0; j < 4; j++) {\n const value = transformMatrix[i * 4 + j] / transformMatrix[15];\n matrix[i].push(value);\n perspectiveMatrix.push(j === 3 ? 0 : value);\n }\n }\n perspectiveMatrix[15] = 1;\n\n // test for singularity of upper 3x3 part of the perspective matrix\n if (!MatrixMath.determinant(perspectiveMatrix)) {\n return;\n }\n\n // isolate perspective\n if (matrix[0][3] !== 0 || matrix[1][3] !== 0 || matrix[2][3] !== 0) {\n // rightHandSide is the right hand side of the equation.\n // rightHandSide is a vector, or point in 3d space relative to the origin.\n const rightHandSide = [\n matrix[0][3],\n matrix[1][3],\n matrix[2][3],\n matrix[3][3],\n ];\n\n // Solve the equation by inverting perspectiveMatrix and multiplying\n // rightHandSide by the inverse.\n const inversePerspectiveMatrix = MatrixMath.inverse(perspectiveMatrix);\n const transposedInversePerspectiveMatrix = MatrixMath.transpose(\n inversePerspectiveMatrix,\n );\n var perspective = MatrixMath.multiplyVectorByMatrix(\n rightHandSide,\n transposedInversePerspectiveMatrix,\n );\n } else {\n // no perspective\n perspective[0] = perspective[1] = perspective[2] = 0;\n perspective[3] = 1;\n }\n\n // translation is simple\n for (var i = 0; i < 3; i++) {\n translation[i] = matrix[3][i];\n }\n\n // Now get scale and shear.\n // 'row' is a 3 element array of 3 component vectors\n const row = [];\n for (i = 0; i < 3; i++) {\n row[i] = [matrix[i][0], matrix[i][1], matrix[i][2]];\n }\n\n // Compute X scale factor and normalize first row.\n scale[0] = MatrixMath.v3Length(row[0]);\n row[0] = MatrixMath.v3Normalize(row[0], scale[0]);\n\n // Compute XY shear factor and make 2nd row orthogonal to 1st.\n skew[0] = MatrixMath.v3Dot(row[0], row[1]);\n row[1] = MatrixMath.v3Combine(row[1], row[0], 1.0, -skew[0]);\n\n // Compute XY shear factor and make 2nd row orthogonal to 1st.\n skew[0] = MatrixMath.v3Dot(row[0], row[1]);\n row[1] = MatrixMath.v3Combine(row[1], row[0], 1.0, -skew[0]);\n\n // Now, compute Y scale and normalize 2nd row.\n scale[1] = MatrixMath.v3Length(row[1]);\n row[1] = MatrixMath.v3Normalize(row[1], scale[1]);\n skew[0] /= scale[1];\n\n // Compute XZ and YZ shears, orthogonalize 3rd row\n skew[1] = MatrixMath.v3Dot(row[0], row[2]);\n row[2] = MatrixMath.v3Combine(row[2], row[0], 1.0, -skew[1]);\n skew[2] = MatrixMath.v3Dot(row[1], row[2]);\n row[2] = MatrixMath.v3Combine(row[2], row[1], 1.0, -skew[2]);\n\n // Next, get Z scale and normalize 3rd row.\n scale[2] = MatrixMath.v3Length(row[2]);\n row[2] = MatrixMath.v3Normalize(row[2], scale[2]);\n skew[1] /= scale[2];\n skew[2] /= scale[2];\n\n // At this point, the matrix (in rows) is orthonormal.\n // Check for a coordinate system flip. If the determinant\n // is -1, then negate the matrix and the scaling factors.\n const pdum3 = MatrixMath.v3Cross(row[1], row[2]);\n if (MatrixMath.v3Dot(row[0], pdum3) < 0) {\n for (i = 0; i < 3; i++) {\n scale[i] *= -1;\n row[i][0] *= -1;\n row[i][1] *= -1;\n row[i][2] *= -1;\n }\n }\n\n // Now, get the rotations out\n quaternion[0] =\n 0.5 * Math.sqrt(Math.max(1 + row[0][0] - row[1][1] - row[2][2], 0));\n quaternion[1] =\n 0.5 * Math.sqrt(Math.max(1 - row[0][0] + row[1][1] - row[2][2], 0));\n quaternion[2] =\n 0.5 * Math.sqrt(Math.max(1 - row[0][0] - row[1][1] + row[2][2], 0));\n quaternion[3] =\n 0.5 * Math.sqrt(Math.max(1 + row[0][0] + row[1][1] + row[2][2], 0));\n\n if (row[2][1] > row[1][2]) {\n quaternion[0] = -quaternion[0];\n }\n if (row[0][2] > row[2][0]) {\n quaternion[1] = -quaternion[1];\n }\n if (row[1][0] > row[0][1]) {\n quaternion[2] = -quaternion[2];\n }\n\n // correct for occasional, weird Euler synonyms for 2d rotation\n let rotationDegrees;\n if (\n quaternion[0] < 0.001 &&\n quaternion[0] >= 0 &&\n quaternion[1] < 0.001 &&\n quaternion[1] >= 0\n ) {\n // this is a 2d rotation on the z-axis\n rotationDegrees = [\n 0,\n 0,\n MatrixMath.roundTo3Places(\n (Math.atan2(row[0][1], row[0][0]) * 180) / Math.PI,\n ),\n ];\n } else {\n rotationDegrees = MatrixMath.quaternionToDegreesXYZ(\n quaternion,\n matrix,\n row,\n );\n }\n\n // expose both base data and convenience names\n return {\n rotationDegrees,\n perspective,\n quaternion,\n scale,\n skew,\n translation,\n\n rotate: rotationDegrees[2],\n rotateX: rotationDegrees[0],\n rotateY: rotationDegrees[1],\n scaleX: scale[0],\n scaleY: scale[1],\n translateX: translation[0],\n translateY: translation[1],\n };\n },\n};\n\nmodule.exports = MatrixMath;\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\nconst dummySize = {width: undefined, height: undefined};\n\nconst sizesDiffer = function(one, two) {\n one = one || dummySize;\n two = two || dummySize;\n return one !== two && (one.width !== two.width || one.height !== two.height);\n};\n\nmodule.exports = sizesDiffer;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst ImageStylePropTypes = require('ImageStylePropTypes');\nconst TextStylePropTypes = require('TextStylePropTypes');\nconst ViewStylePropTypes = require('ViewStylePropTypes');\n\nconst invariant = require('fbjs/lib/invariant');\n\n// Hardcoded because this is a legit case but we don't want to load it from\n// a private API. We might likely want to unify style sheet creation with how it\n// is done in the DOM so this might move into React. I know what I'm doing so\n// plz don't fire me.\nconst ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nclass StyleSheetValidation {\n static validateStyleProp(prop: string, style: Object, caller: string) {\n if (!__DEV__) {\n return;\n }\n if (allStylePropTypes[prop] === undefined) {\n const message1 = '\"' + prop + '\" is not a valid style property.';\n const message2 =\n '\\nValid style props: ' +\n JSON.stringify(Object.keys(allStylePropTypes).sort(), null, ' ');\n styleError(message1, style, caller, message2);\n }\n const error = allStylePropTypes[prop](\n style,\n prop,\n caller,\n 'prop',\n null,\n ReactPropTypesSecret,\n );\n if (error) {\n styleError(error.message, style, caller);\n }\n }\n\n static validateStyle(name: string, styles: Object) {\n if (!__DEV__) {\n return;\n }\n for (const prop in styles[name]) {\n StyleSheetValidation.validateStyleProp(\n prop,\n styles[name],\n 'StyleSheet ' + name,\n );\n }\n }\n\n static addValidStylePropTypes(stylePropTypes) {\n for (const key in stylePropTypes) {\n allStylePropTypes[key] = stylePropTypes[key];\n }\n }\n}\n\nconst styleError = function(message1, style, caller?, message2?) {\n invariant(\n false,\n message1 +\n '\\n' +\n (caller || '<>') +\n ': ' +\n JSON.stringify(style, null, ' ') +\n (message2 || ''),\n );\n};\n\nconst allStylePropTypes = {};\n\nStyleSheetValidation.addValidStylePropTypes(ImageStylePropTypes);\nStyleSheetValidation.addValidStylePropTypes(TextStylePropTypes);\nStyleSheetValidation.addValidStylePropTypes(ViewStylePropTypes);\n\nmodule.exports = StyleSheetValidation;\n","/**\n * Copyright (c) 2015-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 * @flow strict-local\n * @format\n */\n'use strict';\n\nimport type {\n DangerouslyImpreciseStyle,\n DangerouslyImpreciseStyleProp,\n} from 'StyleSheet';\n\nfunction flattenStyle(\n style: ?DangerouslyImpreciseStyleProp,\n): ?DangerouslyImpreciseStyle {\n if (style === null || typeof style !== 'object') {\n return undefined;\n }\n\n if (!Array.isArray(style)) {\n return style;\n }\n\n const result = {};\n for (let i = 0, styleLength = style.length; i < styleLength; ++i) {\n const computedStyle = flattenStyle(style[i]);\n if (computedStyle) {\n for (const key in computedStyle) {\n result[key] = computedStyle[key];\n }\n }\n }\n return result;\n}\n\nmodule.exports = flattenStyle;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst React = require('React');\nconst TextAncestor = require('TextAncestor');\nconst ViewNativeComponent = require('ViewNativeComponent');\n\nconst invariant = require('fbjs/lib/invariant');\n\nimport type {ViewProps} from 'ViewPropTypes';\n\nexport type Props = ViewProps;\n\n/**\n * The most fundamental component for building a UI, View is a container that\n * supports layout with flexbox, style, some touch handling, and accessibility\n * controls.\n *\n * @see http://facebook.github.io/react-native/docs/view.html\n */\n\nlet ViewToExport = ViewNativeComponent;\nif (__DEV__) {\n if (!global.__RCTProfileIsProfiling) {\n const View = (\n props: Props,\n forwardedRef: React.Ref,\n ) => {\n return (\n \n {hasTextAncestor => {\n invariant(\n !hasTextAncestor,\n 'Nesting of within is not currently supported.',\n );\n return ;\n }}\n \n );\n };\n // $FlowFixMe - TODO T29156721 `React.forwardRef` is not defined in Flow, yet.\n ViewToExport = React.forwardRef(View);\n ViewToExport.displayName = 'View';\n }\n}\n\nmodule.exports = ((ViewToExport: $FlowFixMe): typeof ViewNativeComponent);\n","/**\n * Copyright (c) 2015-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 * @flow strict\n * @format\n */\n\n'use strict';\n\nconst React = require('React');\n\n/**\n * Whether the current element is the descendant of a element.\n */\nmodule.exports = React.createContext(false);\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst ReactNative = require('ReactNative');\n\nconst requireNativeComponent = require('requireNativeComponent');\n\nimport type {ViewProps} from 'ViewPropTypes';\n\ntype ViewNativeComponentType = Class>;\n\nconst NativeViewComponent = requireNativeComponent('RCTView');\n\nmodule.exports = ((NativeViewComponent: any): ViewNativeComponentType);\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @format\n * @flow\n */\n\n'use strict';\n\nimport type {ReactNativeType} from 'ReactNativeTypes';\n\nlet ReactNative;\n\nif (__DEV__) {\n ReactNative = require('ReactNativeRenderer-dev');\n} else {\n ReactNative = require('ReactNativeRenderer-prod');\n}\n\nmodule.exports = (ReactNative: ReactNativeType);\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @noflow\n * @providesModule ReactNativeRenderer-prod\n * @preventMunge\n * @generated\n */\n\n\"use strict\";\nrequire(\"InitializeCore\");\nvar ReactNativeViewConfigRegistry = require(\"ReactNativeViewConfigRegistry\"),\n UIManager = require(\"UIManager\"),\n RCTEventEmitter = require(\"RCTEventEmitter\"),\n React = require(\"react\"),\n deepDiffer = require(\"deepDiffer\"),\n flattenStyle = require(\"flattenStyle\"),\n TextInputState = require(\"TextInputState\");\nvar scheduler = require(\"scheduler\"),\n ExceptionsManager = require(\"ExceptionsManager\");\nfunction invariant(condition, format, a, b, c, d, e, f) {\n if (!condition) {\n condition = void 0;\n if (void 0 === format)\n condition = Error(\n \"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\"\n );\n else {\n var args = [a, b, c, d, e, f],\n argIndex = 0;\n condition = Error(\n format.replace(/%s/g, function() {\n return args[argIndex++];\n })\n );\n condition.name = \"Invariant Violation\";\n }\n condition.framesToPop = 1;\n throw condition;\n }\n}\nfunction invokeGuardedCallbackImpl(name, func, context, a, b, c, d, e, f) {\n var funcArgs = Array.prototype.slice.call(arguments, 3);\n try {\n func.apply(context, funcArgs);\n } catch (error) {\n this.onError(error);\n }\n}\nvar hasError = !1,\n caughtError = null,\n hasRethrowError = !1,\n rethrowError = null,\n reporter = {\n onError: function(error) {\n hasError = !0;\n caughtError = error;\n }\n };\nfunction invokeGuardedCallback(name, func, context, a, b, c, d, e, f) {\n hasError = !1;\n caughtError = null;\n invokeGuardedCallbackImpl.apply(reporter, arguments);\n}\nfunction invokeGuardedCallbackAndCatchFirstError(\n name,\n func,\n context,\n a,\n b,\n c,\n d,\n e,\n f\n) {\n invokeGuardedCallback.apply(this, arguments);\n if (hasError) {\n if (hasError) {\n var error = caughtError;\n hasError = !1;\n caughtError = null;\n } else\n invariant(\n !1,\n \"clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue.\"\n ),\n (error = void 0);\n hasRethrowError || ((hasRethrowError = !0), (rethrowError = error));\n }\n}\nvar eventPluginOrder = null,\n namesToPlugins = {};\nfunction recomputePluginOrdering() {\n if (eventPluginOrder)\n for (var pluginName in namesToPlugins) {\n var pluginModule = namesToPlugins[pluginName],\n pluginIndex = eventPluginOrder.indexOf(pluginName);\n invariant(\n -1 < pluginIndex,\n \"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.\",\n pluginName\n );\n if (!plugins[pluginIndex]) {\n invariant(\n pluginModule.extractEvents,\n \"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.\",\n pluginName\n );\n plugins[pluginIndex] = pluginModule;\n pluginIndex = pluginModule.eventTypes;\n for (var eventName in pluginIndex) {\n var JSCompiler_inline_result = void 0;\n var dispatchConfig = pluginIndex[eventName],\n pluginModule$jscomp$0 = pluginModule,\n eventName$jscomp$0 = eventName;\n invariant(\n !eventNameDispatchConfigs.hasOwnProperty(eventName$jscomp$0),\n \"EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.\",\n eventName$jscomp$0\n );\n eventNameDispatchConfigs[eventName$jscomp$0] = dispatchConfig;\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n if (phasedRegistrationNames) {\n for (JSCompiler_inline_result in phasedRegistrationNames)\n phasedRegistrationNames.hasOwnProperty(\n JSCompiler_inline_result\n ) &&\n publishRegistrationName(\n phasedRegistrationNames[JSCompiler_inline_result],\n pluginModule$jscomp$0,\n eventName$jscomp$0\n );\n JSCompiler_inline_result = !0;\n } else\n dispatchConfig.registrationName\n ? (publishRegistrationName(\n dispatchConfig.registrationName,\n pluginModule$jscomp$0,\n eventName$jscomp$0\n ),\n (JSCompiler_inline_result = !0))\n : (JSCompiler_inline_result = !1);\n invariant(\n JSCompiler_inline_result,\n \"EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.\",\n eventName,\n pluginName\n );\n }\n }\n }\n}\nfunction publishRegistrationName(registrationName, pluginModule) {\n invariant(\n !registrationNameModules[registrationName],\n \"EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.\",\n registrationName\n );\n registrationNameModules[registrationName] = pluginModule;\n}\nvar plugins = [],\n eventNameDispatchConfigs = {},\n registrationNameModules = {},\n getFiberCurrentPropsFromNode = null,\n getInstanceFromNode = null,\n getNodeFromInstance = null;\nfunction executeDispatch(event, listener, inst) {\n var type = event.type || \"unknown-event\";\n event.currentTarget = getNodeFromInstance(inst);\n invokeGuardedCallbackAndCatchFirstError(type, listener, void 0, event);\n event.currentTarget = null;\n}\nfunction executeDirectDispatch(event) {\n var dispatchListener = event._dispatchListeners,\n dispatchInstance = event._dispatchInstances;\n invariant(\n !Array.isArray(dispatchListener),\n \"executeDirectDispatch(...): Invalid `event`.\"\n );\n event.currentTarget = dispatchListener\n ? getNodeFromInstance(dispatchInstance)\n : null;\n dispatchListener = dispatchListener ? dispatchListener(event) : null;\n event.currentTarget = null;\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n return dispatchListener;\n}\nfunction accumulateInto(current, next) {\n invariant(\n null != next,\n \"accumulateInto(...): Accumulated items must not be null or undefined.\"\n );\n if (null == current) return next;\n if (Array.isArray(current)) {\n if (Array.isArray(next)) return current.push.apply(current, next), current;\n current.push(next);\n return current;\n }\n return Array.isArray(next) ? [current].concat(next) : [current, next];\n}\nfunction forEachAccumulated(arr, cb, scope) {\n Array.isArray(arr) ? arr.forEach(cb, scope) : arr && cb.call(scope, arr);\n}\nvar eventQueue = null;\nfunction executeDispatchesAndReleaseTopLevel(e) {\n if (e) {\n var dispatchListeners = e._dispatchListeners,\n dispatchInstances = e._dispatchInstances;\n if (Array.isArray(dispatchListeners))\n for (\n var i = 0;\n i < dispatchListeners.length && !e.isPropagationStopped();\n i++\n )\n executeDispatch(e, dispatchListeners[i], dispatchInstances[i]);\n else\n dispatchListeners &&\n executeDispatch(e, dispatchListeners, dispatchInstances);\n e._dispatchListeners = null;\n e._dispatchInstances = null;\n e.isPersistent() || e.constructor.release(e);\n }\n}\nvar injection = {\n injectEventPluginOrder: function(injectedEventPluginOrder) {\n invariant(\n !eventPluginOrder,\n \"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.\"\n );\n eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n recomputePluginOrdering();\n },\n injectEventPluginsByName: function(injectedNamesToPlugins) {\n var isOrderingDirty = !1,\n pluginName;\n for (pluginName in injectedNamesToPlugins)\n if (injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n var pluginModule = injectedNamesToPlugins[pluginName];\n (namesToPlugins.hasOwnProperty(pluginName) &&\n namesToPlugins[pluginName] === pluginModule) ||\n (invariant(\n !namesToPlugins[pluginName],\n \"EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.\",\n pluginName\n ),\n (namesToPlugins[pluginName] = pluginModule),\n (isOrderingDirty = !0));\n }\n isOrderingDirty && recomputePluginOrdering();\n }\n};\nfunction getListener(inst, registrationName) {\n var listener = inst.stateNode;\n if (!listener) return null;\n var props = getFiberCurrentPropsFromNode(listener);\n if (!props) return null;\n listener = props[registrationName];\n a: switch (registrationName) {\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n (props = !props.disabled) ||\n ((inst = inst.type),\n (props = !(\n \"button\" === inst ||\n \"input\" === inst ||\n \"select\" === inst ||\n \"textarea\" === inst\n )));\n inst = !props;\n break a;\n default:\n inst = !1;\n }\n if (inst) return null;\n invariant(\n !listener || \"function\" === typeof listener,\n \"Expected `%s` listener to be a function, instead got a value of `%s` type.\",\n registrationName,\n typeof listener\n );\n return listener;\n}\nfunction getParent(inst) {\n do inst = inst.return;\n while (inst && 5 !== inst.tag);\n return inst ? inst : null;\n}\nfunction traverseTwoPhase(inst, fn, arg) {\n for (var path = []; inst; ) path.push(inst), (inst = getParent(inst));\n for (inst = path.length; 0 < inst--; ) fn(path[inst], \"captured\", arg);\n for (inst = 0; inst < path.length; inst++) fn(path[inst], \"bubbled\", arg);\n}\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n if (\n (phase = getListener(\n inst,\n event.dispatchConfig.phasedRegistrationNames[phase]\n ))\n )\n (event._dispatchListeners = accumulateInto(\n event._dispatchListeners,\n phase\n )),\n (event._dispatchInstances = accumulateInto(\n event._dispatchInstances,\n inst\n ));\n}\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n event &&\n event.dispatchConfig.phasedRegistrationNames &&\n traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n}\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n var targetInst = event._targetInst;\n targetInst = targetInst ? getParent(targetInst) : null;\n traverseTwoPhase(targetInst, accumulateDirectionalDispatches, event);\n }\n}\nfunction accumulateDirectDispatchesSingle(event) {\n if (event && event.dispatchConfig.registrationName) {\n var inst = event._targetInst;\n if (inst && event && event.dispatchConfig.registrationName) {\n var listener = getListener(inst, event.dispatchConfig.registrationName);\n listener &&\n ((event._dispatchListeners = accumulateInto(\n event._dispatchListeners,\n listener\n )),\n (event._dispatchInstances = accumulateInto(\n event._dispatchInstances,\n inst\n )));\n }\n }\n}\nfunction functionThatReturnsTrue() {\n return !0;\n}\nfunction functionThatReturnsFalse() {\n return !1;\n}\nfunction SyntheticEvent(\n dispatchConfig,\n targetInst,\n nativeEvent,\n nativeEventTarget\n) {\n this.dispatchConfig = dispatchConfig;\n this._targetInst = targetInst;\n this.nativeEvent = nativeEvent;\n dispatchConfig = this.constructor.Interface;\n for (var propName in dispatchConfig)\n dispatchConfig.hasOwnProperty(propName) &&\n ((targetInst = dispatchConfig[propName])\n ? (this[propName] = targetInst(nativeEvent))\n : \"target\" === propName\n ? (this.target = nativeEventTarget)\n : (this[propName] = nativeEvent[propName]));\n this.isDefaultPrevented = (null != nativeEvent.defaultPrevented\n ? nativeEvent.defaultPrevented\n : !1 === nativeEvent.returnValue)\n ? functionThatReturnsTrue\n : functionThatReturnsFalse;\n this.isPropagationStopped = functionThatReturnsFalse;\n return this;\n}\nObject.assign(SyntheticEvent.prototype, {\n preventDefault: function() {\n this.defaultPrevented = !0;\n var event = this.nativeEvent;\n event &&\n (event.preventDefault\n ? event.preventDefault()\n : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n (this.isDefaultPrevented = functionThatReturnsTrue));\n },\n stopPropagation: function() {\n var event = this.nativeEvent;\n event &&\n (event.stopPropagation\n ? event.stopPropagation()\n : \"unknown\" !== typeof event.cancelBubble && (event.cancelBubble = !0),\n (this.isPropagationStopped = functionThatReturnsTrue));\n },\n persist: function() {\n this.isPersistent = functionThatReturnsTrue;\n },\n isPersistent: functionThatReturnsFalse,\n destructor: function() {\n var Interface = this.constructor.Interface,\n propName;\n for (propName in Interface) this[propName] = null;\n this.nativeEvent = this._targetInst = this.dispatchConfig = null;\n this.isPropagationStopped = this.isDefaultPrevented = functionThatReturnsFalse;\n this._dispatchInstances = this._dispatchListeners = null;\n }\n});\nSyntheticEvent.Interface = {\n type: null,\n target: null,\n currentTarget: function() {\n return null;\n },\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function(event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\nSyntheticEvent.extend = function(Interface) {\n function E() {}\n function Class() {\n return Super.apply(this, arguments);\n }\n var Super = this;\n E.prototype = Super.prototype;\n var prototype = new E();\n Object.assign(prototype, Class.prototype);\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n Class.Interface = Object.assign({}, Super.Interface, Interface);\n Class.extend = Super.extend;\n addEventPoolingTo(Class);\n return Class;\n};\naddEventPoolingTo(SyntheticEvent);\nfunction getPooledEvent(dispatchConfig, targetInst, nativeEvent, nativeInst) {\n if (this.eventPool.length) {\n var instance = this.eventPool.pop();\n this.call(instance, dispatchConfig, targetInst, nativeEvent, nativeInst);\n return instance;\n }\n return new this(dispatchConfig, targetInst, nativeEvent, nativeInst);\n}\nfunction releasePooledEvent(event) {\n invariant(\n event instanceof this,\n \"Trying to release an event instance into a pool of a different type.\"\n );\n event.destructor();\n 10 > this.eventPool.length && this.eventPool.push(event);\n}\nfunction addEventPoolingTo(EventConstructor) {\n EventConstructor.eventPool = [];\n EventConstructor.getPooled = getPooledEvent;\n EventConstructor.release = releasePooledEvent;\n}\nvar ResponderSyntheticEvent = SyntheticEvent.extend({\n touchHistory: function() {\n return null;\n }\n});\nfunction isStartish(topLevelType) {\n return \"topTouchStart\" === topLevelType;\n}\nfunction isMoveish(topLevelType) {\n return \"topTouchMove\" === topLevelType;\n}\nvar startDependencies = [\"topTouchStart\"],\n moveDependencies = [\"topTouchMove\"],\n endDependencies = [\"topTouchCancel\", \"topTouchEnd\"],\n touchBank = [],\n touchHistory = {\n touchBank: touchBank,\n numberActiveTouches: 0,\n indexOfSingleActiveTouch: -1,\n mostRecentTimeStamp: 0\n };\nfunction timestampForTouch(touch) {\n return touch.timeStamp || touch.timestamp;\n}\nfunction getTouchIdentifier(_ref) {\n _ref = _ref.identifier;\n invariant(null != _ref, \"Touch object is missing identifier.\");\n return _ref;\n}\nfunction recordTouchStart(touch) {\n var identifier = getTouchIdentifier(touch),\n touchRecord = touchBank[identifier];\n touchRecord\n ? ((touchRecord.touchActive = !0),\n (touchRecord.startPageX = touch.pageX),\n (touchRecord.startPageY = touch.pageY),\n (touchRecord.startTimeStamp = timestampForTouch(touch)),\n (touchRecord.currentPageX = touch.pageX),\n (touchRecord.currentPageY = touch.pageY),\n (touchRecord.currentTimeStamp = timestampForTouch(touch)),\n (touchRecord.previousPageX = touch.pageX),\n (touchRecord.previousPageY = touch.pageY),\n (touchRecord.previousTimeStamp = timestampForTouch(touch)))\n : ((touchRecord = {\n touchActive: !0,\n startPageX: touch.pageX,\n startPageY: touch.pageY,\n startTimeStamp: timestampForTouch(touch),\n currentPageX: touch.pageX,\n currentPageY: touch.pageY,\n currentTimeStamp: timestampForTouch(touch),\n previousPageX: touch.pageX,\n previousPageY: touch.pageY,\n previousTimeStamp: timestampForTouch(touch)\n }),\n (touchBank[identifier] = touchRecord));\n touchHistory.mostRecentTimeStamp = timestampForTouch(touch);\n}\nfunction recordTouchMove(touch) {\n var touchRecord = touchBank[getTouchIdentifier(touch)];\n touchRecord\n ? ((touchRecord.touchActive = !0),\n (touchRecord.previousPageX = touchRecord.currentPageX),\n (touchRecord.previousPageY = touchRecord.currentPageY),\n (touchRecord.previousTimeStamp = touchRecord.currentTimeStamp),\n (touchRecord.currentPageX = touch.pageX),\n (touchRecord.currentPageY = touch.pageY),\n (touchRecord.currentTimeStamp = timestampForTouch(touch)),\n (touchHistory.mostRecentTimeStamp = timestampForTouch(touch)))\n : console.error(\n \"Cannot record touch move without a touch start.\\nTouch Move: %s\\n\",\n \"Touch Bank: %s\",\n printTouch(touch),\n printTouchBank()\n );\n}\nfunction recordTouchEnd(touch) {\n var touchRecord = touchBank[getTouchIdentifier(touch)];\n touchRecord\n ? ((touchRecord.touchActive = !1),\n (touchRecord.previousPageX = touchRecord.currentPageX),\n (touchRecord.previousPageY = touchRecord.currentPageY),\n (touchRecord.previousTimeStamp = touchRecord.currentTimeStamp),\n (touchRecord.currentPageX = touch.pageX),\n (touchRecord.currentPageY = touch.pageY),\n (touchRecord.currentTimeStamp = timestampForTouch(touch)),\n (touchHistory.mostRecentTimeStamp = timestampForTouch(touch)))\n : console.error(\n \"Cannot record touch end without a touch start.\\nTouch End: %s\\n\",\n \"Touch Bank: %s\",\n printTouch(touch),\n printTouchBank()\n );\n}\nfunction printTouch(touch) {\n return JSON.stringify({\n identifier: touch.identifier,\n pageX: touch.pageX,\n pageY: touch.pageY,\n timestamp: timestampForTouch(touch)\n });\n}\nfunction printTouchBank() {\n var printed = JSON.stringify(touchBank.slice(0, 20));\n 20 < touchBank.length &&\n (printed += \" (original size: \" + touchBank.length + \")\");\n return printed;\n}\nvar ResponderTouchHistoryStore = {\n recordTouchTrack: function(topLevelType, nativeEvent) {\n if (isMoveish(topLevelType))\n nativeEvent.changedTouches.forEach(recordTouchMove);\n else if (isStartish(topLevelType))\n nativeEvent.changedTouches.forEach(recordTouchStart),\n (touchHistory.numberActiveTouches = nativeEvent.touches.length),\n 1 === touchHistory.numberActiveTouches &&\n (touchHistory.indexOfSingleActiveTouch =\n nativeEvent.touches[0].identifier);\n else if (\n \"topTouchEnd\" === topLevelType ||\n \"topTouchCancel\" === topLevelType\n )\n if (\n (nativeEvent.changedTouches.forEach(recordTouchEnd),\n (touchHistory.numberActiveTouches = nativeEvent.touches.length),\n 1 === touchHistory.numberActiveTouches)\n )\n for (topLevelType = 0; topLevelType < touchBank.length; topLevelType++)\n if (\n ((nativeEvent = touchBank[topLevelType]),\n null != nativeEvent && nativeEvent.touchActive)\n ) {\n touchHistory.indexOfSingleActiveTouch = topLevelType;\n break;\n }\n },\n touchHistory: touchHistory\n};\nfunction accumulate(current, next) {\n invariant(\n null != next,\n \"accumulate(...): Accumulated items must be not be null or undefined.\"\n );\n return null == current\n ? next\n : Array.isArray(current)\n ? current.concat(next)\n : Array.isArray(next)\n ? [current].concat(next)\n : [current, next];\n}\nvar responderInst = null,\n trackedTouchCount = 0;\nfunction changeResponder(nextResponderInst, blockHostResponder) {\n var oldResponderInst = responderInst;\n responderInst = nextResponderInst;\n if (null !== ResponderEventPlugin.GlobalResponderHandler)\n ResponderEventPlugin.GlobalResponderHandler.onChange(\n oldResponderInst,\n nextResponderInst,\n blockHostResponder\n );\n}\nvar eventTypes$1 = {\n startShouldSetResponder: {\n phasedRegistrationNames: {\n bubbled: \"onStartShouldSetResponder\",\n captured: \"onStartShouldSetResponderCapture\"\n },\n dependencies: startDependencies\n },\n scrollShouldSetResponder: {\n phasedRegistrationNames: {\n bubbled: \"onScrollShouldSetResponder\",\n captured: \"onScrollShouldSetResponderCapture\"\n },\n dependencies: [\"topScroll\"]\n },\n selectionChangeShouldSetResponder: {\n phasedRegistrationNames: {\n bubbled: \"onSelectionChangeShouldSetResponder\",\n captured: \"onSelectionChangeShouldSetResponderCapture\"\n },\n dependencies: [\"topSelectionChange\"]\n },\n moveShouldSetResponder: {\n phasedRegistrationNames: {\n bubbled: \"onMoveShouldSetResponder\",\n captured: \"onMoveShouldSetResponderCapture\"\n },\n dependencies: moveDependencies\n },\n responderStart: {\n registrationName: \"onResponderStart\",\n dependencies: startDependencies\n },\n responderMove: {\n registrationName: \"onResponderMove\",\n dependencies: moveDependencies\n },\n responderEnd: {\n registrationName: \"onResponderEnd\",\n dependencies: endDependencies\n },\n responderRelease: {\n registrationName: \"onResponderRelease\",\n dependencies: endDependencies\n },\n responderTerminationRequest: {\n registrationName: \"onResponderTerminationRequest\",\n dependencies: []\n },\n responderGrant: { registrationName: \"onResponderGrant\", dependencies: [] },\n responderReject: {\n registrationName: \"onResponderReject\",\n dependencies: []\n },\n responderTerminate: {\n registrationName: \"onResponderTerminate\",\n dependencies: []\n }\n },\n ResponderEventPlugin = {\n _getResponder: function() {\n return responderInst;\n },\n eventTypes: eventTypes$1,\n extractEvents: function(\n topLevelType,\n targetInst,\n nativeEvent,\n nativeEventTarget\n ) {\n if (isStartish(topLevelType)) trackedTouchCount += 1;\n else if (\n \"topTouchEnd\" === topLevelType ||\n \"topTouchCancel\" === topLevelType\n )\n if (0 <= trackedTouchCount) --trackedTouchCount;\n else\n return (\n console.error(\n \"Ended a touch event which was not counted in `trackedTouchCount`.\"\n ),\n null\n );\n ResponderTouchHistoryStore.recordTouchTrack(topLevelType, nativeEvent);\n if (\n targetInst &&\n ((\"topScroll\" === topLevelType && !nativeEvent.responderIgnoreScroll) ||\n (0 < trackedTouchCount && \"topSelectionChange\" === topLevelType) ||\n isStartish(topLevelType) ||\n isMoveish(topLevelType))\n ) {\n var JSCompiler_temp = isStartish(topLevelType)\n ? eventTypes$1.startShouldSetResponder\n : isMoveish(topLevelType)\n ? eventTypes$1.moveShouldSetResponder\n : \"topSelectionChange\" === topLevelType\n ? eventTypes$1.selectionChangeShouldSetResponder\n : eventTypes$1.scrollShouldSetResponder;\n if (responderInst)\n b: {\n var JSCompiler_temp$jscomp$0 = responderInst;\n for (\n var depthA = 0, tempA = JSCompiler_temp$jscomp$0;\n tempA;\n tempA = getParent(tempA)\n )\n depthA++;\n tempA = 0;\n for (var tempB = targetInst; tempB; tempB = getParent(tempB))\n tempA++;\n for (; 0 < depthA - tempA; )\n (JSCompiler_temp$jscomp$0 = getParent(JSCompiler_temp$jscomp$0)),\n depthA--;\n for (; 0 < tempA - depthA; )\n (targetInst = getParent(targetInst)), tempA--;\n for (; depthA--; ) {\n if (\n JSCompiler_temp$jscomp$0 === targetInst ||\n JSCompiler_temp$jscomp$0 === targetInst.alternate\n )\n break b;\n JSCompiler_temp$jscomp$0 = getParent(JSCompiler_temp$jscomp$0);\n targetInst = getParent(targetInst);\n }\n JSCompiler_temp$jscomp$0 = null;\n }\n else JSCompiler_temp$jscomp$0 = targetInst;\n targetInst = JSCompiler_temp$jscomp$0 === responderInst;\n JSCompiler_temp$jscomp$0 = ResponderSyntheticEvent.getPooled(\n JSCompiler_temp,\n JSCompiler_temp$jscomp$0,\n nativeEvent,\n nativeEventTarget\n );\n JSCompiler_temp$jscomp$0.touchHistory =\n ResponderTouchHistoryStore.touchHistory;\n targetInst\n ? forEachAccumulated(\n JSCompiler_temp$jscomp$0,\n accumulateTwoPhaseDispatchesSingleSkipTarget\n )\n : forEachAccumulated(\n JSCompiler_temp$jscomp$0,\n accumulateTwoPhaseDispatchesSingle\n );\n b: {\n JSCompiler_temp = JSCompiler_temp$jscomp$0._dispatchListeners;\n targetInst = JSCompiler_temp$jscomp$0._dispatchInstances;\n if (Array.isArray(JSCompiler_temp))\n for (\n depthA = 0;\n depthA < JSCompiler_temp.length &&\n !JSCompiler_temp$jscomp$0.isPropagationStopped();\n depthA++\n ) {\n if (\n JSCompiler_temp[depthA](\n JSCompiler_temp$jscomp$0,\n targetInst[depthA]\n )\n ) {\n JSCompiler_temp = targetInst[depthA];\n break b;\n }\n }\n else if (\n JSCompiler_temp &&\n JSCompiler_temp(JSCompiler_temp$jscomp$0, targetInst)\n ) {\n JSCompiler_temp = targetInst;\n break b;\n }\n JSCompiler_temp = null;\n }\n JSCompiler_temp$jscomp$0._dispatchInstances = null;\n JSCompiler_temp$jscomp$0._dispatchListeners = null;\n JSCompiler_temp$jscomp$0.isPersistent() ||\n JSCompiler_temp$jscomp$0.constructor.release(\n JSCompiler_temp$jscomp$0\n );\n JSCompiler_temp && JSCompiler_temp !== responderInst\n ? ((JSCompiler_temp$jscomp$0 = void 0),\n (targetInst = ResponderSyntheticEvent.getPooled(\n eventTypes$1.responderGrant,\n JSCompiler_temp,\n nativeEvent,\n nativeEventTarget\n )),\n (targetInst.touchHistory = ResponderTouchHistoryStore.touchHistory),\n forEachAccumulated(targetInst, accumulateDirectDispatchesSingle),\n (depthA = !0 === executeDirectDispatch(targetInst)),\n responderInst\n ? ((tempA = ResponderSyntheticEvent.getPooled(\n eventTypes$1.responderTerminationRequest,\n responderInst,\n nativeEvent,\n nativeEventTarget\n )),\n (tempA.touchHistory = ResponderTouchHistoryStore.touchHistory),\n forEachAccumulated(tempA, accumulateDirectDispatchesSingle),\n (tempB =\n !tempA._dispatchListeners || executeDirectDispatch(tempA)),\n tempA.isPersistent() || tempA.constructor.release(tempA),\n tempB\n ? ((tempA = ResponderSyntheticEvent.getPooled(\n eventTypes$1.responderTerminate,\n responderInst,\n nativeEvent,\n nativeEventTarget\n )),\n (tempA.touchHistory =\n ResponderTouchHistoryStore.touchHistory),\n forEachAccumulated(tempA, accumulateDirectDispatchesSingle),\n (JSCompiler_temp$jscomp$0 = accumulate(\n JSCompiler_temp$jscomp$0,\n [targetInst, tempA]\n )),\n changeResponder(JSCompiler_temp, depthA))\n : ((JSCompiler_temp = ResponderSyntheticEvent.getPooled(\n eventTypes$1.responderReject,\n JSCompiler_temp,\n nativeEvent,\n nativeEventTarget\n )),\n (JSCompiler_temp.touchHistory =\n ResponderTouchHistoryStore.touchHistory),\n forEachAccumulated(\n JSCompiler_temp,\n accumulateDirectDispatchesSingle\n ),\n (JSCompiler_temp$jscomp$0 = accumulate(\n JSCompiler_temp$jscomp$0,\n JSCompiler_temp\n ))))\n : ((JSCompiler_temp$jscomp$0 = accumulate(\n JSCompiler_temp$jscomp$0,\n targetInst\n )),\n changeResponder(JSCompiler_temp, depthA)),\n (JSCompiler_temp = JSCompiler_temp$jscomp$0))\n : (JSCompiler_temp = null);\n } else JSCompiler_temp = null;\n JSCompiler_temp$jscomp$0 = responderInst && isStartish(topLevelType);\n targetInst = responderInst && isMoveish(topLevelType);\n depthA =\n responderInst &&\n (\"topTouchEnd\" === topLevelType || \"topTouchCancel\" === topLevelType);\n if (\n (JSCompiler_temp$jscomp$0 = JSCompiler_temp$jscomp$0\n ? eventTypes$1.responderStart\n : targetInst\n ? eventTypes$1.responderMove\n : depthA\n ? eventTypes$1.responderEnd\n : null)\n )\n (JSCompiler_temp$jscomp$0 = ResponderSyntheticEvent.getPooled(\n JSCompiler_temp$jscomp$0,\n responderInst,\n nativeEvent,\n nativeEventTarget\n )),\n (JSCompiler_temp$jscomp$0.touchHistory =\n ResponderTouchHistoryStore.touchHistory),\n forEachAccumulated(\n JSCompiler_temp$jscomp$0,\n accumulateDirectDispatchesSingle\n ),\n (JSCompiler_temp = accumulate(\n JSCompiler_temp,\n JSCompiler_temp$jscomp$0\n ));\n JSCompiler_temp$jscomp$0 =\n responderInst && \"topTouchCancel\" === topLevelType;\n if (\n (topLevelType =\n responderInst &&\n !JSCompiler_temp$jscomp$0 &&\n (\"topTouchEnd\" === topLevelType || \"topTouchCancel\" === topLevelType))\n )\n a: {\n if ((topLevelType = nativeEvent.touches) && 0 !== topLevelType.length)\n for (targetInst = 0; targetInst < topLevelType.length; targetInst++)\n if (\n ((depthA = topLevelType[targetInst].target),\n null !== depthA && void 0 !== depthA && 0 !== depthA)\n ) {\n tempA = getInstanceFromNode(depthA);\n b: {\n for (depthA = responderInst; tempA; ) {\n if (depthA === tempA || depthA === tempA.alternate) {\n depthA = !0;\n break b;\n }\n tempA = getParent(tempA);\n }\n depthA = !1;\n }\n if (depthA) {\n topLevelType = !1;\n break a;\n }\n }\n topLevelType = !0;\n }\n if (\n (topLevelType = JSCompiler_temp$jscomp$0\n ? eventTypes$1.responderTerminate\n : topLevelType\n ? eventTypes$1.responderRelease\n : null)\n )\n (nativeEvent = ResponderSyntheticEvent.getPooled(\n topLevelType,\n responderInst,\n nativeEvent,\n nativeEventTarget\n )),\n (nativeEvent.touchHistory = ResponderTouchHistoryStore.touchHistory),\n forEachAccumulated(nativeEvent, accumulateDirectDispatchesSingle),\n (JSCompiler_temp = accumulate(JSCompiler_temp, nativeEvent)),\n changeResponder(null);\n return JSCompiler_temp;\n },\n GlobalResponderHandler: null,\n injection: {\n injectGlobalResponderHandler: function(GlobalResponderHandler) {\n ResponderEventPlugin.GlobalResponderHandler = GlobalResponderHandler;\n }\n }\n },\n ReactNativeBridgeEventPlugin = {\n eventTypes: ReactNativeViewConfigRegistry.eventTypes,\n extractEvents: function(\n topLevelType,\n targetInst,\n nativeEvent,\n nativeEventTarget\n ) {\n if (null == targetInst) return null;\n var bubbleDispatchConfig =\n ReactNativeViewConfigRegistry.customBubblingEventTypes[topLevelType],\n directDispatchConfig =\n ReactNativeViewConfigRegistry.customDirectEventTypes[topLevelType];\n invariant(\n bubbleDispatchConfig || directDispatchConfig,\n 'Unsupported top level event type \"%s\" dispatched',\n topLevelType\n );\n topLevelType = SyntheticEvent.getPooled(\n bubbleDispatchConfig || directDispatchConfig,\n targetInst,\n nativeEvent,\n nativeEventTarget\n );\n if (bubbleDispatchConfig)\n forEachAccumulated(topLevelType, accumulateTwoPhaseDispatchesSingle);\n else if (directDispatchConfig)\n forEachAccumulated(topLevelType, accumulateDirectDispatchesSingle);\n else return null;\n return topLevelType;\n }\n };\ninjection.injectEventPluginOrder([\n \"ResponderEventPlugin\",\n \"ReactNativeBridgeEventPlugin\"\n]);\ninjection.injectEventPluginsByName({\n ResponderEventPlugin: ResponderEventPlugin,\n ReactNativeBridgeEventPlugin: ReactNativeBridgeEventPlugin\n});\nvar instanceCache = {},\n instanceProps = {};\nfunction getInstanceFromTag(tag) {\n return instanceCache[tag] || null;\n}\nvar restoreTarget = null,\n restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n if ((target = getInstanceFromNode(target))) {\n invariant(\n !1,\n \"setRestoreImplementation() needs to be called to handle a target for controlled events. This error is likely caused by a bug in React. Please file an issue.\"\n );\n var props = getFiberCurrentPropsFromNode(target.stateNode);\n null(target.stateNode, target.type, props);\n }\n}\nfunction _batchedUpdatesImpl(fn, bookkeeping) {\n return fn(bookkeeping);\n}\nfunction _flushInteractiveUpdatesImpl() {}\nvar isBatching = !1;\nfunction batchedUpdates(fn, bookkeeping) {\n if (isBatching) return fn(bookkeeping);\n isBatching = !0;\n try {\n return _batchedUpdatesImpl(fn, bookkeeping);\n } finally {\n if (((isBatching = !1), null !== restoreTarget || null !== restoreQueue))\n if (\n (_flushInteractiveUpdatesImpl(),\n restoreTarget &&\n ((bookkeeping = restoreTarget),\n (fn = restoreQueue),\n (restoreQueue = restoreTarget = null),\n restoreStateOfTarget(bookkeeping),\n fn))\n )\n for (bookkeeping = 0; bookkeeping < fn.length; bookkeeping++)\n restoreStateOfTarget(fn[bookkeeping]);\n }\n}\nvar EMPTY_NATIVE_EVENT = {};\nfunction _receiveRootNodeIDEvent(rootNodeID, topLevelType, nativeEventParam) {\n var nativeEvent = nativeEventParam || EMPTY_NATIVE_EVENT,\n inst = getInstanceFromTag(rootNodeID);\n batchedUpdates(function() {\n var events = nativeEvent.target;\n for (var events$jscomp$0 = null, i = 0; i < plugins.length; i++) {\n var possiblePlugin = plugins[i];\n possiblePlugin &&\n (possiblePlugin = possiblePlugin.extractEvents(\n topLevelType,\n inst,\n nativeEvent,\n events\n )) &&\n (events$jscomp$0 = accumulateInto(events$jscomp$0, possiblePlugin));\n }\n events = events$jscomp$0;\n null !== events && (eventQueue = accumulateInto(eventQueue, events));\n events = eventQueue;\n eventQueue = null;\n if (\n events &&\n (forEachAccumulated(events, executeDispatchesAndReleaseTopLevel),\n invariant(\n !eventQueue,\n \"processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.\"\n ),\n hasRethrowError)\n )\n throw ((events = rethrowError),\n (hasRethrowError = !1),\n (rethrowError = null),\n events);\n });\n}\nRCTEventEmitter.register({\n receiveEvent: function(rootNodeID, topLevelType, nativeEventParam) {\n _receiveRootNodeIDEvent(rootNodeID, topLevelType, nativeEventParam);\n },\n receiveTouches: function(eventTopLevelType, touches, changedIndices) {\n if (\n \"topTouchEnd\" === eventTopLevelType ||\n \"topTouchCancel\" === eventTopLevelType\n ) {\n var JSCompiler_temp = [];\n for (var i = 0; i < changedIndices.length; i++) {\n var index = changedIndices[i];\n JSCompiler_temp.push(touches[index]);\n touches[index] = null;\n }\n for (i = changedIndices = 0; i < touches.length; i++)\n (index = touches[i]),\n null !== index && (touches[changedIndices++] = index);\n touches.length = changedIndices;\n } else\n for (JSCompiler_temp = [], i = 0; i < changedIndices.length; i++)\n JSCompiler_temp.push(touches[changedIndices[i]]);\n for (\n changedIndices = 0;\n changedIndices < JSCompiler_temp.length;\n changedIndices++\n ) {\n i = JSCompiler_temp[changedIndices];\n i.changedTouches = JSCompiler_temp;\n i.touches = touches;\n index = null;\n var target = i.target;\n null === target || void 0 === target || 1 > target || (index = target);\n _receiveRootNodeIDEvent(index, eventTopLevelType, i);\n }\n }\n});\ngetFiberCurrentPropsFromNode = function(stateNode) {\n return instanceProps[stateNode._nativeTag] || null;\n};\ngetInstanceFromNode = getInstanceFromTag;\ngetNodeFromInstance = function(inst) {\n var tag = inst.stateNode._nativeTag;\n void 0 === tag && (tag = inst.stateNode.canonical._nativeTag);\n invariant(tag, \"All native instances should have a tag.\");\n return tag;\n};\nResponderEventPlugin.injection.injectGlobalResponderHandler({\n onChange: function(from, to, blockNativeResponder) {\n null !== to\n ? UIManager.setJSResponder(to.stateNode._nativeTag, blockNativeResponder)\n : UIManager.clearJSResponder();\n }\n});\nvar ReactSharedInternals =\n React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n hasSymbol = \"function\" === typeof Symbol && Symbol.for,\n REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for(\"react.element\") : 60103,\n REACT_PORTAL_TYPE = hasSymbol ? Symbol.for(\"react.portal\") : 60106,\n REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for(\"react.fragment\") : 60107,\n REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for(\"react.strict_mode\") : 60108,\n REACT_PROFILER_TYPE = hasSymbol ? Symbol.for(\"react.profiler\") : 60114,\n REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for(\"react.provider\") : 60109,\n REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for(\"react.context\") : 60110,\n REACT_CONCURRENT_MODE_TYPE = hasSymbol\n ? Symbol.for(\"react.concurrent_mode\")\n : 60111,\n REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for(\"react.forward_ref\") : 60112,\n REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for(\"react.suspense\") : 60113,\n REACT_MEMO_TYPE = hasSymbol ? Symbol.for(\"react.memo\") : 60115,\n REACT_LAZY_TYPE = hasSymbol ? Symbol.for(\"react.lazy\") : 60116,\n MAYBE_ITERATOR_SYMBOL = \"function\" === typeof Symbol && Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nfunction getComponentName(type) {\n if (null == type) return null;\n if (\"function\" === typeof type) return type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_CONCURRENT_MODE_TYPE:\n return \"ConcurrentMode\";\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n return \"Context.Consumer\";\n case REACT_PROVIDER_TYPE:\n return \"Context.Provider\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n innerType = innerType.displayName || innerType.name || \"\";\n return (\n type.displayName ||\n (\"\" !== innerType ? \"ForwardRef(\" + innerType + \")\" : \"ForwardRef\")\n );\n case REACT_MEMO_TYPE:\n return getComponentName(type.type);\n case REACT_LAZY_TYPE:\n if ((type = 1 === type._status ? type._result : null))\n return getComponentName(type);\n }\n return null;\n}\nfunction isFiberMountedImpl(fiber) {\n var node = fiber;\n if (fiber.alternate) for (; node.return; ) node = node.return;\n else {\n if (0 !== (node.effectTag & 2)) return 1;\n for (; node.return; )\n if (((node = node.return), 0 !== (node.effectTag & 2))) return 1;\n }\n return 3 === node.tag ? 2 : 3;\n}\nfunction assertIsMounted(fiber) {\n invariant(\n 2 === isFiberMountedImpl(fiber),\n \"Unable to find node on an unmounted component.\"\n );\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n var alternate = fiber.alternate;\n if (!alternate)\n return (\n (alternate = isFiberMountedImpl(fiber)),\n invariant(\n 3 !== alternate,\n \"Unable to find node on an unmounted component.\"\n ),\n 1 === alternate ? null : fiber\n );\n for (var a = fiber, b = alternate; ; ) {\n var parentA = a.return,\n parentB = parentA ? parentA.alternate : null;\n if (!parentA || !parentB) break;\n if (parentA.child === parentB.child) {\n for (var child = parentA.child; child; ) {\n if (child === a) return assertIsMounted(parentA), fiber;\n if (child === b) return assertIsMounted(parentA), alternate;\n child = child.sibling;\n }\n invariant(!1, \"Unable to find node on an unmounted component.\");\n }\n if (a.return !== b.return) (a = parentA), (b = parentB);\n else {\n child = !1;\n for (var _child = parentA.child; _child; ) {\n if (_child === a) {\n child = !0;\n a = parentA;\n b = parentB;\n break;\n }\n if (_child === b) {\n child = !0;\n b = parentA;\n a = parentB;\n break;\n }\n _child = _child.sibling;\n }\n if (!child) {\n for (_child = parentB.child; _child; ) {\n if (_child === a) {\n child = !0;\n a = parentB;\n b = parentA;\n break;\n }\n if (_child === b) {\n child = !0;\n b = parentB;\n a = parentA;\n break;\n }\n _child = _child.sibling;\n }\n invariant(\n child,\n \"Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.\"\n );\n }\n }\n invariant(\n a.alternate === b,\n \"Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.\"\n );\n }\n invariant(3 === a.tag, \"Unable to find node on an unmounted component.\");\n return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiber(parent) {\n parent = findCurrentFiberUsingSlowPath(parent);\n if (!parent) return null;\n for (var node = parent; ; ) {\n if (5 === node.tag || 6 === node.tag) return node;\n if (node.child) (node.child.return = node), (node = node.child);\n else {\n if (node === parent) break;\n for (; !node.sibling; ) {\n if (!node.return || node.return === parent) return null;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n }\n return null;\n}\nvar emptyObject = {},\n removedKeys = null,\n removedKeyCount = 0;\nfunction restoreDeletedValuesInNestedArray(\n updatePayload,\n node,\n validAttributes\n) {\n if (Array.isArray(node))\n for (var i = node.length; i-- && 0 < removedKeyCount; )\n restoreDeletedValuesInNestedArray(\n updatePayload,\n node[i],\n validAttributes\n );\n else if (node && 0 < removedKeyCount)\n for (i in removedKeys)\n if (removedKeys[i]) {\n var nextProp = node[i];\n if (void 0 !== nextProp) {\n var attributeConfig = validAttributes[i];\n if (attributeConfig) {\n \"function\" === typeof nextProp && (nextProp = !0);\n \"undefined\" === typeof nextProp && (nextProp = null);\n if (\"object\" !== typeof attributeConfig)\n updatePayload[i] = nextProp;\n else if (\n \"function\" === typeof attributeConfig.diff ||\n \"function\" === typeof attributeConfig.process\n )\n (nextProp =\n \"function\" === typeof attributeConfig.process\n ? attributeConfig.process(nextProp)\n : nextProp),\n (updatePayload[i] = nextProp);\n removedKeys[i] = !1;\n removedKeyCount--;\n }\n }\n }\n}\nfunction diffNestedProperty(\n updatePayload,\n prevProp,\n nextProp,\n validAttributes\n) {\n if (!updatePayload && prevProp === nextProp) return updatePayload;\n if (!prevProp || !nextProp)\n return nextProp\n ? addNestedProperty(updatePayload, nextProp, validAttributes)\n : prevProp\n ? clearNestedProperty(updatePayload, prevProp, validAttributes)\n : updatePayload;\n if (!Array.isArray(prevProp) && !Array.isArray(nextProp))\n return diffProperties(updatePayload, prevProp, nextProp, validAttributes);\n if (Array.isArray(prevProp) && Array.isArray(nextProp)) {\n var minLength =\n prevProp.length < nextProp.length ? prevProp.length : nextProp.length,\n i;\n for (i = 0; i < minLength; i++)\n updatePayload = diffNestedProperty(\n updatePayload,\n prevProp[i],\n nextProp[i],\n validAttributes\n );\n for (; i < prevProp.length; i++)\n updatePayload = clearNestedProperty(\n updatePayload,\n prevProp[i],\n validAttributes\n );\n for (; i < nextProp.length; i++)\n updatePayload = addNestedProperty(\n updatePayload,\n nextProp[i],\n validAttributes\n );\n return updatePayload;\n }\n return Array.isArray(prevProp)\n ? diffProperties(\n updatePayload,\n flattenStyle(prevProp),\n nextProp,\n validAttributes\n )\n : diffProperties(\n updatePayload,\n prevProp,\n flattenStyle(nextProp),\n validAttributes\n );\n}\nfunction addNestedProperty(updatePayload, nextProp, validAttributes) {\n if (!nextProp) return updatePayload;\n if (!Array.isArray(nextProp))\n return diffProperties(\n updatePayload,\n emptyObject,\n nextProp,\n validAttributes\n );\n for (var i = 0; i < nextProp.length; i++)\n updatePayload = addNestedProperty(\n updatePayload,\n nextProp[i],\n validAttributes\n );\n return updatePayload;\n}\nfunction clearNestedProperty(updatePayload, prevProp, validAttributes) {\n if (!prevProp) return updatePayload;\n if (!Array.isArray(prevProp))\n return diffProperties(\n updatePayload,\n prevProp,\n emptyObject,\n validAttributes\n );\n for (var i = 0; i < prevProp.length; i++)\n updatePayload = clearNestedProperty(\n updatePayload,\n prevProp[i],\n validAttributes\n );\n return updatePayload;\n}\nfunction diffProperties(updatePayload, prevProps, nextProps, validAttributes) {\n var attributeConfig, propKey;\n for (propKey in nextProps)\n if ((attributeConfig = validAttributes[propKey])) {\n var prevProp = prevProps[propKey];\n var nextProp = nextProps[propKey];\n \"function\" === typeof nextProp &&\n ((nextProp = !0), \"function\" === typeof prevProp && (prevProp = !0));\n \"undefined\" === typeof nextProp &&\n ((nextProp = null),\n \"undefined\" === typeof prevProp && (prevProp = null));\n removedKeys && (removedKeys[propKey] = !1);\n if (updatePayload && void 0 !== updatePayload[propKey])\n if (\"object\" !== typeof attributeConfig)\n updatePayload[propKey] = nextProp;\n else {\n if (\n \"function\" === typeof attributeConfig.diff ||\n \"function\" === typeof attributeConfig.process\n )\n (attributeConfig =\n \"function\" === typeof attributeConfig.process\n ? attributeConfig.process(nextProp)\n : nextProp),\n (updatePayload[propKey] = attributeConfig);\n }\n else if (prevProp !== nextProp)\n if (\"object\" !== typeof attributeConfig)\n (\"object\" !== typeof nextProp ||\n null === nextProp ||\n deepDiffer(prevProp, nextProp)) &&\n ((updatePayload || (updatePayload = {}))[propKey] = nextProp);\n else if (\n \"function\" === typeof attributeConfig.diff ||\n \"function\" === typeof attributeConfig.process\n ) {\n if (\n void 0 === prevProp ||\n (\"function\" === typeof attributeConfig.diff\n ? attributeConfig.diff(prevProp, nextProp)\n : \"object\" !== typeof nextProp ||\n null === nextProp ||\n deepDiffer(prevProp, nextProp))\n )\n (attributeConfig =\n \"function\" === typeof attributeConfig.process\n ? attributeConfig.process(nextProp)\n : nextProp),\n ((updatePayload || (updatePayload = {}))[\n propKey\n ] = attributeConfig);\n } else\n (removedKeys = null),\n (removedKeyCount = 0),\n (updatePayload = diffNestedProperty(\n updatePayload,\n prevProp,\n nextProp,\n attributeConfig\n )),\n 0 < removedKeyCount &&\n updatePayload &&\n (restoreDeletedValuesInNestedArray(\n updatePayload,\n nextProp,\n attributeConfig\n ),\n (removedKeys = null));\n }\n for (var _propKey in prevProps)\n void 0 === nextProps[_propKey] &&\n (!(attributeConfig = validAttributes[_propKey]) ||\n (updatePayload && void 0 !== updatePayload[_propKey]) ||\n ((prevProp = prevProps[_propKey]),\n void 0 !== prevProp &&\n (\"object\" !== typeof attributeConfig ||\n \"function\" === typeof attributeConfig.diff ||\n \"function\" === typeof attributeConfig.process\n ? (((updatePayload || (updatePayload = {}))[_propKey] = null),\n removedKeys || (removedKeys = {}),\n removedKeys[_propKey] ||\n ((removedKeys[_propKey] = !0), removedKeyCount++))\n : (updatePayload = clearNestedProperty(\n updatePayload,\n prevProp,\n attributeConfig\n )))));\n return updatePayload;\n}\nfunction mountSafeCallback_NOT_REALLY_SAFE(context, callback) {\n return function() {\n if (\n callback &&\n (\"boolean\" !== typeof context.__isMounted || context.__isMounted)\n )\n return callback.apply(context, arguments);\n };\n}\nvar ReactNativeFiberHostComponent = (function() {\n function ReactNativeFiberHostComponent(tag, viewConfig) {\n if (!(this instanceof ReactNativeFiberHostComponent))\n throw new TypeError(\"Cannot call a class as a function\");\n this._nativeTag = tag;\n this._children = [];\n this.viewConfig = viewConfig;\n }\n ReactNativeFiberHostComponent.prototype.blur = function() {\n TextInputState.blurTextInput(this._nativeTag);\n };\n ReactNativeFiberHostComponent.prototype.focus = function() {\n TextInputState.focusTextInput(this._nativeTag);\n };\n ReactNativeFiberHostComponent.prototype.measure = function(callback) {\n UIManager.measure(\n this._nativeTag,\n mountSafeCallback_NOT_REALLY_SAFE(this, callback)\n );\n };\n ReactNativeFiberHostComponent.prototype.measureInWindow = function(\n callback\n ) {\n UIManager.measureInWindow(\n this._nativeTag,\n mountSafeCallback_NOT_REALLY_SAFE(this, callback)\n );\n };\n ReactNativeFiberHostComponent.prototype.measureLayout = function(\n relativeToNativeNode,\n onSuccess,\n onFail\n ) {\n UIManager.measureLayout(\n this._nativeTag,\n relativeToNativeNode,\n mountSafeCallback_NOT_REALLY_SAFE(this, onFail),\n mountSafeCallback_NOT_REALLY_SAFE(this, onSuccess)\n );\n };\n ReactNativeFiberHostComponent.prototype.setNativeProps = function(\n nativeProps\n ) {\n nativeProps = diffProperties(\n null,\n emptyObject,\n nativeProps,\n this.viewConfig.validAttributes\n );\n null != nativeProps &&\n UIManager.updateView(\n this._nativeTag,\n this.viewConfig.uiViewClassName,\n nativeProps\n );\n };\n return ReactNativeFiberHostComponent;\n })(),\n now$1 =\n \"object\" === typeof performance && \"function\" === typeof performance.now\n ? function() {\n return performance.now();\n }\n : function() {\n return Date.now();\n },\n scheduledCallback = null,\n frameDeadline = 0;\nfunction setTimeoutCallback() {\n frameDeadline = now$1() + 5;\n var callback = scheduledCallback;\n scheduledCallback = null;\n null !== callback && callback();\n}\nfunction shim$1() {\n invariant(\n !1,\n \"The current renderer does not support hydration. This error is likely caused by a bug in React. Please file an issue.\"\n );\n}\nvar UPDATE_SIGNAL = {},\n nextReactTag = 3;\nfunction allocateTag() {\n var tag = nextReactTag;\n 1 === tag % 10 && (tag += 2);\n nextReactTag = tag + 2;\n return tag;\n}\nfunction recursivelyUncacheFiberNode(node) {\n if (\"number\" === typeof node)\n delete instanceCache[node], delete instanceProps[node];\n else {\n var tag = node._nativeTag;\n delete instanceCache[tag];\n delete instanceProps[tag];\n node._children.forEach(recursivelyUncacheFiberNode);\n }\n}\nfunction finalizeInitialChildren(parentInstance) {\n if (0 === parentInstance._children.length) return !1;\n var nativeTags = parentInstance._children.map(function(child) {\n return \"number\" === typeof child ? child : child._nativeTag;\n });\n UIManager.setChildren(parentInstance._nativeTag, nativeTags);\n return !1;\n}\nvar scheduleTimeout = setTimeout,\n cancelTimeout = clearTimeout,\n BEFORE_SLASH_RE = /^(.*)[\\\\\\/]/;\nfunction getStackByFiberInDevAndProd(workInProgress) {\n var info = \"\";\n do {\n a: switch (workInProgress.tag) {\n case 3:\n case 4:\n case 6:\n case 7:\n case 10:\n case 9:\n var JSCompiler_inline_result = \"\";\n break a;\n default:\n var owner = workInProgress._debugOwner,\n source = workInProgress._debugSource,\n name = getComponentName(workInProgress.type);\n JSCompiler_inline_result = null;\n owner && (JSCompiler_inline_result = getComponentName(owner.type));\n owner = name;\n name = \"\";\n source\n ? (name =\n \" (at \" +\n source.fileName.replace(BEFORE_SLASH_RE, \"\") +\n \":\" +\n source.lineNumber +\n \")\")\n : JSCompiler_inline_result &&\n (name = \" (created by \" + JSCompiler_inline_result + \")\");\n JSCompiler_inline_result = \"\\n in \" + (owner || \"Unknown\") + name;\n }\n info += JSCompiler_inline_result;\n workInProgress = workInProgress.return;\n } while (workInProgress);\n return info;\n}\nnew Set();\nvar valueStack = [],\n index = -1;\nfunction pop(cursor) {\n 0 > index ||\n ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n index++;\n valueStack[index] = cursor.current;\n cursor.current = value;\n}\nvar emptyContextObject = {},\n contextStackCursor = { current: emptyContextObject },\n didPerformWorkStackCursor = { current: !1 },\n previousContext = emptyContextObject;\nfunction getMaskedContext(workInProgress, unmaskedContext) {\n var contextTypes = workInProgress.type.contextTypes;\n if (!contextTypes) return emptyContextObject;\n var instance = workInProgress.stateNode;\n if (\n instance &&\n instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext\n )\n return instance.__reactInternalMemoizedMaskedChildContext;\n var context = {},\n key;\n for (key in contextTypes) context[key] = unmaskedContext[key];\n instance &&\n ((workInProgress = workInProgress.stateNode),\n (workInProgress.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext),\n (workInProgress.__reactInternalMemoizedMaskedChildContext = context));\n return context;\n}\nfunction isContextProvider(type) {\n type = type.childContextTypes;\n return null !== type && void 0 !== type;\n}\nfunction popContext(fiber) {\n pop(didPerformWorkStackCursor, fiber);\n pop(contextStackCursor, fiber);\n}\nfunction popTopLevelContextObject(fiber) {\n pop(didPerformWorkStackCursor, fiber);\n pop(contextStackCursor, fiber);\n}\nfunction pushTopLevelContextObject(fiber, context, didChange) {\n invariant(\n contextStackCursor.current === emptyContextObject,\n \"Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue.\"\n );\n push(contextStackCursor, context, fiber);\n push(didPerformWorkStackCursor, didChange, fiber);\n}\nfunction processChildContext(fiber, type, parentContext) {\n var instance = fiber.stateNode;\n fiber = type.childContextTypes;\n if (\"function\" !== typeof instance.getChildContext) return parentContext;\n instance = instance.getChildContext();\n for (var contextKey in instance)\n invariant(\n contextKey in fiber,\n '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.',\n getComponentName(type) || \"Unknown\",\n contextKey\n );\n return Object.assign({}, parentContext, instance);\n}\nfunction pushContextProvider(workInProgress) {\n var instance = workInProgress.stateNode;\n instance =\n (instance && instance.__reactInternalMemoizedMergedChildContext) ||\n emptyContextObject;\n previousContext = contextStackCursor.current;\n push(contextStackCursor, instance, workInProgress);\n push(\n didPerformWorkStackCursor,\n didPerformWorkStackCursor.current,\n workInProgress\n );\n return !0;\n}\nfunction invalidateContextProvider(workInProgress, type, didChange) {\n var instance = workInProgress.stateNode;\n invariant(\n instance,\n \"Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue.\"\n );\n didChange\n ? ((type = processChildContext(workInProgress, type, previousContext)),\n (instance.__reactInternalMemoizedMergedChildContext = type),\n pop(didPerformWorkStackCursor, workInProgress),\n pop(contextStackCursor, workInProgress),\n push(contextStackCursor, type, workInProgress))\n : pop(didPerformWorkStackCursor, workInProgress);\n push(didPerformWorkStackCursor, didChange, workInProgress);\n}\nvar onCommitFiberRoot = null,\n onCommitFiberUnmount = null;\nfunction catchErrors(fn) {\n return function(arg) {\n try {\n return fn(arg);\n } catch (err) {}\n };\n}\nfunction injectInternals(internals) {\n if (\"undefined\" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) return !1;\n var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (hook.isDisabled || !hook.supportsFiber) return !0;\n try {\n var rendererID = hook.inject(internals);\n onCommitFiberRoot = catchErrors(function(root) {\n return hook.onCommitFiberRoot(rendererID, root);\n });\n onCommitFiberUnmount = catchErrors(function(fiber) {\n return hook.onCommitFiberUnmount(rendererID, fiber);\n });\n } catch (err) {}\n return !0;\n}\nfunction FiberNode(tag, pendingProps, key, mode) {\n this.tag = tag;\n this.key = key;\n this.sibling = this.child = this.return = this.stateNode = this.type = this.elementType = null;\n this.index = 0;\n this.ref = null;\n this.pendingProps = pendingProps;\n this.firstContextDependency = this.memoizedState = this.updateQueue = this.memoizedProps = null;\n this.mode = mode;\n this.effectTag = 0;\n this.lastEffect = this.firstEffect = this.nextEffect = null;\n this.childExpirationTime = this.expirationTime = 0;\n this.alternate = null;\n}\nfunction createFiber(tag, pendingProps, key, mode) {\n return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n Component = Component.prototype;\n return !(!Component || !Component.isReactComponent);\n}\nfunction resolveLazyComponentTag(Component) {\n if (\"function\" === typeof Component)\n return shouldConstruct(Component) ? 1 : 0;\n if (void 0 !== Component && null !== Component) {\n Component = Component.$$typeof;\n if (Component === REACT_FORWARD_REF_TYPE) return 11;\n if (Component === REACT_MEMO_TYPE) return 14;\n }\n return 2;\n}\nfunction createWorkInProgress(current, pendingProps) {\n var workInProgress = current.alternate;\n null === workInProgress\n ? ((workInProgress = createFiber(\n current.tag,\n pendingProps,\n current.key,\n current.mode\n )),\n (workInProgress.elementType = current.elementType),\n (workInProgress.type = current.type),\n (workInProgress.stateNode = current.stateNode),\n (workInProgress.alternate = current),\n (current.alternate = workInProgress))\n : ((workInProgress.pendingProps = pendingProps),\n (workInProgress.effectTag = 0),\n (workInProgress.nextEffect = null),\n (workInProgress.firstEffect = null),\n (workInProgress.lastEffect = null));\n workInProgress.childExpirationTime = current.childExpirationTime;\n workInProgress.expirationTime = current.expirationTime;\n workInProgress.child = current.child;\n workInProgress.memoizedProps = current.memoizedProps;\n workInProgress.memoizedState = current.memoizedState;\n workInProgress.updateQueue = current.updateQueue;\n workInProgress.firstContextDependency = current.firstContextDependency;\n workInProgress.sibling = current.sibling;\n workInProgress.index = current.index;\n workInProgress.ref = current.ref;\n return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n type,\n key,\n pendingProps,\n owner,\n mode,\n expirationTime\n) {\n var fiberTag = 2;\n owner = type;\n if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n else if (\"string\" === typeof type) fiberTag = 5;\n else\n a: switch (type) {\n case REACT_FRAGMENT_TYPE:\n return createFiberFromFragment(\n pendingProps.children,\n mode,\n expirationTime,\n key\n );\n case REACT_CONCURRENT_MODE_TYPE:\n return createFiberFromMode(pendingProps, mode | 3, expirationTime, key);\n case REACT_STRICT_MODE_TYPE:\n return createFiberFromMode(pendingProps, mode | 2, expirationTime, key);\n case REACT_PROFILER_TYPE:\n return (\n (type = createFiber(12, pendingProps, key, mode | 4)),\n (type.elementType = REACT_PROFILER_TYPE),\n (type.type = REACT_PROFILER_TYPE),\n (type.expirationTime = expirationTime),\n type\n );\n case REACT_SUSPENSE_TYPE:\n return (\n (type = createFiber(13, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_TYPE),\n (type.type = REACT_SUSPENSE_TYPE),\n (type.expirationTime = expirationTime),\n type\n );\n default:\n if (\"object\" === typeof type && null !== type)\n switch (type.$$typeof) {\n case REACT_PROVIDER_TYPE:\n fiberTag = 10;\n break a;\n case REACT_CONTEXT_TYPE:\n fiberTag = 9;\n break a;\n case REACT_FORWARD_REF_TYPE:\n fiberTag = 11;\n break a;\n case REACT_MEMO_TYPE:\n fiberTag = 14;\n break a;\n case REACT_LAZY_TYPE:\n fiberTag = 16;\n owner = null;\n break a;\n }\n invariant(\n !1,\n \"Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\",\n null == type ? type : typeof type,\n \"\"\n );\n }\n key = createFiber(fiberTag, pendingProps, key, mode);\n key.elementType = type;\n key.type = owner;\n key.expirationTime = expirationTime;\n return key;\n}\nfunction createFiberFromFragment(elements, mode, expirationTime, key) {\n elements = createFiber(7, elements, key, mode);\n elements.expirationTime = expirationTime;\n return elements;\n}\nfunction createFiberFromMode(pendingProps, mode, expirationTime, key) {\n pendingProps = createFiber(8, pendingProps, key, mode);\n mode = 0 === (mode & 1) ? REACT_STRICT_MODE_TYPE : REACT_CONCURRENT_MODE_TYPE;\n pendingProps.elementType = mode;\n pendingProps.type = mode;\n pendingProps.expirationTime = expirationTime;\n return pendingProps;\n}\nfunction createFiberFromText(content, mode, expirationTime) {\n content = createFiber(6, content, null, mode);\n content.expirationTime = expirationTime;\n return content;\n}\nfunction createFiberFromPortal(portal, mode, expirationTime) {\n mode = createFiber(\n 4,\n null !== portal.children ? portal.children : [],\n portal.key,\n mode\n );\n mode.expirationTime = expirationTime;\n mode.stateNode = {\n containerInfo: portal.containerInfo,\n pendingChildren: null,\n implementation: portal.implementation\n };\n return mode;\n}\nfunction markPendingPriorityLevel(root, expirationTime) {\n root.didError = !1;\n var earliestPendingTime = root.earliestPendingTime;\n 0 === earliestPendingTime\n ? (root.earliestPendingTime = root.latestPendingTime = expirationTime)\n : earliestPendingTime < expirationTime\n ? (root.earliestPendingTime = expirationTime)\n : root.latestPendingTime > expirationTime &&\n (root.latestPendingTime = expirationTime);\n findNextExpirationTimeToWorkOn(expirationTime, root);\n}\nfunction markSuspendedPriorityLevel(root, suspendedTime) {\n root.didError = !1;\n var latestPingedTime = root.latestPingedTime;\n 0 !== latestPingedTime &&\n latestPingedTime >= suspendedTime &&\n (root.latestPingedTime = 0);\n latestPingedTime = root.earliestPendingTime;\n var latestPendingTime = root.latestPendingTime;\n latestPingedTime === suspendedTime\n ? (root.earliestPendingTime =\n latestPendingTime === suspendedTime\n ? (root.latestPendingTime = 0)\n : latestPendingTime)\n : latestPendingTime === suspendedTime &&\n (root.latestPendingTime = latestPingedTime);\n latestPingedTime = root.earliestSuspendedTime;\n latestPendingTime = root.latestSuspendedTime;\n 0 === latestPingedTime\n ? (root.earliestSuspendedTime = root.latestSuspendedTime = suspendedTime)\n : latestPingedTime < suspendedTime\n ? (root.earliestSuspendedTime = suspendedTime)\n : latestPendingTime > suspendedTime &&\n (root.latestSuspendedTime = suspendedTime);\n findNextExpirationTimeToWorkOn(suspendedTime, root);\n}\nfunction findEarliestOutstandingPriorityLevel(root, renderExpirationTime) {\n var earliestPendingTime = root.earliestPendingTime;\n root = root.earliestSuspendedTime;\n earliestPendingTime > renderExpirationTime &&\n (renderExpirationTime = earliestPendingTime);\n root > renderExpirationTime && (renderExpirationTime = root);\n return renderExpirationTime;\n}\nfunction findNextExpirationTimeToWorkOn(completedExpirationTime, root) {\n var earliestSuspendedTime = root.earliestSuspendedTime,\n latestSuspendedTime = root.latestSuspendedTime,\n earliestPendingTime = root.earliestPendingTime,\n latestPingedTime = root.latestPingedTime;\n earliestPendingTime =\n 0 !== earliestPendingTime ? earliestPendingTime : latestPingedTime;\n 0 === earliestPendingTime &&\n (0 === completedExpirationTime ||\n latestSuspendedTime < completedExpirationTime) &&\n (earliestPendingTime = latestSuspendedTime);\n completedExpirationTime = earliestPendingTime;\n 0 !== completedExpirationTime &&\n earliestSuspendedTime > completedExpirationTime &&\n (completedExpirationTime = earliestSuspendedTime);\n root.nextExpirationTimeToWorkOn = earliestPendingTime;\n root.expirationTime = completedExpirationTime;\n}\nvar hasForceUpdate = !1;\nfunction createUpdateQueue(baseState) {\n return {\n baseState: baseState,\n firstUpdate: null,\n lastUpdate: null,\n firstCapturedUpdate: null,\n lastCapturedUpdate: null,\n firstEffect: null,\n lastEffect: null,\n firstCapturedEffect: null,\n lastCapturedEffect: null\n };\n}\nfunction cloneUpdateQueue(currentQueue) {\n return {\n baseState: currentQueue.baseState,\n firstUpdate: currentQueue.firstUpdate,\n lastUpdate: currentQueue.lastUpdate,\n firstCapturedUpdate: null,\n lastCapturedUpdate: null,\n firstEffect: null,\n lastEffect: null,\n firstCapturedEffect: null,\n lastCapturedEffect: null\n };\n}\nfunction createUpdate(expirationTime) {\n return {\n expirationTime: expirationTime,\n tag: 0,\n payload: null,\n callback: null,\n next: null,\n nextEffect: null\n };\n}\nfunction appendUpdateToQueue(queue, update) {\n null === queue.lastUpdate\n ? (queue.firstUpdate = queue.lastUpdate = update)\n : ((queue.lastUpdate.next = update), (queue.lastUpdate = update));\n}\nfunction enqueueUpdate(fiber, update) {\n var alternate = fiber.alternate;\n if (null === alternate) {\n var queue1 = fiber.updateQueue;\n var queue2 = null;\n null === queue1 &&\n (queue1 = fiber.updateQueue = createUpdateQueue(fiber.memoizedState));\n } else\n (queue1 = fiber.updateQueue),\n (queue2 = alternate.updateQueue),\n null === queue1\n ? null === queue2\n ? ((queue1 = fiber.updateQueue = createUpdateQueue(\n fiber.memoizedState\n )),\n (queue2 = alternate.updateQueue = createUpdateQueue(\n alternate.memoizedState\n )))\n : (queue1 = fiber.updateQueue = cloneUpdateQueue(queue2))\n : null === queue2 &&\n (queue2 = alternate.updateQueue = cloneUpdateQueue(queue1));\n null === queue2 || queue1 === queue2\n ? appendUpdateToQueue(queue1, update)\n : null === queue1.lastUpdate || null === queue2.lastUpdate\n ? (appendUpdateToQueue(queue1, update),\n appendUpdateToQueue(queue2, update))\n : (appendUpdateToQueue(queue1, update), (queue2.lastUpdate = update));\n}\nfunction enqueueCapturedUpdate(workInProgress, update) {\n var workInProgressQueue = workInProgress.updateQueue;\n workInProgressQueue =\n null === workInProgressQueue\n ? (workInProgress.updateQueue = createUpdateQueue(\n workInProgress.memoizedState\n ))\n : ensureWorkInProgressQueueIsAClone(workInProgress, workInProgressQueue);\n null === workInProgressQueue.lastCapturedUpdate\n ? (workInProgressQueue.firstCapturedUpdate = workInProgressQueue.lastCapturedUpdate = update)\n : ((workInProgressQueue.lastCapturedUpdate.next = update),\n (workInProgressQueue.lastCapturedUpdate = update));\n}\nfunction ensureWorkInProgressQueueIsAClone(workInProgress, queue) {\n var current = workInProgress.alternate;\n null !== current &&\n queue === current.updateQueue &&\n (queue = workInProgress.updateQueue = cloneUpdateQueue(queue));\n return queue;\n}\nfunction getStateFromUpdate(\n workInProgress,\n queue,\n update,\n prevState,\n nextProps,\n instance\n) {\n switch (update.tag) {\n case 1:\n return (\n (workInProgress = update.payload),\n \"function\" === typeof workInProgress\n ? workInProgress.call(instance, prevState, nextProps)\n : workInProgress\n );\n case 3:\n workInProgress.effectTag = (workInProgress.effectTag & -2049) | 64;\n case 0:\n workInProgress = update.payload;\n nextProps =\n \"function\" === typeof workInProgress\n ? workInProgress.call(instance, prevState, nextProps)\n : workInProgress;\n if (null === nextProps || void 0 === nextProps) break;\n return Object.assign({}, prevState, nextProps);\n case 2:\n hasForceUpdate = !0;\n }\n return prevState;\n}\nfunction processUpdateQueue(\n workInProgress,\n queue,\n props,\n instance,\n renderExpirationTime\n) {\n hasForceUpdate = !1;\n queue = ensureWorkInProgressQueueIsAClone(workInProgress, queue);\n for (\n var newBaseState = queue.baseState,\n newFirstUpdate = null,\n newExpirationTime = 0,\n update = queue.firstUpdate,\n resultState = newBaseState;\n null !== update;\n\n ) {\n var updateExpirationTime = update.expirationTime;\n updateExpirationTime < renderExpirationTime\n ? (null === newFirstUpdate &&\n ((newFirstUpdate = update), (newBaseState = resultState)),\n newExpirationTime < updateExpirationTime &&\n (newExpirationTime = updateExpirationTime))\n : ((resultState = getStateFromUpdate(\n workInProgress,\n queue,\n update,\n resultState,\n props,\n instance\n )),\n null !== update.callback &&\n ((workInProgress.effectTag |= 32),\n (update.nextEffect = null),\n null === queue.lastEffect\n ? (queue.firstEffect = queue.lastEffect = update)\n : ((queue.lastEffect.nextEffect = update),\n (queue.lastEffect = update))));\n update = update.next;\n }\n updateExpirationTime = null;\n for (update = queue.firstCapturedUpdate; null !== update; ) {\n var _updateExpirationTime = update.expirationTime;\n _updateExpirationTime < renderExpirationTime\n ? (null === updateExpirationTime &&\n ((updateExpirationTime = update),\n null === newFirstUpdate && (newBaseState = resultState)),\n newExpirationTime < _updateExpirationTime &&\n (newExpirationTime = _updateExpirationTime))\n : ((resultState = getStateFromUpdate(\n workInProgress,\n queue,\n update,\n resultState,\n props,\n instance\n )),\n null !== update.callback &&\n ((workInProgress.effectTag |= 32),\n (update.nextEffect = null),\n null === queue.lastCapturedEffect\n ? (queue.firstCapturedEffect = queue.lastCapturedEffect = update)\n : ((queue.lastCapturedEffect.nextEffect = update),\n (queue.lastCapturedEffect = update))));\n update = update.next;\n }\n null === newFirstUpdate && (queue.lastUpdate = null);\n null === updateExpirationTime\n ? (queue.lastCapturedUpdate = null)\n : (workInProgress.effectTag |= 32);\n null === newFirstUpdate &&\n null === updateExpirationTime &&\n (newBaseState = resultState);\n queue.baseState = newBaseState;\n queue.firstUpdate = newFirstUpdate;\n queue.firstCapturedUpdate = updateExpirationTime;\n workInProgress.expirationTime = newExpirationTime;\n workInProgress.memoizedState = resultState;\n}\nfunction commitUpdateQueue(finishedWork, finishedQueue, instance) {\n null !== finishedQueue.firstCapturedUpdate &&\n (null !== finishedQueue.lastUpdate &&\n ((finishedQueue.lastUpdate.next = finishedQueue.firstCapturedUpdate),\n (finishedQueue.lastUpdate = finishedQueue.lastCapturedUpdate)),\n (finishedQueue.firstCapturedUpdate = finishedQueue.lastCapturedUpdate = null));\n commitUpdateEffects(finishedQueue.firstEffect, instance);\n finishedQueue.firstEffect = finishedQueue.lastEffect = null;\n commitUpdateEffects(finishedQueue.firstCapturedEffect, instance);\n finishedQueue.firstCapturedEffect = finishedQueue.lastCapturedEffect = null;\n}\nfunction commitUpdateEffects(effect, instance) {\n for (; null !== effect; ) {\n var _callback3 = effect.callback;\n if (null !== _callback3) {\n effect.callback = null;\n var context = instance;\n invariant(\n \"function\" === typeof _callback3,\n \"Invalid argument passed as callback. Expected a function. Instead received: %s\",\n _callback3\n );\n _callback3.call(context);\n }\n effect = effect.nextEffect;\n }\n}\nfunction createCapturedValue(value, source) {\n return {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n}\nvar valueCursor = { current: null },\n currentlyRenderingFiber = null,\n lastContextDependency = null,\n lastContextWithAllBitsObserved = null;\nfunction pushProvider(providerFiber, nextValue) {\n var context = providerFiber.type._context;\n push(valueCursor, context._currentValue, providerFiber);\n context._currentValue = nextValue;\n}\nfunction popProvider(providerFiber) {\n var currentValue = valueCursor.current;\n pop(valueCursor, providerFiber);\n providerFiber.type._context._currentValue = currentValue;\n}\nfunction prepareToReadContext(workInProgress) {\n currentlyRenderingFiber = workInProgress;\n lastContextWithAllBitsObserved = lastContextDependency = null;\n workInProgress.firstContextDependency = null;\n}\nfunction readContext(context, observedBits) {\n if (\n lastContextWithAllBitsObserved !== context &&\n !1 !== observedBits &&\n 0 !== observedBits\n ) {\n if (\"number\" !== typeof observedBits || 1073741823 === observedBits)\n (lastContextWithAllBitsObserved = context), (observedBits = 1073741823);\n observedBits = { context: context, observedBits: observedBits, next: null };\n null === lastContextDependency\n ? (invariant(\n null !== currentlyRenderingFiber,\n \"Context can only be read while React is rendering, e.g. inside the render method or getDerivedStateFromProps.\"\n ),\n (currentlyRenderingFiber.firstContextDependency = lastContextDependency = observedBits))\n : (lastContextDependency = lastContextDependency.next = observedBits);\n }\n return context._currentValue;\n}\nvar NO_CONTEXT = {},\n contextStackCursor$1 = { current: NO_CONTEXT },\n contextFiberStackCursor = { current: NO_CONTEXT },\n rootInstanceStackCursor = { current: NO_CONTEXT };\nfunction requiredContext(c) {\n invariant(\n c !== NO_CONTEXT,\n \"Expected host context to exist. This error is likely caused by a bug in React. Please file an issue.\"\n );\n return c;\n}\nfunction pushHostContainer(fiber, nextRootInstance) {\n push(rootInstanceStackCursor, nextRootInstance, fiber);\n push(contextFiberStackCursor, fiber, fiber);\n push(contextStackCursor$1, NO_CONTEXT, fiber);\n pop(contextStackCursor$1, fiber);\n push(contextStackCursor$1, { isInAParentText: !1 }, fiber);\n}\nfunction popHostContainer(fiber) {\n pop(contextStackCursor$1, fiber);\n pop(contextFiberStackCursor, fiber);\n pop(rootInstanceStackCursor, fiber);\n}\nfunction pushHostContext(fiber) {\n requiredContext(rootInstanceStackCursor.current);\n var context = requiredContext(contextStackCursor$1.current);\n var nextContext = fiber.type;\n nextContext =\n \"AndroidTextInput\" === nextContext ||\n \"RCTMultilineTextInputView\" === nextContext ||\n \"RCTSinglelineTextInputView\" === nextContext ||\n \"RCTText\" === nextContext ||\n \"RCTVirtualText\" === nextContext;\n nextContext =\n context.isInAParentText !== nextContext\n ? { isInAParentText: nextContext }\n : context;\n context !== nextContext &&\n (push(contextFiberStackCursor, fiber, fiber),\n push(contextStackCursor$1, nextContext, fiber));\n}\nfunction popHostContext(fiber) {\n contextFiberStackCursor.current === fiber &&\n (pop(contextStackCursor$1, fiber), pop(contextFiberStackCursor, fiber));\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction is(x, y) {\n return x === y ? 0 !== x || 0 !== y || 1 / x === 1 / y : x !== x && y !== y;\n}\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) return !0;\n if (\n \"object\" !== typeof objA ||\n null === objA ||\n \"object\" !== typeof objB ||\n null === objB\n )\n return !1;\n var keysA = Object.keys(objA),\n keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return !1;\n for (keysB = 0; keysB < keysA.length; keysB++)\n if (\n !hasOwnProperty.call(objB, keysA[keysB]) ||\n !is(objA[keysA[keysB]], objB[keysA[keysB]])\n )\n return !1;\n return !0;\n}\nfunction resolveDefaultProps(Component, baseProps) {\n if (Component && Component.defaultProps) {\n baseProps = Object.assign({}, baseProps);\n Component = Component.defaultProps;\n for (var propName in Component)\n void 0 === baseProps[propName] &&\n (baseProps[propName] = Component[propName]);\n }\n return baseProps;\n}\nfunction readLazyComponentType(lazyComponent) {\n var result = lazyComponent._result;\n switch (lazyComponent._status) {\n case 1:\n return result;\n case 2:\n throw result;\n case 0:\n throw result;\n default:\n throw ((lazyComponent._status = 0),\n (result = lazyComponent._ctor),\n (result = result()),\n result.then(\n function(moduleObject) {\n 0 === lazyComponent._status &&\n ((moduleObject = moduleObject.default),\n (lazyComponent._status = 1),\n (lazyComponent._result = moduleObject));\n },\n function(error) {\n 0 === lazyComponent._status &&\n ((lazyComponent._status = 2), (lazyComponent._result = error));\n }\n ),\n (lazyComponent._result = result),\n result);\n }\n}\nvar ReactCurrentOwner$4 = ReactSharedInternals.ReactCurrentOwner,\n emptyRefsObject = new React.Component().refs;\nfunction applyDerivedStateFromProps(\n workInProgress,\n ctor,\n getDerivedStateFromProps,\n nextProps\n) {\n ctor = workInProgress.memoizedState;\n getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n getDerivedStateFromProps =\n null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n ? ctor\n : Object.assign({}, ctor, getDerivedStateFromProps);\n workInProgress.memoizedState = getDerivedStateFromProps;\n nextProps = workInProgress.updateQueue;\n null !== nextProps &&\n 0 === workInProgress.expirationTime &&\n (nextProps.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n isMounted: function(component) {\n return (component = component._reactInternalFiber)\n ? 2 === isFiberMountedImpl(component)\n : !1;\n },\n enqueueSetState: function(inst, payload, callback) {\n inst = inst._reactInternalFiber;\n var currentTime = requestCurrentTime();\n currentTime = computeExpirationForFiber(currentTime, inst);\n var update = createUpdate(currentTime);\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n flushPassiveEffects();\n enqueueUpdate(inst, update);\n scheduleWork(inst, currentTime);\n },\n enqueueReplaceState: function(inst, payload, callback) {\n inst = inst._reactInternalFiber;\n var currentTime = requestCurrentTime();\n currentTime = computeExpirationForFiber(currentTime, inst);\n var update = createUpdate(currentTime);\n update.tag = 1;\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n flushPassiveEffects();\n enqueueUpdate(inst, update);\n scheduleWork(inst, currentTime);\n },\n enqueueForceUpdate: function(inst, callback) {\n inst = inst._reactInternalFiber;\n var currentTime = requestCurrentTime();\n currentTime = computeExpirationForFiber(currentTime, inst);\n var update = createUpdate(currentTime);\n update.tag = 2;\n void 0 !== callback && null !== callback && (update.callback = callback);\n flushPassiveEffects();\n enqueueUpdate(inst, update);\n scheduleWork(inst, currentTime);\n }\n};\nfunction checkShouldComponentUpdate(\n workInProgress,\n ctor,\n oldProps,\n newProps,\n oldState,\n newState,\n nextContext\n) {\n workInProgress = workInProgress.stateNode;\n return \"function\" === typeof workInProgress.shouldComponentUpdate\n ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n : ctor.prototype && ctor.prototype.isPureReactComponent\n ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n : !0;\n}\nfunction constructClassInstance(workInProgress, ctor, props) {\n var isLegacyContextConsumer = !1,\n unmaskedContext = emptyContextObject;\n var context = ctor.contextType;\n \"object\" === typeof context && null !== context\n ? (context = ReactCurrentOwner$4.currentDispatcher.readContext(context))\n : ((unmaskedContext = isContextProvider(ctor)\n ? previousContext\n : contextStackCursor.current),\n (isLegacyContextConsumer = ctor.contextTypes),\n (context = (isLegacyContextConsumer =\n null !== isLegacyContextConsumer && void 0 !== isLegacyContextConsumer)\n ? getMaskedContext(workInProgress, unmaskedContext)\n : emptyContextObject));\n ctor = new ctor(props, context);\n workInProgress.memoizedState =\n null !== ctor.state && void 0 !== ctor.state ? ctor.state : null;\n ctor.updater = classComponentUpdater;\n workInProgress.stateNode = ctor;\n ctor._reactInternalFiber = workInProgress;\n isLegacyContextConsumer &&\n ((workInProgress = workInProgress.stateNode),\n (workInProgress.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext),\n (workInProgress.__reactInternalMemoizedMaskedChildContext = context));\n return ctor;\n}\nfunction callComponentWillReceiveProps(\n workInProgress,\n instance,\n newProps,\n nextContext\n) {\n workInProgress = instance.state;\n \"function\" === typeof instance.componentWillReceiveProps &&\n instance.componentWillReceiveProps(newProps, nextContext);\n \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n instance.state !== workInProgress &&\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction mountClassInstance(\n workInProgress,\n ctor,\n newProps,\n renderExpirationTime\n) {\n var instance = workInProgress.stateNode;\n instance.props = newProps;\n instance.state = workInProgress.memoizedState;\n instance.refs = emptyRefsObject;\n var contextType = ctor.contextType;\n \"object\" === typeof contextType && null !== contextType\n ? (instance.context = ReactCurrentOwner$4.currentDispatcher.readContext(\n contextType\n ))\n : ((contextType = isContextProvider(ctor)\n ? previousContext\n : contextStackCursor.current),\n (instance.context = getMaskedContext(workInProgress, contextType)));\n contextType = workInProgress.updateQueue;\n null !== contextType &&\n (processUpdateQueue(\n workInProgress,\n contextType,\n newProps,\n instance,\n renderExpirationTime\n ),\n (instance.state = workInProgress.memoizedState));\n contextType = ctor.getDerivedStateFromProps;\n \"function\" === typeof contextType &&\n (applyDerivedStateFromProps(workInProgress, ctor, contextType, newProps),\n (instance.state = workInProgress.memoizedState));\n \"function\" === typeof ctor.getDerivedStateFromProps ||\n \"function\" === typeof instance.getSnapshotBeforeUpdate ||\n (\"function\" !== typeof instance.UNSAFE_componentWillMount &&\n \"function\" !== typeof instance.componentWillMount) ||\n ((ctor = instance.state),\n \"function\" === typeof instance.componentWillMount &&\n instance.componentWillMount(),\n \"function\" === typeof instance.UNSAFE_componentWillMount &&\n instance.UNSAFE_componentWillMount(),\n ctor !== instance.state &&\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null),\n (contextType = workInProgress.updateQueue),\n null !== contextType &&\n (processUpdateQueue(\n workInProgress,\n contextType,\n newProps,\n instance,\n renderExpirationTime\n ),\n (instance.state = workInProgress.memoizedState)));\n \"function\" === typeof instance.componentDidMount &&\n (workInProgress.effectTag |= 4);\n}\nvar isArray = Array.isArray;\nfunction coerceRef(returnFiber, current$$1, element) {\n returnFiber = element.ref;\n if (\n null !== returnFiber &&\n \"function\" !== typeof returnFiber &&\n \"object\" !== typeof returnFiber\n ) {\n if (element._owner) {\n element = element._owner;\n var inst = void 0;\n element &&\n (invariant(1 === element.tag, \"Function components cannot have refs.\"),\n (inst = element.stateNode));\n invariant(\n inst,\n \"Missing owner for string ref %s. This error is likely caused by a bug in React. Please file an issue.\",\n returnFiber\n );\n var stringRef = \"\" + returnFiber;\n if (\n null !== current$$1 &&\n null !== current$$1.ref &&\n \"function\" === typeof current$$1.ref &&\n current$$1.ref._stringRef === stringRef\n )\n return current$$1.ref;\n current$$1 = function(value) {\n var refs = inst.refs;\n refs === emptyRefsObject && (refs = inst.refs = {});\n null === value ? delete refs[stringRef] : (refs[stringRef] = value);\n };\n current$$1._stringRef = stringRef;\n return current$$1;\n }\n invariant(\n \"string\" === typeof returnFiber,\n \"Expected ref to be a function, a string, an object returned by React.createRef(), or null.\"\n );\n invariant(\n element._owner,\n \"Element ref was specified as a string (%s) but no owner was set. This could happen for one of the following reasons:\\n1. You may be adding a ref to a function component\\n2. You may be adding a ref to a component that was not created inside a component's render method\\n3. You have multiple copies of React loaded\\nSee https://fb.me/react-refs-must-have-owner for more information.\",\n returnFiber\n );\n }\n return returnFiber;\n}\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n \"textarea\" !== returnFiber.type &&\n invariant(\n !1,\n \"Objects are not valid as a React child (found: %s).%s\",\n \"[object Object]\" === Object.prototype.toString.call(newChild)\n ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n : newChild,\n \"\"\n );\n}\nfunction ChildReconciler(shouldTrackSideEffects) {\n function deleteChild(returnFiber, childToDelete) {\n if (shouldTrackSideEffects) {\n var last = returnFiber.lastEffect;\n null !== last\n ? ((last.nextEffect = childToDelete),\n (returnFiber.lastEffect = childToDelete))\n : (returnFiber.firstEffect = returnFiber.lastEffect = childToDelete);\n childToDelete.nextEffect = null;\n childToDelete.effectTag = 8;\n }\n }\n function deleteRemainingChildren(returnFiber, currentFirstChild) {\n if (!shouldTrackSideEffects) return null;\n for (; null !== currentFirstChild; )\n deleteChild(returnFiber, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return null;\n }\n function mapRemainingChildren(returnFiber, currentFirstChild) {\n for (returnFiber = new Map(); null !== currentFirstChild; )\n null !== currentFirstChild.key\n ? returnFiber.set(currentFirstChild.key, currentFirstChild)\n : returnFiber.set(currentFirstChild.index, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return returnFiber;\n }\n function useFiber(fiber, pendingProps, expirationTime) {\n fiber = createWorkInProgress(fiber, pendingProps, expirationTime);\n fiber.index = 0;\n fiber.sibling = null;\n return fiber;\n }\n function placeChild(newFiber, lastPlacedIndex, newIndex) {\n newFiber.index = newIndex;\n if (!shouldTrackSideEffects) return lastPlacedIndex;\n newIndex = newFiber.alternate;\n if (null !== newIndex)\n return (\n (newIndex = newIndex.index),\n newIndex < lastPlacedIndex\n ? ((newFiber.effectTag = 2), lastPlacedIndex)\n : newIndex\n );\n newFiber.effectTag = 2;\n return lastPlacedIndex;\n }\n function placeSingleChild(newFiber) {\n shouldTrackSideEffects &&\n null === newFiber.alternate &&\n (newFiber.effectTag = 2);\n return newFiber;\n }\n function updateTextNode(\n returnFiber,\n current$$1,\n textContent,\n expirationTime\n ) {\n if (null === current$$1 || 6 !== current$$1.tag)\n return (\n (current$$1 = createFiberFromText(\n textContent,\n returnFiber.mode,\n expirationTime\n )),\n (current$$1.return = returnFiber),\n current$$1\n );\n current$$1 = useFiber(current$$1, textContent, expirationTime);\n current$$1.return = returnFiber;\n return current$$1;\n }\n function updateElement(returnFiber, current$$1, element, expirationTime) {\n if (null !== current$$1 && current$$1.elementType === element.type)\n return (\n (expirationTime = useFiber(current$$1, element.props, expirationTime)),\n (expirationTime.ref = coerceRef(returnFiber, current$$1, element)),\n (expirationTime.return = returnFiber),\n expirationTime\n );\n expirationTime = createFiberFromTypeAndProps(\n element.type,\n element.key,\n element.props,\n null,\n returnFiber.mode,\n expirationTime\n );\n expirationTime.ref = coerceRef(returnFiber, current$$1, element);\n expirationTime.return = returnFiber;\n return expirationTime;\n }\n function updatePortal(returnFiber, current$$1, portal, expirationTime) {\n if (\n null === current$$1 ||\n 4 !== current$$1.tag ||\n current$$1.stateNode.containerInfo !== portal.containerInfo ||\n current$$1.stateNode.implementation !== portal.implementation\n )\n return (\n (current$$1 = createFiberFromPortal(\n portal,\n returnFiber.mode,\n expirationTime\n )),\n (current$$1.return = returnFiber),\n current$$1\n );\n current$$1 = useFiber(current$$1, portal.children || [], expirationTime);\n current$$1.return = returnFiber;\n return current$$1;\n }\n function updateFragment(\n returnFiber,\n current$$1,\n fragment,\n expirationTime,\n key\n ) {\n if (null === current$$1 || 7 !== current$$1.tag)\n return (\n (current$$1 = createFiberFromFragment(\n fragment,\n returnFiber.mode,\n expirationTime,\n key\n )),\n (current$$1.return = returnFiber),\n current$$1\n );\n current$$1 = useFiber(current$$1, fragment, expirationTime);\n current$$1.return = returnFiber;\n return current$$1;\n }\n function createChild(returnFiber, newChild, expirationTime) {\n if (\"string\" === typeof newChild || \"number\" === typeof newChild)\n return (\n (newChild = createFiberFromText(\n \"\" + newChild,\n returnFiber.mode,\n expirationTime\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (expirationTime = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n expirationTime\n )),\n (expirationTime.ref = coerceRef(returnFiber, null, newChild)),\n (expirationTime.return = returnFiber),\n expirationTime\n );\n case REACT_PORTAL_TYPE:\n return (\n (newChild = createFiberFromPortal(\n newChild,\n returnFiber.mode,\n expirationTime\n )),\n (newChild.return = returnFiber),\n newChild\n );\n }\n if (isArray(newChild) || getIteratorFn(newChild))\n return (\n (newChild = createFiberFromFragment(\n newChild,\n returnFiber.mode,\n expirationTime,\n null\n )),\n (newChild.return = returnFiber),\n newChild\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return null;\n }\n function updateSlot(returnFiber, oldFiber, newChild, expirationTime) {\n var key = null !== oldFiber ? oldFiber.key : null;\n if (\"string\" === typeof newChild || \"number\" === typeof newChild)\n return null !== key\n ? null\n : updateTextNode(returnFiber, oldFiber, \"\" + newChild, expirationTime);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return newChild.key === key\n ? newChild.type === REACT_FRAGMENT_TYPE\n ? updateFragment(\n returnFiber,\n oldFiber,\n newChild.props.children,\n expirationTime,\n key\n )\n : updateElement(returnFiber, oldFiber, newChild, expirationTime)\n : null;\n case REACT_PORTAL_TYPE:\n return newChild.key === key\n ? updatePortal(returnFiber, oldFiber, newChild, expirationTime)\n : null;\n }\n if (isArray(newChild) || getIteratorFn(newChild))\n return null !== key\n ? null\n : updateFragment(\n returnFiber,\n oldFiber,\n newChild,\n expirationTime,\n null\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return null;\n }\n function updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n expirationTime\n ) {\n if (\"string\" === typeof newChild || \"number\" === typeof newChild)\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateTextNode(\n returnFiber,\n existingChildren,\n \"\" + newChild,\n expirationTime\n )\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n newChild.type === REACT_FRAGMENT_TYPE\n ? updateFragment(\n returnFiber,\n existingChildren,\n newChild.props.children,\n expirationTime,\n newChild.key\n )\n : updateElement(\n returnFiber,\n existingChildren,\n newChild,\n expirationTime\n )\n );\n case REACT_PORTAL_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updatePortal(\n returnFiber,\n existingChildren,\n newChild,\n expirationTime\n )\n );\n }\n if (isArray(newChild) || getIteratorFn(newChild))\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateFragment(\n returnFiber,\n existingChildren,\n newChild,\n expirationTime,\n null\n )\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return null;\n }\n function reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChildren,\n expirationTime\n ) {\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null;\n null !== oldFiber && newIdx < newChildren.length;\n newIdx++\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(\n returnFiber,\n oldFiber,\n newChildren[newIdx],\n expirationTime\n );\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (newIdx === newChildren.length)\n return (\n deleteRemainingChildren(returnFiber, oldFiber), resultingFirstChild\n );\n if (null === oldFiber) {\n for (; newIdx < newChildren.length; newIdx++)\n if (\n (oldFiber = createChild(\n returnFiber,\n newChildren[newIdx],\n expirationTime\n ))\n )\n (currentFirstChild = placeChild(oldFiber, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = oldFiber)\n : (previousNewFiber.sibling = oldFiber),\n (previousNewFiber = oldFiber);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(returnFiber, oldFiber);\n newIdx < newChildren.length;\n newIdx++\n )\n if (\n (nextOldFiber = updateFromMap(\n oldFiber,\n returnFiber,\n newIdx,\n newChildren[newIdx],\n expirationTime\n ))\n )\n shouldTrackSideEffects &&\n null !== nextOldFiber.alternate &&\n oldFiber.delete(\n null === nextOldFiber.key ? newIdx : nextOldFiber.key\n ),\n (currentFirstChild = placeChild(\n nextOldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = nextOldFiber)\n : (previousNewFiber.sibling = nextOldFiber),\n (previousNewFiber = nextOldFiber);\n shouldTrackSideEffects &&\n oldFiber.forEach(function(child) {\n return deleteChild(returnFiber, child);\n });\n return resultingFirstChild;\n }\n function reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChildrenIterable,\n expirationTime\n ) {\n var iteratorFn = getIteratorFn(newChildrenIterable);\n invariant(\n \"function\" === typeof iteratorFn,\n \"An object is not an iterable. This error is likely caused by a bug in React. Please file an issue.\"\n );\n newChildrenIterable = iteratorFn.call(newChildrenIterable);\n invariant(\n null != newChildrenIterable,\n \"An iterable object provided no iterator.\"\n );\n for (\n var previousNewFiber = (iteratorFn = null),\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null,\n step = newChildrenIterable.next();\n null !== oldFiber && !step.done;\n newIdx++, step = newChildrenIterable.next()\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(\n returnFiber,\n oldFiber,\n step.value,\n expirationTime\n );\n if (null === newFiber) {\n oldFiber || (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (iteratorFn = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (step.done)\n return deleteRemainingChildren(returnFiber, oldFiber), iteratorFn;\n if (null === oldFiber) {\n for (; !step.done; newIdx++, step = newChildrenIterable.next())\n (step = createChild(returnFiber, step.value, expirationTime)),\n null !== step &&\n ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (iteratorFn = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n return iteratorFn;\n }\n for (\n oldFiber = mapRemainingChildren(returnFiber, oldFiber);\n !step.done;\n newIdx++, step = newChildrenIterable.next()\n )\n (step = updateFromMap(\n oldFiber,\n returnFiber,\n newIdx,\n step.value,\n expirationTime\n )),\n null !== step &&\n (shouldTrackSideEffects &&\n null !== step.alternate &&\n oldFiber.delete(null === step.key ? newIdx : step.key),\n (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (iteratorFn = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n shouldTrackSideEffects &&\n oldFiber.forEach(function(child) {\n return deleteChild(returnFiber, child);\n });\n return iteratorFn;\n }\n return function(returnFiber, currentFirstChild, newChild, expirationTime) {\n var isUnkeyedTopLevelFragment =\n \"object\" === typeof newChild &&\n null !== newChild &&\n newChild.type === REACT_FRAGMENT_TYPE &&\n null === newChild.key;\n isUnkeyedTopLevelFragment && (newChild = newChild.props.children);\n var isObject = \"object\" === typeof newChild && null !== newChild;\n if (isObject)\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n a: {\n isObject = newChild.key;\n for (\n isUnkeyedTopLevelFragment = currentFirstChild;\n null !== isUnkeyedTopLevelFragment;\n\n ) {\n if (isUnkeyedTopLevelFragment.key === isObject)\n if (\n 7 === isUnkeyedTopLevelFragment.tag\n ? newChild.type === REACT_FRAGMENT_TYPE\n : isUnkeyedTopLevelFragment.elementType === newChild.type\n ) {\n deleteRemainingChildren(\n returnFiber,\n isUnkeyedTopLevelFragment.sibling\n );\n currentFirstChild = useFiber(\n isUnkeyedTopLevelFragment,\n newChild.type === REACT_FRAGMENT_TYPE\n ? newChild.props.children\n : newChild.props,\n expirationTime\n );\n currentFirstChild.ref = coerceRef(\n returnFiber,\n isUnkeyedTopLevelFragment,\n newChild\n );\n currentFirstChild.return = returnFiber;\n returnFiber = currentFirstChild;\n break a;\n } else {\n deleteRemainingChildren(\n returnFiber,\n isUnkeyedTopLevelFragment\n );\n break;\n }\n else deleteChild(returnFiber, isUnkeyedTopLevelFragment);\n isUnkeyedTopLevelFragment = isUnkeyedTopLevelFragment.sibling;\n }\n newChild.type === REACT_FRAGMENT_TYPE\n ? ((currentFirstChild = createFiberFromFragment(\n newChild.props.children,\n returnFiber.mode,\n expirationTime,\n newChild.key\n )),\n (currentFirstChild.return = returnFiber),\n (returnFiber = currentFirstChild))\n : ((expirationTime = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n expirationTime\n )),\n (expirationTime.ref = coerceRef(\n returnFiber,\n currentFirstChild,\n newChild\n )),\n (expirationTime.return = returnFiber),\n (returnFiber = expirationTime));\n }\n return placeSingleChild(returnFiber);\n case REACT_PORTAL_TYPE:\n a: {\n for (\n isUnkeyedTopLevelFragment = newChild.key;\n null !== currentFirstChild;\n\n ) {\n if (currentFirstChild.key === isUnkeyedTopLevelFragment)\n if (\n 4 === currentFirstChild.tag &&\n currentFirstChild.stateNode.containerInfo ===\n newChild.containerInfo &&\n currentFirstChild.stateNode.implementation ===\n newChild.implementation\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n currentFirstChild = useFiber(\n currentFirstChild,\n newChild.children || [],\n expirationTime\n );\n currentFirstChild.return = returnFiber;\n returnFiber = currentFirstChild;\n break a;\n } else {\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n }\n else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n currentFirstChild = createFiberFromPortal(\n newChild,\n returnFiber.mode,\n expirationTime\n );\n currentFirstChild.return = returnFiber;\n returnFiber = currentFirstChild;\n }\n return placeSingleChild(returnFiber);\n }\n if (\"string\" === typeof newChild || \"number\" === typeof newChild)\n return (\n (newChild = \"\" + newChild),\n null !== currentFirstChild && 6 === currentFirstChild.tag\n ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n (currentFirstChild = useFiber(\n currentFirstChild,\n newChild,\n expirationTime\n )),\n (currentFirstChild.return = returnFiber),\n (returnFiber = currentFirstChild))\n : (deleteRemainingChildren(returnFiber, currentFirstChild),\n (currentFirstChild = createFiberFromText(\n newChild,\n returnFiber.mode,\n expirationTime\n )),\n (currentFirstChild.return = returnFiber),\n (returnFiber = currentFirstChild)),\n placeSingleChild(returnFiber)\n );\n if (isArray(newChild))\n return reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChild,\n expirationTime\n );\n if (getIteratorFn(newChild))\n return reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChild,\n expirationTime\n );\n isObject && throwOnInvalidObjectType(returnFiber, newChild);\n if (\"undefined\" === typeof newChild && !isUnkeyedTopLevelFragment)\n switch (returnFiber.tag) {\n case 1:\n case 0:\n (expirationTime = returnFiber.type),\n invariant(\n !1,\n \"%s(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.\",\n expirationTime.displayName || expirationTime.name || \"Component\"\n );\n }\n return deleteRemainingChildren(returnFiber, currentFirstChild);\n };\n}\nvar reconcileChildFibers = ChildReconciler(!0),\n mountChildFibers = ChildReconciler(!1),\n hydrationParentFiber = null,\n nextHydratableInstance = null,\n isHydrating = !1;\nfunction tryHydrate(fiber, nextInstance) {\n switch (fiber.tag) {\n case 5:\n return (\n (nextInstance = shim$1(nextInstance, fiber.type, fiber.pendingProps)),\n null !== nextInstance ? ((fiber.stateNode = nextInstance), !0) : !1\n );\n case 6:\n return (\n (nextInstance = shim$1(nextInstance, fiber.pendingProps)),\n null !== nextInstance ? ((fiber.stateNode = nextInstance), !0) : !1\n );\n default:\n return !1;\n }\n}\nfunction tryToClaimNextHydratableInstance(fiber$jscomp$0) {\n if (isHydrating) {\n var nextInstance = nextHydratableInstance;\n if (nextInstance) {\n var firstAttemptedInstance = nextInstance;\n if (!tryHydrate(fiber$jscomp$0, nextInstance)) {\n nextInstance = shim$1(firstAttemptedInstance);\n if (!nextInstance || !tryHydrate(fiber$jscomp$0, nextInstance)) {\n fiber$jscomp$0.effectTag |= 2;\n isHydrating = !1;\n hydrationParentFiber = fiber$jscomp$0;\n return;\n }\n var returnFiber = hydrationParentFiber,\n fiber = createFiber(5, null, null, 0);\n fiber.elementType = \"DELETED\";\n fiber.type = \"DELETED\";\n fiber.stateNode = firstAttemptedInstance;\n fiber.return = returnFiber;\n fiber.effectTag = 8;\n null !== returnFiber.lastEffect\n ? ((returnFiber.lastEffect.nextEffect = fiber),\n (returnFiber.lastEffect = fiber))\n : (returnFiber.firstEffect = returnFiber.lastEffect = fiber);\n }\n hydrationParentFiber = fiber$jscomp$0;\n nextHydratableInstance = shim$1(nextInstance);\n } else\n (fiber$jscomp$0.effectTag |= 2),\n (isHydrating = !1),\n (hydrationParentFiber = fiber$jscomp$0);\n }\n}\nvar ReactCurrentOwner$3 = ReactSharedInternals.ReactCurrentOwner;\nfunction reconcileChildren(\n current$$1,\n workInProgress,\n nextChildren,\n renderExpirationTime\n) {\n workInProgress.child =\n null === current$$1\n ? mountChildFibers(\n workInProgress,\n null,\n nextChildren,\n renderExpirationTime\n )\n : reconcileChildFibers(\n workInProgress,\n current$$1.child,\n nextChildren,\n renderExpirationTime\n );\n}\nfunction updateForwardRef(\n current$$1,\n workInProgress,\n Component,\n nextProps,\n renderExpirationTime\n) {\n Component = Component.render;\n var ref = workInProgress.ref;\n prepareToReadContext(workInProgress, renderExpirationTime);\n nextProps = Component(nextProps, ref);\n workInProgress.effectTag |= 1;\n reconcileChildren(\n current$$1,\n workInProgress,\n nextProps,\n renderExpirationTime\n );\n return workInProgress.child;\n}\nfunction updateMemoComponent(\n current$$1,\n workInProgress,\n Component,\n nextProps,\n updateExpirationTime,\n renderExpirationTime\n) {\n if (null === current$$1) {\n var type = Component.type;\n if (\n \"function\" === typeof type &&\n !shouldConstruct(type) &&\n void 0 === type.defaultProps &&\n null === Component.compare &&\n void 0 === Component.defaultProps\n )\n return (\n (workInProgress.tag = 15),\n (workInProgress.type = type),\n updateSimpleMemoComponent(\n current$$1,\n workInProgress,\n type,\n nextProps,\n updateExpirationTime,\n renderExpirationTime\n )\n );\n current$$1 = createFiberFromTypeAndProps(\n Component.type,\n null,\n nextProps,\n null,\n workInProgress.mode,\n renderExpirationTime\n );\n current$$1.ref = workInProgress.ref;\n current$$1.return = workInProgress;\n return (workInProgress.child = current$$1);\n }\n type = current$$1.child;\n if (\n updateExpirationTime < renderExpirationTime &&\n ((updateExpirationTime = type.memoizedProps),\n (Component = Component.compare),\n (Component = null !== Component ? Component : shallowEqual),\n Component(updateExpirationTime, nextProps) &&\n current$$1.ref === workInProgress.ref)\n )\n return bailoutOnAlreadyFinishedWork(\n current$$1,\n workInProgress,\n renderExpirationTime\n );\n workInProgress.effectTag |= 1;\n current$$1 = createWorkInProgress(type, nextProps, renderExpirationTime);\n current$$1.ref = workInProgress.ref;\n current$$1.return = workInProgress;\n return (workInProgress.child = current$$1);\n}\nfunction updateSimpleMemoComponent(\n current$$1,\n workInProgress,\n Component,\n nextProps,\n updateExpirationTime,\n renderExpirationTime\n) {\n return null !== current$$1 &&\n updateExpirationTime < renderExpirationTime &&\n shallowEqual(current$$1.memoizedProps, nextProps) &&\n current$$1.ref === workInProgress.ref\n ? bailoutOnAlreadyFinishedWork(\n current$$1,\n workInProgress,\n renderExpirationTime\n )\n : updateFunctionComponent(\n current$$1,\n workInProgress,\n Component,\n nextProps,\n renderExpirationTime\n );\n}\nfunction markRef(current$$1, workInProgress) {\n var ref = workInProgress.ref;\n if (\n (null === current$$1 && null !== ref) ||\n (null !== current$$1 && current$$1.ref !== ref)\n )\n workInProgress.effectTag |= 128;\n}\nfunction updateFunctionComponent(\n current$$1,\n workInProgress,\n Component,\n nextProps,\n renderExpirationTime\n) {\n var unmaskedContext = isContextProvider(Component)\n ? previousContext\n : contextStackCursor.current;\n unmaskedContext = getMaskedContext(workInProgress, unmaskedContext);\n prepareToReadContext(workInProgress, renderExpirationTime);\n Component = Component(nextProps, unmaskedContext);\n workInProgress.effectTag |= 1;\n reconcileChildren(\n current$$1,\n workInProgress,\n Component,\n renderExpirationTime\n );\n return workInProgress.child;\n}\nfunction updateClassComponent(\n current$$1,\n workInProgress,\n Component,\n nextProps,\n renderExpirationTime\n) {\n if (isContextProvider(Component)) {\n var hasContext = !0;\n pushContextProvider(workInProgress);\n } else hasContext = !1;\n prepareToReadContext(workInProgress, renderExpirationTime);\n if (null === workInProgress.stateNode)\n null !== current$$1 &&\n ((current$$1.alternate = null),\n (workInProgress.alternate = null),\n (workInProgress.effectTag |= 2)),\n constructClassInstance(\n workInProgress,\n Component,\n nextProps,\n renderExpirationTime\n ),\n mountClassInstance(\n workInProgress,\n Component,\n nextProps,\n renderExpirationTime\n ),\n (nextProps = !0);\n else if (null === current$$1) {\n var instance = workInProgress.stateNode,\n oldProps = workInProgress.memoizedProps;\n instance.props = oldProps;\n var oldContext = instance.context,\n contextType = Component.contextType;\n \"object\" === typeof contextType && null !== contextType\n ? (contextType = ReactCurrentOwner$4.currentDispatcher.readContext(\n contextType\n ))\n : ((contextType = isContextProvider(Component)\n ? previousContext\n : contextStackCursor.current),\n (contextType = getMaskedContext(workInProgress, contextType)));\n var getDerivedStateFromProps = Component.getDerivedStateFromProps,\n hasNewLifecycles =\n \"function\" === typeof getDerivedStateFromProps ||\n \"function\" === typeof instance.getSnapshotBeforeUpdate;\n hasNewLifecycles ||\n (\"function\" !== typeof instance.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof instance.componentWillReceiveProps) ||\n ((oldProps !== nextProps || oldContext !== contextType) &&\n callComponentWillReceiveProps(\n workInProgress,\n instance,\n nextProps,\n contextType\n ));\n hasForceUpdate = !1;\n var oldState = workInProgress.memoizedState;\n oldContext = instance.state = oldState;\n var updateQueue = workInProgress.updateQueue;\n null !== updateQueue &&\n (processUpdateQueue(\n workInProgress,\n updateQueue,\n nextProps,\n instance,\n renderExpirationTime\n ),\n (oldContext = workInProgress.memoizedState));\n oldProps !== nextProps ||\n oldState !== oldContext ||\n didPerformWorkStackCursor.current ||\n hasForceUpdate\n ? (\"function\" === typeof getDerivedStateFromProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n getDerivedStateFromProps,\n nextProps\n ),\n (oldContext = workInProgress.memoizedState)),\n (oldProps =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n oldProps,\n nextProps,\n oldState,\n oldContext,\n contextType\n ))\n ? (hasNewLifecycles ||\n (\"function\" !== typeof instance.UNSAFE_componentWillMount &&\n \"function\" !== typeof instance.componentWillMount) ||\n (\"function\" === typeof instance.componentWillMount &&\n instance.componentWillMount(),\n \"function\" === typeof instance.UNSAFE_componentWillMount &&\n instance.UNSAFE_componentWillMount()),\n \"function\" === typeof instance.componentDidMount &&\n (workInProgress.effectTag |= 4))\n : (\"function\" === typeof instance.componentDidMount &&\n (workInProgress.effectTag |= 4),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = oldContext)),\n (instance.props = nextProps),\n (instance.state = oldContext),\n (instance.context = contextType),\n (nextProps = oldProps))\n : (\"function\" === typeof instance.componentDidMount &&\n (workInProgress.effectTag |= 4),\n (nextProps = !1));\n } else\n (instance = workInProgress.stateNode),\n (oldProps = workInProgress.memoizedProps),\n (instance.props =\n workInProgress.type === workInProgress.elementType\n ? oldProps\n : resolveDefaultProps(workInProgress.type, oldProps)),\n (oldContext = instance.context),\n (contextType = Component.contextType),\n \"object\" === typeof contextType && null !== contextType\n ? (contextType = ReactCurrentOwner$4.currentDispatcher.readContext(\n contextType\n ))\n : ((contextType = isContextProvider(Component)\n ? previousContext\n : contextStackCursor.current),\n (contextType = getMaskedContext(workInProgress, contextType))),\n (getDerivedStateFromProps = Component.getDerivedStateFromProps),\n (hasNewLifecycles =\n \"function\" === typeof getDerivedStateFromProps ||\n \"function\" === typeof instance.getSnapshotBeforeUpdate) ||\n (\"function\" !== typeof instance.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof instance.componentWillReceiveProps) ||\n ((oldProps !== nextProps || oldContext !== contextType) &&\n callComponentWillReceiveProps(\n workInProgress,\n instance,\n nextProps,\n contextType\n )),\n (hasForceUpdate = !1),\n (oldContext = workInProgress.memoizedState),\n (oldState = instance.state = oldContext),\n (updateQueue = workInProgress.updateQueue),\n null !== updateQueue &&\n (processUpdateQueue(\n workInProgress,\n updateQueue,\n nextProps,\n instance,\n renderExpirationTime\n ),\n (oldState = workInProgress.memoizedState)),\n oldProps !== nextProps ||\n oldContext !== oldState ||\n didPerformWorkStackCursor.current ||\n hasForceUpdate\n ? (\"function\" === typeof getDerivedStateFromProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n getDerivedStateFromProps,\n nextProps\n ),\n (oldState = workInProgress.memoizedState)),\n (getDerivedStateFromProps =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n oldProps,\n nextProps,\n oldContext,\n oldState,\n contextType\n ))\n ? (hasNewLifecycles ||\n (\"function\" !== typeof instance.UNSAFE_componentWillUpdate &&\n \"function\" !== typeof instance.componentWillUpdate) ||\n (\"function\" === typeof instance.componentWillUpdate &&\n instance.componentWillUpdate(\n nextProps,\n oldState,\n contextType\n ),\n \"function\" === typeof instance.UNSAFE_componentWillUpdate &&\n instance.UNSAFE_componentWillUpdate(\n nextProps,\n oldState,\n contextType\n )),\n \"function\" === typeof instance.componentDidUpdate &&\n (workInProgress.effectTag |= 4),\n \"function\" === typeof instance.getSnapshotBeforeUpdate &&\n (workInProgress.effectTag |= 256))\n : (\"function\" !== typeof instance.componentDidUpdate ||\n (oldProps === current$$1.memoizedProps &&\n oldContext === current$$1.memoizedState) ||\n (workInProgress.effectTag |= 4),\n \"function\" !== typeof instance.getSnapshotBeforeUpdate ||\n (oldProps === current$$1.memoizedProps &&\n oldContext === current$$1.memoizedState) ||\n (workInProgress.effectTag |= 256),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = oldState)),\n (instance.props = nextProps),\n (instance.state = oldState),\n (instance.context = contextType),\n (nextProps = getDerivedStateFromProps))\n : (\"function\" !== typeof instance.componentDidUpdate ||\n (oldProps === current$$1.memoizedProps &&\n oldContext === current$$1.memoizedState) ||\n (workInProgress.effectTag |= 4),\n \"function\" !== typeof instance.getSnapshotBeforeUpdate ||\n (oldProps === current$$1.memoizedProps &&\n oldContext === current$$1.memoizedState) ||\n (workInProgress.effectTag |= 256),\n (nextProps = !1));\n return finishClassComponent(\n current$$1,\n workInProgress,\n Component,\n nextProps,\n hasContext,\n renderExpirationTime\n );\n}\nfunction finishClassComponent(\n current$$1,\n workInProgress,\n Component,\n shouldUpdate,\n hasContext,\n renderExpirationTime\n) {\n markRef(current$$1, workInProgress);\n var didCaptureError = 0 !== (workInProgress.effectTag & 64);\n if (!shouldUpdate && !didCaptureError)\n return (\n hasContext && invalidateContextProvider(workInProgress, Component, !1),\n bailoutOnAlreadyFinishedWork(\n current$$1,\n workInProgress,\n renderExpirationTime\n )\n );\n shouldUpdate = workInProgress.stateNode;\n ReactCurrentOwner$3.current = workInProgress;\n var nextChildren =\n didCaptureError && \"function\" !== typeof Component.getDerivedStateFromError\n ? null\n : shouldUpdate.render();\n workInProgress.effectTag |= 1;\n null !== current$$1 && didCaptureError\n ? ((workInProgress.child = reconcileChildFibers(\n workInProgress,\n current$$1.child,\n null,\n renderExpirationTime\n )),\n (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n nextChildren,\n renderExpirationTime\n )))\n : reconcileChildren(\n current$$1,\n workInProgress,\n nextChildren,\n renderExpirationTime\n );\n workInProgress.memoizedState = shouldUpdate.state;\n hasContext && invalidateContextProvider(workInProgress, Component, !0);\n return workInProgress.child;\n}\nfunction pushHostRootContext(workInProgress) {\n var root = workInProgress.stateNode;\n root.pendingContext\n ? pushTopLevelContextObject(\n workInProgress,\n root.pendingContext,\n root.pendingContext !== root.context\n )\n : root.context &&\n pushTopLevelContextObject(workInProgress, root.context, !1);\n pushHostContainer(workInProgress, root.containerInfo);\n}\nfunction updateSuspenseComponent(\n current$$1,\n workInProgress,\n renderExpirationTime\n) {\n var mode = workInProgress.mode,\n nextProps = workInProgress.pendingProps,\n nextState = workInProgress.memoizedState;\n if (0 === (workInProgress.effectTag & 64)) {\n nextState = null;\n var nextDidTimeout = !1;\n } else\n (nextState = { timedOutAt: null !== nextState ? nextState.timedOutAt : 0 }),\n (nextDidTimeout = !0),\n (workInProgress.effectTag &= -65);\n null === current$$1\n ? nextDidTimeout\n ? ((nextDidTimeout = nextProps.fallback),\n (nextProps = createFiberFromFragment(null, mode, 0, null)),\n 0 === (workInProgress.mode & 1) &&\n (nextProps.child =\n null !== workInProgress.memoizedState\n ? workInProgress.child.child\n : workInProgress.child),\n (mode = createFiberFromFragment(\n nextDidTimeout,\n mode,\n renderExpirationTime,\n null\n )),\n (nextProps.sibling = mode),\n (renderExpirationTime = nextProps),\n (renderExpirationTime.return = mode.return = workInProgress))\n : (renderExpirationTime = mode = mountChildFibers(\n workInProgress,\n null,\n nextProps.children,\n renderExpirationTime\n ))\n : null !== current$$1.memoizedState\n ? ((mode = current$$1.child),\n (current$$1 = mode.sibling),\n nextDidTimeout\n ? ((renderExpirationTime = nextProps.fallback),\n (nextProps = createWorkInProgress(mode, mode.pendingProps, 0)),\n 0 === (workInProgress.mode & 1) &&\n ((nextDidTimeout =\n null !== workInProgress.memoizedState\n ? workInProgress.child.child\n : workInProgress.child),\n nextDidTimeout !== mode.child &&\n (nextProps.child = nextDidTimeout)),\n (mode = nextProps.sibling = createWorkInProgress(\n current$$1,\n renderExpirationTime,\n current$$1.expirationTime\n )),\n (renderExpirationTime = nextProps),\n (nextProps.childExpirationTime = 0),\n (renderExpirationTime.return = mode.return = workInProgress))\n : (renderExpirationTime = mode = reconcileChildFibers(\n workInProgress,\n mode.child,\n nextProps.children,\n renderExpirationTime\n )))\n : ((current$$1 = current$$1.child),\n nextDidTimeout\n ? ((nextDidTimeout = nextProps.fallback),\n (nextProps = createFiberFromFragment(null, mode, 0, null)),\n (nextProps.child = current$$1),\n 0 === (workInProgress.mode & 1) &&\n (nextProps.child =\n null !== workInProgress.memoizedState\n ? workInProgress.child.child\n : workInProgress.child),\n (mode = nextProps.sibling = createFiberFromFragment(\n nextDidTimeout,\n mode,\n renderExpirationTime,\n null\n )),\n (mode.effectTag |= 2),\n (renderExpirationTime = nextProps),\n (nextProps.childExpirationTime = 0),\n (renderExpirationTime.return = mode.return = workInProgress))\n : (mode = renderExpirationTime = reconcileChildFibers(\n workInProgress,\n current$$1,\n nextProps.children,\n renderExpirationTime\n )));\n workInProgress.memoizedState = nextState;\n workInProgress.child = renderExpirationTime;\n return mode;\n}\nfunction bailoutOnAlreadyFinishedWork(\n current$$1,\n workInProgress,\n renderExpirationTime\n) {\n null !== current$$1 &&\n (workInProgress.firstContextDependency = current$$1.firstContextDependency);\n if (workInProgress.childExpirationTime < renderExpirationTime) return null;\n invariant(\n null === current$$1 || workInProgress.child === current$$1.child,\n \"Resuming work not yet implemented.\"\n );\n if (null !== workInProgress.child) {\n current$$1 = workInProgress.child;\n renderExpirationTime = createWorkInProgress(\n current$$1,\n current$$1.pendingProps,\n current$$1.expirationTime\n );\n workInProgress.child = renderExpirationTime;\n for (\n renderExpirationTime.return = workInProgress;\n null !== current$$1.sibling;\n\n )\n (current$$1 = current$$1.sibling),\n (renderExpirationTime = renderExpirationTime.sibling = createWorkInProgress(\n current$$1,\n current$$1.pendingProps,\n current$$1.expirationTime\n )),\n (renderExpirationTime.return = workInProgress);\n renderExpirationTime.sibling = null;\n }\n return workInProgress.child;\n}\nfunction beginWork(current$$1, workInProgress, renderExpirationTime) {\n var updateExpirationTime = workInProgress.expirationTime;\n if (\n null !== current$$1 &&\n current$$1.memoizedProps === workInProgress.pendingProps &&\n !didPerformWorkStackCursor.current &&\n updateExpirationTime < renderExpirationTime\n ) {\n switch (workInProgress.tag) {\n case 3:\n pushHostRootContext(workInProgress);\n break;\n case 5:\n pushHostContext(workInProgress);\n break;\n case 1:\n isContextProvider(workInProgress.type) &&\n pushContextProvider(workInProgress);\n break;\n case 4:\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n );\n break;\n case 10:\n pushProvider(workInProgress, workInProgress.memoizedProps.value);\n break;\n case 13:\n if (null !== workInProgress.memoizedState) {\n updateExpirationTime = workInProgress.child.childExpirationTime;\n if (\n 0 !== updateExpirationTime &&\n updateExpirationTime >= renderExpirationTime\n )\n return updateSuspenseComponent(\n current$$1,\n workInProgress,\n renderExpirationTime\n );\n workInProgress = bailoutOnAlreadyFinishedWork(\n current$$1,\n workInProgress,\n renderExpirationTime\n );\n return null !== workInProgress ? workInProgress.sibling : null;\n }\n }\n return bailoutOnAlreadyFinishedWork(\n current$$1,\n workInProgress,\n renderExpirationTime\n );\n }\n workInProgress.expirationTime = 0;\n switch (workInProgress.tag) {\n case 2:\n updateExpirationTime = workInProgress.elementType;\n null !== current$$1 &&\n ((current$$1.alternate = null),\n (workInProgress.alternate = null),\n (workInProgress.effectTag |= 2));\n current$$1 = workInProgress.pendingProps;\n var context = getMaskedContext(\n workInProgress,\n contextStackCursor.current\n );\n prepareToReadContext(workInProgress, renderExpirationTime);\n context = updateExpirationTime(current$$1, context);\n workInProgress.effectTag |= 1;\n if (\n \"object\" === typeof context &&\n null !== context &&\n \"function\" === typeof context.render &&\n void 0 === context.$$typeof\n ) {\n workInProgress.tag = 1;\n if (isContextProvider(updateExpirationTime)) {\n var hasContext = !0;\n pushContextProvider(workInProgress);\n } else hasContext = !1;\n workInProgress.memoizedState =\n null !== context.state && void 0 !== context.state\n ? context.state\n : null;\n var getDerivedStateFromProps =\n updateExpirationTime.getDerivedStateFromProps;\n \"function\" === typeof getDerivedStateFromProps &&\n applyDerivedStateFromProps(\n workInProgress,\n updateExpirationTime,\n getDerivedStateFromProps,\n current$$1\n );\n context.updater = classComponentUpdater;\n workInProgress.stateNode = context;\n context._reactInternalFiber = workInProgress;\n mountClassInstance(\n workInProgress,\n updateExpirationTime,\n current$$1,\n renderExpirationTime\n );\n workInProgress = finishClassComponent(\n null,\n workInProgress,\n updateExpirationTime,\n !0,\n hasContext,\n renderExpirationTime\n );\n } else\n (workInProgress.tag = 0),\n reconcileChildren(\n null,\n workInProgress,\n context,\n renderExpirationTime\n ),\n (workInProgress = workInProgress.child);\n return workInProgress;\n case 16:\n context = workInProgress.elementType;\n null !== current$$1 &&\n ((current$$1.alternate = null),\n (workInProgress.alternate = null),\n (workInProgress.effectTag |= 2));\n hasContext = workInProgress.pendingProps;\n current$$1 = readLazyComponentType(context);\n workInProgress.type = current$$1;\n context = workInProgress.tag = resolveLazyComponentTag(current$$1);\n hasContext = resolveDefaultProps(current$$1, hasContext);\n getDerivedStateFromProps = void 0;\n switch (context) {\n case 0:\n getDerivedStateFromProps = updateFunctionComponent(\n null,\n workInProgress,\n current$$1,\n hasContext,\n renderExpirationTime\n );\n break;\n case 1:\n getDerivedStateFromProps = updateClassComponent(\n null,\n workInProgress,\n current$$1,\n hasContext,\n renderExpirationTime\n );\n break;\n case 11:\n getDerivedStateFromProps = updateForwardRef(\n null,\n workInProgress,\n current$$1,\n hasContext,\n renderExpirationTime\n );\n break;\n case 14:\n getDerivedStateFromProps = updateMemoComponent(\n null,\n workInProgress,\n current$$1,\n resolveDefaultProps(current$$1.type, hasContext),\n updateExpirationTime,\n renderExpirationTime\n );\n break;\n default:\n invariant(\n !1,\n \"Element type is invalid. Received a promise that resolves to: %s. Lazy element type must resolve to a class or function.%s\",\n current$$1,\n \"\"\n );\n }\n return getDerivedStateFromProps;\n case 0:\n return (\n (updateExpirationTime = workInProgress.type),\n (context = workInProgress.pendingProps),\n (context =\n workInProgress.elementType === updateExpirationTime\n ? context\n : resolveDefaultProps(updateExpirationTime, context)),\n updateFunctionComponent(\n current$$1,\n workInProgress,\n updateExpirationTime,\n context,\n renderExpirationTime\n )\n );\n case 1:\n return (\n (updateExpirationTime = workInProgress.type),\n (context = workInProgress.pendingProps),\n (context =\n workInProgress.elementType === updateExpirationTime\n ? context\n : resolveDefaultProps(updateExpirationTime, context)),\n updateClassComponent(\n current$$1,\n workInProgress,\n updateExpirationTime,\n context,\n renderExpirationTime\n )\n );\n case 3:\n return (\n pushHostRootContext(workInProgress),\n (updateExpirationTime = workInProgress.updateQueue),\n invariant(\n null !== updateExpirationTime,\n \"If the root does not have an updateQueue, we should have already bailed out. This error is likely caused by a bug in React. Please file an issue.\"\n ),\n (context = workInProgress.memoizedState),\n (context = null !== context ? context.element : null),\n processUpdateQueue(\n workInProgress,\n updateExpirationTime,\n workInProgress.pendingProps,\n null,\n renderExpirationTime\n ),\n (updateExpirationTime = workInProgress.memoizedState.element),\n updateExpirationTime === context\n ? (workInProgress = bailoutOnAlreadyFinishedWork(\n current$$1,\n workInProgress,\n renderExpirationTime\n ))\n : (reconcileChildren(\n current$$1,\n workInProgress,\n updateExpirationTime,\n renderExpirationTime\n ),\n (workInProgress = workInProgress.child)),\n workInProgress\n );\n case 5:\n return (\n pushHostContext(workInProgress),\n null === current$$1 && tryToClaimNextHydratableInstance(workInProgress),\n (updateExpirationTime = workInProgress.pendingProps.children),\n markRef(current$$1, workInProgress),\n reconcileChildren(\n current$$1,\n workInProgress,\n updateExpirationTime,\n renderExpirationTime\n ),\n (workInProgress = workInProgress.child),\n workInProgress\n );\n case 6:\n return (\n null === current$$1 && tryToClaimNextHydratableInstance(workInProgress),\n null\n );\n case 13:\n return updateSuspenseComponent(\n current$$1,\n workInProgress,\n renderExpirationTime\n );\n case 4:\n return (\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n ),\n (updateExpirationTime = workInProgress.pendingProps),\n null === current$$1\n ? (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n updateExpirationTime,\n renderExpirationTime\n ))\n : reconcileChildren(\n current$$1,\n workInProgress,\n updateExpirationTime,\n renderExpirationTime\n ),\n workInProgress.child\n );\n case 11:\n return (\n (updateExpirationTime = workInProgress.type),\n (context = workInProgress.pendingProps),\n (context =\n workInProgress.elementType === updateExpirationTime\n ? context\n : resolveDefaultProps(updateExpirationTime, context)),\n updateForwardRef(\n current$$1,\n workInProgress,\n updateExpirationTime,\n context,\n renderExpirationTime\n )\n );\n case 7:\n return (\n reconcileChildren(\n current$$1,\n workInProgress,\n workInProgress.pendingProps,\n renderExpirationTime\n ),\n workInProgress.child\n );\n case 8:\n return (\n reconcileChildren(\n current$$1,\n workInProgress,\n workInProgress.pendingProps.children,\n renderExpirationTime\n ),\n workInProgress.child\n );\n case 12:\n return (\n reconcileChildren(\n current$$1,\n workInProgress,\n workInProgress.pendingProps.children,\n renderExpirationTime\n ),\n workInProgress.child\n );\n case 10:\n a: {\n updateExpirationTime = workInProgress.type._context;\n context = workInProgress.pendingProps;\n getDerivedStateFromProps = workInProgress.memoizedProps;\n hasContext = context.value;\n pushProvider(workInProgress, hasContext);\n if (null !== getDerivedStateFromProps) {\n var oldValue = getDerivedStateFromProps.value;\n hasContext =\n (oldValue === hasContext &&\n (0 !== oldValue || 1 / oldValue === 1 / hasContext)) ||\n (oldValue !== oldValue && hasContext !== hasContext)\n ? 0\n : (\"function\" ===\n typeof updateExpirationTime._calculateChangedBits\n ? updateExpirationTime._calculateChangedBits(\n oldValue,\n hasContext\n )\n : 1073741823) | 0;\n if (0 === hasContext) {\n if (\n getDerivedStateFromProps.children === context.children &&\n !didPerformWorkStackCursor.current\n ) {\n workInProgress = bailoutOnAlreadyFinishedWork(\n current$$1,\n workInProgress,\n renderExpirationTime\n );\n break a;\n }\n } else\n for (\n getDerivedStateFromProps = workInProgress.child,\n null !== getDerivedStateFromProps &&\n (getDerivedStateFromProps.return = workInProgress);\n null !== getDerivedStateFromProps;\n\n ) {\n oldValue = getDerivedStateFromProps.firstContextDependency;\n if (null !== oldValue) {\n do {\n if (\n oldValue.context === updateExpirationTime &&\n 0 !== (oldValue.observedBits & hasContext)\n ) {\n if (1 === getDerivedStateFromProps.tag) {\n var nextFiber = createUpdate(renderExpirationTime);\n nextFiber.tag = 2;\n enqueueUpdate(getDerivedStateFromProps, nextFiber);\n }\n getDerivedStateFromProps.expirationTime <\n renderExpirationTime &&\n (getDerivedStateFromProps.expirationTime = renderExpirationTime);\n nextFiber = getDerivedStateFromProps.alternate;\n null !== nextFiber &&\n nextFiber.expirationTime < renderExpirationTime &&\n (nextFiber.expirationTime = renderExpirationTime);\n for (\n var node = getDerivedStateFromProps.return;\n null !== node;\n\n ) {\n nextFiber = node.alternate;\n if (node.childExpirationTime < renderExpirationTime)\n (node.childExpirationTime = renderExpirationTime),\n null !== nextFiber &&\n nextFiber.childExpirationTime <\n renderExpirationTime &&\n (nextFiber.childExpirationTime = renderExpirationTime);\n else if (\n null !== nextFiber &&\n nextFiber.childExpirationTime < renderExpirationTime\n )\n nextFiber.childExpirationTime = renderExpirationTime;\n else break;\n node = node.return;\n }\n }\n nextFiber = getDerivedStateFromProps.child;\n oldValue = oldValue.next;\n } while (null !== oldValue);\n } else\n nextFiber =\n 10 === getDerivedStateFromProps.tag\n ? getDerivedStateFromProps.type === workInProgress.type\n ? null\n : getDerivedStateFromProps.child\n : getDerivedStateFromProps.child;\n if (null !== nextFiber)\n nextFiber.return = getDerivedStateFromProps;\n else\n for (\n nextFiber = getDerivedStateFromProps;\n null !== nextFiber;\n\n ) {\n if (nextFiber === workInProgress) {\n nextFiber = null;\n break;\n }\n getDerivedStateFromProps = nextFiber.sibling;\n if (null !== getDerivedStateFromProps) {\n getDerivedStateFromProps.return = nextFiber.return;\n nextFiber = getDerivedStateFromProps;\n break;\n }\n nextFiber = nextFiber.return;\n }\n getDerivedStateFromProps = nextFiber;\n }\n }\n reconcileChildren(\n current$$1,\n workInProgress,\n context.children,\n renderExpirationTime\n );\n workInProgress = workInProgress.child;\n }\n return workInProgress;\n case 9:\n return (\n (context = workInProgress.type),\n (hasContext = workInProgress.pendingProps),\n (updateExpirationTime = hasContext.children),\n prepareToReadContext(workInProgress, renderExpirationTime),\n (context = readContext(context, hasContext.unstable_observedBits)),\n (updateExpirationTime = updateExpirationTime(context)),\n (workInProgress.effectTag |= 1),\n reconcileChildren(\n current$$1,\n workInProgress,\n updateExpirationTime,\n renderExpirationTime\n ),\n workInProgress.child\n );\n case 14:\n return (\n (context = workInProgress.type),\n (hasContext = resolveDefaultProps(\n context,\n workInProgress.pendingProps\n )),\n (hasContext = resolveDefaultProps(context.type, hasContext)),\n updateMemoComponent(\n current$$1,\n workInProgress,\n context,\n hasContext,\n updateExpirationTime,\n renderExpirationTime\n )\n );\n case 15:\n return updateSimpleMemoComponent(\n current$$1,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n updateExpirationTime,\n renderExpirationTime\n );\n case 17:\n return (\n (updateExpirationTime = workInProgress.type),\n (context = workInProgress.pendingProps),\n (context =\n workInProgress.elementType === updateExpirationTime\n ? context\n : resolveDefaultProps(updateExpirationTime, context)),\n null !== current$$1 &&\n ((current$$1.alternate = null),\n (workInProgress.alternate = null),\n (workInProgress.effectTag |= 2)),\n (workInProgress.tag = 1),\n isContextProvider(updateExpirationTime)\n ? ((current$$1 = !0), pushContextProvider(workInProgress))\n : (current$$1 = !1),\n prepareToReadContext(workInProgress, renderExpirationTime),\n constructClassInstance(\n workInProgress,\n updateExpirationTime,\n context,\n renderExpirationTime\n ),\n mountClassInstance(\n workInProgress,\n updateExpirationTime,\n context,\n renderExpirationTime\n ),\n finishClassComponent(\n null,\n workInProgress,\n updateExpirationTime,\n !0,\n current$$1,\n renderExpirationTime\n )\n );\n default:\n invariant(\n !1,\n \"Unknown unit of work tag. This error is likely caused by a bug in React. Please file an issue.\"\n );\n }\n}\nvar appendAllChildren = void 0,\n updateHostContainer = void 0,\n updateHostComponent$1 = void 0,\n updateHostText$1 = void 0;\nappendAllChildren = function(parent, workInProgress) {\n for (var node = workInProgress.child; null !== node; ) {\n if (5 === node.tag || 6 === node.tag) parent._children.push(node.stateNode);\n else if (4 !== node.tag && null !== node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n if (node === workInProgress) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === workInProgress) return;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n};\nupdateHostContainer = function() {};\nupdateHostComponent$1 = function(current, workInProgress, type, newProps) {\n current.memoizedProps !== newProps &&\n (requiredContext(contextStackCursor$1.current),\n (workInProgress.updateQueue = UPDATE_SIGNAL)) &&\n (workInProgress.effectTag |= 4);\n};\nupdateHostText$1 = function(current, workInProgress, oldText, newText) {\n oldText !== newText && (workInProgress.effectTag |= 4);\n};\nfunction logCapturedError(capturedError) {\n var componentStack = capturedError.componentStack,\n error = capturedError.error;\n if (error instanceof Error) {\n capturedError = error.message;\n var name = error.name;\n try {\n error.message =\n (capturedError ? name + \": \" + capturedError : name) +\n \"\\n\\nThis error is located at:\" +\n componentStack;\n } catch (e) {}\n } else\n error =\n \"string\" === typeof error\n ? Error(error + \"\\n\\nThis error is located at:\" + componentStack)\n : Error(\"Unspecified error at:\" + componentStack);\n ExceptionsManager.handleException(error, !1);\n}\nfunction logError(boundary, errorInfo) {\n var source = errorInfo.source,\n stack = errorInfo.stack;\n null === stack &&\n null !== source &&\n (stack = getStackByFiberInDevAndProd(source));\n errorInfo = {\n componentName: null !== source ? getComponentName(source.type) : null,\n componentStack: null !== stack ? stack : \"\",\n error: errorInfo.value,\n errorBoundary: null,\n errorBoundaryName: null,\n errorBoundaryFound: !1,\n willRetry: !1\n };\n null !== boundary &&\n 1 === boundary.tag &&\n ((errorInfo.errorBoundary = boundary.stateNode),\n (errorInfo.errorBoundaryName = getComponentName(boundary.type)),\n (errorInfo.errorBoundaryFound = !0),\n (errorInfo.willRetry = !0));\n try {\n logCapturedError(errorInfo);\n } catch (e) {\n setTimeout(function() {\n throw e;\n });\n }\n}\nfunction safelyDetachRef(current$$1) {\n var ref = current$$1.ref;\n if (null !== ref)\n if (\"function\" === typeof ref)\n try {\n ref(null);\n } catch (refError) {\n captureCommitPhaseError(current$$1, refError);\n }\n else ref.current = null;\n}\nfunction commitUnmount(current$$1$jscomp$0) {\n \"function\" === typeof onCommitFiberUnmount &&\n onCommitFiberUnmount(current$$1$jscomp$0);\n switch (current$$1$jscomp$0.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n var updateQueue = current$$1$jscomp$0.updateQueue;\n if (\n null !== updateQueue &&\n ((updateQueue = updateQueue.lastEffect), null !== updateQueue)\n ) {\n var effect = (updateQueue = updateQueue.next);\n do {\n var destroy = effect.destroy;\n if (null !== destroy) {\n var current$$1 = current$$1$jscomp$0;\n try {\n destroy();\n } catch (error) {\n captureCommitPhaseError(current$$1, error);\n }\n }\n effect = effect.next;\n } while (effect !== updateQueue);\n }\n break;\n case 1:\n safelyDetachRef(current$$1$jscomp$0);\n updateQueue = current$$1$jscomp$0.stateNode;\n if (\"function\" === typeof updateQueue.componentWillUnmount)\n try {\n (updateQueue.props = current$$1$jscomp$0.memoizedProps),\n (updateQueue.state = current$$1$jscomp$0.memoizedState),\n updateQueue.componentWillUnmount();\n } catch (unmountError) {\n captureCommitPhaseError(current$$1$jscomp$0, unmountError);\n }\n break;\n case 5:\n safelyDetachRef(current$$1$jscomp$0);\n break;\n case 4:\n unmountHostComponents(current$$1$jscomp$0);\n }\n}\nfunction isHostParent(fiber) {\n return 5 === fiber.tag || 3 === fiber.tag || 4 === fiber.tag;\n}\nfunction commitPlacement(finishedWork) {\n a: {\n for (var parent = finishedWork.return; null !== parent; ) {\n if (isHostParent(parent)) {\n var parentFiber = parent;\n break a;\n }\n parent = parent.return;\n }\n invariant(\n !1,\n \"Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.\"\n );\n parentFiber = void 0;\n }\n var isContainer = (parent = void 0);\n switch (parentFiber.tag) {\n case 5:\n parent = parentFiber.stateNode;\n isContainer = !1;\n break;\n case 3:\n parent = parentFiber.stateNode.containerInfo;\n isContainer = !0;\n break;\n case 4:\n parent = parentFiber.stateNode.containerInfo;\n isContainer = !0;\n break;\n default:\n invariant(\n !1,\n \"Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue.\"\n );\n }\n parentFiber.effectTag & 16 && (parentFiber.effectTag &= -17);\n a: b: for (parentFiber = finishedWork; ; ) {\n for (; null === parentFiber.sibling; ) {\n if (null === parentFiber.return || isHostParent(parentFiber.return)) {\n parentFiber = null;\n break a;\n }\n parentFiber = parentFiber.return;\n }\n parentFiber.sibling.return = parentFiber.return;\n for (\n parentFiber = parentFiber.sibling;\n 5 !== parentFiber.tag && 6 !== parentFiber.tag;\n\n ) {\n if (parentFiber.effectTag & 2) continue b;\n if (null === parentFiber.child || 4 === parentFiber.tag) continue b;\n else\n (parentFiber.child.return = parentFiber),\n (parentFiber = parentFiber.child);\n }\n if (!(parentFiber.effectTag & 2)) {\n parentFiber = parentFiber.stateNode;\n break a;\n }\n }\n for (var node = finishedWork; ; ) {\n if (5 === node.tag || 6 === node.tag)\n if (parentFiber)\n if (isContainer)\n invariant(\n \"number\" !== typeof parent,\n \"Container does not support insertBefore operation\"\n );\n else {\n var parentInstance = parent,\n child = node.stateNode,\n beforeChild = parentFiber,\n children = parentInstance._children,\n index = children.indexOf(child);\n 0 <= index\n ? (children.splice(index, 1),\n (beforeChild = children.indexOf(beforeChild)),\n children.splice(beforeChild, 0, child),\n UIManager.manageChildren(\n parentInstance._nativeTag,\n [index],\n [beforeChild],\n [],\n [],\n []\n ))\n : ((index = children.indexOf(beforeChild)),\n children.splice(index, 0, child),\n UIManager.manageChildren(\n parentInstance._nativeTag,\n [],\n [],\n [\"number\" === typeof child ? child : child._nativeTag],\n [index],\n []\n ));\n }\n else\n isContainer\n ? ((parentInstance = node.stateNode),\n UIManager.setChildren(parent, [\n \"number\" === typeof parentInstance\n ? parentInstance\n : parentInstance._nativeTag\n ]))\n : ((parentInstance = parent),\n (child = node.stateNode),\n (children = \"number\" === typeof child ? child : child._nativeTag),\n (index = parentInstance._children),\n (beforeChild = index.indexOf(child)),\n 0 <= beforeChild\n ? (index.splice(beforeChild, 1),\n index.push(child),\n UIManager.manageChildren(\n parentInstance._nativeTag,\n [beforeChild],\n [index.length - 1],\n [],\n [],\n []\n ))\n : (index.push(child),\n UIManager.manageChildren(\n parentInstance._nativeTag,\n [],\n [],\n [children],\n [index.length - 1],\n []\n )));\n else if (4 !== node.tag && null !== node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n if (node === finishedWork) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === finishedWork) return;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n}\nfunction unmountHostComponents(current$$1) {\n for (\n var node = current$$1,\n currentParentIsValid = !1,\n currentParent = void 0,\n currentParentIsContainer = void 0;\n ;\n\n ) {\n if (!currentParentIsValid) {\n currentParentIsValid = node.return;\n a: for (;;) {\n invariant(\n null !== currentParentIsValid,\n \"Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.\"\n );\n switch (currentParentIsValid.tag) {\n case 5:\n currentParent = currentParentIsValid.stateNode;\n currentParentIsContainer = !1;\n break a;\n case 3:\n currentParent = currentParentIsValid.stateNode.containerInfo;\n currentParentIsContainer = !0;\n break a;\n case 4:\n currentParent = currentParentIsValid.stateNode.containerInfo;\n currentParentIsContainer = !0;\n break a;\n }\n currentParentIsValid = currentParentIsValid.return;\n }\n currentParentIsValid = !0;\n }\n if (5 === node.tag || 6 === node.tag) {\n a: for (var root = node, node$jscomp$0 = root; ; )\n if (\n (commitUnmount(node$jscomp$0),\n null !== node$jscomp$0.child && 4 !== node$jscomp$0.tag)\n )\n (node$jscomp$0.child.return = node$jscomp$0),\n (node$jscomp$0 = node$jscomp$0.child);\n else {\n if (node$jscomp$0 === root) break;\n for (; null === node$jscomp$0.sibling; ) {\n if (null === node$jscomp$0.return || node$jscomp$0.return === root)\n break a;\n node$jscomp$0 = node$jscomp$0.return;\n }\n node$jscomp$0.sibling.return = node$jscomp$0.return;\n node$jscomp$0 = node$jscomp$0.sibling;\n }\n if (currentParentIsContainer)\n (root = currentParent),\n recursivelyUncacheFiberNode(node.stateNode),\n UIManager.manageChildren(root, [], [], [], [], [0]);\n else {\n root = currentParent;\n var child = node.stateNode;\n recursivelyUncacheFiberNode(child);\n node$jscomp$0 = root._children;\n child = node$jscomp$0.indexOf(child);\n node$jscomp$0.splice(child, 1);\n UIManager.manageChildren(root._nativeTag, [], [], [], [], [child]);\n }\n } else if (\n (4 === node.tag\n ? ((currentParent = node.stateNode.containerInfo),\n (currentParentIsContainer = !0))\n : commitUnmount(node),\n null !== node.child)\n ) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n if (node === current$$1) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === current$$1) return;\n node = node.return;\n 4 === node.tag && (currentParentIsValid = !1);\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n}\nfunction commitWork(current$$1, finishedWork) {\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n break;\n case 1:\n break;\n case 5:\n var instance = finishedWork.stateNode;\n if (null != instance) {\n var newProps = finishedWork.memoizedProps;\n current$$1 = null !== current$$1 ? current$$1.memoizedProps : newProps;\n var updatePayload = finishedWork.updateQueue;\n finishedWork.updateQueue = null;\n null !== updatePayload &&\n ((finishedWork = instance.viewConfig),\n (instanceProps[instance._nativeTag] = newProps),\n (newProps = diffProperties(\n null,\n current$$1,\n newProps,\n finishedWork.validAttributes\n )),\n null != newProps &&\n UIManager.updateView(\n instance._nativeTag,\n finishedWork.uiViewClassName,\n newProps\n ));\n }\n break;\n case 6:\n invariant(\n null !== finishedWork.stateNode,\n \"This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue.\"\n );\n UIManager.updateView(finishedWork.stateNode, \"RCTRawText\", {\n text: finishedWork.memoizedProps\n });\n break;\n case 3:\n break;\n case 12:\n break;\n case 13:\n newProps = finishedWork.memoizedState;\n current$$1 = finishedWork;\n null === newProps\n ? (instance = !1)\n : ((instance = !0),\n (current$$1 = finishedWork.child),\n 0 === newProps.timedOutAt &&\n (newProps.timedOutAt = requestCurrentTime()));\n if (null !== current$$1)\n a: for (newProps = finishedWork = current$$1; ; ) {\n if (5 === newProps.tag)\n if (((current$$1 = newProps.stateNode), instance)) {\n updatePayload = current$$1.viewConfig;\n var updatePayload$jscomp$0 = diffProperties(\n null,\n emptyObject,\n { style: { display: \"none\" } },\n updatePayload.validAttributes\n );\n UIManager.updateView(\n current$$1._nativeTag,\n updatePayload.uiViewClassName,\n updatePayload$jscomp$0\n );\n } else {\n current$$1 = newProps.stateNode;\n updatePayload$jscomp$0 = newProps.memoizedProps;\n updatePayload = current$$1.viewConfig;\n var prevProps = Object.assign({}, updatePayload$jscomp$0, {\n style: [updatePayload$jscomp$0.style, { display: \"none\" }]\n });\n updatePayload$jscomp$0 = diffProperties(\n null,\n prevProps,\n updatePayload$jscomp$0,\n updatePayload.validAttributes\n );\n UIManager.updateView(\n current$$1._nativeTag,\n updatePayload.uiViewClassName,\n updatePayload$jscomp$0\n );\n }\n else {\n if (6 === newProps.tag) throw Error(\"Not yet implemented.\");\n if (13 === newProps.tag && null !== newProps.memoizedState) {\n current$$1 = newProps.child.sibling;\n current$$1.return = newProps;\n newProps = current$$1;\n continue;\n } else if (null !== newProps.child) {\n newProps.child.return = newProps;\n newProps = newProps.child;\n continue;\n }\n }\n if (newProps === finishedWork) break a;\n for (; null === newProps.sibling; ) {\n if (null === newProps.return || newProps.return === finishedWork)\n break a;\n newProps = newProps.return;\n }\n newProps.sibling.return = newProps.return;\n newProps = newProps.sibling;\n }\n break;\n case 17:\n break;\n default:\n invariant(\n !1,\n \"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\"\n );\n }\n}\nfunction createRootErrorUpdate(fiber, errorInfo, expirationTime) {\n expirationTime = createUpdate(expirationTime);\n expirationTime.tag = 3;\n expirationTime.payload = { element: null };\n var error = errorInfo.value;\n expirationTime.callback = function() {\n onUncaughtError(error);\n logError(fiber, errorInfo);\n };\n return expirationTime;\n}\nfunction createClassErrorUpdate(fiber, errorInfo, expirationTime) {\n expirationTime = createUpdate(expirationTime);\n expirationTime.tag = 3;\n var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n if (\"function\" === typeof getDerivedStateFromError) {\n var error$jscomp$0 = errorInfo.value;\n expirationTime.payload = function() {\n return getDerivedStateFromError(error$jscomp$0);\n };\n }\n var inst = fiber.stateNode;\n null !== inst &&\n \"function\" === typeof inst.componentDidCatch &&\n (expirationTime.callback = function() {\n \"function\" !== typeof getDerivedStateFromError &&\n (null === legacyErrorBoundariesThatAlreadyFailed\n ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n : legacyErrorBoundariesThatAlreadyFailed.add(this));\n var error = errorInfo.value,\n stack = errorInfo.stack;\n logError(fiber, errorInfo);\n this.componentDidCatch(error, {\n componentStack: null !== stack ? stack : \"\"\n });\n });\n return expirationTime;\n}\nfunction unwindWork(workInProgress) {\n switch (workInProgress.tag) {\n case 1:\n isContextProvider(workInProgress.type) && popContext(workInProgress);\n var effectTag = workInProgress.effectTag;\n return effectTag & 2048\n ? ((workInProgress.effectTag = (effectTag & -2049) | 64),\n workInProgress)\n : null;\n case 3:\n return (\n popHostContainer(workInProgress),\n popTopLevelContextObject(workInProgress),\n (effectTag = workInProgress.effectTag),\n invariant(\n 0 === (effectTag & 64),\n \"The root failed to unmount after an error. This is likely a bug in React. Please file an issue.\"\n ),\n (workInProgress.effectTag = (effectTag & -2049) | 64),\n workInProgress\n );\n case 5:\n return popHostContext(workInProgress), null;\n case 13:\n return (\n (effectTag = workInProgress.effectTag),\n effectTag & 2048\n ? ((workInProgress.effectTag = (effectTag & -2049) | 64),\n workInProgress)\n : null\n );\n case 4:\n return popHostContainer(workInProgress), null;\n case 10:\n return popProvider(workInProgress), null;\n default:\n return null;\n }\n}\nvar DispatcherWithoutHooks = { readContext: readContext },\n ReactCurrentOwner$2 = ReactSharedInternals.ReactCurrentOwner,\n isWorking = !1,\n nextUnitOfWork = null,\n nextRoot = null,\n nextRenderExpirationTime = 0,\n nextLatestAbsoluteTimeoutMs = -1,\n nextRenderDidError = !1,\n nextEffect = null,\n isCommitting$1 = !1,\n passiveEffectCallbackHandle = null,\n passiveEffectCallback = null,\n legacyErrorBoundariesThatAlreadyFailed = null;\nfunction resetStack() {\n if (null !== nextUnitOfWork)\n for (\n var interruptedWork = nextUnitOfWork.return;\n null !== interruptedWork;\n\n ) {\n var interruptedWork$jscomp$0 = interruptedWork;\n switch (interruptedWork$jscomp$0.tag) {\n case 1:\n var childContextTypes =\n interruptedWork$jscomp$0.type.childContextTypes;\n null !== childContextTypes &&\n void 0 !== childContextTypes &&\n popContext(interruptedWork$jscomp$0);\n break;\n case 3:\n popHostContainer(interruptedWork$jscomp$0);\n popTopLevelContextObject(interruptedWork$jscomp$0);\n break;\n case 5:\n popHostContext(interruptedWork$jscomp$0);\n break;\n case 4:\n popHostContainer(interruptedWork$jscomp$0);\n break;\n case 10:\n popProvider(interruptedWork$jscomp$0);\n }\n interruptedWork = interruptedWork.return;\n }\n nextRoot = null;\n nextRenderExpirationTime = 0;\n nextLatestAbsoluteTimeoutMs = -1;\n nextRenderDidError = !1;\n nextUnitOfWork = null;\n}\nfunction flushPassiveEffects() {\n null !== passiveEffectCallback &&\n (scheduler.unstable_cancelCallback(passiveEffectCallbackHandle),\n passiveEffectCallback());\n}\nfunction completeUnitOfWork(workInProgress) {\n for (;;) {\n var current$$1 = workInProgress.alternate,\n returnFiber = workInProgress.return,\n siblingFiber = workInProgress.sibling;\n if (0 === (workInProgress.effectTag & 1024)) {\n nextUnitOfWork = workInProgress;\n a: {\n var current = current$$1;\n current$$1 = workInProgress;\n var renderExpirationTime = nextRenderExpirationTime,\n newProps = current$$1.pendingProps;\n switch (current$$1.tag) {\n case 2:\n break;\n case 16:\n break;\n case 15:\n case 0:\n break;\n case 1:\n isContextProvider(current$$1.type) && popContext(current$$1);\n break;\n case 3:\n popHostContainer(current$$1);\n popTopLevelContextObject(current$$1);\n newProps = current$$1.stateNode;\n newProps.pendingContext &&\n ((newProps.context = newProps.pendingContext),\n (newProps.pendingContext = null));\n if (null === current || null === current.child)\n current$$1.effectTag &= -3;\n updateHostContainer(current$$1);\n break;\n case 5:\n popHostContext(current$$1);\n renderExpirationTime = requiredContext(\n rootInstanceStackCursor.current\n );\n var type = current$$1.type;\n if (null !== current && null != current$$1.stateNode)\n updateHostComponent$1(\n current,\n current$$1,\n type,\n newProps,\n renderExpirationTime\n ),\n current.ref !== current$$1.ref && (current$$1.effectTag |= 128);\n else if (newProps) {\n current = requiredContext(contextStackCursor$1.current);\n var internalInstanceHandle = current$$1,\n tag = allocateTag(),\n viewConfig = ReactNativeViewConfigRegistry.get(type);\n invariant(\n \"RCTView\" !== type || !current.isInAParentText,\n \"Nesting of within is not currently supported.\"\n );\n var updatePayload = diffProperties(\n null,\n emptyObject,\n newProps,\n viewConfig.validAttributes\n );\n UIManager.createView(\n tag,\n viewConfig.uiViewClassName,\n renderExpirationTime,\n updatePayload\n );\n viewConfig = new ReactNativeFiberHostComponent(tag, viewConfig);\n instanceCache[tag] = internalInstanceHandle;\n instanceProps[tag] = newProps;\n appendAllChildren(viewConfig, current$$1, !1, !1);\n finalizeInitialChildren(\n viewConfig,\n type,\n newProps,\n renderExpirationTime,\n current\n ) && (current$$1.effectTag |= 4);\n current$$1.stateNode = viewConfig;\n null !== current$$1.ref && (current$$1.effectTag |= 128);\n } else\n invariant(\n null !== current$$1.stateNode,\n \"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.\"\n );\n break;\n case 6:\n current && null != current$$1.stateNode\n ? updateHostText$1(\n current,\n current$$1,\n current.memoizedProps,\n newProps\n )\n : (\"string\" !== typeof newProps &&\n invariant(\n null !== current$$1.stateNode,\n \"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.\"\n ),\n (current = requiredContext(rootInstanceStackCursor.current)),\n (type = requiredContext(contextStackCursor$1.current)),\n (renderExpirationTime = current$$1),\n invariant(\n type.isInAParentText,\n \"Text strings must be rendered within a component.\"\n ),\n (type = allocateTag()),\n UIManager.createView(type, \"RCTRawText\", current, {\n text: newProps\n }),\n (instanceCache[type] = current$$1),\n (renderExpirationTime.stateNode = type));\n break;\n case 11:\n break;\n case 13:\n newProps = current$$1.memoizedState;\n if (0 !== (current$$1.effectTag & 64)) {\n current$$1.expirationTime = renderExpirationTime;\n nextUnitOfWork = current$$1;\n break a;\n }\n newProps = null !== newProps;\n renderExpirationTime =\n null !== current && null !== current.memoizedState;\n null !== current &&\n !newProps &&\n renderExpirationTime &&\n ((type = current.child.sibling),\n null !== type &&\n ((current = current$$1.firstEffect),\n null !== current\n ? ((current$$1.firstEffect = type),\n (type.nextEffect = current))\n : ((current$$1.firstEffect = current$$1.lastEffect = type),\n (type.nextEffect = null)),\n (type.effectTag = 8)));\n if (\n newProps !== renderExpirationTime ||\n (0 === (current$$1.effectTag & 1) && newProps)\n )\n current$$1.effectTag |= 4;\n break;\n case 7:\n break;\n case 8:\n break;\n case 12:\n break;\n case 4:\n popHostContainer(current$$1);\n updateHostContainer(current$$1);\n break;\n case 10:\n popProvider(current$$1);\n break;\n case 9:\n break;\n case 14:\n break;\n case 17:\n isContextProvider(current$$1.type) && popContext(current$$1);\n break;\n default:\n invariant(\n !1,\n \"Unknown unit of work tag. This error is likely caused by a bug in React. Please file an issue.\"\n );\n }\n nextUnitOfWork = null;\n }\n current$$1 = workInProgress;\n if (\n 1 === nextRenderExpirationTime ||\n 1 !== current$$1.childExpirationTime\n ) {\n newProps = 0;\n for (\n renderExpirationTime = current$$1.child;\n null !== renderExpirationTime;\n\n )\n (type = renderExpirationTime.expirationTime),\n (current = renderExpirationTime.childExpirationTime),\n type > newProps && (newProps = type),\n current > newProps && (newProps = current),\n (renderExpirationTime = renderExpirationTime.sibling);\n current$$1.childExpirationTime = newProps;\n }\n if (null !== nextUnitOfWork) return nextUnitOfWork;\n null !== returnFiber &&\n 0 === (returnFiber.effectTag & 1024) &&\n (null === returnFiber.firstEffect &&\n (returnFiber.firstEffect = workInProgress.firstEffect),\n null !== workInProgress.lastEffect &&\n (null !== returnFiber.lastEffect &&\n (returnFiber.lastEffect.nextEffect = workInProgress.firstEffect),\n (returnFiber.lastEffect = workInProgress.lastEffect)),\n 1 < workInProgress.effectTag &&\n (null !== returnFiber.lastEffect\n ? (returnFiber.lastEffect.nextEffect = workInProgress)\n : (returnFiber.firstEffect = workInProgress),\n (returnFiber.lastEffect = workInProgress)));\n } else {\n workInProgress = unwindWork(workInProgress, nextRenderExpirationTime);\n if (null !== workInProgress)\n return (workInProgress.effectTag &= 1023), workInProgress;\n null !== returnFiber &&\n ((returnFiber.firstEffect = returnFiber.lastEffect = null),\n (returnFiber.effectTag |= 1024));\n }\n if (null !== siblingFiber) return siblingFiber;\n if (null !== returnFiber) workInProgress = returnFiber;\n else break;\n }\n return null;\n}\nfunction performUnitOfWork(workInProgress) {\n var next = beginWork(\n workInProgress.alternate,\n workInProgress,\n nextRenderExpirationTime\n );\n workInProgress.memoizedProps = workInProgress.pendingProps;\n null === next && (next = completeUnitOfWork(workInProgress));\n ReactCurrentOwner$2.current = null;\n return next;\n}\nfunction renderRoot(root$jscomp$0, isYieldy) {\n invariant(\n !isWorking,\n \"renderRoot was called recursively. This error is likely caused by a bug in React. Please file an issue.\"\n );\n flushPassiveEffects();\n isWorking = !0;\n ReactCurrentOwner$2.currentDispatcher = DispatcherWithoutHooks;\n var expirationTime = root$jscomp$0.nextExpirationTimeToWorkOn;\n if (\n expirationTime !== nextRenderExpirationTime ||\n root$jscomp$0 !== nextRoot ||\n null === nextUnitOfWork\n )\n resetStack(),\n (nextRoot = root$jscomp$0),\n (nextRenderExpirationTime = expirationTime),\n (nextUnitOfWork = createWorkInProgress(\n nextRoot.current,\n null,\n nextRenderExpirationTime\n )),\n (root$jscomp$0.pendingCommitExpirationTime = 0);\n var didFatal = !1;\n do {\n try {\n if (isYieldy)\n for (; null !== nextUnitOfWork && !shouldYieldToRenderer(); )\n nextUnitOfWork = performUnitOfWork(nextUnitOfWork);\n else\n for (; null !== nextUnitOfWork; )\n nextUnitOfWork = performUnitOfWork(nextUnitOfWork);\n } catch (thrownValue) {\n if (\n ((lastContextWithAllBitsObserved = lastContextDependency = currentlyRenderingFiber = null),\n null === nextUnitOfWork)\n )\n (didFatal = !0), onUncaughtError(thrownValue);\n else {\n invariant(\n null !== nextUnitOfWork,\n \"Failed to replay rendering after an error. This is likely caused by a bug in React. Please file an issue with a reproducing case to help us find it.\"\n );\n var sourceFiber = nextUnitOfWork,\n returnFiber = sourceFiber.return;\n if (null === returnFiber) (didFatal = !0), onUncaughtError(thrownValue);\n else {\n a: {\n var root = root$jscomp$0,\n returnFiber$jscomp$0 = returnFiber,\n sourceFiber$jscomp$0 = sourceFiber,\n value = thrownValue;\n returnFiber = nextRenderExpirationTime;\n sourceFiber$jscomp$0.effectTag |= 1024;\n sourceFiber$jscomp$0.firstEffect = sourceFiber$jscomp$0.lastEffect = null;\n if (\n null !== value &&\n \"object\" === typeof value &&\n \"function\" === typeof value.then\n ) {\n var thenable = value;\n value = returnFiber$jscomp$0;\n var earliestTimeoutMs = -1,\n startTimeMs = -1;\n do {\n if (13 === value.tag) {\n var current$$1 = value.alternate;\n if (\n null !== current$$1 &&\n ((current$$1 = current$$1.memoizedState),\n null !== current$$1)\n ) {\n startTimeMs = 10 * (1073741822 - current$$1.timedOutAt);\n break;\n }\n current$$1 = value.pendingProps.maxDuration;\n if (\"number\" === typeof current$$1)\n if (0 >= current$$1) earliestTimeoutMs = 0;\n else if (\n -1 === earliestTimeoutMs ||\n current$$1 < earliestTimeoutMs\n )\n earliestTimeoutMs = current$$1;\n }\n value = value.return;\n } while (null !== value);\n value = returnFiber$jscomp$0;\n do {\n if ((current$$1 = 13 === value.tag))\n current$$1 =\n void 0 === value.memoizedProps.fallback\n ? !1\n : null === value.memoizedState;\n if (current$$1) {\n returnFiber$jscomp$0 = retrySuspendedRoot.bind(\n null,\n root,\n value,\n sourceFiber$jscomp$0,\n 0 === (value.mode & 1) ? 1073741823 : returnFiber\n );\n thenable.then(returnFiber$jscomp$0, returnFiber$jscomp$0);\n if (0 === (value.mode & 1)) {\n value.effectTag |= 64;\n sourceFiber$jscomp$0.effectTag &= -1957;\n 1 === sourceFiber$jscomp$0.tag &&\n null === sourceFiber$jscomp$0.alternate &&\n (sourceFiber$jscomp$0.tag = 17);\n sourceFiber$jscomp$0.expirationTime = returnFiber;\n break a;\n }\n -1 === earliestTimeoutMs\n ? (root = 1073741823)\n : (-1 === startTimeMs &&\n (startTimeMs =\n 10 *\n (1073741822 -\n findEarliestOutstandingPriorityLevel(\n root,\n returnFiber\n )) -\n 5e3),\n (root = startTimeMs + earliestTimeoutMs));\n 0 <= root &&\n nextLatestAbsoluteTimeoutMs < root &&\n (nextLatestAbsoluteTimeoutMs = root);\n value.effectTag |= 2048;\n value.expirationTime = returnFiber;\n break a;\n }\n value = value.return;\n } while (null !== value);\n value = Error(\n (getComponentName(sourceFiber$jscomp$0.type) ||\n \"A React component\") +\n \" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a component higher in the tree to provide a loading indicator or placeholder to display.\" +\n getStackByFiberInDevAndProd(sourceFiber$jscomp$0)\n );\n }\n nextRenderDidError = !0;\n value = createCapturedValue(value, sourceFiber$jscomp$0);\n root = returnFiber$jscomp$0;\n do {\n switch (root.tag) {\n case 3:\n sourceFiber$jscomp$0 = value;\n root.effectTag |= 2048;\n root.expirationTime = returnFiber;\n returnFiber = createRootErrorUpdate(\n root,\n sourceFiber$jscomp$0,\n returnFiber\n );\n enqueueCapturedUpdate(root, returnFiber);\n break a;\n case 1:\n if (\n ((sourceFiber$jscomp$0 = value),\n (returnFiber$jscomp$0 = root.type),\n (thenable = root.stateNode),\n 0 === (root.effectTag & 64) &&\n (\"function\" ===\n typeof returnFiber$jscomp$0.getDerivedStateFromError ||\n (null !== thenable &&\n \"function\" === typeof thenable.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(\n thenable\n )))))\n ) {\n root.effectTag |= 2048;\n root.expirationTime = returnFiber;\n returnFiber = createClassErrorUpdate(\n root,\n sourceFiber$jscomp$0,\n returnFiber\n );\n enqueueCapturedUpdate(root, returnFiber);\n break a;\n }\n }\n root = root.return;\n } while (null !== root);\n }\n nextUnitOfWork = completeUnitOfWork(sourceFiber);\n continue;\n }\n }\n }\n break;\n } while (1);\n isWorking = !1;\n lastContextWithAllBitsObserved = lastContextDependency = currentlyRenderingFiber = ReactCurrentOwner$2.currentDispatcher = null;\n if (didFatal) (nextRoot = null), (root$jscomp$0.finishedWork = null);\n else if (null !== nextUnitOfWork) root$jscomp$0.finishedWork = null;\n else {\n didFatal = root$jscomp$0.current.alternate;\n invariant(\n null !== didFatal,\n \"Finished root should have a work-in-progress. This error is likely caused by a bug in React. Please file an issue.\"\n );\n nextRoot = null;\n if (nextRenderDidError) {\n sourceFiber = root$jscomp$0.latestPendingTime;\n returnFiber = root$jscomp$0.latestSuspendedTime;\n root = root$jscomp$0.latestPingedTime;\n if (\n (0 !== sourceFiber && sourceFiber < expirationTime) ||\n (0 !== returnFiber && returnFiber < expirationTime) ||\n (0 !== root && root < expirationTime)\n ) {\n markSuspendedPriorityLevel(root$jscomp$0, expirationTime);\n onSuspend(\n root$jscomp$0,\n didFatal,\n expirationTime,\n root$jscomp$0.expirationTime,\n -1\n );\n return;\n }\n if (!root$jscomp$0.didError && isYieldy) {\n root$jscomp$0.didError = !0;\n expirationTime = root$jscomp$0.nextExpirationTimeToWorkOn = expirationTime;\n isYieldy = root$jscomp$0.expirationTime = 1073741823;\n onSuspend(root$jscomp$0, didFatal, expirationTime, isYieldy, -1);\n return;\n }\n }\n isYieldy && -1 !== nextLatestAbsoluteTimeoutMs\n ? (markSuspendedPriorityLevel(root$jscomp$0, expirationTime),\n (isYieldy =\n 10 *\n (1073741822 -\n findEarliestOutstandingPriorityLevel(\n root$jscomp$0,\n expirationTime\n ))),\n isYieldy < nextLatestAbsoluteTimeoutMs &&\n (nextLatestAbsoluteTimeoutMs = isYieldy),\n (isYieldy = 10 * (1073741822 - requestCurrentTime())),\n (isYieldy = nextLatestAbsoluteTimeoutMs - isYieldy),\n onSuspend(\n root$jscomp$0,\n didFatal,\n expirationTime,\n root$jscomp$0.expirationTime,\n 0 > isYieldy ? 0 : isYieldy\n ))\n : ((root$jscomp$0.pendingCommitExpirationTime = expirationTime),\n (root$jscomp$0.finishedWork = didFatal));\n }\n}\nfunction captureCommitPhaseError(sourceFiber, value) {\n for (var fiber = sourceFiber.return; null !== fiber; ) {\n switch (fiber.tag) {\n case 1:\n var instance = fiber.stateNode;\n if (\n \"function\" === typeof fiber.type.getDerivedStateFromError ||\n (\"function\" === typeof instance.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n ) {\n sourceFiber = createCapturedValue(value, sourceFiber);\n sourceFiber = createClassErrorUpdate(fiber, sourceFiber, 1073741823);\n enqueueUpdate(fiber, sourceFiber);\n scheduleWork(fiber, 1073741823);\n return;\n }\n break;\n case 3:\n sourceFiber = createCapturedValue(value, sourceFiber);\n sourceFiber = createRootErrorUpdate(fiber, sourceFiber, 1073741823);\n enqueueUpdate(fiber, sourceFiber);\n scheduleWork(fiber, 1073741823);\n return;\n }\n fiber = fiber.return;\n }\n 3 === sourceFiber.tag &&\n ((fiber = createCapturedValue(value, sourceFiber)),\n (fiber = createRootErrorUpdate(sourceFiber, fiber, 1073741823)),\n enqueueUpdate(sourceFiber, fiber),\n scheduleWork(sourceFiber, 1073741823));\n}\nfunction computeExpirationForFiber(currentTime, fiber) {\n isWorking\n ? (currentTime = isCommitting$1 ? 1073741823 : nextRenderExpirationTime)\n : fiber.mode & 1\n ? ((currentTime = isBatchingInteractiveUpdates\n ? 1073741822 - 10 * ((((1073741822 - currentTime + 15) / 10) | 0) + 1)\n : 1073741822 -\n 25 * ((((1073741822 - currentTime + 500) / 25) | 0) + 1)),\n null !== nextRoot &&\n currentTime === nextRenderExpirationTime &&\n --currentTime)\n : (currentTime = 1073741823);\n isBatchingInteractiveUpdates &&\n (0 === lowestPriorityPendingInteractiveExpirationTime ||\n currentTime < lowestPriorityPendingInteractiveExpirationTime) &&\n (lowestPriorityPendingInteractiveExpirationTime = currentTime);\n return currentTime;\n}\nfunction retrySuspendedRoot(root, boundaryFiber, sourceFiber, suspendedTime) {\n var retryTime = root.earliestSuspendedTime;\n var latestSuspendedTime = root.latestSuspendedTime;\n if (\n 0 !== retryTime &&\n suspendedTime <= retryTime &&\n suspendedTime >= latestSuspendedTime\n ) {\n latestSuspendedTime = retryTime = suspendedTime;\n root.didError = !1;\n var latestPingedTime = root.latestPingedTime;\n if (0 === latestPingedTime || latestPingedTime > latestSuspendedTime)\n root.latestPingedTime = latestSuspendedTime;\n findNextExpirationTimeToWorkOn(latestSuspendedTime, root);\n } else\n (retryTime = requestCurrentTime()),\n (retryTime = computeExpirationForFiber(retryTime, boundaryFiber)),\n markPendingPriorityLevel(root, retryTime);\n 0 !== (boundaryFiber.mode & 1) &&\n root === nextRoot &&\n nextRenderExpirationTime === suspendedTime &&\n (nextRoot = null);\n scheduleWorkToRoot(boundaryFiber, retryTime);\n 0 === (boundaryFiber.mode & 1) &&\n (scheduleWorkToRoot(sourceFiber, retryTime),\n 1 === sourceFiber.tag &&\n null !== sourceFiber.stateNode &&\n ((boundaryFiber = createUpdate(retryTime)),\n (boundaryFiber.tag = 2),\n enqueueUpdate(sourceFiber, boundaryFiber)));\n sourceFiber = root.expirationTime;\n 0 !== sourceFiber && requestWork(root, sourceFiber);\n}\nfunction scheduleWorkToRoot(fiber, expirationTime) {\n fiber.expirationTime < expirationTime &&\n (fiber.expirationTime = expirationTime);\n var alternate = fiber.alternate;\n null !== alternate &&\n alternate.expirationTime < expirationTime &&\n (alternate.expirationTime = expirationTime);\n var node = fiber.return,\n root = null;\n if (null === node && 3 === fiber.tag) root = fiber.stateNode;\n else\n for (; null !== node; ) {\n alternate = node.alternate;\n node.childExpirationTime < expirationTime &&\n (node.childExpirationTime = expirationTime);\n null !== alternate &&\n alternate.childExpirationTime < expirationTime &&\n (alternate.childExpirationTime = expirationTime);\n if (null === node.return && 3 === node.tag) {\n root = node.stateNode;\n break;\n }\n node = node.return;\n }\n return root;\n}\nfunction scheduleWork(fiber, expirationTime) {\n fiber = scheduleWorkToRoot(fiber, expirationTime);\n null !== fiber &&\n (!isWorking &&\n 0 !== nextRenderExpirationTime &&\n expirationTime > nextRenderExpirationTime &&\n resetStack(),\n markPendingPriorityLevel(fiber, expirationTime),\n (isWorking && !isCommitting$1 && nextRoot === fiber) ||\n requestWork(fiber, fiber.expirationTime),\n nestedUpdateCount > NESTED_UPDATE_LIMIT &&\n ((nestedUpdateCount = 0),\n invariant(\n !1,\n \"Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.\"\n )));\n}\nvar firstScheduledRoot = null,\n lastScheduledRoot = null,\n callbackExpirationTime = 0,\n callbackID = void 0,\n isRendering = !1,\n nextFlushedRoot = null,\n nextFlushedExpirationTime = 0,\n lowestPriorityPendingInteractiveExpirationTime = 0,\n hasUnhandledError = !1,\n unhandledError = null,\n isBatchingUpdates = !1,\n isUnbatchingUpdates = !1,\n isBatchingInteractiveUpdates = !1,\n completedBatches = null,\n originalStartTimeMs = now$1(),\n currentRendererTime = 1073741822 - ((originalStartTimeMs / 10) | 0),\n currentSchedulerTime = currentRendererTime,\n NESTED_UPDATE_LIMIT = 50,\n nestedUpdateCount = 0,\n lastCommittedRootDuringThisBatch = null;\nfunction recomputeCurrentRendererTime() {\n currentRendererTime =\n 1073741822 - (((now$1() - originalStartTimeMs) / 10) | 0);\n}\nfunction scheduleCallbackWithExpirationTime(root, expirationTime) {\n if (0 !== callbackExpirationTime) {\n if (expirationTime < callbackExpirationTime) return;\n null !== callbackID &&\n ((root = callbackID), (scheduledCallback = null), clearTimeout(root));\n }\n callbackExpirationTime = expirationTime;\n now$1();\n scheduledCallback = performAsyncWork;\n callbackID = setTimeout(setTimeoutCallback, 1);\n}\nfunction onSuspend(\n root,\n finishedWork,\n suspendedExpirationTime,\n rootExpirationTime,\n msUntilTimeout\n) {\n root.expirationTime = rootExpirationTime;\n 0 !== msUntilTimeout || shouldYieldToRenderer()\n ? 0 < msUntilTimeout &&\n (root.timeoutHandle = scheduleTimeout(\n onTimeout.bind(null, root, finishedWork, suspendedExpirationTime),\n msUntilTimeout\n ))\n : ((root.pendingCommitExpirationTime = suspendedExpirationTime),\n (root.finishedWork = finishedWork));\n}\nfunction onTimeout(root, finishedWork, suspendedExpirationTime) {\n root.pendingCommitExpirationTime = suspendedExpirationTime;\n root.finishedWork = finishedWork;\n recomputeCurrentRendererTime();\n currentSchedulerTime = currentRendererTime;\n invariant(\n !isRendering,\n \"work.commit(): Cannot commit while already rendering. This likely means you attempted to commit from inside a lifecycle method.\"\n );\n nextFlushedRoot = root;\n nextFlushedExpirationTime = suspendedExpirationTime;\n performWorkOnRoot(root, suspendedExpirationTime, !1);\n performWork(1073741823, !1);\n}\nfunction requestCurrentTime() {\n if (isRendering) return currentSchedulerTime;\n findHighestPriorityRoot();\n if (0 === nextFlushedExpirationTime || 1 === nextFlushedExpirationTime)\n recomputeCurrentRendererTime(),\n (currentSchedulerTime = currentRendererTime);\n return currentSchedulerTime;\n}\nfunction requestWork(root, expirationTime) {\n null === root.nextScheduledRoot\n ? ((root.expirationTime = expirationTime),\n null === lastScheduledRoot\n ? ((firstScheduledRoot = lastScheduledRoot = root),\n (root.nextScheduledRoot = root))\n : ((lastScheduledRoot = lastScheduledRoot.nextScheduledRoot = root),\n (lastScheduledRoot.nextScheduledRoot = firstScheduledRoot)))\n : expirationTime > root.expirationTime &&\n (root.expirationTime = expirationTime);\n isRendering ||\n (isBatchingUpdates\n ? isUnbatchingUpdates &&\n ((nextFlushedRoot = root),\n (nextFlushedExpirationTime = 1073741823),\n performWorkOnRoot(root, 1073741823, !1))\n : 1073741823 === expirationTime\n ? performWork(1073741823, !1)\n : scheduleCallbackWithExpirationTime(root, expirationTime));\n}\nfunction findHighestPriorityRoot() {\n var highestPriorityWork = 0,\n highestPriorityRoot = null;\n if (null !== lastScheduledRoot)\n for (\n var previousScheduledRoot = lastScheduledRoot, root = firstScheduledRoot;\n null !== root;\n\n ) {\n var remainingExpirationTime = root.expirationTime;\n if (0 === remainingExpirationTime) {\n invariant(\n null !== previousScheduledRoot && null !== lastScheduledRoot,\n \"Should have a previous and last root. This error is likely caused by a bug in React. Please file an issue.\"\n );\n if (root === root.nextScheduledRoot) {\n firstScheduledRoot = lastScheduledRoot = root.nextScheduledRoot = null;\n break;\n } else if (root === firstScheduledRoot)\n (firstScheduledRoot = remainingExpirationTime =\n root.nextScheduledRoot),\n (lastScheduledRoot.nextScheduledRoot = remainingExpirationTime),\n (root.nextScheduledRoot = null);\n else if (root === lastScheduledRoot) {\n lastScheduledRoot = previousScheduledRoot;\n lastScheduledRoot.nextScheduledRoot = firstScheduledRoot;\n root.nextScheduledRoot = null;\n break;\n } else\n (previousScheduledRoot.nextScheduledRoot = root.nextScheduledRoot),\n (root.nextScheduledRoot = null);\n root = previousScheduledRoot.nextScheduledRoot;\n } else {\n remainingExpirationTime > highestPriorityWork &&\n ((highestPriorityWork = remainingExpirationTime),\n (highestPriorityRoot = root));\n if (root === lastScheduledRoot) break;\n if (1073741823 === highestPriorityWork) break;\n previousScheduledRoot = root;\n root = root.nextScheduledRoot;\n }\n }\n nextFlushedRoot = highestPriorityRoot;\n nextFlushedExpirationTime = highestPriorityWork;\n}\nvar didYield = !1;\nfunction shouldYieldToRenderer() {\n return didYield ? !0 : frameDeadline <= now$1() ? (didYield = !0) : !1;\n}\nfunction performAsyncWork() {\n try {\n if (!shouldYieldToRenderer() && null !== firstScheduledRoot) {\n recomputeCurrentRendererTime();\n var root = firstScheduledRoot;\n do {\n var expirationTime = root.expirationTime;\n 0 !== expirationTime &&\n currentRendererTime <= expirationTime &&\n (root.nextExpirationTimeToWorkOn = currentRendererTime);\n root = root.nextScheduledRoot;\n } while (root !== firstScheduledRoot);\n }\n performWork(0, !0);\n } finally {\n didYield = !1;\n }\n}\nfunction performWork(minExpirationTime, isYieldy) {\n findHighestPriorityRoot();\n if (isYieldy)\n for (\n recomputeCurrentRendererTime(),\n currentSchedulerTime = currentRendererTime;\n null !== nextFlushedRoot &&\n 0 !== nextFlushedExpirationTime &&\n minExpirationTime <= nextFlushedExpirationTime &&\n !(didYield && currentRendererTime > nextFlushedExpirationTime);\n\n )\n performWorkOnRoot(\n nextFlushedRoot,\n nextFlushedExpirationTime,\n currentRendererTime > nextFlushedExpirationTime\n ),\n findHighestPriorityRoot(),\n recomputeCurrentRendererTime(),\n (currentSchedulerTime = currentRendererTime);\n else\n for (\n ;\n null !== nextFlushedRoot &&\n 0 !== nextFlushedExpirationTime &&\n minExpirationTime <= nextFlushedExpirationTime;\n\n )\n performWorkOnRoot(nextFlushedRoot, nextFlushedExpirationTime, !1),\n findHighestPriorityRoot();\n isYieldy && ((callbackExpirationTime = 0), (callbackID = null));\n 0 !== nextFlushedExpirationTime &&\n scheduleCallbackWithExpirationTime(\n nextFlushedRoot,\n nextFlushedExpirationTime\n );\n nestedUpdateCount = 0;\n lastCommittedRootDuringThisBatch = null;\n if (null !== completedBatches)\n for (\n minExpirationTime = completedBatches,\n completedBatches = null,\n isYieldy = 0;\n isYieldy < minExpirationTime.length;\n isYieldy++\n ) {\n var batch = minExpirationTime[isYieldy];\n try {\n batch._onComplete();\n } catch (error) {\n hasUnhandledError ||\n ((hasUnhandledError = !0), (unhandledError = error));\n }\n }\n if (hasUnhandledError)\n throw ((minExpirationTime = unhandledError),\n (unhandledError = null),\n (hasUnhandledError = !1),\n minExpirationTime);\n}\nfunction performWorkOnRoot(root, expirationTime, isYieldy) {\n invariant(\n !isRendering,\n \"performWorkOnRoot was called recursively. This error is likely caused by a bug in React. Please file an issue.\"\n );\n isRendering = !0;\n if (isYieldy) {\n var _finishedWork = root.finishedWork;\n null !== _finishedWork\n ? completeRoot(root, _finishedWork, expirationTime)\n : ((root.finishedWork = null),\n (_finishedWork = root.timeoutHandle),\n -1 !== _finishedWork &&\n ((root.timeoutHandle = -1), cancelTimeout(_finishedWork)),\n renderRoot(root, isYieldy),\n (_finishedWork = root.finishedWork),\n null !== _finishedWork &&\n (shouldYieldToRenderer()\n ? (root.finishedWork = _finishedWork)\n : completeRoot(root, _finishedWork, expirationTime)));\n } else\n (_finishedWork = root.finishedWork),\n null !== _finishedWork\n ? completeRoot(root, _finishedWork, expirationTime)\n : ((root.finishedWork = null),\n (_finishedWork = root.timeoutHandle),\n -1 !== _finishedWork &&\n ((root.timeoutHandle = -1), cancelTimeout(_finishedWork)),\n renderRoot(root, isYieldy),\n (_finishedWork = root.finishedWork),\n null !== _finishedWork &&\n completeRoot(root, _finishedWork, expirationTime));\n isRendering = !1;\n}\nfunction completeRoot(root, finishedWork$jscomp$0, expirationTime) {\n var firstBatch = root.firstBatch;\n if (\n null !== firstBatch &&\n firstBatch._expirationTime >= expirationTime &&\n (null === completedBatches\n ? (completedBatches = [firstBatch])\n : completedBatches.push(firstBatch),\n firstBatch._defer)\n ) {\n root.finishedWork = finishedWork$jscomp$0;\n root.expirationTime = 0;\n return;\n }\n root.finishedWork = null;\n root === lastCommittedRootDuringThisBatch\n ? nestedUpdateCount++\n : ((lastCommittedRootDuringThisBatch = root), (nestedUpdateCount = 0));\n isCommitting$1 = isWorking = !0;\n invariant(\n root.current !== finishedWork$jscomp$0,\n \"Cannot commit the same tree as before. This is probably a bug related to the return field. This error is likely caused by a bug in React. Please file an issue.\"\n );\n expirationTime = root.pendingCommitExpirationTime;\n invariant(\n 0 !== expirationTime,\n \"Cannot commit an incomplete root. This error is likely caused by a bug in React. Please file an issue.\"\n );\n root.pendingCommitExpirationTime = 0;\n firstBatch = finishedWork$jscomp$0.expirationTime;\n var childExpirationTimeBeforeCommit =\n finishedWork$jscomp$0.childExpirationTime;\n firstBatch =\n childExpirationTimeBeforeCommit > firstBatch\n ? childExpirationTimeBeforeCommit\n : firstBatch;\n root.didError = !1;\n 0 === firstBatch\n ? ((root.earliestPendingTime = 0),\n (root.latestPendingTime = 0),\n (root.earliestSuspendedTime = 0),\n (root.latestSuspendedTime = 0),\n (root.latestPingedTime = 0))\n : ((childExpirationTimeBeforeCommit = root.latestPendingTime),\n 0 !== childExpirationTimeBeforeCommit &&\n (childExpirationTimeBeforeCommit > firstBatch\n ? (root.earliestPendingTime = root.latestPendingTime = 0)\n : root.earliestPendingTime > firstBatch &&\n (root.earliestPendingTime = root.latestPendingTime)),\n (childExpirationTimeBeforeCommit = root.earliestSuspendedTime),\n 0 === childExpirationTimeBeforeCommit\n ? markPendingPriorityLevel(root, firstBatch)\n : firstBatch < root.latestSuspendedTime\n ? ((root.earliestSuspendedTime = 0),\n (root.latestSuspendedTime = 0),\n (root.latestPingedTime = 0),\n markPendingPriorityLevel(root, firstBatch))\n : firstBatch > childExpirationTimeBeforeCommit &&\n markPendingPriorityLevel(root, firstBatch));\n findNextExpirationTimeToWorkOn(0, root);\n ReactCurrentOwner$2.current = null;\n 1 < finishedWork$jscomp$0.effectTag\n ? null !== finishedWork$jscomp$0.lastEffect\n ? ((finishedWork$jscomp$0.lastEffect.nextEffect = finishedWork$jscomp$0),\n (firstBatch = finishedWork$jscomp$0.firstEffect))\n : (firstBatch = finishedWork$jscomp$0)\n : (firstBatch = finishedWork$jscomp$0.firstEffect);\n for (nextEffect = firstBatch; null !== nextEffect; ) {\n childExpirationTimeBeforeCommit = !1;\n var error = void 0;\n try {\n for (; null !== nextEffect; ) {\n if (nextEffect.effectTag & 256)\n a: {\n var current$$1 = nextEffect.alternate,\n finishedWork = nextEffect;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n break a;\n case 1:\n if (finishedWork.effectTag & 256 && null !== current$$1) {\n var prevProps = current$$1.memoizedProps,\n prevState = current$$1.memoizedState,\n instance = finishedWork.stateNode,\n snapshot = instance.getSnapshotBeforeUpdate(\n finishedWork.elementType === finishedWork.type\n ? prevProps\n : resolveDefaultProps(finishedWork.type, prevProps),\n prevState\n );\n instance.__reactInternalSnapshotBeforeUpdate = snapshot;\n }\n break a;\n case 3:\n case 5:\n case 6:\n case 4:\n case 17:\n break a;\n default:\n invariant(\n !1,\n \"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\"\n );\n }\n }\n nextEffect = nextEffect.nextEffect;\n }\n } catch (e) {\n (childExpirationTimeBeforeCommit = !0), (error = e);\n }\n childExpirationTimeBeforeCommit &&\n (invariant(\n null !== nextEffect,\n \"Should have next effect. This error is likely caused by a bug in React. Please file an issue.\"\n ),\n captureCommitPhaseError(nextEffect, error),\n null !== nextEffect && (nextEffect = nextEffect.nextEffect));\n }\n for (nextEffect = firstBatch; null !== nextEffect; ) {\n current$$1 = !1;\n prevProps = void 0;\n try {\n for (; null !== nextEffect; ) {\n var effectTag = nextEffect.effectTag;\n if (effectTag & 128) {\n var current$$1$jscomp$0 = nextEffect.alternate;\n if (null !== current$$1$jscomp$0) {\n var currentRef = current$$1$jscomp$0.ref;\n null !== currentRef &&\n (\"function\" === typeof currentRef\n ? currentRef(null)\n : (currentRef.current = null));\n }\n }\n switch (effectTag & 14) {\n case 2:\n commitPlacement(nextEffect);\n nextEffect.effectTag &= -3;\n break;\n case 6:\n commitPlacement(nextEffect);\n nextEffect.effectTag &= -3;\n commitWork(nextEffect.alternate, nextEffect);\n break;\n case 4:\n commitWork(nextEffect.alternate, nextEffect);\n break;\n case 8:\n prevState = nextEffect;\n unmountHostComponents(prevState);\n prevState.return = null;\n prevState.child = null;\n prevState.memoizedState = null;\n prevState.updateQueue = null;\n var alternate = prevState.alternate;\n null !== alternate &&\n ((alternate.return = null),\n (alternate.child = null),\n (alternate.memoizedState = null),\n (alternate.updateQueue = null));\n }\n nextEffect = nextEffect.nextEffect;\n }\n } catch (e) {\n (current$$1 = !0), (prevProps = e);\n }\n current$$1 &&\n (invariant(\n null !== nextEffect,\n \"Should have next effect. This error is likely caused by a bug in React. Please file an issue.\"\n ),\n captureCommitPhaseError(nextEffect, prevProps),\n null !== nextEffect && (nextEffect = nextEffect.nextEffect));\n }\n root.current = finishedWork$jscomp$0;\n for (nextEffect = firstBatch; null !== nextEffect; ) {\n effectTag = !1;\n current$$1$jscomp$0 = void 0;\n try {\n for (currentRef = expirationTime; null !== nextEffect; ) {\n var effectTag$jscomp$0 = nextEffect.effectTag;\n if (effectTag$jscomp$0 & 36) {\n var current$$1$jscomp$1 = nextEffect.alternate;\n alternate = nextEffect;\n current$$1 = currentRef;\n switch (alternate.tag) {\n case 0:\n case 11:\n case 15:\n break;\n case 1:\n var instance$jscomp$0 = alternate.stateNode;\n if (alternate.effectTag & 4)\n if (null === current$$1$jscomp$1)\n instance$jscomp$0.componentDidMount();\n else {\n var prevProps$jscomp$0 =\n alternate.elementType === alternate.type\n ? current$$1$jscomp$1.memoizedProps\n : resolveDefaultProps(\n alternate.type,\n current$$1$jscomp$1.memoizedProps\n );\n instance$jscomp$0.componentDidUpdate(\n prevProps$jscomp$0,\n current$$1$jscomp$1.memoizedState,\n instance$jscomp$0.__reactInternalSnapshotBeforeUpdate\n );\n }\n var updateQueue = alternate.updateQueue;\n null !== updateQueue &&\n commitUpdateQueue(\n alternate,\n updateQueue,\n instance$jscomp$0,\n current$$1\n );\n break;\n case 3:\n var _updateQueue = alternate.updateQueue;\n if (null !== _updateQueue) {\n prevProps = null;\n if (null !== alternate.child)\n switch (alternate.child.tag) {\n case 5:\n prevProps = alternate.child.stateNode;\n break;\n case 1:\n prevProps = alternate.child.stateNode;\n }\n commitUpdateQueue(\n alternate,\n _updateQueue,\n prevProps,\n current$$1\n );\n }\n break;\n case 5:\n break;\n case 6:\n break;\n case 4:\n break;\n case 12:\n break;\n case 13:\n break;\n case 17:\n break;\n default:\n invariant(\n !1,\n \"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\"\n );\n }\n }\n if (effectTag$jscomp$0 & 128) {\n var ref = nextEffect.ref;\n if (null !== ref) {\n var instance$jscomp$1 = nextEffect.stateNode;\n switch (nextEffect.tag) {\n case 5:\n var instanceToUse = instance$jscomp$1;\n break;\n default:\n instanceToUse = instance$jscomp$1;\n }\n \"function\" === typeof ref\n ? ref(instanceToUse)\n : (ref.current = instanceToUse);\n }\n }\n nextEffect = nextEffect.nextEffect;\n }\n } catch (e) {\n (effectTag = !0), (current$$1$jscomp$0 = e);\n }\n effectTag &&\n (invariant(\n null !== nextEffect,\n \"Should have next effect. This error is likely caused by a bug in React. Please file an issue.\"\n ),\n captureCommitPhaseError(nextEffect, current$$1$jscomp$0),\n null !== nextEffect && (nextEffect = nextEffect.nextEffect));\n }\n isWorking = isCommitting$1 = !1;\n \"function\" === typeof onCommitFiberRoot &&\n onCommitFiberRoot(finishedWork$jscomp$0.stateNode);\n effectTag$jscomp$0 = finishedWork$jscomp$0.expirationTime;\n finishedWork$jscomp$0 = finishedWork$jscomp$0.childExpirationTime;\n finishedWork$jscomp$0 =\n finishedWork$jscomp$0 > effectTag$jscomp$0\n ? finishedWork$jscomp$0\n : effectTag$jscomp$0;\n 0 === finishedWork$jscomp$0 &&\n (legacyErrorBoundariesThatAlreadyFailed = null);\n root.expirationTime = finishedWork$jscomp$0;\n root.finishedWork = null;\n}\nfunction onUncaughtError(error) {\n invariant(\n null !== nextFlushedRoot,\n \"Should be working on a root. This error is likely caused by a bug in React. Please file an issue.\"\n );\n nextFlushedRoot.expirationTime = 0;\n hasUnhandledError || ((hasUnhandledError = !0), (unhandledError = error));\n}\nfunction findHostInstance(component) {\n var fiber = component._reactInternalFiber;\n void 0 === fiber &&\n (\"function\" === typeof component.render\n ? invariant(!1, \"Unable to find node on an unmounted component.\")\n : invariant(\n !1,\n \"Argument appears to not be a ReactComponent. Keys: %s\",\n Object.keys(component)\n ));\n component = findCurrentHostFiber(fiber);\n return null === component ? null : component.stateNode;\n}\nfunction updateContainer(element, container, parentComponent, callback) {\n var current$$1 = container.current,\n currentTime = requestCurrentTime();\n current$$1 = computeExpirationForFiber(currentTime, current$$1);\n currentTime = container.current;\n a: if (parentComponent) {\n parentComponent = parentComponent._reactInternalFiber;\n b: {\n invariant(\n 2 === isFiberMountedImpl(parentComponent) && 1 === parentComponent.tag,\n \"Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue.\"\n );\n var parentContext = parentComponent;\n do {\n switch (parentContext.tag) {\n case 3:\n parentContext = parentContext.stateNode.context;\n break b;\n case 1:\n if (isContextProvider(parentContext.type)) {\n parentContext =\n parentContext.stateNode\n .__reactInternalMemoizedMergedChildContext;\n break b;\n }\n }\n parentContext = parentContext.return;\n } while (null !== parentContext);\n invariant(\n !1,\n \"Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue.\"\n );\n parentContext = void 0;\n }\n if (1 === parentComponent.tag) {\n var Component = parentComponent.type;\n if (isContextProvider(Component)) {\n parentComponent = processChildContext(\n parentComponent,\n Component,\n parentContext\n );\n break a;\n }\n }\n parentComponent = parentContext;\n } else parentComponent = emptyContextObject;\n null === container.context\n ? (container.context = parentComponent)\n : (container.pendingContext = parentComponent);\n container = callback;\n callback = createUpdate(current$$1);\n callback.payload = { element: element };\n container = void 0 === container ? null : container;\n null !== container && (callback.callback = container);\n flushPassiveEffects();\n enqueueUpdate(currentTime, callback);\n scheduleWork(currentTime, current$$1);\n return current$$1;\n}\nfunction createPortal(children, containerInfo, implementation) {\n var key =\n 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: null == key ? null : \"\" + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n}\nfunction _inherits(subClass, superClass) {\n if (\"function\" !== typeof superClass && null !== superClass)\n throw new TypeError(\n \"Super expression must either be null or a function, not \" +\n typeof superClass\n );\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n });\n superClass &&\n (Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass));\n}\nvar getInspectorDataForViewTag = void 0;\ngetInspectorDataForViewTag = function() {\n invariant(!1, \"getInspectorDataForViewTag() is not available in production\");\n};\nfunction findNodeHandle(componentOrHandle) {\n if (null == componentOrHandle) return null;\n if (\"number\" === typeof componentOrHandle) return componentOrHandle;\n if (componentOrHandle._nativeTag) return componentOrHandle._nativeTag;\n if (componentOrHandle.canonical && componentOrHandle.canonical._nativeTag)\n return componentOrHandle.canonical._nativeTag;\n componentOrHandle = findHostInstance(componentOrHandle);\n return null == componentOrHandle\n ? componentOrHandle\n : componentOrHandle.canonical\n ? componentOrHandle.canonical._nativeTag\n : componentOrHandle._nativeTag;\n}\n_batchedUpdatesImpl = function(fn, a) {\n var previousIsBatchingUpdates = isBatchingUpdates;\n isBatchingUpdates = !0;\n try {\n return fn(a);\n } finally {\n (isBatchingUpdates = previousIsBatchingUpdates) ||\n isRendering ||\n performWork(1073741823, !1);\n }\n};\n_flushInteractiveUpdatesImpl = function() {\n isRendering ||\n 0 === lowestPriorityPendingInteractiveExpirationTime ||\n (performWork(lowestPriorityPendingInteractiveExpirationTime, !1),\n (lowestPriorityPendingInteractiveExpirationTime = 0));\n};\nvar roots = new Map(),\n ReactNativeRenderer = {\n NativeComponent: (function(findNodeHandle, findHostInstance) {\n return (function(_React$Component) {\n function ReactNativeComponent() {\n if (!(this instanceof ReactNativeComponent))\n throw new TypeError(\"Cannot call a class as a function\");\n var call = _React$Component.apply(this, arguments);\n if (!this)\n throw new ReferenceError(\n \"this hasn't been initialised - super() hasn't been called\"\n );\n return !call ||\n (\"object\" !== typeof call && \"function\" !== typeof call)\n ? this\n : call;\n }\n _inherits(ReactNativeComponent, _React$Component);\n ReactNativeComponent.prototype.blur = function() {\n TextInputState.blurTextInput(findNodeHandle(this));\n };\n ReactNativeComponent.prototype.focus = function() {\n TextInputState.focusTextInput(findNodeHandle(this));\n };\n ReactNativeComponent.prototype.measure = function(callback) {\n UIManager.measure(\n findNodeHandle(this),\n mountSafeCallback_NOT_REALLY_SAFE(this, callback)\n );\n };\n ReactNativeComponent.prototype.measureInWindow = function(callback) {\n UIManager.measureInWindow(\n findNodeHandle(this),\n mountSafeCallback_NOT_REALLY_SAFE(this, callback)\n );\n };\n ReactNativeComponent.prototype.measureLayout = function(\n relativeToNativeNode,\n onSuccess,\n onFail\n ) {\n UIManager.measureLayout(\n findNodeHandle(this),\n relativeToNativeNode,\n mountSafeCallback_NOT_REALLY_SAFE(this, onFail),\n mountSafeCallback_NOT_REALLY_SAFE(this, onSuccess)\n );\n };\n ReactNativeComponent.prototype.setNativeProps = function(nativeProps) {\n var maybeInstance = void 0;\n try {\n maybeInstance = findHostInstance(this);\n } catch (error) {}\n if (null != maybeInstance) {\n var viewConfig =\n maybeInstance.viewConfig || maybeInstance.canonical.viewConfig;\n nativeProps = diffProperties(\n null,\n emptyObject,\n nativeProps,\n viewConfig.validAttributes\n );\n null != nativeProps &&\n UIManager.updateView(\n maybeInstance._nativeTag,\n viewConfig.uiViewClassName,\n nativeProps\n );\n }\n };\n return ReactNativeComponent;\n })(React.Component);\n })(findNodeHandle, findHostInstance),\n findNodeHandle: findNodeHandle,\n render: function(element, containerTag, callback) {\n var root = roots.get(containerTag);\n if (!root) {\n root = createFiber(3, null, null, 0);\n var root$jscomp$0 = {\n current: root,\n containerInfo: containerTag,\n pendingChildren: null,\n earliestPendingTime: 0,\n latestPendingTime: 0,\n earliestSuspendedTime: 0,\n latestSuspendedTime: 0,\n latestPingedTime: 0,\n didError: !1,\n pendingCommitExpirationTime: 0,\n finishedWork: null,\n timeoutHandle: -1,\n context: null,\n pendingContext: null,\n hydrate: !1,\n nextExpirationTimeToWorkOn: 0,\n expirationTime: 0,\n firstBatch: null,\n nextScheduledRoot: null\n };\n root = root.stateNode = root$jscomp$0;\n roots.set(containerTag, root);\n }\n updateContainer(element, root, null, callback);\n a: if (((element = root.current), element.child))\n switch (element.child.tag) {\n case 5:\n element = element.child.stateNode;\n break a;\n default:\n element = element.child.stateNode;\n }\n else element = null;\n return element;\n },\n unmountComponentAtNode: function(containerTag) {\n var root = roots.get(containerTag);\n root &&\n updateContainer(null, root, null, function() {\n roots.delete(containerTag);\n });\n },\n unmountComponentAtNodeAndRemoveContainer: function(containerTag) {\n ReactNativeRenderer.unmountComponentAtNode(containerTag);\n UIManager.removeRootView(containerTag);\n },\n createPortal: function(children, containerTag) {\n return createPortal(\n children,\n containerTag,\n null,\n 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null\n );\n },\n unstable_batchedUpdates: batchedUpdates,\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: {\n NativeMethodsMixin: (function(findNodeHandle, findHostInstance) {\n return {\n measure: function(callback) {\n UIManager.measure(\n findNodeHandle(this),\n mountSafeCallback_NOT_REALLY_SAFE(this, callback)\n );\n },\n measureInWindow: function(callback) {\n UIManager.measureInWindow(\n findNodeHandle(this),\n mountSafeCallback_NOT_REALLY_SAFE(this, callback)\n );\n },\n measureLayout: function(relativeToNativeNode, onSuccess, onFail) {\n UIManager.measureLayout(\n findNodeHandle(this),\n relativeToNativeNode,\n mountSafeCallback_NOT_REALLY_SAFE(this, onFail),\n mountSafeCallback_NOT_REALLY_SAFE(this, onSuccess)\n );\n },\n setNativeProps: function(nativeProps) {\n var maybeInstance = void 0;\n try {\n maybeInstance = findHostInstance(this);\n } catch (error) {}\n if (null != maybeInstance) {\n var viewConfig = maybeInstance.viewConfig;\n nativeProps = diffProperties(\n null,\n emptyObject,\n nativeProps,\n viewConfig.validAttributes\n );\n null != nativeProps &&\n UIManager.updateView(\n maybeInstance._nativeTag,\n viewConfig.uiViewClassName,\n nativeProps\n );\n }\n },\n focus: function() {\n TextInputState.focusTextInput(findNodeHandle(this));\n },\n blur: function() {\n TextInputState.blurTextInput(findNodeHandle(this));\n }\n };\n })(findNodeHandle, findHostInstance),\n computeComponentStackForErrorReporting: function(reactTag) {\n return (reactTag = getInstanceFromTag(reactTag))\n ? getStackByFiberInDevAndProd(reactTag)\n : \"\";\n }\n }\n };\n(function(devToolsConfig) {\n var findFiberByHostInstance = devToolsConfig.findFiberByHostInstance;\n return injectInternals(\n Object.assign({}, devToolsConfig, {\n findHostInstanceByFiber: function(fiber) {\n fiber = findCurrentHostFiber(fiber);\n return null === fiber ? null : fiber.stateNode;\n },\n findFiberByHostInstance: function(instance) {\n return findFiberByHostInstance\n ? findFiberByHostInstance(instance)\n : null;\n }\n })\n );\n})({\n findFiberByHostInstance: getInstanceFromTag,\n getInspectorDataForViewTag: getInspectorDataForViewTag,\n bundleType: 0,\n version: \"16.6.1\",\n rendererPackageName: \"react-native-renderer\"\n});\nvar ReactNativeRenderer$2 = { default: ReactNativeRenderer },\n ReactNativeRenderer$3 =\n (ReactNativeRenderer$2 && ReactNativeRenderer) || ReactNativeRenderer$2;\nmodule.exports = ReactNativeRenderer$3.default || ReactNativeRenderer$3;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n/* globals window: true */\n\n/**\n * Sets up global variables typical in most JavaScript environments.\n *\n * 1. Global timers (via `setTimeout` etc).\n * 2. Global console object.\n * 3. Hooks for printing stack traces with source maps.\n *\n * Leaves enough room in the environment for implementing your own:\n *\n * 1. Require system.\n * 2. Bridged modules.\n *\n */\n'use strict';\n\nconst {polyfillObjectProperty, polyfillGlobal} = require('PolyfillFunctions');\n\nif (global.GLOBAL === undefined) {\n global.GLOBAL = global;\n}\n\nif (global.window === undefined) {\n global.window = global;\n}\n\n// Set up collections\nconst _shouldPolyfillCollection = require('_shouldPolyfillES6Collection');\nif (_shouldPolyfillCollection('Map')) {\n polyfillGlobal('Map', () => require('Map'));\n}\nif (_shouldPolyfillCollection('Set')) {\n polyfillGlobal('Set', () => require('Set'));\n}\n\n// Set up process\nglobal.process = global.process || {};\nglobal.process.env = global.process.env || {};\nif (!global.process.env.NODE_ENV) {\n global.process.env.NODE_ENV = __DEV__ ? 'development' : 'production';\n}\n\n// Setup the Systrace profiling hooks if necessary\nif (global.__RCTProfileIsProfiling) {\n const Systrace = require('Systrace');\n Systrace.installReactHook();\n Systrace.setEnabled(true);\n}\n\n// Set up console\nconst ExceptionsManager = require('ExceptionsManager');\nExceptionsManager.installConsoleErrorReporter();\n\n// Set up error handler\nif (!global.__fbDisableExceptionsManager) {\n const handleError = (e, isFatal) => {\n try {\n ExceptionsManager.handleException(e, isFatal);\n } catch (ee) {\n console.log('Failed to print error: ', ee.message);\n throw e;\n }\n };\n\n const ErrorUtils = require('ErrorUtils');\n ErrorUtils.setGlobalHandler(handleError);\n}\n\n// Check for compatibility between the JS and native code\nconst ReactNativeVersionCheck = require('ReactNativeVersionCheck');\nReactNativeVersionCheck.checkVersions();\n\n// Set up Promise\n// The native Promise implementation throws the following error:\n// ERROR: Event loop not supported.\npolyfillGlobal('Promise', () => require('Promise'));\n\n// Set up regenerator.\npolyfillGlobal('regeneratorRuntime', () => {\n // The require just sets up the global, so make sure when we first\n // invoke it the global does not exist\n delete global.regeneratorRuntime;\n\n // regenerator-runtime/runtime exports the regeneratorRuntime object, so we\n // can return it safely.\n return require('regenerator-runtime/runtime');\n});\n\n// Set up timers\nconst defineLazyTimer = name => {\n polyfillGlobal(name, () => require('JSTimers')[name]);\n};\ndefineLazyTimer('setTimeout');\ndefineLazyTimer('setInterval');\ndefineLazyTimer('setImmediate');\ndefineLazyTimer('clearTimeout');\ndefineLazyTimer('clearInterval');\ndefineLazyTimer('clearImmediate');\ndefineLazyTimer('requestAnimationFrame');\ndefineLazyTimer('cancelAnimationFrame');\ndefineLazyTimer('requestIdleCallback');\ndefineLazyTimer('cancelIdleCallback');\n\n// Set up XHR\n// The native XMLHttpRequest in Chrome dev tools is CORS aware and won't\n// let you fetch anything from the internet\npolyfillGlobal('XMLHttpRequest', () => require('XMLHttpRequest'));\npolyfillGlobal('FormData', () => require('FormData'));\n\npolyfillGlobal('fetch', () => require('fetch').fetch);\npolyfillGlobal('Headers', () => require('fetch').Headers);\npolyfillGlobal('Request', () => require('fetch').Request);\npolyfillGlobal('Response', () => require('fetch').Response);\npolyfillGlobal('WebSocket', () => require('WebSocket'));\npolyfillGlobal('Blob', () => require('Blob'));\npolyfillGlobal('File', () => require('File'));\npolyfillGlobal('FileReader', () => require('FileReader'));\npolyfillGlobal('URL', () => require('URL'));\n\n// Set up alert\nif (!global.alert) {\n global.alert = function(text) {\n // Require Alert on demand. Requiring it too early can lead to issues\n // with things like Platform not being fully initialized.\n require('Alert').alert('Alert', '' + text);\n };\n}\n\n// Set up Geolocation\nlet navigator = global.navigator;\nif (navigator === undefined) {\n global.navigator = navigator = {};\n}\n\n// see https://github.com/facebook/react-native/issues/10881\npolyfillObjectProperty(navigator, 'product', () => 'ReactNative');\npolyfillObjectProperty(navigator, 'geolocation', () => require('Geolocation'));\n\n// Just to make sure the JS gets packaged up. Wait until the JS environment has\n// been initialized before requiring them.\nconst BatchedBridge = require('BatchedBridge');\nBatchedBridge.registerLazyCallableModule('Systrace', () => require('Systrace'));\nBatchedBridge.registerLazyCallableModule('JSTimers', () => require('JSTimers'));\nBatchedBridge.registerLazyCallableModule('HeapCapture', () =>\n require('HeapCapture'),\n);\nBatchedBridge.registerLazyCallableModule('SamplingProfiler', () =>\n require('SamplingProfiler'),\n);\nBatchedBridge.registerLazyCallableModule('RCTLog', () => require('RCTLog'));\nBatchedBridge.registerLazyCallableModule('RCTDeviceEventEmitter', () =>\n require('RCTDeviceEventEmitter'),\n);\nBatchedBridge.registerLazyCallableModule('RCTNativeAppEventEmitter', () =>\n require('RCTNativeAppEventEmitter'),\n);\nBatchedBridge.registerLazyCallableModule('PerformanceLogger', () =>\n require('PerformanceLogger'),\n);\nBatchedBridge.registerLazyCallableModule('JSDevSupportModule', () =>\n require('JSDevSupportModule'),\n);\n\nglobal.__fetchSegment = function(\n segmentId: number,\n options: {|+otaBuildNumber: ?string|},\n callback: (?Error) => void,\n) {\n const {SegmentFetcher} = require('NativeModules');\n if (!SegmentFetcher) {\n throw new Error(\n 'SegmentFetcher is missing. Please ensure that it is ' +\n 'included as a NativeModule.',\n );\n }\n\n SegmentFetcher.fetchSegment(\n segmentId,\n options,\n (errorObject: ?{message: string, code: string}) => {\n if (errorObject) {\n const error = new Error(errorObject.message);\n (error: any).code = errorObject.code;\n callback(error);\n }\n\n callback(null);\n },\n );\n};\n\n// Set up devtools\nif (__DEV__) {\n if (!global.__RCTProfileIsProfiling) {\n BatchedBridge.registerCallableModule('HMRClient', require('HMRClient'));\n\n // not when debugging in chrome\n // TODO(t12832058) This check is broken\n if (!window.document) {\n require('setupDevtools');\n }\n\n // Set up inspector\n const JSInspector = require('JSInspector');\n JSInspector.registerAgent(require('NetworkAgent'));\n }\n}\n","/**\n * Copyright (c) 2013-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 * @flow\n * @format\n */\n\n'use strict';\n\nconst defineLazyObjectProperty = require('defineLazyObjectProperty');\n\n/**\n * Sets an object's property. If a property with the same name exists, this will\n * replace it but maintain its descriptor configuration. The property will be\n * replaced with a lazy getter.\n *\n * In DEV mode the original property value will be preserved as `original[PropertyName]`\n * so that, if necessary, it can be restored. For example, if you want to route\n * network requests through DevTools (to trace them):\n *\n * global.XMLHttpRequest = global.originalXMLHttpRequest;\n *\n * @see https://github.com/facebook/react-native/issues/934\n */\nfunction polyfillObjectProperty(\n object: Object,\n name: string,\n getValue: () => T,\n): void {\n const descriptor = Object.getOwnPropertyDescriptor(object, name);\n if (__DEV__ && descriptor) {\n const backupName = `original${name[0].toUpperCase()}${name.substr(1)}`;\n Object.defineProperty(object, backupName, {\n ...descriptor,\n value: object[name],\n });\n }\n\n const {enumerable, writable, configurable} = descriptor || {};\n if (descriptor && !configurable) {\n console.error('Failed to set polyfill. ' + name + ' is not configurable.');\n return;\n }\n\n defineLazyObjectProperty(object, name, {\n get: getValue,\n enumerable: enumerable !== false,\n writable: writable !== false,\n });\n}\n\nfunction polyfillGlobal(name: string, getValue: () => T): void {\n polyfillObjectProperty(global, name, getValue);\n}\n\nmodule.exports = {polyfillObjectProperty, polyfillGlobal};\n","/**\n * Copyright (c) 2015-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 * @format\n * @preventMunge\n * @flow strict\n */\n\n'use strict';\n\n/**\n * Checks whether a collection name (e.g. \"Map\" or \"Set\") has a native polyfill\n * that is safe to be used.\n */\nfunction _shouldActuallyPolyfillES6Collection(collectionName: string): boolean {\n const Collection = global[collectionName];\n if (Collection == null) {\n return true;\n }\n\n // The iterator protocol depends on `Symbol.iterator`. If a collection is\n // implemented, but `Symbol` is not, it's going to break iteration because\n // we'll be using custom \"@@iterator\" instead, which is not implemented on\n // native collections.\n if (typeof global.Symbol !== 'function') {\n return true;\n }\n\n const proto = Collection.prototype;\n\n // These checks are adapted from es6-shim: https://fburl.com/34437854\n // NOTE: `isCallableWithoutNew` and `!supportsSubclassing` are not checked\n // because they make debugging with \"break on exceptions\" difficult.\n return (\n Collection == null ||\n typeof Collection !== 'function' ||\n typeof proto.clear !== 'function' ||\n new Collection().size !== 0 ||\n typeof proto.keys !== 'function' ||\n typeof proto.forEach !== 'function'\n );\n}\n\nconst cache: {[name: string]: boolean} = {};\n\n/**\n * Checks whether a collection name (e.g. \"Map\" or \"Set\") has a native polyfill\n * that is safe to be used and caches this result.\n * Make sure to make a first call to this function before a corresponding\n * property on global was overriden in any way.\n */\nfunction _shouldPolyfillES6Collection(collectionName: string) {\n let result = cache[collectionName];\n if (result !== undefined) {\n return result;\n }\n\n result = _shouldActuallyPolyfillES6Collection(collectionName);\n cache[collectionName] = result;\n return result;\n}\n\nmodule.exports = _shouldPolyfillES6Collection;\n","/**\n * Copyright (c) 2015-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 * @format\n * @preventMunge\n * @typechecks\n */\n\n/* eslint-disable no-extend-native, no-shadow-restricted-names */\n\n'use strict';\n\nconst _shouldPolyfillES6Collection = require('_shouldPolyfillES6Collection');\nconst guid = require('guid');\nconst isNode = require('fbjs/lib/isNode');\nconst toIterator = require('toIterator');\n\nmodule.exports = (function(global, undefined) {\n // Since our implementation is spec-compliant for the most part we can safely\n // delegate to a built-in version if exists and is implemented correctly.\n // Firefox had gotten a few implementation details wrong across different\n // versions so we guard against that.\n if (!_shouldPolyfillES6Collection('Map')) {\n return global.Map;\n }\n\n /**\n * == ES6 Map Collection ==\n *\n * This module is meant to implement a Map collection as described in chapter\n * 23.1 of the ES6 specification.\n *\n * Map objects are collections of key/value pairs where both the keys and\n * values may be arbitrary ECMAScript language values. A distinct key value\n * may only occur in one key/value pair within the Map's collection.\n *\n * https://people.mozilla.org/~jorendorff/es6-draft.html#sec-map-objects\n *\n * There only two -- rather small -- diviations from the spec:\n *\n * 1. The use of frozen objects as keys.\n * We decided not to allow and simply throw an error. The reason being is\n * we store a \"hash\" on the object for fast access to it's place in the\n * internal map entries.\n * If this turns out to be a popular use case it's possible to implement by\n * overiding `Object.freeze` to store a \"hash\" property on the object\n * for later use with the map.\n *\n * 2. The `size` property on a map object is a regular property and not a\n * computed property on the prototype as described by the spec.\n * The reason being is that we simply want to support ES3 environments\n * which doesn't implement computed properties.\n *\n * == Usage ==\n *\n * var map = new Map(iterable);\n *\n * map.set(key, value);\n * map.get(key); // value\n * map.has(key); // true\n * map.delete(key); // true\n *\n * var iterator = map.keys();\n * iterator.next(); // {value: key, done: false}\n *\n * var iterator = map.values();\n * iterator.next(); // {value: value, done: false}\n *\n * var iterator = map.entries();\n * iterator.next(); // {value: [key, value], done: false}\n *\n * map.forEach(function(value, key){ this === thisArg }, thisArg);\n *\n * map.clear(); // resets map.\n */\n\n /**\n * Constants\n */\n\n // Kinds of map iterations 23.1.5.3\n const KIND_KEY = 'key';\n const KIND_VALUE = 'value';\n const KIND_KEY_VALUE = 'key+value';\n\n // In older browsers we can't create a null-prototype object so we have to\n // defend against key collisions with built-in methods.\n const KEY_PREFIX = '$map_';\n\n // This property will be used as the internal size variable to disallow\n // writing and to issue warnings for writings in development.\n let SECRET_SIZE_PROP;\n if (__DEV__) {\n SECRET_SIZE_PROP = '$size' + guid();\n }\n\n // In oldIE we use the DOM Node `uniqueID` property to get create the hash.\n const OLD_IE_HASH_PREFIX = 'IE_HASH_';\n\n class Map {\n /**\n * 23.1.1.1\n * Takes an `iterable` which is basically any object that implements a\n * Symbol.iterator (@@iterator) method. The iterable is expected to be a\n * collection of pairs. Each pair is a key/value pair that will be used\n * to instantiate the map.\n *\n * @param {*} iterable\n */\n constructor(iterable) {\n if (!isObject(this)) {\n throw new TypeError('Wrong map object type.');\n }\n\n initMap(this);\n\n if (iterable != null) {\n const it = toIterator(iterable);\n let next;\n while (!(next = it.next()).done) {\n if (!isObject(next.value)) {\n throw new TypeError('Expected iterable items to be pair objects.');\n }\n this.set(next.value[0], next.value[1]);\n }\n }\n }\n\n /**\n * 23.1.3.1\n * Clears the map from all keys and values.\n */\n clear() {\n initMap(this);\n }\n\n /**\n * 23.1.3.7\n * Check if a key exists in the collection.\n *\n * @param {*} key\n * @return {boolean}\n */\n has(key) {\n const index = getIndex(this, key);\n return !!(index != null && this._mapData[index]);\n }\n\n /**\n * 23.1.3.9\n * Adds a key/value pair to the collection.\n *\n * @param {*} key\n * @param {*} value\n * @return {map}\n */\n set(key, value) {\n let index = getIndex(this, key);\n\n if (index != null && this._mapData[index]) {\n this._mapData[index][1] = value;\n } else {\n index = this._mapData.push([key, value]) - 1;\n setIndex(this, key, index);\n if (__DEV__) {\n this[SECRET_SIZE_PROP] += 1;\n } else {\n this.size += 1;\n }\n }\n\n return this;\n }\n\n /**\n * 23.1.3.6\n * Gets a value associated with a key in the collection.\n *\n * @param {*} key\n * @return {*}\n */\n get(key) {\n const index = getIndex(this, key);\n if (index == null) {\n return undefined;\n } else {\n return this._mapData[index][1];\n }\n }\n\n /**\n * 23.1.3.3\n * Delete a key/value from the collection.\n *\n * @param {*} key\n * @return {boolean} Whether the key was found and deleted.\n */\n delete(key) {\n const index = getIndex(this, key);\n if (index != null && this._mapData[index]) {\n setIndex(this, key, undefined);\n this._mapData[index] = undefined;\n if (__DEV__) {\n this[SECRET_SIZE_PROP] -= 1;\n } else {\n this.size -= 1;\n }\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * 23.1.3.4\n * Returns an iterator over the key/value pairs (in the form of an Array) in\n * the collection.\n *\n * @return {MapIterator}\n */\n entries() {\n return new MapIterator(this, KIND_KEY_VALUE);\n }\n\n /**\n * 23.1.3.8\n * Returns an iterator over the keys in the collection.\n *\n * @return {MapIterator}\n */\n keys() {\n return new MapIterator(this, KIND_KEY);\n }\n\n /**\n * 23.1.3.11\n * Returns an iterator over the values pairs in the collection.\n *\n * @return {MapIterator}\n */\n values() {\n return new MapIterator(this, KIND_VALUE);\n }\n\n /**\n * 23.1.3.5\n * Iterates over the key/value pairs in the collection calling `callback`\n * with [value, key, map]. An optional `thisArg` can be passed to set the\n * context when `callback` is called.\n *\n * @param {function} callback\n * @param {?object} thisArg\n */\n forEach(callback, thisArg) {\n if (typeof callback !== 'function') {\n throw new TypeError('Callback must be callable.');\n }\n\n const boundCallback = callback.bind(thisArg || undefined);\n const mapData = this._mapData;\n\n // Note that `mapData.length` should be computed on each iteration to\n // support iterating over new items in the map that were added after the\n // start of the iteration.\n for (let i = 0; i < mapData.length; i++) {\n const entry = mapData[i];\n if (entry != null) {\n boundCallback(entry[1], entry[0], this);\n }\n }\n }\n }\n\n // 23.1.3.12\n Map.prototype[toIterator.ITERATOR_SYMBOL] = Map.prototype.entries;\n\n class MapIterator {\n /**\n * 23.1.5.1\n * Create a `MapIterator` for a given `map`. While this class is private it\n * will create objects that will be passed around publicily.\n *\n * @param {map} map\n * @param {string} kind\n */\n constructor(map, kind) {\n if (!(isObject(map) && map._mapData)) {\n throw new TypeError('Object is not a map.');\n }\n\n if ([KIND_KEY, KIND_KEY_VALUE, KIND_VALUE].indexOf(kind) === -1) {\n throw new Error('Invalid iteration kind.');\n }\n\n this._map = map;\n this._nextIndex = 0;\n this._kind = kind;\n }\n\n /**\n * 23.1.5.2.1\n * Get the next iteration.\n *\n * @return {object}\n */\n next() {\n if (!this instanceof Map) {\n throw new TypeError('Expected to be called on a MapIterator.');\n }\n\n const map = this._map;\n let index = this._nextIndex;\n const kind = this._kind;\n\n if (map == null) {\n return createIterResultObject(undefined, true);\n }\n\n const entries = map._mapData;\n\n while (index < entries.length) {\n const record = entries[index];\n\n index += 1;\n this._nextIndex = index;\n\n if (record) {\n if (kind === KIND_KEY) {\n return createIterResultObject(record[0], false);\n } else if (kind === KIND_VALUE) {\n return createIterResultObject(record[1], false);\n } else if (kind) {\n return createIterResultObject(record, false);\n }\n }\n }\n\n this._map = undefined;\n\n return createIterResultObject(undefined, true);\n }\n }\n\n // We can put this in the class definition once we have computed props\n // transform.\n // 23.1.5.2.2\n MapIterator.prototype[toIterator.ITERATOR_SYMBOL] = function() {\n return this;\n };\n\n /**\n * Helper Functions.\n */\n\n /**\n * Return an index to map.[[MapData]] array for a given Key.\n *\n * @param {map} map\n * @param {*} key\n * @return {?number}\n */\n function getIndex(map, key) {\n if (isObject(key)) {\n const hash = getHash(key);\n return map._objectIndex[hash];\n } else {\n const prefixedKey = KEY_PREFIX + key;\n if (typeof key === 'string') {\n return map._stringIndex[prefixedKey];\n } else {\n return map._otherIndex[prefixedKey];\n }\n }\n }\n\n /**\n * Setup an index that refer to the key's location in map.[[MapData]].\n *\n * @param {map} map\n * @param {*} key\n */\n function setIndex(map, key, index) {\n const shouldDelete = index == null;\n\n if (isObject(key)) {\n const hash = getHash(key);\n if (shouldDelete) {\n delete map._objectIndex[hash];\n } else {\n map._objectIndex[hash] = index;\n }\n } else {\n const prefixedKey = KEY_PREFIX + key;\n if (typeof key === 'string') {\n if (shouldDelete) {\n delete map._stringIndex[prefixedKey];\n } else {\n map._stringIndex[prefixedKey] = index;\n }\n } else {\n if (shouldDelete) {\n delete map._otherIndex[prefixedKey];\n } else {\n map._otherIndex[prefixedKey] = index;\n }\n }\n }\n }\n\n /**\n * Instantiate a map with internal slots.\n *\n * @param {map} map\n */\n function initMap(map) {\n // Data structure design inspired by Traceur's Map implementation.\n // We maintain an internal array for all the entries. The array is needed\n // to remember order. However, to have a reasonable HashMap performance\n // i.e. O(1) for insertion, deletion, and retrieval. We maintain indices\n // in objects for fast look ups. Indices are split up according to data\n // types to avoid collisions.\n map._mapData = [];\n\n // Object index maps from an object \"hash\" to index. The hash being a unique\n // property of our choosing that we associate with the object. Association\n // is done by ways of keeping a non-enumerable property on the object.\n // Ideally these would be `Object.create(null)` objects but since we're\n // trying to support ES3 we'll have to guard against collisions using\n // prefixes on the keys rather than rely on null prototype objects.\n map._objectIndex = {};\n\n // String index maps from strings to index.\n map._stringIndex = {};\n\n // Numbers, booleans, undefined, and null.\n map._otherIndex = {};\n\n // Unfortunately we have to support ES3 and cannot have `Map.prototype.size`\n // be a getter method but just a regular method. The biggest problem with\n // this is safety. Clients can change the size property easily and possibly\n // without noticing (e.g. `if (map.size = 1) {..}` kind of typo). What we\n // can do to mitigate use getters and setters in development to disallow\n // and issue a warning for changing the `size` property.\n if (__DEV__) {\n if (isES5) {\n // If the `SECRET_SIZE_PROP` property is already defined then we're not\n // in the first call to `initMap` (e.g. coming from `map.clear()`) so\n // all we need to do is reset the size without defining the properties.\n if (map.hasOwnProperty(SECRET_SIZE_PROP)) {\n map[SECRET_SIZE_PROP] = 0;\n } else {\n Object.defineProperty(map, SECRET_SIZE_PROP, {\n value: 0,\n writable: true,\n });\n Object.defineProperty(map, 'size', {\n set: v => {\n console.error(\n 'PLEASE FIX ME: You are changing the map size property which ' +\n 'should not be writable and will break in production.',\n );\n throw new Error('The map size property is not writable.');\n },\n get: () => map[SECRET_SIZE_PROP],\n });\n }\n\n // NOTE: Early return to implement immutable `.size` in DEV.\n return;\n }\n }\n\n // This is a diviation from the spec. `size` should be a getter on\n // `Map.prototype`. However, we have to support IE8.\n map.size = 0;\n }\n\n /**\n * Check if something is an object.\n *\n * @param {*} o\n * @return {boolean}\n */\n function isObject(o) {\n return o != null && (typeof o === 'object' || typeof o === 'function');\n }\n\n /**\n * Create an iteration object.\n *\n * @param {*} value\n * @param {boolean} done\n * @return {object}\n */\n function createIterResultObject(value, done) {\n return {value, done};\n }\n\n // Are we in a legit ES5 environment. Spoiler alert: that doesn't include IE8.\n const isES5 = (function() {\n try {\n Object.defineProperty({}, 'x', {});\n return true;\n } catch (e) {\n return false;\n }\n })();\n\n /**\n * Check if an object can be extended.\n *\n * @param {object|array|function|regexp} o\n * @return {boolean}\n */\n function isExtensible(o) {\n if (!isES5) {\n return true;\n } else {\n return Object.isExtensible(o);\n }\n }\n\n /**\n * IE has a `uniqueID` set on every DOM node. So we construct the hash from\n * this uniqueID to avoid memory leaks and the IE cloneNode bug where it\n * clones properties in addition to the attributes.\n *\n * @param {object} node\n * @return {?string}\n */\n function getIENodeHash(node) {\n let uniqueID;\n switch (node.nodeType) {\n case 1: // Element\n uniqueID = node.uniqueID;\n break;\n case 9: // Document\n uniqueID = node.documentElement.uniqueID;\n break;\n default:\n return null;\n }\n\n if (uniqueID) {\n return OLD_IE_HASH_PREFIX + uniqueID;\n } else {\n return null;\n }\n }\n\n const getHash = (function() {\n const propIsEnumerable = Object.prototype.propertyIsEnumerable;\n const hashProperty = guid();\n let hashCounter = 0;\n\n /**\n * Get the \"hash\" associated with an object.\n *\n * @param {object|array|function|regexp} o\n * @return {number}\n */\n return function getHash(o) {\n // eslint-disable-line no-shadow\n if (o[hashProperty]) {\n return o[hashProperty];\n } else if (\n !isES5 &&\n o.propertyIsEnumerable &&\n o.propertyIsEnumerable[hashProperty]\n ) {\n return o.propertyIsEnumerable[hashProperty];\n } else if (!isES5 && isNode(o) && getIENodeHash(o)) {\n return getIENodeHash(o);\n } else if (!isES5 && o[hashProperty]) {\n return o[hashProperty];\n }\n\n if (isExtensible(o)) {\n hashCounter += 1;\n if (isES5) {\n Object.defineProperty(o, hashProperty, {\n enumerable: false,\n writable: false,\n configurable: false,\n value: hashCounter,\n });\n } else if (o.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Addiotionally, since this is a function it\n // will not show up in `JSON.stringify` which is what we want.\n o.propertyIsEnumerable = function() {\n return propIsEnumerable.apply(this, arguments);\n };\n o.propertyIsEnumerable[hashProperty] = hashCounter;\n } else if (isNode(o)) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `hashProperty` on the node\n // itself.\n o[hashProperty] = hashCounter;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n return hashCounter;\n } else {\n throw new Error('Non-extensible objects are not allowed as keys.');\n }\n };\n })();\n\n return Map;\n})(Function('return this')()); // eslint-disable-line no-new-func\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n/* eslint-disable no-bitwise */\n\n'use strict';\n\n/**\n * Module that provides a function for creating a unique identifier.\n * The returned value does not conform to the GUID standard, but should\n * be globally unique in the context of the browser.\n */\nfunction guid() {\n return 'f' + (Math.random() * (1 << 30)).toString(16).replace('.', '');\n}\n\nmodule.exports = guid;\n","\"use strict\";\n\n/**\n * Copyright (c) 2013-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 * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n var doc = object ? object.ownerDocument || object : document;\n var defaultView = doc.defaultView || window;\n return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\n/**\n * Given an object `toIterator` will return the itrator for that object. If the\n * object has a `Symbol.iterator` method we just call that. Otherwise we\n * implement the ES6 `Array` and `String` Iterator.\n */\n\n/**\n * Constants\n */\n\nconst KIND_KEY = 'key';\nconst KIND_VALUE = 'value';\nconst KIND_KEY_VAL = 'key+value';\n/*global Symbol: true*/\nconst ITERATOR_SYMBOL =\n typeof Symbol === 'function' ? Symbol.iterator : '@@iterator';\n\nconst toIterator = (function() {\n if (\n !(Array.prototype[ITERATOR_SYMBOL] && String.prototype[ITERATOR_SYMBOL])\n ) {\n // IIFE to avoid creating classes for no reason because of hoisting.\n return (function() {\n class ArrayIterator {\n // 22.1.5.1 CreateArrayIterator Abstract Operation\n constructor(array, kind) {\n if (!Array.isArray(array)) {\n throw new TypeError('Object is not an Array');\n }\n this._iteratedObject = array;\n this._kind = kind;\n this._nextIndex = 0;\n }\n\n // 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n next() {\n if (!this instanceof ArrayIterator) {\n throw new TypeError('Object is not an ArrayIterator');\n }\n\n if (this._iteratedObject == null) {\n return createIterResultObject(undefined, true);\n }\n\n const array = this._iteratedObject;\n const len = this._iteratedObject.length;\n const index = this._nextIndex;\n const kind = this._kind;\n\n if (index >= len) {\n this._iteratedObject = undefined;\n return createIterResultObject(undefined, true);\n }\n\n this._nextIndex = index + 1;\n\n if (kind === KIND_KEY) {\n return createIterResultObject(index, false);\n } else if (kind === KIND_VALUE) {\n return createIterResultObject(array[index], false);\n } else if (kind === KIND_KEY_VAL) {\n return createIterResultObject([index, array[index]], false);\n }\n }\n\n // 22.1.5.2.2 %ArrayIteratorPrototype%[@@iterator]()\n '@@iterator'() {\n return this;\n }\n }\n\n class StringIterator {\n // 21.1.5.1 CreateStringIterator Abstract Operation\n constructor(string) {\n if (typeof string !== 'string') {\n throw new TypeError('Object is not a string');\n }\n this._iteratedString = string;\n this._nextIndex = 0;\n }\n\n // 21.1.5.2.1 %StringIteratorPrototype%.next()\n next() {\n if (!this instanceof StringIterator) {\n throw new TypeError('Object is not a StringIterator');\n }\n\n if (this._iteratedString == null) {\n return createIterResultObject(undefined, true);\n }\n\n const index = this._nextIndex;\n const s = this._iteratedString;\n const len = s.length;\n\n if (index >= len) {\n this._iteratedString = undefined;\n return createIterResultObject(undefined, true);\n }\n\n let ret;\n const first = s.charCodeAt(index);\n\n if (first < 0xd800 || first > 0xdbff || index + 1 === len) {\n ret = s[index];\n } else {\n const second = s.charCodeAt(index + 1);\n if (second < 0xdc00 || second > 0xdfff) {\n ret = s[index];\n } else {\n ret = s[index] + s[index + 1];\n }\n }\n\n this._nextIndex = index + ret.length;\n\n return createIterResultObject(ret, false);\n }\n\n // 21.1.5.2.2 %StringIteratorPrototype%[@@ITERATOR_SYMBOL]()\n '@@iterator'() {\n return this;\n }\n }\n\n // 7.4.7 createIterResultObject(value, done)\n function createIterResultObject(value, done) {\n return {value: value, done: done};\n }\n\n return function(object, kind) {\n if (typeof object === 'string') {\n return new StringIterator(object);\n } else if (Array.isArray(object)) {\n return new ArrayIterator(object, kind || KIND_VALUE);\n } else {\n return object[ITERATOR_SYMBOL]();\n }\n };\n })();\n } else {\n return function(object) {\n return object[ITERATOR_SYMBOL]();\n };\n }\n})();\n\n/**\n * Export constants\n */\n\nObject.assign(toIterator, {\n KIND_KEY,\n KIND_VALUE,\n KIND_KEY_VAL,\n ITERATOR_SYMBOL,\n});\n\nmodule.exports = toIterator;\n","/**\n * Copyright (c) 2015-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 * @format\n * @preventMunge\n * @typechecks\n */\n\n/* eslint-disable no-extend-native */\n\n'use strict';\n\nconst Map = require('Map');\n\nconst _shouldPolyfillES6Collection = require('_shouldPolyfillES6Collection');\nconst toIterator = require('toIterator');\n\nmodule.exports = (function(global) {\n // Since our implementation is spec-compliant for the most part we can safely\n // delegate to a built-in version if exists and is implemented correctly.\n // Firefox had gotten a few implementation details wrong across different\n // versions so we guard against that.\n // These checks are adapted from es6-shim https://fburl.com/34437854\n if (!_shouldPolyfillES6Collection('Set')) {\n return global.Set;\n }\n\n /**\n * == ES6 Set Collection ==\n *\n * This module is meant to implement a Set collection as described in chapter\n * 23.2 of the ES6 specification.\n *\n * Set objects are collections of unique values. Where values can be any\n * JavaScript value.\n * https://people.mozilla.org/~jorendorff/es6-draft.html#sec-map-objects\n *\n * There only two -- rather small -- diviations from the spec:\n *\n * 1. The use of frozen objects as keys. @see Map module for more on this.\n *\n * 2. The `size` property on a map object is a regular property and not a\n * computed property on the prototype as described by the spec.\n * The reason being is that we simply want to support ES3 environments\n * which doesn't implement computed properties.\n *\n * == Usage ==\n *\n * var set = new set(iterable);\n *\n * set.set(value);\n * set.has(value); // true\n * set.delete(value); // true\n *\n * var iterator = set.keys();\n * iterator.next(); // {value: value, done: false}\n *\n * var iterator = set.values();\n * iterator.next(); // {value: value, done: false}\n *\n * var iterator = set.entries();\n * iterator.next(); // {value: [value, value], done: false}\n *\n * set.forEach(function(value, value){ this === thisArg }, thisArg);\n *\n * set.clear(); // resets set.\n */\n\n class Set {\n /**\n * 23.2.1.1\n *\n * Takes an optional `iterable` (which is basically any object that\n * implements a Symbol.iterator (@@iterator) method). That is a collection\n * of values used to instantiate the set.\n *\n * @param {*} iterable\n */\n constructor(iterable) {\n if (\n this == null ||\n (typeof this !== 'object' && typeof this !== 'function')\n ) {\n throw new TypeError('Wrong set object type.');\n }\n\n initSet(this);\n\n if (iterable != null) {\n const it = toIterator(iterable);\n let next;\n while (!(next = it.next()).done) {\n this.add(next.value);\n }\n }\n }\n\n /**\n * 23.2.3.1\n *\n * If it doesn't already exist in the collection a `value` is added.\n *\n * @param {*} value\n * @return {set}\n */\n add(value) {\n this._map.set(value, value);\n this.size = this._map.size;\n return this;\n }\n\n /**\n * 23.2.3.2\n *\n * Clears the set.\n */\n clear() {\n initSet(this);\n }\n\n /**\n * 23.2.3.4\n *\n * Deletes a `value` from the collection if it exists.\n * Returns true if the value was found and deleted and false otherwise.\n *\n * @param {*} value\n * @return {boolean}\n */\n delete(value) {\n const ret = this._map.delete(value);\n this.size = this._map.size;\n return ret;\n }\n\n /**\n * 23.2.3.5\n *\n * Returns an iterator over a collection of [value, value] tuples.\n */\n entries() {\n return this._map.entries();\n }\n\n /**\n * 23.2.3.6\n *\n * Iterate over the collection calling `callback` with (value, value, set).\n *\n * @param {function} callback\n */\n forEach(callback) {\n const thisArg = arguments[1];\n const it = this._map.keys();\n let next;\n while (!(next = it.next()).done) {\n callback.call(thisArg, next.value, next.value, this);\n }\n }\n\n /**\n * 23.2.3.7\n *\n * Iterate over the collection calling `callback` with (value, value, set).\n *\n * @param {*} value\n * @return {boolean}\n */\n has(value) {\n return this._map.has(value);\n }\n\n /**\n * 23.2.3.7\n *\n * Returns an iterator over the colleciton of values.\n */\n values() {\n return this._map.values();\n }\n }\n\n // 23.2.3.11\n Set.prototype[toIterator.ITERATOR_SYMBOL] = Set.prototype.values;\n\n // 23.2.3.7\n Set.prototype.keys = Set.prototype.values;\n\n function initSet(set) {\n set._map = new Map();\n set.size = set._map.size;\n }\n\n return Set;\n})(Function('return this')()); // eslint-disable-line no-new-func\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nimport type {ExtendedError} from 'parseErrorStack';\n\n/**\n * Handles the developer-visible aspect of errors and exceptions\n */\nlet exceptionID = 0;\nfunction reportException(e: ExtendedError, isFatal: boolean) {\n const {ExceptionsManager} = require('NativeModules');\n if (ExceptionsManager) {\n const parseErrorStack = require('parseErrorStack');\n const stack = parseErrorStack(e);\n const currentExceptionID = ++exceptionID;\n if (isFatal) {\n ExceptionsManager.reportFatalException(\n e.message,\n stack,\n currentExceptionID,\n );\n } else {\n ExceptionsManager.reportSoftException(\n e.message,\n stack,\n currentExceptionID,\n );\n }\n if (__DEV__) {\n const symbolicateStackTrace = require('symbolicateStackTrace');\n symbolicateStackTrace(stack)\n .then(prettyStack => {\n if (prettyStack) {\n ExceptionsManager.updateExceptionMessage(\n e.message,\n prettyStack,\n currentExceptionID,\n );\n } else {\n throw new Error('The stack is null');\n }\n })\n .catch(error =>\n console.warn('Unable to symbolicate stack trace: ' + error.message),\n );\n }\n }\n}\n\ndeclare var console: typeof console & {\n _errorOriginal: Function,\n reportErrorsAsExceptions: boolean,\n};\n\n/**\n * Logs exceptions to the (native) console and displays them\n */\nfunction handleException(e: Error, isFatal: boolean) {\n // Workaround for reporting errors caused by `throw 'some string'`\n // Unfortunately there is no way to figure out the stacktrace in this\n // case, so if you ended up here trying to trace an error, look for\n // `throw ''` somewhere in your codebase.\n if (!e.message) {\n e = new Error(e);\n }\n if (console._errorOriginal) {\n console._errorOriginal(e.message);\n } else {\n console.error(e.message);\n }\n reportException(e, isFatal);\n}\n\nfunction reactConsoleErrorHandler() {\n console._errorOriginal.apply(console, arguments);\n if (!console.reportErrorsAsExceptions) {\n return;\n }\n\n if (arguments[0] && arguments[0].stack) {\n reportException(arguments[0], /* isFatal */ false);\n } else {\n const stringifySafe = require('stringifySafe');\n const str = Array.prototype.map.call(arguments, stringifySafe).join(', ');\n if (str.slice(0, 10) === '\"Warning: ') {\n // React warnings use console.error so that a stack trace is shown, but\n // we don't (currently) want these to show a redbox\n // (Note: Logic duplicated in polyfills/console.js.)\n return;\n }\n const error: ExtendedError = new Error('console.error: ' + str);\n error.framesToPop = 1;\n reportException(error, /* isFatal */ false);\n }\n}\n\n/**\n * Shows a redbox with stacktrace for all console.error messages. Disable by\n * setting `console.reportErrorsAsExceptions = false;` in your app.\n */\nfunction installConsoleErrorReporter() {\n // Enable reportErrorsAsExceptions\n if (console._errorOriginal) {\n return; // already installed\n }\n // Flow doesn't like it when you set arbitrary values on a global object\n console._errorOriginal = console.error.bind(console);\n console.error = reactConsoleErrorHandler;\n if (console.reportErrorsAsExceptions === undefined) {\n // Individual apps can disable this\n // Flow doesn't like it when you set arbitrary values on a global object\n console.reportErrorsAsExceptions = true;\n }\n}\n\nmodule.exports = {handleException, installConsoleErrorReporter};\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nexport type StackFrame = {\n column: ?number,\n file: string,\n lineNumber: number,\n methodName: string,\n};\n\nexport type ExtendedError = Error & {\n framesToPop?: number,\n};\n\nfunction parseErrorStack(e: ExtendedError): Array {\n if (!e || !e.stack) {\n return [];\n }\n\n /* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an\n * error found when Flow v0.54 was deployed. To see the error delete this\n * comment and run Flow. */\n const stacktraceParser = require('stacktrace-parser');\n const stack = Array.isArray(e.stack)\n ? e.stack\n : stacktraceParser.parse(e.stack);\n\n let framesToPop = typeof e.framesToPop === 'number' ? e.framesToPop : 0;\n while (framesToPop--) {\n stack.shift();\n }\n return stack;\n}\n\nmodule.exports = parseErrorStack;\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = global || self, factory(global.stackTraceParser = {}));\n}(this, function (exports) { 'use strict';\n\n var UNKNOWN_FUNCTION = '';\n /**\n * This parses the different stack traces and puts them into one format\n * This borrows heavily from TraceKit (https://github.com/csnover/TraceKit)\n */\n\n function parse(stackString) {\n var lines = stackString.split('\\n');\n return lines.reduce(function (stack, line) {\n var parseResult = parseChrome(line) || parseWinjs(line) || parseGecko(line) || parseJSC(line) || parseNode(line);\n\n if (parseResult) {\n stack.push(parseResult);\n }\n\n return stack;\n }, []);\n }\n var chromeRe = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack||\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n var chromeEvalRe = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n function parseChrome(line) {\n var parts = chromeRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n var submatch = chromeEvalRe.exec(parts[2]);\n\n if (isEval && submatch != null) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n\n parts[3] = submatch[2]; // line\n\n parts[4] = submatch[3]; // column\n }\n\n return {\n file: !isNative ? parts[2] : null,\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: isNative ? [parts[2]] : [],\n lineNumber: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null\n };\n }\n\n var winjsRe = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\n function parseWinjs(line) {\n var parts = winjsRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n return {\n file: parts[2],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: [],\n lineNumber: +parts[3],\n column: parts[4] ? +parts[4] : null\n };\n }\n\n var geckoRe = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\n var geckoEvalRe = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\n function parseGecko(line) {\n var parts = geckoRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n var submatch = geckoEvalRe.exec(parts[3]);\n\n if (isEval && submatch != null) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = null; // no column when eval\n }\n\n return {\n file: parts[3],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: parts[2] ? parts[2].split(',') : [],\n lineNumber: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null\n };\n }\n\n var javaScriptCoreRe = /^(?:\\s*([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i;\n\n function parseJSC(line) {\n var parts = javaScriptCoreRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n return {\n file: parts[3],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: [],\n lineNumber: +parts[4],\n column: parts[5] ? +parts[5] : null\n };\n }\n\n var nodeRe = /^\\s*at (?:((?:\\[object object\\])?\\S+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\n function parseNode(line) {\n var parts = nodeRe.exec(line);\n\n if (!parts) {\n return null;\n }\n\n return {\n file: parts[2],\n methodName: parts[1] || UNKNOWN_FUNCTION,\n arguments: [],\n lineNumber: +parts[3],\n column: parts[4] ? +parts[4] : null\n };\n }\n\n exports.parse = parse;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n","/**\n * Copyright (c) 2017-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 * @flow strict-local\n * @format\n */\n'use strict';\n\nconst {PlatformConstants} = require('NativeModules');\nconst ReactNativeVersion = require('ReactNativeVersion');\n\n/**\n * Checks that the version of this React Native JS is compatible with the native\n * code, throwing an error if it isn't.\n *\n * The existence of this module is part of the public interface of React Native\n * even though it is used only internally within React Native. React Native\n * implementations for other platforms (ex: Windows) may override this module\n * and rely on its existence as a separate module.\n */\nexports.checkVersions = function checkVersions(): void {\n if (!PlatformConstants) {\n return;\n }\n\n const nativeVersion = PlatformConstants.reactNativeVersion;\n if (\n ReactNativeVersion.version.major !== nativeVersion.major ||\n ReactNativeVersion.version.minor !== nativeVersion.minor\n ) {\n console.error(\n `React Native version mismatch.\\n\\nJavaScript version: ${_formatVersion(\n ReactNativeVersion.version,\n )}\\n` +\n `Native version: ${_formatVersion(nativeVersion)}\\n\\n` +\n 'Make sure that you have rebuilt the native code. If the problem ' +\n 'persists try clearing the Watchman and packager caches with ' +\n '`watchman watch-del-all && react-native start --reset-cache`.',\n );\n }\n};\n\nfunction _formatVersion(version): string {\n return (\n `${version.major}.${version.minor}.${version.patch}` +\n (version.prerelease !== null ? `-${version.prerelease}` : '')\n );\n}\n","/**\n * @generated by scripts/bump-oss-version.js\n *\n * Copyright (c) 2015-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 * @flow\n */\n\nexports.version = {\n major: 0,\n minor: 57,\n patch: 8,\n prerelease: null,\n};\n","/**\n * Copyright (c) 2016-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 * @format\n * @flow\n */\n\n'use strict';\n\n/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error\n * found when Flow v0.54 was deployed. To see the error delete this comment and\n * run Flow. */\nconst Promise = require('fbjs/lib/Promise.native');\n\nif (__DEV__) {\n /* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an\n * error found when Flow v0.54 was deployed. To see the error delete this\n * comment and run Flow. */\n require('promise/setimmediate/rejection-tracking').enable({\n allRejections: true,\n onUnhandled: (id, error = {}) => {\n let message: string;\n let stack: ?string;\n\n const stringValue = Object.prototype.toString.call(error);\n if (stringValue === '[object Error]') {\n message = Error.prototype.toString.call(error);\n stack = error.stack;\n } else {\n /* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses\n * an error found when Flow v0.54 was deployed. To see the error delete\n * this comment and run Flow. */\n message = require('pretty-format')(error);\n }\n\n const warning =\n `Possible Unhandled Promise Rejection (id: ${id}):\\n` +\n `${message}\\n` +\n (stack == null ? '' : stack);\n console.warn(warning);\n },\n onHandled: id => {\n const warning =\n `Promise Rejection Handled (id: ${id})\\n` +\n 'This means you can ignore any previous messages of the form ' +\n `\"Possible Unhandled Promise Rejection (id: ${id}):\"`;\n console.warn(warning);\n },\n });\n}\n\nmodule.exports = Promise;\n","/**\n *\n * Copyright (c) 2013-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 * This module wraps and augments the minimally ES6-compliant Promise\n * implementation provided by the promise npm package.\n *\n */\n'use strict';\n\nvar Promise = require(\"promise/setimmediate/es6-extensions\");\n\nrequire(\"promise/setimmediate/done\");\n/**\n * Handle either fulfillment or rejection with the same callback.\n */\n\n\nPromise.prototype[\"finally\"] = function (onSettled) {\n return this.then(onSettled, onSettled);\n};\n\nmodule.exports = Promise;","'use strict';\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n var p = new Promise(Promise._61);\n p._65 = 1;\n p._55 = value;\n return p;\n}\nPromise.resolve = function (value) {\n if (value instanceof Promise) return value;\n\n if (value === null) return NULL;\n if (value === undefined) return UNDEFINED;\n if (value === true) return TRUE;\n if (value === false) return FALSE;\n if (value === 0) return ZERO;\n if (value === '') return EMPTYSTRING;\n\n if (typeof value === 'object' || typeof value === 'function') {\n try {\n var then = value.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(value));\n }\n } catch (ex) {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n }\n }\n return valuePromise(value);\n};\n\nPromise.all = function (arr) {\n var args = Array.prototype.slice.call(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n if (val instanceof Promise && val.then === Promise.prototype.then) {\n while (val._65 === 3) {\n val = val._55;\n }\n if (val._65 === 1) return res(i, val._55);\n if (val._65 === 2) reject(val._55);\n val.then(function (val) {\n res(i, val);\n }, reject);\n return;\n } else {\n var then = val.then;\n if (typeof then === 'function') {\n var p = new Promise(then.bind(val));\n p.then(function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function (values) {\n return new Promise(function (resolve, reject) {\n values.forEach(function(value){\n Promise.resolve(value).then(resolve, reject);\n });\n });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\n","'use strict';\n\n\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n try {\n return obj.then;\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nfunction tryCallOne(fn, a) {\n try {\n return fn(a);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\nfunction tryCallTwo(fn, a, b) {\n try {\n fn(a, b);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('Promise constructor\\'s argument is not a function');\n }\n this._40 = 0;\n this._65 = 0;\n this._55 = null;\n this._72 = null;\n if (fn === noop) return;\n doResolve(fn, this);\n}\nPromise._37 = null;\nPromise._87 = null;\nPromise._61 = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n if (this.constructor !== Promise) {\n return safeThen(this, onFulfilled, onRejected);\n }\n var res = new Promise(noop);\n handle(this, new Handler(onFulfilled, onRejected, res));\n return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n return new self.constructor(function (resolve, reject) {\n var res = new Promise(noop);\n res.then(resolve, reject);\n handle(self, new Handler(onFulfilled, onRejected, res));\n });\n}\nfunction handle(self, deferred) {\n while (self._65 === 3) {\n self = self._55;\n }\n if (Promise._37) {\n Promise._37(self);\n }\n if (self._65 === 0) {\n if (self._40 === 0) {\n self._40 = 1;\n self._72 = deferred;\n return;\n }\n if (self._40 === 1) {\n self._40 = 2;\n self._72 = [self._72, deferred];\n return;\n }\n self._72.push(deferred);\n return;\n }\n handleResolved(self, deferred);\n}\n\nfunction handleResolved(self, deferred) {\n setImmediate(function() {\n var cb = self._65 === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n if (self._65 === 1) {\n resolve(deferred.promise, self._55);\n } else {\n reject(deferred.promise, self._55);\n }\n return;\n }\n var ret = tryCallOne(cb, self._55);\n if (ret === IS_ERROR) {\n reject(deferred.promise, LAST_ERROR);\n } else {\n resolve(deferred.promise, ret);\n }\n });\n}\nfunction resolve(self, newValue) {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) {\n return reject(\n self,\n new TypeError('A promise cannot be resolved with itself.')\n );\n }\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = getThen(newValue);\n if (then === IS_ERROR) {\n return reject(self, LAST_ERROR);\n }\n if (\n then === self.then &&\n newValue instanceof Promise\n ) {\n self._65 = 3;\n self._55 = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(then.bind(newValue), self);\n return;\n }\n }\n self._65 = 1;\n self._55 = newValue;\n finale(self);\n}\n\nfunction reject(self, newValue) {\n self._65 = 2;\n self._55 = newValue;\n if (Promise._87) {\n Promise._87(self, newValue);\n }\n finale(self);\n}\nfunction finale(self) {\n if (self._40 === 1) {\n handle(self, self._72);\n self._72 = null;\n }\n if (self._40 === 2) {\n for (var i = 0; i < self._72.length; i++) {\n handle(self, self._72[i]);\n }\n self._72 = null;\n }\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n var done = false;\n var res = tryCallTwo(fn, function (value) {\n if (done) return;\n done = true;\n resolve(promise, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(promise, reason);\n });\n if (!done && res === IS_ERROR) {\n done = true;\n reject(promise, LAST_ERROR);\n }\n}\n","'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.prototype.done = function (onFulfilled, onRejected) {\n var self = arguments.length ? this.then.apply(this, arguments) : this;\n self.then(null, function (err) {\n setTimeout(function () {\n throw err;\n }, 0);\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\n!(function(global) {\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 var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\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 runtime.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 GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\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 prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.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 runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\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 runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\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 Promise.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 Promise.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. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(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 runtime.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 runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.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 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 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 runtime.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 runtime.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 // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n'use strict';\n\nconst Platform = require('Platform');\nconst Systrace = require('Systrace');\n\nconst invariant = require('fbjs/lib/invariant');\nconst {Timing} = require('NativeModules');\nconst BatchedBridge = require('BatchedBridge');\n\nimport type {ExtendedError} from 'parseErrorStack';\n\nlet _performanceNow = null;\nfunction performanceNow() {\n if (!_performanceNow) {\n /* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an\n * error found when Flow v0.54 was deployed. To see the error delete this\n * comment and run Flow. */\n _performanceNow = require('fbjs/lib/performanceNow');\n }\n return _performanceNow();\n}\n\n/**\n * JS implementation of timer functions. Must be completely driven by an\n * external clock signal, all that's stored here is timerID, timer type, and\n * callback.\n */\n\nexport type JSTimerType =\n | 'setTimeout'\n | 'setInterval'\n | 'requestAnimationFrame'\n | 'setImmediate'\n | 'requestIdleCallback';\n\n// These timing constants should be kept in sync with the ones in native ios and\n// android `RCTTiming` module.\nconst FRAME_DURATION = 1000 / 60;\nconst IDLE_CALLBACK_FRAME_DEADLINE = 1;\n\nconst MAX_TIMER_DURATION_MS = 60 * 1000;\nconst IS_ANDROID = Platform.OS === 'android';\nconst ANDROID_LONG_TIMER_MESSAGE =\n 'Setting a timer for a long period of time, i.e. multiple minutes, is a ' +\n 'performance and correctness issue on Android as it keeps the timer ' +\n 'module awake, and timers can only be called when the app is in the foreground. ' +\n 'See https://github.com/facebook/react-native/issues/12981 for more info.';\n\n// Parallel arrays\nconst callbacks: Array = [];\nconst types: Array = [];\nconst timerIDs: Array = [];\nlet immediates: Array = [];\nlet requestIdleCallbacks: Array = [];\nconst requestIdleCallbackTimeouts: {[number]: number} = {};\nconst identifiers: Array = [];\n\nlet GUID = 1;\nlet errors: ?Array = null;\n\nlet hasEmittedTimeDriftWarning = false;\n\n// Returns a free index if one is available, and the next consecutive index otherwise.\nfunction _getFreeIndex(): number {\n let freeIndex = timerIDs.indexOf(null);\n if (freeIndex === -1) {\n freeIndex = timerIDs.length;\n }\n return freeIndex;\n}\n\nfunction _allocateCallback(func: Function, type: JSTimerType): number {\n const id = GUID++;\n const freeIndex = _getFreeIndex();\n timerIDs[freeIndex] = id;\n callbacks[freeIndex] = func;\n types[freeIndex] = type;\n if (__DEV__) {\n const parseErrorStack = require('parseErrorStack');\n const error: ExtendedError = new Error();\n error.framesToPop = 1;\n const stack = parseErrorStack(error);\n if (stack) {\n identifiers[freeIndex] = stack.shift();\n }\n }\n return id;\n}\n\n/**\n * Calls the callback associated with the ID. Also unregister that callback\n * if it was a one time timer (setTimeout), and not unregister it if it was\n * recurring (setInterval).\n */\nfunction _callTimer(timerID: number, frameTime: number, didTimeout: ?boolean) {\n /* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an\n * error found when Flow v0.54 was deployed. To see the error delete this\n * comment and run Flow. */\n require('fbjs/lib/warning')(\n timerID <= GUID,\n 'Tried to call timer with ID %s but no such timer exists.',\n timerID,\n );\n\n // timerIndex of -1 means that no timer with that ID exists. There are\n // two situations when this happens, when a garbage timer ID was given\n // and when a previously existing timer was deleted before this callback\n // fired. In both cases we want to ignore the timer id, but in the former\n // case we warn as well.\n const timerIndex = timerIDs.indexOf(timerID);\n if (timerIndex === -1) {\n return;\n }\n\n const type = types[timerIndex];\n const callback = callbacks[timerIndex];\n if (!callback || !type) {\n console.error('No callback found for timerID ' + timerID);\n return;\n }\n\n if (__DEV__) {\n const identifier = identifiers[timerIndex] || {};\n Systrace.beginEvent('Systrace.callTimer: ' + identifier.methodName);\n }\n\n // Clear the metadata\n if (\n type === 'setTimeout' ||\n type === 'setImmediate' ||\n type === 'requestAnimationFrame' ||\n type === 'requestIdleCallback'\n ) {\n _clearIndex(timerIndex);\n }\n\n try {\n if (\n type === 'setTimeout' ||\n type === 'setInterval' ||\n type === 'setImmediate'\n ) {\n callback();\n } else if (type === 'requestAnimationFrame') {\n callback(performanceNow());\n } else if (type === 'requestIdleCallback') {\n callback({\n timeRemaining: function() {\n // TODO: Optimisation: allow running for longer than one frame if\n // there are no pending JS calls on the bridge from native. This\n // would require a way to check the bridge queue synchronously.\n return Math.max(0, FRAME_DURATION - (performanceNow() - frameTime));\n },\n didTimeout: !!didTimeout,\n });\n } else {\n console.error('Tried to call a callback with invalid type: ' + type);\n }\n } catch (e) {\n // Don't rethrow so that we can run all timers.\n if (!errors) {\n errors = [e];\n } else {\n errors.push(e);\n }\n }\n\n if (__DEV__) {\n Systrace.endEvent();\n }\n}\n\n/**\n * Performs a single pass over the enqueued immediates. Returns whether\n * more immediates are queued up (can be used as a condition a while loop).\n */\nfunction _callImmediatesPass() {\n if (__DEV__) {\n Systrace.beginEvent('callImmediatesPass()');\n }\n\n // The main reason to extract a single pass is so that we can track\n // in the system trace\n if (immediates.length > 0) {\n const passImmediates = immediates.slice();\n immediates = [];\n\n // Use for loop rather than forEach as per @vjeux's advice\n // https://github.com/facebook/react-native/commit/c8fd9f7588ad02d2293cac7224715f4af7b0f352#commitcomment-14570051\n for (let i = 0; i < passImmediates.length; ++i) {\n _callTimer(passImmediates[i], 0);\n }\n }\n\n if (__DEV__) {\n Systrace.endEvent();\n }\n return immediates.length > 0;\n}\n\nfunction _clearIndex(i: number) {\n timerIDs[i] = null;\n callbacks[i] = null;\n types[i] = null;\n identifiers[i] = null;\n}\n\nfunction _freeCallback(timerID: number) {\n // timerIDs contains nulls after timers have been removed;\n // ignore nulls upfront so indexOf doesn't find them\n if (timerID == null) {\n return;\n }\n\n const index = timerIDs.indexOf(timerID);\n // See corresponding comment in `callTimers` for reasoning behind this\n if (index !== -1) {\n _clearIndex(index);\n const type = types[index];\n if (type !== 'setImmediate' && type !== 'requestIdleCallback') {\n Timing.deleteTimer(timerID);\n }\n }\n}\n\n/**\n * JS implementation of timer functions. Must be completely driven by an\n * external clock signal, all that's stored here is timerID, timer type, and\n * callback.\n */\nconst JSTimers = {\n /**\n * @param {function} func Callback to be invoked after `duration` ms.\n * @param {number} duration Number of milliseconds.\n */\n setTimeout: function(func: Function, duration: number, ...args: any): number {\n if (__DEV__ && IS_ANDROID && duration > MAX_TIMER_DURATION_MS) {\n console.warn(\n ANDROID_LONG_TIMER_MESSAGE +\n '\\n' +\n '(Saw setTimeout with duration ' +\n duration +\n 'ms)',\n );\n }\n const id = _allocateCallback(\n () => func.apply(undefined, args),\n 'setTimeout',\n );\n Timing.createTimer(id, duration || 0, Date.now(), /* recurring */ false);\n return id;\n },\n\n /**\n * @param {function} func Callback to be invoked every `duration` ms.\n * @param {number} duration Number of milliseconds.\n */\n setInterval: function(\n func: Function,\n duration: number,\n ...args: any\n ): number {\n if (__DEV__ && IS_ANDROID && duration > MAX_TIMER_DURATION_MS) {\n console.warn(\n ANDROID_LONG_TIMER_MESSAGE +\n '\\n' +\n '(Saw setInterval with duration ' +\n duration +\n 'ms)',\n );\n }\n const id = _allocateCallback(\n () => func.apply(undefined, args),\n 'setInterval',\n );\n Timing.createTimer(id, duration || 0, Date.now(), /* recurring */ true);\n return id;\n },\n\n /**\n * @param {function} func Callback to be invoked before the end of the\n * current JavaScript execution loop.\n */\n setImmediate: function(func: Function, ...args: any) {\n const id = _allocateCallback(\n () => func.apply(undefined, args),\n 'setImmediate',\n );\n immediates.push(id);\n return id;\n },\n\n /**\n * @param {function} func Callback to be invoked every frame.\n */\n requestAnimationFrame: function(func: Function) {\n const id = _allocateCallback(func, 'requestAnimationFrame');\n Timing.createTimer(id, 1, Date.now(), /* recurring */ false);\n return id;\n },\n\n /**\n * @param {function} func Callback to be invoked every frame and provided\n * with time remaining in frame.\n * @param {?object} options\n */\n requestIdleCallback: function(func: Function, options: ?Object) {\n if (requestIdleCallbacks.length === 0) {\n Timing.setSendIdleEvents(true);\n }\n\n const timeout = options && options.timeout;\n const id = _allocateCallback(\n timeout != null\n ? deadline => {\n const timeoutId = requestIdleCallbackTimeouts[id];\n if (timeoutId) {\n JSTimers.clearTimeout(timeoutId);\n delete requestIdleCallbackTimeouts[id];\n }\n return func(deadline);\n }\n : func,\n 'requestIdleCallback',\n );\n requestIdleCallbacks.push(id);\n\n if (timeout != null) {\n const timeoutId = JSTimers.setTimeout(() => {\n const index = requestIdleCallbacks.indexOf(id);\n if (index > -1) {\n requestIdleCallbacks.splice(index, 1);\n _callTimer(id, performanceNow(), true);\n }\n delete requestIdleCallbackTimeouts[id];\n if (requestIdleCallbacks.length === 0) {\n Timing.setSendIdleEvents(false);\n }\n }, timeout);\n requestIdleCallbackTimeouts[id] = timeoutId;\n }\n return id;\n },\n\n cancelIdleCallback: function(timerID: number) {\n _freeCallback(timerID);\n const index = requestIdleCallbacks.indexOf(timerID);\n if (index !== -1) {\n requestIdleCallbacks.splice(index, 1);\n }\n\n const timeoutId = requestIdleCallbackTimeouts[timerID];\n if (timeoutId) {\n JSTimers.clearTimeout(timeoutId);\n delete requestIdleCallbackTimeouts[timerID];\n }\n\n if (requestIdleCallbacks.length === 0) {\n Timing.setSendIdleEvents(false);\n }\n },\n\n clearTimeout: function(timerID: number) {\n _freeCallback(timerID);\n },\n\n clearInterval: function(timerID: number) {\n _freeCallback(timerID);\n },\n\n clearImmediate: function(timerID: number) {\n _freeCallback(timerID);\n const index = immediates.indexOf(timerID);\n if (index !== -1) {\n immediates.splice(index, 1);\n }\n },\n\n cancelAnimationFrame: function(timerID: number) {\n _freeCallback(timerID);\n },\n\n /**\n * This is called from the native side. We are passed an array of timerIDs,\n * and\n */\n callTimers: function(timersToCall: Array) {\n invariant(\n timersToCall.length !== 0,\n 'Cannot call `callTimers` with an empty list of IDs.',\n );\n\n // $FlowFixMe: optionals do not allow assignment from null\n errors = null;\n for (let i = 0; i < timersToCall.length; i++) {\n _callTimer(timersToCall[i], 0);\n }\n\n if (errors) {\n const errorCount = errors.length;\n if (errorCount > 1) {\n // Throw all the other errors in a setTimeout, which will throw each\n // error one at a time\n for (let ii = 1; ii < errorCount; ii++) {\n JSTimers.setTimeout(\n (error => {\n throw error;\n }).bind(null, errors[ii]),\n 0,\n );\n }\n }\n throw errors[0];\n }\n },\n\n callIdleCallbacks: function(frameTime: number) {\n if (\n FRAME_DURATION - (performanceNow() - frameTime) <\n IDLE_CALLBACK_FRAME_DEADLINE\n ) {\n return;\n }\n\n // $FlowFixMe: optionals do not allow assignment from null\n errors = null;\n if (requestIdleCallbacks.length > 0) {\n const passIdleCallbacks = requestIdleCallbacks.slice();\n requestIdleCallbacks = [];\n\n for (let i = 0; i < passIdleCallbacks.length; ++i) {\n _callTimer(passIdleCallbacks[i], frameTime);\n }\n }\n\n if (requestIdleCallbacks.length === 0) {\n Timing.setSendIdleEvents(false);\n }\n\n if (errors) {\n errors.forEach(error =>\n JSTimers.setTimeout(() => {\n throw error;\n }, 0),\n );\n }\n },\n\n /**\n * This is called after we execute any command we receive from native but\n * before we hand control back to native.\n */\n callImmediates() {\n errors = null;\n while (_callImmediatesPass()) {}\n if (errors) {\n errors.forEach(error =>\n JSTimers.setTimeout(() => {\n throw error;\n }, 0),\n );\n }\n },\n\n /**\n * Called from native (in development) when environment times are out-of-sync.\n */\n emitTimeDriftWarning(warningMessage: string) {\n if (hasEmittedTimeDriftWarning) {\n return;\n }\n hasEmittedTimeDriftWarning = true;\n console.warn(warningMessage);\n },\n};\n\nlet ExportedJSTimers;\nif (!Timing) {\n console.warn(\"Timing native module is not available, can't set timers.\");\n // $FlowFixMe: we can assume timers are generally available\n ExportedJSTimers = ({\n callImmediates: JSTimers.callImmediates,\n setImmediate: JSTimers.setImmediate,\n }: typeof JSTimers);\n} else {\n ExportedJSTimers = JSTimers;\n}\n\nBatchedBridge.setImmediatesCallback(\n ExportedJSTimers.callImmediates.bind(ExportedJSTimers),\n);\n\nmodule.exports = ExportedJSTimers;\n","\"use strict\";\n\n/**\n * Copyright (c) 2013-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 * @typechecks\n */\nvar performance = require(\"./performance\");\n\nvar performanceNow;\n/**\n * Detect if we can use `window.performance.now()` and gracefully fallback to\n * `Date.now()` if it doesn't exist. We need to support Firefox < 15 for now\n * because of Facebook's testing infrastructure.\n */\n\nif (performance.now) {\n performanceNow = function performanceNow() {\n return performance.now();\n };\n} else {\n performanceNow = function performanceNow() {\n return Date.now();\n };\n}\n\nmodule.exports = performanceNow;","/**\n * Copyright (c) 2013-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 * @typechecks\n */\n'use strict';\n\nvar ExecutionEnvironment = require(\"./ExecutionEnvironment\");\n\nvar performance;\n\nif (ExecutionEnvironment.canUseDOM) {\n performance = window.performance || window.msPerformance || window.webkitPerformance;\n}\n\nmodule.exports = performance || {};","/**\n * Copyright (c) 2013-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 */\n'use strict';\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\n\nvar ExecutionEnvironment = {\n canUseDOM: canUseDOM,\n canUseWorkers: typeof Worker !== 'undefined',\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n canUseViewport: canUseDOM && !!window.screen,\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\nmodule.exports = ExecutionEnvironment;","/**\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 */\n'use strict';\n\nvar emptyFunction = require(\"./emptyFunction\");\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\n\nfunction printWarning(format) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n}\n\nvar warning = process.env.NODE_ENV !== \"production\" ? function (condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(void 0, [format].concat(args));\n }\n} : emptyFunction;\nmodule.exports = warning;","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst EventTarget = require('event-target-shim');\nconst RCTNetworking = require('RCTNetworking');\n\n/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error\n * found when Flow v0.54 was deployed. To see the error delete this comment and\n * run Flow. */\nconst base64 = require('base64-js');\nconst invariant = require('fbjs/lib/invariant');\n/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error\n * found when Flow v0.54 was deployed. To see the error delete this comment and\n * run Flow. */\nconst warning = require('fbjs/lib/warning');\nconst BlobManager = require('BlobManager');\n\nexport type NativeResponseType = 'base64' | 'blob' | 'text';\nexport type ResponseType =\n | ''\n | 'arraybuffer'\n | 'blob'\n | 'document'\n | 'json'\n | 'text';\nexport type Response = ?Object | string;\n\ntype XHRInterceptor = {\n requestSent(id: number, url: string, method: string, headers: Object): void,\n responseReceived(\n id: number,\n url: string,\n status: number,\n headers: Object,\n ): void,\n dataReceived(id: number, data: string): void,\n loadingFinished(id: number, encodedDataLength: number): void,\n loadingFailed(id: number, error: string): void,\n};\n\n// The native blob module is optional so inject it here if available.\nif (BlobManager.isAvailable) {\n BlobManager.addNetworkingHandler();\n}\n\nconst UNSENT = 0;\nconst OPENED = 1;\nconst HEADERS_RECEIVED = 2;\nconst LOADING = 3;\nconst DONE = 4;\n\nconst SUPPORTED_RESPONSE_TYPES = {\n arraybuffer: typeof global.ArrayBuffer === 'function',\n blob: typeof global.Blob === 'function',\n document: false,\n json: true,\n text: true,\n '': true,\n};\n\nconst REQUEST_EVENTS = [\n 'abort',\n 'error',\n 'load',\n 'loadstart',\n 'progress',\n 'timeout',\n 'loadend',\n];\n\nconst XHR_EVENTS = REQUEST_EVENTS.concat('readystatechange');\n\nclass XMLHttpRequestEventTarget extends EventTarget(...REQUEST_EVENTS) {\n onload: ?Function;\n onloadstart: ?Function;\n onprogress: ?Function;\n ontimeout: ?Function;\n onerror: ?Function;\n onabort: ?Function;\n onloadend: ?Function;\n}\n\n/**\n * Shared base for platform-specific XMLHttpRequest implementations.\n */\nclass XMLHttpRequest extends EventTarget(...XHR_EVENTS) {\n static UNSENT: number = UNSENT;\n static OPENED: number = OPENED;\n static HEADERS_RECEIVED: number = HEADERS_RECEIVED;\n static LOADING: number = LOADING;\n static DONE: number = DONE;\n\n static _interceptor: ?XHRInterceptor = null;\n\n UNSENT: number = UNSENT;\n OPENED: number = OPENED;\n HEADERS_RECEIVED: number = HEADERS_RECEIVED;\n LOADING: number = LOADING;\n DONE: number = DONE;\n\n // EventTarget automatically initializes these to `null`.\n onload: ?Function;\n onloadstart: ?Function;\n onprogress: ?Function;\n ontimeout: ?Function;\n onerror: ?Function;\n onabort: ?Function;\n onloadend: ?Function;\n onreadystatechange: ?Function;\n\n readyState: number = UNSENT;\n responseHeaders: ?Object;\n status: number = 0;\n timeout: number = 0;\n responseURL: ?string;\n withCredentials: boolean = true;\n\n upload: XMLHttpRequestEventTarget = new XMLHttpRequestEventTarget();\n\n _requestId: ?number;\n _subscriptions: Array<*>;\n\n _aborted: boolean = false;\n _cachedResponse: Response;\n _hasError: boolean = false;\n _headers: Object;\n _lowerCaseResponseHeaders: Object;\n _method: ?string = null;\n _response: string | ?Object;\n _responseType: ResponseType;\n _response: string = '';\n _sent: boolean;\n _url: ?string = null;\n _timedOut: boolean = false;\n _trackingName: string = 'unknown';\n _incrementalEvents: boolean = false;\n\n static setInterceptor(interceptor: ?XHRInterceptor) {\n XMLHttpRequest._interceptor = interceptor;\n }\n\n constructor() {\n super();\n this._reset();\n }\n\n _reset(): void {\n this.readyState = this.UNSENT;\n this.responseHeaders = undefined;\n this.status = 0;\n delete this.responseURL;\n\n this._requestId = null;\n\n this._cachedResponse = undefined;\n this._hasError = false;\n this._headers = {};\n this._response = '';\n this._responseType = '';\n this._sent = false;\n this._lowerCaseResponseHeaders = {};\n\n this._clearSubscriptions();\n this._timedOut = false;\n }\n\n get responseType(): ResponseType {\n return this._responseType;\n }\n\n set responseType(responseType: ResponseType): void {\n if (this._sent) {\n throw new Error(\n \"Failed to set the 'responseType' property on 'XMLHttpRequest': The \" +\n 'response type cannot be set after the request has been sent.',\n );\n }\n if (!SUPPORTED_RESPONSE_TYPES.hasOwnProperty(responseType)) {\n warning(\n false,\n `The provided value '${responseType}' is not a valid 'responseType'.`,\n );\n return;\n }\n\n // redboxes early, e.g. for 'arraybuffer' on ios 7\n invariant(\n SUPPORTED_RESPONSE_TYPES[responseType] || responseType === 'document',\n `The provided value '${responseType}' is unsupported in this environment.`,\n );\n\n if (responseType === 'blob') {\n invariant(\n BlobManager.isAvailable,\n 'Native module BlobModule is required for blob support',\n );\n }\n this._responseType = responseType;\n }\n\n get responseText(): string {\n if (this._responseType !== '' && this._responseType !== 'text') {\n throw new Error(\n \"The 'responseText' property is only available if 'responseType' \" +\n `is set to '' or 'text', but it is '${this._responseType}'.`,\n );\n }\n if (this.readyState < LOADING) {\n return '';\n }\n return this._response;\n }\n\n get response(): Response {\n const {responseType} = this;\n if (responseType === '' || responseType === 'text') {\n return this.readyState < LOADING || this._hasError ? '' : this._response;\n }\n\n if (this.readyState !== DONE) {\n return null;\n }\n\n if (this._cachedResponse !== undefined) {\n return this._cachedResponse;\n }\n\n switch (responseType) {\n case 'document':\n this._cachedResponse = null;\n break;\n\n case 'arraybuffer':\n this._cachedResponse = base64.toByteArray(this._response).buffer;\n break;\n\n case 'blob':\n if (typeof this._response === 'object' && this._response) {\n this._cachedResponse = BlobManager.createFromOptions(this._response);\n } else if (this._response === '') {\n this._cachedResponse = null;\n } else { \n throw new Error(`Invalid response for blob: ${this._response}`);\n }\n break;\n\n case 'json':\n try {\n this._cachedResponse = JSON.parse(this._response);\n } catch (_) {\n this._cachedResponse = null;\n }\n break;\n\n default:\n this._cachedResponse = null;\n }\n\n return this._cachedResponse;\n }\n\n // exposed for testing\n __didCreateRequest(requestId: number): void {\n this._requestId = requestId;\n\n XMLHttpRequest._interceptor &&\n XMLHttpRequest._interceptor.requestSent(\n requestId,\n this._url || '',\n this._method || 'GET',\n this._headers,\n );\n }\n\n // exposed for testing\n __didUploadProgress(\n requestId: number,\n progress: number,\n total: number,\n ): void {\n if (requestId === this._requestId) {\n this.upload.dispatchEvent({\n type: 'progress',\n lengthComputable: true,\n loaded: progress,\n total,\n });\n }\n }\n\n __didReceiveResponse(\n requestId: number,\n status: number,\n responseHeaders: ?Object,\n responseURL: ?string,\n ): void {\n if (requestId === this._requestId) {\n this.status = status;\n this.setResponseHeaders(responseHeaders);\n this.setReadyState(this.HEADERS_RECEIVED);\n if (responseURL || responseURL === '') {\n this.responseURL = responseURL;\n } else {\n delete this.responseURL;\n }\n\n XMLHttpRequest._interceptor &&\n XMLHttpRequest._interceptor.responseReceived(\n requestId,\n responseURL || this._url || '',\n status,\n responseHeaders || {},\n );\n }\n }\n\n __didReceiveData(requestId: number, response: string): void {\n if (requestId !== this._requestId) {\n return;\n }\n this._response = response;\n this._cachedResponse = undefined; // force lazy recomputation\n this.setReadyState(this.LOADING);\n\n XMLHttpRequest._interceptor &&\n XMLHttpRequest._interceptor.dataReceived(requestId, response);\n }\n\n __didReceiveIncrementalData(\n requestId: number,\n responseText: string,\n progress: number,\n total: number,\n ) {\n if (requestId !== this._requestId) {\n return;\n }\n if (!this._response) {\n this._response = responseText;\n } else {\n this._response += responseText;\n }\n\n XMLHttpRequest._interceptor &&\n XMLHttpRequest._interceptor.dataReceived(requestId, responseText);\n\n this.setReadyState(this.LOADING);\n this.__didReceiveDataProgress(requestId, progress, total);\n }\n\n __didReceiveDataProgress(\n requestId: number,\n loaded: number,\n total: number,\n ): void {\n if (requestId !== this._requestId) {\n return;\n }\n this.dispatchEvent({\n type: 'progress',\n lengthComputable: total >= 0,\n loaded,\n total,\n });\n }\n\n // exposed for testing\n __didCompleteResponse(\n requestId: number,\n error: string,\n timeOutError: boolean,\n ): void {\n if (requestId === this._requestId) {\n if (error) {\n if (this._responseType === '' || this._responseType === 'text') {\n this._response = error;\n }\n this._hasError = true;\n if (timeOutError) {\n this._timedOut = true;\n }\n }\n this._clearSubscriptions();\n this._requestId = null;\n this.setReadyState(this.DONE);\n\n if (error) {\n XMLHttpRequest._interceptor &&\n XMLHttpRequest._interceptor.loadingFailed(requestId, error);\n } else {\n XMLHttpRequest._interceptor &&\n XMLHttpRequest._interceptor.loadingFinished(\n requestId,\n this._response.length,\n );\n }\n }\n }\n\n _clearSubscriptions(): void {\n (this._subscriptions || []).forEach(sub => {\n if (sub) {\n sub.remove();\n }\n });\n this._subscriptions = [];\n }\n\n getAllResponseHeaders(): ?string {\n if (!this.responseHeaders) {\n // according to the spec, return null if no response has been received\n return null;\n }\n const headers = this.responseHeaders || {};\n return Object.keys(headers)\n .map(headerName => {\n return headerName + ': ' + headers[headerName];\n })\n .join('\\r\\n');\n }\n\n getResponseHeader(header: string): ?string {\n const value = this._lowerCaseResponseHeaders[header.toLowerCase()];\n return value !== undefined ? value : null;\n }\n\n setRequestHeader(header: string, value: any): void {\n if (this.readyState !== this.OPENED) {\n throw new Error('Request has not been opened');\n }\n this._headers[header.toLowerCase()] = String(value);\n }\n\n /**\n * Custom extension for tracking origins of request.\n */\n setTrackingName(trackingName: string): XMLHttpRequest {\n this._trackingName = trackingName;\n return this;\n }\n\n open(method: string, url: string, async: ?boolean): void {\n /* Other optional arguments are not supported yet */\n if (this.readyState !== this.UNSENT) {\n throw new Error('Cannot open, already sending');\n }\n if (async !== undefined && !async) {\n // async is default\n throw new Error('Synchronous http requests are not supported');\n }\n if (!url) {\n throw new Error('Cannot load an empty url');\n }\n this._method = method.toUpperCase();\n this._url = url;\n this._aborted = false;\n this.setReadyState(this.OPENED);\n }\n\n send(data: any): void {\n if (this.readyState !== this.OPENED) {\n throw new Error('Request has not been opened');\n }\n if (this._sent) {\n throw new Error('Request has already been sent');\n }\n this._sent = true;\n const incrementalEvents =\n this._incrementalEvents || !!this.onreadystatechange || !!this.onprogress;\n\n this._subscriptions.push(\n RCTNetworking.addListener('didSendNetworkData', args =>\n this.__didUploadProgress(...args),\n ),\n );\n this._subscriptions.push(\n RCTNetworking.addListener('didReceiveNetworkResponse', args =>\n this.__didReceiveResponse(...args),\n ),\n );\n this._subscriptions.push(\n RCTNetworking.addListener('didReceiveNetworkData', args =>\n this.__didReceiveData(...args),\n ),\n );\n this._subscriptions.push(\n RCTNetworking.addListener('didReceiveNetworkIncrementalData', args =>\n this.__didReceiveIncrementalData(...args),\n ),\n );\n this._subscriptions.push(\n RCTNetworking.addListener('didReceiveNetworkDataProgress', args =>\n this.__didReceiveDataProgress(...args),\n ),\n );\n this._subscriptions.push(\n RCTNetworking.addListener('didCompleteNetworkResponse', args =>\n this.__didCompleteResponse(...args),\n ),\n );\n\n let nativeResponseType: NativeResponseType = 'text';\n if (this._responseType === 'arraybuffer') {\n nativeResponseType = 'base64';\n }\n if (this._responseType === 'blob') {\n nativeResponseType = 'blob';\n }\n\n invariant(this._method, 'Request method needs to be defined.');\n invariant(this._url, 'Request URL needs to be defined.');\n RCTNetworking.sendRequest(\n this._method,\n this._trackingName,\n this._url,\n this._headers,\n data,\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n nativeResponseType,\n incrementalEvents,\n this.timeout,\n this.__didCreateRequest.bind(this),\n this.withCredentials,\n );\n }\n\n abort(): void {\n this._aborted = true;\n if (this._requestId) {\n RCTNetworking.abortRequest(this._requestId);\n }\n // only call onreadystatechange if there is something to abort,\n // below logic is per spec\n if (\n !(\n this.readyState === this.UNSENT ||\n (this.readyState === this.OPENED && !this._sent) ||\n this.readyState === this.DONE\n )\n ) {\n this._reset();\n this.setReadyState(this.DONE);\n }\n // Reset again after, in case modified in handler\n this._reset();\n }\n\n setResponseHeaders(responseHeaders: ?Object): void {\n this.responseHeaders = responseHeaders || null;\n const headers = responseHeaders || {};\n this._lowerCaseResponseHeaders = Object.keys(headers).reduce(\n (lcaseHeaders, headerName) => {\n lcaseHeaders[headerName.toLowerCase()] = headers[headerName];\n return lcaseHeaders;\n },\n {},\n );\n }\n\n setReadyState(newState: number): void {\n this.readyState = newState;\n this.dispatchEvent({type: 'readystatechange'});\n if (newState === this.DONE) {\n if (this._aborted) {\n this.dispatchEvent({type: 'abort'});\n } else if (this._hasError) {\n if (this._timedOut) {\n this.dispatchEvent({type: 'timeout'});\n } else {\n this.dispatchEvent({type: 'error'});\n }\n } else {\n this.dispatchEvent({type: 'load'});\n }\n this.dispatchEvent({type: 'loadend'});\n }\n }\n\n /* global EventListener */\n addEventListener(type: string, listener: EventListener): void {\n // If we dont' have a 'readystatechange' event handler, we don't\n // have to send repeated LOADING events with incremental updates\n // to responseText, which will avoid a bunch of native -> JS\n // bridge traffic.\n if (type === 'readystatechange' || type === 'progress') {\n this._incrementalEvents = true;\n }\n super.addEventListener(type, listener);\n }\n}\n\nmodule.exports = XMLHttpRequest;\n","/**\n * @author Toru Nagashima\n * @copyright 2015 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Requirements\n//-----------------------------------------------------------------------------\n\nvar Commons = require(\"./commons\");\nvar CustomEventTarget = require(\"./custom-event-target\");\nvar EventWrapper = require(\"./event-wrapper\");\nvar LISTENERS = Commons.LISTENERS;\nvar CAPTURE = Commons.CAPTURE;\nvar BUBBLE = Commons.BUBBLE;\nvar ATTRIBUTE = Commons.ATTRIBUTE;\nvar newNode = Commons.newNode;\nvar defineCustomEventTarget = CustomEventTarget.defineCustomEventTarget;\nvar createEventWrapper = EventWrapper.createEventWrapper;\nvar STOP_IMMEDIATE_PROPAGATION_FLAG =\n EventWrapper.STOP_IMMEDIATE_PROPAGATION_FLAG;\n\n//-----------------------------------------------------------------------------\n// Constants\n//-----------------------------------------------------------------------------\n\n/**\n * A flag which shows there is the native `EventTarget` interface object.\n *\n * @type {boolean}\n * @private\n */\nvar HAS_EVENTTARGET_INTERFACE = (\n typeof window !== \"undefined\" &&\n typeof window.EventTarget !== \"undefined\"\n);\n\n//-----------------------------------------------------------------------------\n// Public Interface\n//-----------------------------------------------------------------------------\n\n/**\n * An implementation for `EventTarget` interface.\n *\n * @constructor\n * @public\n */\nvar EventTarget = module.exports = function EventTarget() {\n if (this instanceof EventTarget) {\n // this[LISTENERS] is a Map.\n // Its key is event type.\n // Its value is ListenerNode object or null.\n //\n // interface ListenerNode {\n // var listener: Function\n // var kind: CAPTURE|BUBBLE|ATTRIBUTE\n // var next: ListenerNode|null\n // }\n Object.defineProperty(this, LISTENERS, {value: Object.create(null)});\n }\n else if (arguments.length === 1 && Array.isArray(arguments[0])) {\n return defineCustomEventTarget(EventTarget, arguments[0]);\n }\n else if (arguments.length > 0) {\n var types = Array(arguments.length);\n for (var i = 0; i < arguments.length; ++i) {\n types[i] = arguments[i];\n }\n\n // To use to extend with attribute listener properties.\n // e.g.\n // class MyCustomObject extends EventTarget(\"message\", \"error\") {\n // //...\n // }\n return defineCustomEventTarget(EventTarget, types);\n }\n else {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nEventTarget.prototype = Object.create(\n (HAS_EVENTTARGET_INTERFACE ? window.EventTarget : Object).prototype,\n {\n constructor: {\n value: EventTarget,\n writable: true,\n configurable: true\n },\n\n addEventListener: {\n value: function addEventListener(type, listener, capture) {\n if (listener == null) {\n return false;\n }\n if (typeof listener !== \"function\" && typeof listener !== \"object\") {\n throw new TypeError(\"\\\"listener\\\" is not an object.\");\n }\n\n var kind = (capture ? CAPTURE : BUBBLE);\n var node = this[LISTENERS][type];\n if (node == null) {\n this[LISTENERS][type] = newNode(listener, kind);\n return true;\n }\n\n var prev = null;\n while (node != null) {\n if (node.listener === listener && node.kind === kind) {\n // Should ignore a duplicated listener.\n return false;\n }\n prev = node;\n node = node.next;\n }\n\n prev.next = newNode(listener, kind);\n return true;\n },\n configurable: true,\n writable: true\n },\n\n removeEventListener: {\n value: function removeEventListener(type, listener, capture) {\n if (listener == null) {\n return false;\n }\n\n var kind = (capture ? CAPTURE : BUBBLE);\n var prev = null;\n var node = this[LISTENERS][type];\n while (node != null) {\n if (node.listener === listener && node.kind === kind) {\n if (prev == null) {\n this[LISTENERS][type] = node.next;\n }\n else {\n prev.next = node.next;\n }\n return true;\n }\n\n prev = node;\n node = node.next;\n }\n\n return false;\n },\n configurable: true,\n writable: true\n },\n\n dispatchEvent: {\n value: function dispatchEvent(event) {\n // If listeners aren't registered, terminate.\n var node = this[LISTENERS][event.type];\n if (node == null) {\n return true;\n }\n\n // Since we cannot rewrite several properties, so wrap object.\n var wrapped = createEventWrapper(event, this);\n\n // This doesn't process capturing phase and bubbling phase.\n // This isn't participating in a tree.\n while (node != null) {\n if (typeof node.listener === \"function\") {\n node.listener.call(this, wrapped);\n }\n else if (node.kind !== ATTRIBUTE && typeof node.listener.handleEvent === \"function\") {\n node.listener.handleEvent(wrapped);\n }\n\n if (wrapped[STOP_IMMEDIATE_PROPAGATION_FLAG]) {\n break;\n }\n node = node.next;\n }\n\n return !wrapped.defaultPrevented;\n },\n configurable: true,\n writable: true\n }\n }\n);\n","/**\n * @author Toru Nagashima\n * @copyright 2015 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n\n\"use strict\";\n\n/**\n * Creates a unique key.\n *\n * @param {string} name - A name to create.\n * @returns {symbol|string}\n * @private\n */\nvar createUniqueKey = exports.createUniqueKey = (typeof Symbol !== \"undefined\" ?\n Symbol :\n function createUniqueKey(name) {\n return \"[[\" + name + \"_\" + Math.random().toFixed(8).slice(2) + \"]]\";\n });\n\n/**\n * The key of listeners.\n *\n * @type {symbol|string}\n * @private\n */\nexports.LISTENERS = createUniqueKey(\"listeners\");\n\n/**\n * A value of kind for listeners which are registered in the capturing phase.\n *\n * @type {number}\n * @private\n */\nexports.CAPTURE = 1;\n\n/**\n * A value of kind for listeners which are registered in the bubbling phase.\n *\n * @type {number}\n * @private\n */\nexports.BUBBLE = 2;\n\n/**\n * A value of kind for listeners which are registered as an attribute.\n *\n * @type {number}\n * @private\n */\nexports.ATTRIBUTE = 3;\n\n/**\n * @typedef object ListenerNode\n * @property {function} listener - A listener function.\n * @property {number} kind - The kind of the listener.\n * @property {ListenerNode|null} next - The next node.\n * If this node is the last, this is `null`.\n */\n\n/**\n * Creates a node of singly linked list for a list of listeners.\n *\n * @param {function} listener - A listener function.\n * @param {number} kind - The kind of the listener.\n * @returns {ListenerNode} The created listener node.\n */\nexports.newNode = function newNode(listener, kind) {\n return {listener: listener, kind: kind, next: null};\n};\n","/**\n * @author Toru Nagashima\n * @copyright 2015 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Requirements\n//-----------------------------------------------------------------------------\n\nvar Commons = require(\"./commons\");\nvar LISTENERS = Commons.LISTENERS;\nvar ATTRIBUTE = Commons.ATTRIBUTE;\nvar newNode = Commons.newNode;\n\n//-----------------------------------------------------------------------------\n// Helpers\n//-----------------------------------------------------------------------------\n\n/**\n * Gets a specified attribute listener from a given EventTarget object.\n *\n * @param {EventTarget} eventTarget - An EventTarget object to get.\n * @param {string} type - An event type to get.\n * @returns {function|null} The found attribute listener.\n */\nfunction getAttributeListener(eventTarget, type) {\n var node = eventTarget[LISTENERS][type];\n while (node != null) {\n if (node.kind === ATTRIBUTE) {\n return node.listener;\n }\n node = node.next;\n }\n return null;\n}\n\n/**\n * Sets a specified attribute listener to a given EventTarget object.\n *\n * @param {EventTarget} eventTarget - An EventTarget object to set.\n * @param {string} type - An event type to set.\n * @param {function|null} listener - A listener to be set.\n * @returns {void}\n */\nfunction setAttributeListener(eventTarget, type, listener) {\n if (typeof listener !== \"function\" && typeof listener !== \"object\") {\n listener = null; // eslint-disable-line no-param-reassign\n }\n\n var prev = null;\n var node = eventTarget[LISTENERS][type];\n while (node != null) {\n if (node.kind === ATTRIBUTE) {\n // Remove old value.\n if (prev == null) {\n eventTarget[LISTENERS][type] = node.next;\n }\n else {\n prev.next = node.next;\n }\n }\n else {\n prev = node;\n }\n\n node = node.next;\n }\n\n // Add new value.\n if (listener != null) {\n if (prev == null) {\n eventTarget[LISTENERS][type] = newNode(listener, ATTRIBUTE);\n }\n else {\n prev.next = newNode(listener, ATTRIBUTE);\n }\n }\n}\n\n//-----------------------------------------------------------------------------\n// Public Interface\n//-----------------------------------------------------------------------------\n\n/**\n * Defines an `EventTarget` implementation which has `onfoobar` attributes.\n *\n * @param {EventTarget} EventTargetBase - A base implementation of EventTarget.\n * @param {string[]} types - A list of event types which are defined as attribute listeners.\n * @returns {EventTarget} The defined `EventTarget` implementation which has attribute listeners.\n */\nexports.defineCustomEventTarget = function(EventTargetBase, types) {\n function EventTarget() {\n EventTargetBase.call(this);\n }\n\n var descripter = {\n constructor: {\n value: EventTarget,\n configurable: true,\n writable: true\n }\n };\n\n types.forEach(function(type) {\n descripter[\"on\" + type] = {\n get: function() { return getAttributeListener(this, type); },\n set: function(listener) { setAttributeListener(this, type, listener); },\n configurable: true,\n enumerable: true\n };\n });\n\n EventTarget.prototype = Object.create(EventTargetBase.prototype, descripter);\n\n return EventTarget;\n};\n","/**\n * @author Toru Nagashima\n * @copyright 2015 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n\n\"use strict\";\n\n//-----------------------------------------------------------------------------\n// Requirements\n//-----------------------------------------------------------------------------\n\nvar createUniqueKey = require(\"./commons\").createUniqueKey;\n\n//-----------------------------------------------------------------------------\n// Constsnts\n//-----------------------------------------------------------------------------\n\n/**\n * The key of the flag which is turned on by `stopImmediatePropagation` method.\n *\n * @type {symbol|string}\n * @private\n */\nvar STOP_IMMEDIATE_PROPAGATION_FLAG =\n createUniqueKey(\"stop_immediate_propagation_flag\");\n\n/**\n * The key of the flag which is turned on by `preventDefault` method.\n *\n * @type {symbol|string}\n * @private\n */\nvar CANCELED_FLAG = createUniqueKey(\"canceled_flag\");\n\n/**\n * The key of the original event object.\n *\n * @type {symbol|string}\n * @private\n */\nvar ORIGINAL_EVENT = createUniqueKey(\"original_event\");\n\n/**\n * Method definitions for the event wrapper.\n *\n * @type {object}\n * @private\n */\nvar wrapperPrototypeDefinition = Object.freeze({\n stopPropagation: Object.freeze({\n value: function stopPropagation() {\n var e = this[ORIGINAL_EVENT];\n if (typeof e.stopPropagation === \"function\") {\n e.stopPropagation();\n }\n },\n writable: true,\n configurable: true\n }),\n\n stopImmediatePropagation: Object.freeze({\n value: function stopImmediatePropagation() {\n this[STOP_IMMEDIATE_PROPAGATION_FLAG] = true;\n\n var e = this[ORIGINAL_EVENT];\n if (typeof e.stopImmediatePropagation === \"function\") {\n e.stopImmediatePropagation();\n }\n },\n writable: true,\n configurable: true\n }),\n\n preventDefault: Object.freeze({\n value: function preventDefault() {\n if (this.cancelable === true) {\n this[CANCELED_FLAG] = true;\n }\n\n var e = this[ORIGINAL_EVENT];\n if (typeof e.preventDefault === \"function\") {\n e.preventDefault();\n }\n },\n writable: true,\n configurable: true\n }),\n\n defaultPrevented: Object.freeze({\n get: function defaultPrevented() { return this[CANCELED_FLAG]; },\n enumerable: true,\n configurable: true\n })\n});\n\n//-----------------------------------------------------------------------------\n// Public Interface\n//-----------------------------------------------------------------------------\n\nexports.STOP_IMMEDIATE_PROPAGATION_FLAG = STOP_IMMEDIATE_PROPAGATION_FLAG;\n\n/**\n * Creates an event wrapper.\n *\n * We cannot modify several properties of `Event` object, so we need to create the wrapper.\n * Plus, this wrapper supports non `Event` objects.\n *\n * @param {Event|{type: string}} event - An original event to create the wrapper.\n * @param {EventTarget} eventTarget - The event target of the event.\n * @returns {Event} The created wrapper. This object is implemented `Event` interface.\n * @private\n */\nexports.createEventWrapper = function createEventWrapper(event, eventTarget) {\n var timeStamp = (\n typeof event.timeStamp === \"number\" ? event.timeStamp : Date.now()\n );\n var propertyDefinition = {\n type: {value: event.type, enumerable: true},\n target: {value: eventTarget, enumerable: true},\n currentTarget: {value: eventTarget, enumerable: true},\n eventPhase: {value: 2, enumerable: true},\n bubbles: {value: Boolean(event.bubbles), enumerable: true},\n cancelable: {value: Boolean(event.cancelable), enumerable: true},\n timeStamp: {value: timeStamp, enumerable: true},\n isTrusted: {value: false, enumerable: true}\n };\n propertyDefinition[STOP_IMMEDIATE_PROPAGATION_FLAG] = {value: false, writable: true};\n propertyDefinition[CANCELED_FLAG] = {value: false, writable: true};\n propertyDefinition[ORIGINAL_EVENT] = {value: event};\n\n // For CustomEvent.\n if (typeof event.detail !== \"undefined\") {\n propertyDefinition.detail = {value: event.detail, enumerable: true};\n }\n\n return Object.create(\n Object.create(event, wrapperPrototypeDefinition),\n propertyDefinition\n );\n};\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\n// Do not require the native RCTNetworking module directly! Use this wrapper module instead.\n// It will add the necessary requestId, so that you don't have to generate it yourself.\nconst MissingNativeEventEmitterShim = require('MissingNativeEventEmitterShim');\nconst NativeEventEmitter = require('NativeEventEmitter');\nconst RCTNetworkingNative = require('NativeModules').Networking;\nconst convertRequestBody = require('convertRequestBody');\n\nimport type {RequestBody} from 'convertRequestBody';\n\ntype Header = [string, string];\n\n// Convert FormData headers to arrays, which are easier to consume in\n// native on Android.\nfunction convertHeadersMapToArray(headers: Object): Array
{\n const headerArray = [];\n for (const name in headers) {\n headerArray.push([name, headers[name]]);\n }\n return headerArray;\n}\n\nlet _requestId = 1;\nfunction generateRequestId(): number {\n return _requestId++;\n}\n\n/**\n * This class is a wrapper around the native RCTNetworking module. It adds a necessary unique\n * requestId to each network request that can be used to abort that request later on.\n */\nclass RCTNetworking extends NativeEventEmitter {\n isAvailable: boolean = true;\n\n constructor() {\n super(RCTNetworkingNative);\n }\n\n sendRequest(\n method: string,\n trackingName: string,\n url: string,\n headers: Object,\n data: RequestBody,\n responseType: 'text' | 'base64',\n incrementalUpdates: boolean,\n timeout: number,\n callback: (requestId: number) => any,\n withCredentials: boolean,\n ) {\n const body = convertRequestBody(data);\n if (body && body.formData) {\n body.formData = body.formData.map(part => ({\n ...part,\n headers: convertHeadersMapToArray(part.headers),\n }));\n }\n const requestId = generateRequestId();\n RCTNetworkingNative.sendRequest(\n method,\n url,\n requestId,\n convertHeadersMapToArray(headers),\n {...body, trackingName},\n responseType,\n incrementalUpdates,\n timeout,\n withCredentials,\n );\n callback(requestId);\n }\n\n abortRequest(requestId: number) {\n RCTNetworkingNative.abortRequest(requestId);\n }\n\n clearCookies(callback: (result: boolean) => any) {\n RCTNetworkingNative.clearCookies(callback);\n }\n}\n\nif (__DEV__ && !RCTNetworkingNative) {\n class MissingNativeRCTNetworkingShim extends MissingNativeEventEmitterShim {\n constructor() {\n super('RCTNetworking', 'Networking');\n }\n\n sendRequest(...args: Array) {\n this.throwMissingNativeModule();\n }\n\n abortRequest(...args: Array) {\n this.throwMissingNativeModule();\n }\n\n clearCookies(...args: Array) {\n this.throwMissingNativeModule();\n }\n }\n\n // This module depends on the native `RCTNetworkingNative` module. If you don't include it,\n // `RCTNetworking.isAvailable` will return `false`, and any method calls will throw.\n // We reassign the class variable to keep the autodoc generator happy.\n RCTNetworking = new MissingNativeRCTNetworkingShim();\n} else {\n RCTNetworking = new RCTNetworking();\n}\n\nmodule.exports = RCTNetworking;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst EmitterSubscription = require('EmitterSubscription');\nconst EventEmitter = require('EventEmitter');\n\nconst invariant = require('fbjs/lib/invariant');\n\nclass MissingNativeEventEmitterShim extends EventEmitter {\n isAvailable: boolean = false;\n _nativeModuleName: string;\n _nativeEventEmitterName: string;\n\n constructor(nativeModuleName: string, nativeEventEmitterName: string) {\n super(null);\n this._nativeModuleName = nativeModuleName;\n this._nativeEventEmitterName = nativeEventEmitterName;\n }\n\n throwMissingNativeModule() {\n invariant(\n false,\n `Cannot use '${this._nativeEventEmitterName}' module when ` +\n `native '${this._nativeModuleName}' is not included in the build. ` +\n `Either include it, or check '${\n this._nativeEventEmitterName\n }'.isAvailable ` +\n 'before calling any methods.',\n );\n }\n\n // EventEmitter\n addListener(eventType: string, listener: Function, context: ?Object) {\n this.throwMissingNativeModule();\n }\n\n removeAllListeners(eventType: string) {\n this.throwMissingNativeModule();\n }\n\n removeSubscription(subscription: EmitterSubscription) {\n this.throwMissingNativeModule();\n }\n}\n\nmodule.exports = MissingNativeEventEmitterShim;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst EventEmitter = require('EventEmitter');\nconst Platform = require('Platform');\nconst RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\n\nconst invariant = require('fbjs/lib/invariant');\n\nimport type EmitterSubscription from 'EmitterSubscription';\n\ntype NativeModule = {\n +addListener: (eventType: string) => void,\n +removeListeners: (count: number) => void,\n};\n\n/**\n * Abstract base class for implementing event-emitting modules. This implements\n * a subset of the standard EventEmitter node module API.\n */\nclass NativeEventEmitter extends EventEmitter {\n _nativeModule: ?NativeModule;\n\n constructor(nativeModule: ?NativeModule) {\n super(RCTDeviceEventEmitter.sharedSubscriber);\n if (Platform.OS === 'ios') {\n invariant(nativeModule, 'Native module cannot be null.');\n this._nativeModule = nativeModule;\n }\n }\n\n addListener(\n eventType: string,\n listener: Function,\n context: ?Object,\n ): EmitterSubscription {\n if (this._nativeModule != null) {\n this._nativeModule.addListener(eventType);\n }\n return super.addListener(eventType, listener, context);\n }\n\n removeAllListeners(eventType: string) {\n invariant(eventType, 'eventType argument is required.');\n const count = this.listeners(eventType).length;\n if (this._nativeModule != null) {\n this._nativeModule.removeListeners(count);\n }\n super.removeAllListeners(eventType);\n }\n\n removeSubscription(subscription: EmitterSubscription) {\n if (this._nativeModule != null) {\n this._nativeModule.removeListeners(1);\n }\n super.removeSubscription(subscription);\n }\n}\n\nmodule.exports = NativeEventEmitter;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst binaryToBase64 = require('binaryToBase64');\n\nconst Blob = require('Blob');\nconst FormData = require('FormData');\n\nexport type RequestBody =\n | string\n | Blob\n | FormData\n | {uri: string}\n | ArrayBuffer\n | $ArrayBufferView;\n\nfunction convertRequestBody(body: RequestBody): Object {\n if (typeof body === 'string') {\n return {string: body};\n }\n if (body instanceof Blob) {\n return {blob: body.data};\n }\n if (body instanceof FormData) {\n return {formData: body.getParts()};\n }\n if (body instanceof ArrayBuffer || ArrayBuffer.isView(body)) {\n // $FlowFixMe: no way to assert that 'body' is indeed an ArrayBufferView\n return {base64: binaryToBase64(body)};\n }\n return body;\n}\n\nmodule.exports = convertRequestBody;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\n/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error\n * found when Flow v0.54 was deployed. To see the error delete this comment and\n * run Flow. */\nconst base64 = require('base64-js');\n\nfunction binaryToBase64(data: ArrayBuffer | $ArrayBufferView) {\n if (data instanceof ArrayBuffer) {\n data = new Uint8Array(data);\n }\n if (data instanceof Uint8Array) {\n return base64.fromByteArray(data);\n }\n if (!ArrayBuffer.isView(data)) {\n throw new Error('data must be ArrayBuffer or typed array');\n }\n const {buffer, byteOffset, byteLength} = data;\n return base64.fromByteArray(new Uint8Array(buffer, byteOffset, byteLength));\n}\n\nmodule.exports = binaryToBase64;\n","/**\n * Copyright (c) 2013-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 * @flow\n * @format\n */\n\n'use strict';\n\nimport type {BlobData, BlobOptions} from 'BlobTypes';\n\n/**\n * Opaque JS representation of some binary data in native.\n *\n * The API is modeled after the W3C Blob API, with one caveat\n * regarding explicit deallocation. Refer to the `close()`\n * method for further details.\n *\n * Example usage in a React component:\n *\n * class WebSocketImage extends React.Component {\n * state = {blob: null};\n * componentDidMount() {\n * let ws = this.ws = new WebSocket(...);\n * ws.binaryType = 'blob';\n * ws.onmessage = (event) => {\n * if (this.state.blob) {\n * this.state.blob.close();\n * }\n * this.setState({blob: event.data});\n * };\n * }\n * componentUnmount() {\n * if (this.state.blob) {\n * this.state.blob.close();\n * }\n * this.ws.close();\n * }\n * render() {\n * if (!this.state.blob) {\n * return ;\n * }\n * return ;\n * }\n * }\n *\n * Reference: https://developer.mozilla.org/en-US/docs/Web/API/Blob\n */\nclass Blob {\n _data: ?BlobData;\n\n /**\n * Constructor for JS consumers.\n * Currently we only support creating Blobs from other Blobs.\n * Reference: https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob\n */\n constructor(parts: Array = [], options?: BlobOptions) {\n const BlobManager = require('BlobManager');\n this.data = BlobManager.createFromParts(parts, options).data;\n }\n\n /*\n * This method is used to create a new Blob object containing\n * the data in the specified range of bytes of the source Blob.\n * Reference: https://developer.mozilla.org/en-US/docs/Web/API/Blob/slice\n */\n set data(data: ?BlobData) {\n this._data = data;\n }\n\n get data(): BlobData {\n if (!this._data) {\n throw new Error('Blob has been closed and is no longer available');\n }\n\n return this._data;\n }\n\n slice(start?: number, end?: number): Blob {\n const BlobManager = require('BlobManager');\n let {offset, size} = this.data;\n\n if (typeof start === 'number') {\n if (start > size) {\n start = size;\n }\n offset += start;\n size -= start;\n\n if (typeof end === 'number') {\n if (end < 0) {\n end = this.size + end;\n }\n size = end - start;\n }\n }\n return BlobManager.createFromOptions({\n blobId: this.data.blobId,\n offset,\n size,\n });\n }\n\n /**\n * This method is in the standard, but not actually implemented by\n * any browsers at this point. It's important for how Blobs work in\n * React Native, however, since we cannot de-allocate resources automatically,\n * so consumers need to explicitly de-allocate them.\n *\n * Note that the semantics around Blobs created via `blob.slice()`\n * and `new Blob([blob])` are different. `blob.slice()` creates a\n * new *view* onto the same binary data, so calling `close()` on any\n * of those views is enough to deallocate the data, whereas\n * `new Blob([blob, ...])` actually copies the data in memory.\n */\n close() {\n const BlobManager = require('BlobManager');\n BlobManager.release(this.data.blobId);\n this.data = null;\n }\n\n /**\n * Size of the data contained in the Blob object, in bytes.\n */\n get size(): number {\n return this.data.size;\n }\n\n /*\n * String indicating the MIME type of the data contained in the Blob.\n * If the type is unknown, this string is empty.\n */\n get type(): string {\n return this.data.type || '';\n }\n}\n\nmodule.exports = Blob;\n","/**\n * Copyright (c) 2013-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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nconst Blob = require('Blob');\nconst BlobRegistry = require('BlobRegistry');\nconst {BlobModule} = require('NativeModules');\n\nimport type {BlobData, BlobOptions} from 'BlobTypes';\n\n/*eslint-disable no-bitwise */\n/*eslint-disable eqeqeq */\n\n/**\n * Based on the rfc4122-compliant solution posted at\n * http://stackoverflow.com/questions/105034\n */\nfunction uuidv4(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * Module to manage blobs. Wrapper around the native blob module.\n */\nclass BlobManager {\n /**\n * If the native blob module is available.\n */\n static isAvailable = !!BlobModule;\n\n /**\n * Create blob from existing array of blobs.\n */\n static createFromParts(\n parts: Array,\n options?: BlobOptions,\n ): Blob {\n const blobId = uuidv4();\n const items = parts.map(part => {\n if (\n part instanceof ArrayBuffer ||\n (global.ArrayBufferView && part instanceof global.ArrayBufferView)\n ) {\n throw new Error(\n \"Creating blobs from 'ArrayBuffer' and 'ArrayBufferView' are not supported\",\n );\n }\n if (part instanceof Blob) {\n return {\n data: part.data,\n type: 'blob',\n };\n } else {\n return {\n data: String(part),\n type: 'string',\n };\n }\n });\n const size = items.reduce((acc, curr) => {\n if (curr.type === 'string') {\n return acc + global.unescape(encodeURI(curr.data)).length;\n } else {\n return acc + curr.data.size;\n }\n }, 0);\n\n BlobModule.createFromParts(items, blobId);\n\n return BlobManager.createFromOptions({\n blobId,\n offset: 0,\n size,\n type: options ? options.type : '',\n lastModified: options ? options.lastModified : Date.now(),\n });\n }\n\n /**\n * Create blob instance from blob data from native.\n * Used internally by modules like XHR, WebSocket, etc.\n */\n static createFromOptions(options: BlobData): Blob {\n BlobRegistry.register(options.blobId);\n return Object.assign(Object.create(Blob.prototype), {data: options});\n }\n\n /**\n * Deallocate resources for a blob.\n */\n static release(blobId: string): void {\n BlobRegistry.unregister(blobId);\n if (BlobRegistry.has(blobId)) {\n return;\n }\n BlobModule.release(blobId);\n }\n\n /**\n * Inject the blob content handler in the networking module to support blob\n * requests and responses.\n */\n static addNetworkingHandler(): void {\n BlobModule.addNetworkingHandler();\n }\n\n /**\n * Indicate the websocket should return a blob for incoming binary\n * messages.\n */\n static addWebSocketHandler(socketId: number): void {\n BlobModule.addWebSocketHandler(socketId);\n }\n\n /**\n * Indicate the websocket should no longer return a blob for incoming\n * binary messages.\n */\n static removeWebSocketHandler(socketId: number): void {\n BlobModule.removeWebSocketHandler(socketId);\n }\n\n /**\n * Send a blob message to a websocket.\n */\n static sendOverSocket(blob: Blob, socketId: number): void {\n BlobModule.sendOverSocket(blob.data, socketId);\n }\n}\n\nmodule.exports = BlobManager;\n","/**\n * Copyright (c) 2013-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 * @flow strict\n * @format\n */\n\nconst registry: {[key: string]: number} = {};\n\nconst register = (id: string) => {\n if (registry[id]) {\n registry[id]++;\n } else {\n registry[id] = 1;\n }\n};\n\nconst unregister = (id: string) => {\n if (registry[id]) {\n registry[id]--;\n if (registry[id] <= 0) {\n delete registry[id];\n }\n }\n};\n\nconst has = (id: string) => {\n return registry[id] && registry[id] > 0;\n};\n\nmodule.exports = {\n register,\n unregister,\n has,\n};\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\ntype FormDataValue = any;\ntype FormDataNameValuePair = [string, FormDataValue];\n\ntype Headers = {[name: string]: string};\ntype FormDataPart =\n | {\n string: string,\n headers: Headers,\n }\n | {\n uri: string,\n headers: Headers,\n name?: string,\n type?: string,\n };\n\n/**\n * Polyfill for XMLHttpRequest2 FormData API, allowing multipart POST requests\n * with mixed data (string, native files) to be submitted via XMLHttpRequest.\n *\n * Example:\n *\n * var photo = {\n * uri: uriFromCameraRoll,\n * type: 'image/jpeg',\n * name: 'photo.jpg',\n * };\n *\n * var body = new FormData();\n * body.append('authToken', 'secret');\n * body.append('photo', photo);\n * body.append('title', 'A beautiful photo!');\n *\n * xhr.open('POST', serverURL);\n * xhr.send(body);\n */\nclass FormData {\n _parts: Array;\n\n constructor() {\n this._parts = [];\n }\n\n append(key: string, value: FormDataValue) {\n // The XMLHttpRequest spec doesn't specify if duplicate keys are allowed.\n // MDN says that any new values should be appended to existing values.\n // In any case, major browsers allow duplicate keys, so that's what we'll do\n // too. They'll simply get appended as additional form data parts in the\n // request body, leaving the server to deal with them.\n this._parts.push([key, value]);\n }\n\n getParts(): Array {\n return this._parts.map(([name, value]) => {\n const contentDisposition = 'form-data; name=\"' + name + '\"';\n\n const headers: Headers = {'content-disposition': contentDisposition};\n\n // The body part is a \"blob\", which in React Native just means\n // an object with a `uri` attribute. Optionally, it can also\n // have a `name` and `type` attribute to specify filename and\n // content type (cf. web Blob interface.)\n if (typeof value === 'object' && value) {\n if (typeof value.name === 'string') {\n headers['content-disposition'] += '; filename=\"' + value.name + '\"';\n }\n if (typeof value.type === 'string') {\n headers['content-type'] = value.type;\n }\n return {...value, headers, fieldName: name};\n }\n // Convert non-object values to strings as per FormData.append() spec\n return {string: String(value), headers, fieldName: name};\n });\n }\n}\n\nmodule.exports = FormData;\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n/* globals Headers, Request, Response */\n\n'use strict';\n\nconst whatwg = require('whatwg-fetch');\n\nif (whatwg && whatwg.fetch) {\n module.exports = whatwg;\n} else {\n module.exports = {fetch, Headers, Request, Response};\n}\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n// Fork of https://github.com/github/fetch/blob/master/fetch.js that does not\n// use reponseType: 'blob' by default. RN already has specific native implementations\n// for different response types so there is no need to add the extra blob overhead.\n\n// Copyright (c) 2014-2016 GitHub, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining\n// a copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to\n// the following conditions:\n//\n// The above copyright notice and this permission notice shall be\n// included in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return;\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true;\n } catch (e) {\n return false;\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self,\n };\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]',\n ];\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj);\n };\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return (\n obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n );\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name');\n }\n return name.toLowerCase();\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value;\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value};\n },\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator;\n };\n }\n\n return iterator;\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ',' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null;\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name));\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items);\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items);\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items);\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'));\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n });\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise;\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise;\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('');\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0);\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer;\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (\n support.searchParams &&\n URLSearchParams.prototype.isPrototypeOf(body)\n ) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (\n support.arrayBuffer &&\n (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))\n ) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n throw new Error('unsupported BodyInit type');\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (\n support.searchParams &&\n URLSearchParams.prototype.isPrototypeOf(body)\n ) {\n this.headers.set(\n 'content-type',\n 'application/x-www-form-urlencoded;charset=UTF-8',\n );\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected;\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob);\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]));\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob');\n } else {\n return Promise.resolve(new Blob([this._bodyText]));\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer);\n } else {\n return this.blob().then(readBlobAsArrayBuffer);\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected;\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob);\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer));\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text');\n } else {\n return Promise.resolve(this._bodyText);\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode);\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse);\n };\n\n return this;\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method;\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read');\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'omit';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests');\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit});\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form;\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers;\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url,\n });\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response;\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code');\n }\n\n return new Response(null, {status: status, headers: {location: url}});\n };\n\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n var xhr = new XMLHttpRequest();\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || ''),\n };\n options.url =\n 'responseURL' in xhr\n ? xhr.responseURL\n : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n xhr.send(\n typeof request._bodyInit === 'undefined' ? null : request._bodyInit,\n );\n });\n };\n self.fetch.polyfill = true;\n})(typeof self !== 'undefined' ? self : this);\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst Blob = require('Blob');\nconst EventTarget = require('event-target-shim');\nconst NativeEventEmitter = require('NativeEventEmitter');\nconst BlobManager = require('BlobManager');\nconst NativeModules = require('NativeModules');\nconst Platform = require('Platform');\nconst WebSocketEvent = require('WebSocketEvent');\n\n/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error\n * found when Flow v0.54 was deployed. To see the error delete this comment and\n * run Flow. */\nconst base64 = require('base64-js');\nconst binaryToBase64 = require('binaryToBase64');\nconst invariant = require('fbjs/lib/invariant');\n\nconst {WebSocketModule} = NativeModules;\n\nimport type EventSubscription from 'EventSubscription';\n\ntype ArrayBufferView =\n | Int8Array\n | Uint8Array\n | Uint8ClampedArray\n | Int16Array\n | Uint16Array\n | Int32Array\n | Uint32Array\n | Float32Array\n | Float64Array\n | DataView;\n\ntype BinaryType = 'blob' | 'arraybuffer';\n\nconst CONNECTING = 0;\nconst OPEN = 1;\nconst CLOSING = 2;\nconst CLOSED = 3;\n\nconst CLOSE_NORMAL = 1000;\n\nconst WEBSOCKET_EVENTS = ['close', 'error', 'message', 'open'];\n\nlet nextWebSocketId = 0;\n\n/**\n * Browser-compatible WebSockets implementation.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * See https://github.com/websockets/ws\n */\nclass WebSocket extends EventTarget(...WEBSOCKET_EVENTS) {\n static CONNECTING = CONNECTING;\n static OPEN = OPEN;\n static CLOSING = CLOSING;\n static CLOSED = CLOSED;\n\n CONNECTING: number = CONNECTING;\n OPEN: number = OPEN;\n CLOSING: number = CLOSING;\n CLOSED: number = CLOSED;\n\n _socketId: number;\n _eventEmitter: NativeEventEmitter;\n _subscriptions: Array;\n _binaryType: ?BinaryType;\n\n onclose: ?Function;\n onerror: ?Function;\n onmessage: ?Function;\n onopen: ?Function;\n\n bufferedAmount: number;\n extension: ?string;\n protocol: ?string;\n readyState: number = CONNECTING;\n url: ?string;\n\n // This module depends on the native `WebSocketModule` module. If you don't include it,\n // `WebSocket.isAvailable` will return `false`, and WebSocket constructor will throw an error\n static isAvailable: boolean = !!WebSocketModule;\n\n constructor(\n url: string,\n protocols: ?string | ?Array,\n options: ?{headers?: {origin?: string}},\n ) {\n super();\n if (typeof protocols === 'string') {\n protocols = [protocols];\n }\n\n const {headers = {}, ...unrecognized} = options || {};\n\n // Preserve deprecated backwards compatibility for the 'origin' option\n /* $FlowFixMe(>=0.68.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.68 was deployed. To see the error delete this\n * comment and run Flow. */\n if (unrecognized && typeof unrecognized.origin === 'string') {\n console.warn(\n 'Specifying `origin` as a WebSocket connection option is deprecated. Include it under `headers` instead.',\n );\n /* $FlowFixMe(>=0.54.0 site=react_native_fb,react_native_oss) This\n * comment suppresses an error found when Flow v0.54 was deployed. To see\n * the error delete this comment and run Flow. */\n headers.origin = unrecognized.origin;\n /* $FlowFixMe(>=0.54.0 site=react_native_fb,react_native_oss) This\n * comment suppresses an error found when Flow v0.54 was deployed. To see\n * the error delete this comment and run Flow. */\n delete unrecognized.origin;\n }\n\n // Warn about and discard anything else\n if (Object.keys(unrecognized).length > 0) {\n console.warn(\n 'Unrecognized WebSocket connection option(s) `' +\n Object.keys(unrecognized).join('`, `') +\n '`. ' +\n 'Did you mean to put these under `headers`?',\n );\n }\n\n if (!Array.isArray(protocols)) {\n protocols = null;\n }\n\n if (!WebSocket.isAvailable) {\n throw new Error(\n 'Cannot initialize WebSocket module. ' +\n 'Native module WebSocketModule is missing.',\n );\n }\n\n this._eventEmitter = new NativeEventEmitter(WebSocketModule);\n this._socketId = nextWebSocketId++;\n this._registerEvents();\n WebSocketModule.connect(\n url,\n protocols,\n {headers},\n this._socketId,\n );\n }\n\n get binaryType(): ?BinaryType {\n return this._binaryType;\n }\n\n set binaryType(binaryType: BinaryType): void {\n if (binaryType !== 'blob' && binaryType !== 'arraybuffer') {\n throw new Error(\"binaryType must be either 'blob' or 'arraybuffer'\");\n }\n if (this._binaryType === 'blob' || binaryType === 'blob') {\n invariant(\n BlobManager.isAvailable,\n 'Native module BlobModule is required for blob support',\n );\n if (binaryType === 'blob') {\n BlobManager.addWebSocketHandler(this._socketId);\n } else {\n BlobManager.removeWebSocketHandler(this._socketId);\n }\n }\n this._binaryType = binaryType;\n }\n\n get binaryType(): ?BinaryType {\n return this._binaryType;\n }\n\n close(code?: number, reason?: string): void {\n if (this.readyState === this.CLOSING || this.readyState === this.CLOSED) {\n return;\n }\n\n this.readyState = this.CLOSING;\n this._close(code, reason);\n }\n\n send(data: string | ArrayBuffer | ArrayBufferView | Blob): void {\n if (this.readyState === this.CONNECTING) {\n throw new Error('INVALID_STATE_ERR');\n }\n\n if (data instanceof Blob) {\n invariant(\n BlobManager.isAvailable,\n 'Native module BlobModule is required for blob support',\n );\n BlobManager.sendOverSocket(data, this._socketId);\n return;\n }\n\n if (typeof data === 'string') {\n WebSocketModule.send(data, this._socketId);\n return;\n }\n\n if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {\n WebSocketModule.sendBinary(binaryToBase64(data), this._socketId);\n return;\n }\n\n throw new Error('Unsupported data type');\n }\n\n ping(): void {\n if (this.readyState === this.CONNECTING) {\n throw new Error('INVALID_STATE_ERR');\n }\n\n WebSocketModule.ping(this._socketId);\n }\n\n _close(code?: number, reason?: string): void {\n if (Platform.OS === 'android') {\n // See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent\n const statusCode = typeof code === 'number' ? code : CLOSE_NORMAL;\n const closeReason = typeof reason === 'string' ? reason : '';\n WebSocketModule.close(statusCode, closeReason, this._socketId);\n } else {\n WebSocketModule.close(this._socketId);\n }\n\n if (BlobManager.isAvailable && this._binaryType === 'blob') {\n BlobManager.removeWebSocketHandler(this._socketId);\n }\n }\n\n _unregisterEvents(): void {\n this._subscriptions.forEach(e => e.remove());\n this._subscriptions = [];\n }\n\n _registerEvents(): void {\n this._subscriptions = [\n this._eventEmitter.addListener('websocketMessage', ev => {\n if (ev.id !== this._socketId) {\n return;\n }\n let data = ev.data;\n switch (ev.type) {\n case 'binary':\n data = base64.toByteArray(ev.data).buffer;\n break;\n case 'blob':\n data = BlobManager.createFromOptions(ev.data);\n break;\n }\n this.dispatchEvent(new WebSocketEvent('message', {data}));\n }),\n this._eventEmitter.addListener('websocketOpen', ev => {\n if (ev.id !== this._socketId) {\n return;\n }\n this.readyState = this.OPEN;\n this.dispatchEvent(new WebSocketEvent('open'));\n }),\n this._eventEmitter.addListener('websocketClosed', ev => {\n if (ev.id !== this._socketId) {\n return;\n }\n this.readyState = this.CLOSED;\n this.dispatchEvent(\n new WebSocketEvent('close', {\n code: ev.code,\n reason: ev.reason,\n }),\n );\n this._unregisterEvents();\n this.close();\n }),\n this._eventEmitter.addListener('websocketFailed', ev => {\n if (ev.id !== this._socketId) {\n return;\n }\n this.readyState = this.CLOSED;\n this.dispatchEvent(\n new WebSocketEvent('error', {\n message: ev.message,\n }),\n );\n this.dispatchEvent(\n new WebSocketEvent('close', {\n message: ev.message,\n }),\n );\n this._unregisterEvents();\n this.close();\n }),\n ];\n }\n}\n\nmodule.exports = WebSocket;\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\n/**\n * Event object passed to the `onopen`, `onclose`, `onmessage`, `onerror`\n * callbacks of `WebSocket`.\n *\n * The `type` property is \"open\", \"close\", \"message\", \"error\" respectively.\n *\n * In case of \"message\", the `data` property contains the incoming data.\n */\nclass WebSocketEvent {\n constructor(type, eventInitDict) {\n this.type = type.toString();\n Object.assign(this, eventInitDict);\n }\n}\n\nmodule.exports = WebSocketEvent;\n","/**\n * Copyright (c) 2013-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 * @flow\n * @format\n */\n'use strict';\n\nconst Blob = require('Blob');\n\nconst invariant = require('fbjs/lib/invariant');\n\nimport type {BlobOptions} from 'BlobTypes';\n\n/**\n * The File interface provides information about files.\n */\nclass File extends Blob {\n /**\n * Constructor for JS consumers.\n */\n constructor(\n parts: Array,\n name: string,\n options?: BlobOptions,\n ) {\n invariant(\n parts != null && name != null,\n 'Failed to construct `File`: Must pass both `parts` and `name` arguments.',\n );\n\n super(parts, options);\n this.data.name = name;\n }\n\n /**\n * Name of the file.\n */\n get name(): string {\n invariant(this.data.name != null, 'Files must have a name set.');\n return this.data.name;\n }\n\n /*\n * Last modified time of the file.\n */\n get lastModified(): number {\n return this.data.lastModified || 0;\n }\n}\n\nmodule.exports = File;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n\n'use strict';\n\nconst EventTarget = require('event-target-shim');\nconst Blob = require('Blob');\nconst {FileReaderModule} = require('NativeModules');\n\ntype ReadyState =\n | 0 // EMPTY\n | 1 // LOADING\n | 2; // DONE\n\ntype ReaderResult = string | ArrayBuffer;\n\nconst READER_EVENTS = [\n 'abort',\n 'error',\n 'load',\n 'loadstart',\n 'loadend',\n 'progress',\n];\n\nconst EMPTY = 0;\nconst LOADING = 1;\nconst DONE = 2;\n\nclass FileReader extends EventTarget(...READER_EVENTS) {\n static EMPTY = EMPTY;\n static LOADING = LOADING;\n static DONE = DONE;\n\n EMPTY = EMPTY;\n LOADING = LOADING;\n DONE = DONE;\n\n _readyState: ReadyState;\n _error: ?Error;\n _result: ?ReaderResult;\n _aborted: boolean = false;\n _subscriptions: Array<*> = [];\n\n constructor() {\n super();\n this._reset();\n }\n\n _reset(): void {\n this._readyState = EMPTY;\n this._error = null;\n this._result = null;\n }\n\n _clearSubscriptions(): void {\n this._subscriptions.forEach(sub => sub.remove());\n this._subscriptions = [];\n }\n\n _setReadyState(newState: ReadyState) {\n this._readyState = newState;\n this.dispatchEvent({type: 'readystatechange'});\n if (newState === DONE) {\n if (this._aborted) {\n this.dispatchEvent({type: 'abort'});\n } else if (this._error) {\n this.dispatchEvent({type: 'error'});\n } else {\n this.dispatchEvent({type: 'load'});\n }\n this.dispatchEvent({type: 'loadend'});\n }\n }\n\n readAsArrayBuffer() {\n throw new Error('FileReader.readAsArrayBuffer is not implemented');\n }\n\n readAsDataURL(blob: Blob) {\n this._aborted = false;\n\n FileReaderModule.readAsDataURL(blob.data).then(\n (text: string) => {\n if (this._aborted) {\n return;\n }\n this._result = text;\n this._setReadyState(DONE);\n },\n error => {\n if (this._aborted) {\n return;\n }\n this._error = error;\n this._setReadyState(DONE);\n },\n );\n }\n\n readAsText(blob: Blob, encoding: string = 'UTF-8') {\n this._aborted = false;\n\n FileReaderModule.readAsText(blob.data, encoding).then(\n (text: string) => {\n if (this._aborted) {\n return;\n }\n this._result = text;\n this._setReadyState(DONE);\n },\n error => {\n if (this._aborted) {\n return;\n }\n this._error = error;\n this._setReadyState(DONE);\n },\n );\n }\n\n abort() {\n this._aborted = true;\n // only call onreadystatechange if there is something to abort, as per spec\n if (this._readyState !== EMPTY && this._readyState !== DONE) {\n this._reset();\n this._setReadyState(DONE);\n }\n // Reset again after, in case modified in handler\n this._reset();\n }\n\n get readyState(): ReadyState {\n return this._readyState;\n }\n\n get error(): ?Error {\n return this._error;\n }\n\n get result(): ?ReaderResult {\n return this._result;\n }\n}\n\nmodule.exports = FileReader;\n","/**\n * Copyright (c) 2013-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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst Blob = require('Blob');\n\nconst {BlobModule} = require('NativeModules');\n\nlet BLOB_URL_PREFIX = null;\n\nif (BlobModule && typeof BlobModule.BLOB_URI_SCHEME === 'string') {\n BLOB_URL_PREFIX = BlobModule.BLOB_URI_SCHEME + ':';\n if (typeof BlobModule.BLOB_URI_HOST === 'string') {\n BLOB_URL_PREFIX += `//${BlobModule.BLOB_URI_HOST}/`;\n }\n}\n\n/**\n * To allow Blobs be accessed via `content://` URIs,\n * you need to register `BlobProvider` as a ContentProvider in your app's `AndroidManifest.xml`:\n *\n * ```xml\n * \n * \n * \n * \n * \n * ```\n * And then define the `blob_provider_authority` string in `res/values/strings.xml`.\n * Use a dotted name that's entirely unique to your app:\n *\n * ```xml\n * \n * your.app.package.blobs\n * \n * ```\n */\nclass URL {\n constructor() {\n throw new Error('Creating URL objects is not supported yet.');\n }\n\n static createObjectURL(blob: Blob) {\n if (BLOB_URL_PREFIX === null) {\n throw new Error('Cannot create URL for blob!');\n }\n return `${BLOB_URL_PREFIX}${blob.data.blobId}?offset=${\n blob.data.offset\n }&size=${blob.size}`;\n }\n\n static revokeObjectURL(url: string) {\n // Do nothing.\n }\n}\n\nmodule.exports = URL;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst AlertIOS = require('AlertIOS');\nconst NativeModules = require('NativeModules');\nconst Platform = require('Platform');\n\nimport type {AlertType, AlertButtonStyle} from 'AlertIOS';\n\nexport type Buttons = Array<{\n text?: string,\n onPress?: ?Function,\n style?: AlertButtonStyle,\n}>;\n\ntype Options = {\n cancelable?: ?boolean,\n onDismiss?: ?Function,\n};\n\n/**\n * Launches an alert dialog with the specified title and message.\n *\n * See http://facebook.github.io/react-native/docs/alert.html\n */\nclass Alert {\n /**\n * Launches an alert dialog with the specified title and message.\n *\n * See http://facebook.github.io/react-native/docs/alert.html#alert\n */\n static alert(\n title: ?string,\n message?: ?string,\n buttons?: Buttons,\n options?: Options,\n type?: AlertType,\n ): void {\n if (Platform.OS === 'ios') {\n if (typeof type !== 'undefined') {\n console.warn(\n 'Alert.alert() with a 5th \"type\" parameter is deprecated and will be removed. Use AlertIOS.prompt() instead.',\n );\n AlertIOS.alert(title, message, buttons, type);\n return;\n }\n AlertIOS.alert(title, message, buttons);\n } else if (Platform.OS === 'android') {\n AlertAndroid.alert(title, message, buttons, options);\n }\n }\n}\n\n/**\n * Wrapper around the Android native module.\n */\nclass AlertAndroid {\n static alert(\n title: ?string,\n message?: ?string,\n buttons?: Buttons,\n options?: Options,\n ): void {\n let config = {\n title: title || '',\n message: message || '',\n };\n\n if (options) {\n config = {...config, cancelable: options.cancelable};\n }\n // At most three buttons (neutral, negative, positive). Ignore rest.\n // The text 'OK' should be probably localized. iOS Alert does that in native.\n const validButtons: Buttons = buttons\n ? buttons.slice(0, 3)\n : [{text: 'OK'}];\n const buttonPositive = validButtons.pop();\n const buttonNegative = validButtons.pop();\n const buttonNeutral = validButtons.pop();\n if (buttonNeutral) {\n config = {...config, buttonNeutral: buttonNeutral.text || ''};\n }\n if (buttonNegative) {\n config = {...config, buttonNegative: buttonNegative.text || ''};\n }\n if (buttonPositive) {\n config = {...config, buttonPositive: buttonPositive.text || ''};\n }\n NativeModules.DialogManagerAndroid.showAlert(\n config,\n errorMessage => console.warn(errorMessage),\n (action, buttonKey) => {\n if (action === NativeModules.DialogManagerAndroid.buttonClicked) {\n if (buttonKey === NativeModules.DialogManagerAndroid.buttonNeutral) {\n buttonNeutral.onPress && buttonNeutral.onPress();\n } else if (\n buttonKey === NativeModules.DialogManagerAndroid.buttonNegative\n ) {\n buttonNegative.onPress && buttonNegative.onPress();\n } else if (\n buttonKey === NativeModules.DialogManagerAndroid.buttonPositive\n ) {\n buttonPositive.onPress && buttonPositive.onPress();\n }\n } else if (action === NativeModules.DialogManagerAndroid.dismissed) {\n options && options.onDismiss && options.onDismiss();\n }\n },\n );\n }\n}\n\nmodule.exports = Alert;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n * @jsdoc\n */\n\n'use strict';\n\nconst RCTAlertManager = require('NativeModules').AlertManager;\n\n/**\n * An Alert button type\n */\nexport type AlertType = $Enum<{\n /**\n * Default alert with no inputs\n */\n default: string,\n /**\n * Plain text input alert\n */\n 'plain-text': string,\n /**\n * Secure text input alert\n */\n 'secure-text': string,\n /**\n * Login and password alert\n */\n 'login-password': string,\n}>;\n\n/**\n * An Alert button style\n */\nexport type AlertButtonStyle = $Enum<{\n /**\n * Default button style\n */\n default: string,\n /**\n * Cancel button style\n */\n cancel: string,\n /**\n * Destructive button style\n */\n destructive: string,\n}>;\n\n/**\n * Array or buttons\n * @typedef {Array} ButtonsArray\n * @property {string=} text Button label\n * @property {Function=} onPress Callback function when button pressed\n * @property {AlertButtonStyle=} style Button style\n */\nexport type ButtonsArray = Array<{\n /**\n * Button label\n */\n text?: string,\n /**\n * Callback function when button pressed\n */\n onPress?: ?Function,\n /**\n * Button style\n */\n style?: AlertButtonStyle,\n}>;\n\n/**\n * Use `AlertIOS` to display an alert dialog with a message or to create a prompt for user input on iOS. If you don't need to prompt for user input, we recommend using `Alert.alert() for cross-platform support.\n *\n * See http://facebook.github.io/react-native/docs/alertios.html\n */\nclass AlertIOS {\n /**\n * Create and display a popup alert.\n *\n * See http://facebook.github.io/react-native/docs/alertios.html#alert\n */\n static alert(\n title: ?string,\n message?: ?string,\n callbackOrButtons?: ?((() => void) | ButtonsArray),\n type?: AlertType,\n ): void {\n if (typeof type !== 'undefined') {\n console.warn(\n 'AlertIOS.alert() with a 4th \"type\" parameter is deprecated and will be removed. Use AlertIOS.prompt() instead.',\n );\n this.prompt(title, message, callbackOrButtons, type);\n return;\n }\n this.prompt(title, message, callbackOrButtons, 'default');\n }\n\n /**\n * Create and display a prompt to enter some text.\n *\n * See http://facebook.github.io/react-native/docs/alertios.html#prompt\n */\n static prompt(\n title: ?string,\n message?: ?string,\n callbackOrButtons?: ?(((text: string) => void) | ButtonsArray),\n type?: ?AlertType = 'plain-text',\n defaultValue?: string,\n keyboardType?: string,\n ): void {\n if (typeof type === 'function') {\n console.warn(\n 'You passed a callback function as the \"type\" argument to AlertIOS.prompt(). React Native is ' +\n 'assuming you want to use the deprecated AlertIOS.prompt(title, defaultValue, buttons, callback) ' +\n 'signature. The current signature is AlertIOS.prompt(title, message, callbackOrButtons, type, defaultValue, ' +\n 'keyboardType) and the old syntax will be removed in a future version.',\n );\n\n const callback = type;\n RCTAlertManager.alertWithArgs(\n {\n title: title || '',\n type: 'plain-text',\n defaultValue: message,\n },\n (id, value) => {\n callback(value);\n },\n );\n return;\n }\n\n let callbacks = [];\n const buttons = [];\n let cancelButtonKey;\n let destructiveButtonKey;\n if (typeof callbackOrButtons === 'function') {\n callbacks = [callbackOrButtons];\n } else if (callbackOrButtons instanceof Array) {\n callbackOrButtons.forEach((btn, index) => {\n callbacks[index] = btn.onPress;\n if (btn.style === 'cancel') {\n cancelButtonKey = String(index);\n } else if (btn.style === 'destructive') {\n destructiveButtonKey = String(index);\n }\n if (btn.text || index < (callbackOrButtons || []).length - 1) {\n const btnDef = {};\n btnDef[index] = btn.text || '';\n buttons.push(btnDef);\n }\n });\n }\n\n RCTAlertManager.alertWithArgs(\n {\n title: title || '',\n message: message || undefined,\n buttons,\n type: type || undefined,\n defaultValue,\n cancelButtonKey,\n destructiveButtonKey,\n keyboardType,\n },\n (id, value) => {\n const cb = callbacks[id];\n cb && cb(value);\n },\n );\n }\n}\n\nmodule.exports = AlertIOS;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst NativeEventEmitter = require('NativeEventEmitter');\nconst RCTLocationObserver = require('NativeModules').LocationObserver;\n\nconst invariant = require('fbjs/lib/invariant');\nconst logError = require('logError');\n/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error\n * found when Flow v0.54 was deployed. To see the error delete this comment and\n * run Flow. */\nconst warning = require('fbjs/lib/warning');\n\nconst LocationEventEmitter = new NativeEventEmitter(RCTLocationObserver);\n\nconst Platform = require('Platform');\nconst PermissionsAndroid = require('PermissionsAndroid');\n\nlet subscriptions = [];\nlet updatesEnabled = false;\n\ntype GeoConfiguration = {\n skipPermissionRequests: boolean,\n};\n\ntype GeoOptions = {\n timeout?: number,\n maximumAge?: number,\n enableHighAccuracy?: boolean,\n distanceFilter: number,\n useSignificantChanges?: boolean,\n};\n\n/**\n * The Geolocation API extends the web spec:\n * https://developer.mozilla.org/en-US/docs/Web/API/Geolocation\n *\n * See https://facebook.github.io/react-native/docs/geolocation.html\n */\nconst Geolocation = {\n /*\n * Sets configuration options that will be used in all location requests.\n *\n * See https://facebook.github.io/react-native/docs/geolocation.html#setrnconfiguration\n *\n */\n setRNConfiguration: function(config: GeoConfiguration) {\n if (RCTLocationObserver.setConfiguration) {\n RCTLocationObserver.setConfiguration(config);\n }\n },\n\n /*\n * Request suitable Location permission based on the key configured on pList.\n *\n * See https://facebook.github.io/react-native/docs/geolocation.html#requestauthorization\n */\n requestAuthorization: function() {\n RCTLocationObserver.requestAuthorization();\n },\n\n /*\n * Invokes the success callback once with the latest location info.\n *\n * See https://facebook.github.io/react-native/docs/geolocation.html#getcurrentposition\n */\n getCurrentPosition: async function(\n geo_success: Function,\n geo_error?: Function,\n geo_options?: GeoOptions,\n ) {\n invariant(\n typeof geo_success === 'function',\n 'Must provide a valid geo_success callback.',\n );\n let hasPermission = true;\n // Supports Android's new permission model. For Android older devices,\n // it's always on.\n if (Platform.OS === 'android' && Platform.Version >= 23) {\n hasPermission = await PermissionsAndroid.check(\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\n );\n if (!hasPermission) {\n const status = await PermissionsAndroid.request(\n PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,\n );\n hasPermission = status === PermissionsAndroid.RESULTS.GRANTED;\n }\n }\n if (hasPermission) {\n RCTLocationObserver.getCurrentPosition(\n geo_options || {},\n geo_success,\n geo_error || logError,\n );\n }\n },\n\n /*\n * Invokes the success callback whenever the location changes.\n *\n * See https://facebook.github.io/react-native/docs/geolocation.html#watchposition\n */\n watchPosition: function(\n success: Function,\n error?: Function,\n options?: GeoOptions,\n ): number {\n if (!updatesEnabled) {\n RCTLocationObserver.startObserving(options || {});\n updatesEnabled = true;\n }\n const watchID = subscriptions.length;\n subscriptions.push([\n LocationEventEmitter.addListener('geolocationDidChange', success),\n error\n ? LocationEventEmitter.addListener('geolocationError', error)\n : null,\n ]);\n return watchID;\n },\n\n clearWatch: function(watchID: number) {\n const sub = subscriptions[watchID];\n if (!sub) {\n // Silently exit when the watchID is invalid or already cleared\n // This is consistent with timers\n return;\n }\n\n sub[0].remove();\n // array element refinements not yet enabled in Flow\n const sub1 = sub[1];\n sub1 && sub1.remove();\n subscriptions[watchID] = undefined;\n let noWatchers = true;\n for (let ii = 0; ii < subscriptions.length; ii++) {\n if (subscriptions[ii]) {\n noWatchers = false; // still valid subscriptions\n }\n }\n if (noWatchers) {\n Geolocation.stopObserving();\n }\n },\n\n stopObserving: function() {\n if (updatesEnabled) {\n RCTLocationObserver.stopObserving();\n updatesEnabled = false;\n for (let ii = 0; ii < subscriptions.length; ii++) {\n const sub = subscriptions[ii];\n if (sub) {\n warning(false, 'Called stopObserving with existing subscriptions.');\n sub[0].remove();\n // array element refinements not yet enabled in Flow\n const sub1 = sub[1];\n sub1 && sub1.remove();\n }\n }\n subscriptions = [];\n }\n },\n};\n\nmodule.exports = Geolocation;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict\n */\n\n'use strict';\n\n/**\n * Small utility that can be used as an error handler. You cannot just pass\n * `console.error` as a failure callback - it's not properly bound. If passes an\n * `Error` object, it will print the message and stack.\n */\nconst logError = function(...args: $ReadOnlyArray) {\n if (args.length === 1 && args[0] instanceof Error) {\n const err = args[0];\n console.error('Error: \"' + err.message + '\". Stack:\\n' + err.stack);\n } else {\n console.error.apply(console, args);\n }\n};\n\nmodule.exports = logError;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst NativeModules = require('NativeModules');\n\ntype Rationale = {\n title: string,\n message: string,\n};\n\ntype PermissionStatus = 'granted' | 'denied' | 'never_ask_again';\n/**\n * `PermissionsAndroid` provides access to Android M's new permissions model.\n *\n * See https://facebook.github.io/react-native/docs/permissionsandroid.html\n */\n\nclass PermissionsAndroid {\n PERMISSIONS: Object;\n RESULTS: Object;\n\n constructor() {\n /**\n * A list of specified \"dangerous\" permissions that require prompting the user\n */\n this.PERMISSIONS = {\n READ_CALENDAR: 'android.permission.READ_CALENDAR',\n WRITE_CALENDAR: 'android.permission.WRITE_CALENDAR',\n CAMERA: 'android.permission.CAMERA',\n READ_CONTACTS: 'android.permission.READ_CONTACTS',\n WRITE_CONTACTS: 'android.permission.WRITE_CONTACTS',\n GET_ACCOUNTS: 'android.permission.GET_ACCOUNTS',\n ACCESS_FINE_LOCATION: 'android.permission.ACCESS_FINE_LOCATION',\n ACCESS_COARSE_LOCATION: 'android.permission.ACCESS_COARSE_LOCATION',\n RECORD_AUDIO: 'android.permission.RECORD_AUDIO',\n READ_PHONE_STATE: 'android.permission.READ_PHONE_STATE',\n CALL_PHONE: 'android.permission.CALL_PHONE',\n READ_CALL_LOG: 'android.permission.READ_CALL_LOG',\n WRITE_CALL_LOG: 'android.permission.WRITE_CALL_LOG',\n ADD_VOICEMAIL: 'com.android.voicemail.permission.ADD_VOICEMAIL',\n USE_SIP: 'android.permission.USE_SIP',\n PROCESS_OUTGOING_CALLS: 'android.permission.PROCESS_OUTGOING_CALLS',\n BODY_SENSORS: 'android.permission.BODY_SENSORS',\n SEND_SMS: 'android.permission.SEND_SMS',\n RECEIVE_SMS: 'android.permission.RECEIVE_SMS',\n READ_SMS: 'android.permission.READ_SMS',\n RECEIVE_WAP_PUSH: 'android.permission.RECEIVE_WAP_PUSH',\n RECEIVE_MMS: 'android.permission.RECEIVE_MMS',\n READ_EXTERNAL_STORAGE: 'android.permission.READ_EXTERNAL_STORAGE',\n WRITE_EXTERNAL_STORAGE: 'android.permission.WRITE_EXTERNAL_STORAGE',\n };\n\n this.RESULTS = {\n GRANTED: 'granted',\n DENIED: 'denied',\n NEVER_ASK_AGAIN: 'never_ask_again',\n };\n }\n\n /**\n * DEPRECATED - use check\n *\n * Returns a promise resolving to a boolean value as to whether the specified\n * permissions has been granted\n *\n * @deprecated\n */\n checkPermission(permission: string): Promise {\n console.warn(\n '\"PermissionsAndroid.checkPermission\" is deprecated. Use \"PermissionsAndroid.check\" instead',\n );\n return NativeModules.PermissionsAndroid.checkPermission(permission);\n }\n\n /**\n * Returns a promise resolving to a boolean value as to whether the specified\n * permissions has been granted\n *\n * See https://facebook.github.io/react-native/docs/permissionsandroid.html#check\n */\n check(permission: string): Promise {\n return NativeModules.PermissionsAndroid.checkPermission(permission);\n }\n\n /**\n * DEPRECATED - use request\n *\n * Prompts the user to enable a permission and returns a promise resolving to a\n * boolean value indicating whether the user allowed or denied the request\n *\n * If the optional rationale argument is included (which is an object with a\n * `title` and `message`), this function checks with the OS whether it is\n * necessary to show a dialog explaining why the permission is needed\n * (https://developer.android.com/training/permissions/requesting.html#explain)\n * and then shows the system permission dialog\n *\n * @deprecated\n */\n async requestPermission(\n permission: string,\n rationale?: Rationale,\n ): Promise {\n console.warn(\n '\"PermissionsAndroid.requestPermission\" is deprecated. Use \"PermissionsAndroid.request\" instead',\n );\n const response = await this.request(permission, rationale);\n return response === this.RESULTS.GRANTED;\n }\n\n /**\n * Prompts the user to enable a permission and returns a promise resolving to a\n * string value indicating whether the user allowed or denied the request\n *\n * See https://facebook.github.io/react-native/docs/permissionsandroid.html#request\n */\n async request(\n permission: string,\n rationale?: Rationale,\n ): Promise {\n if (rationale) {\n const shouldShowRationale = await NativeModules.PermissionsAndroid.shouldShowRequestPermissionRationale(\n permission,\n );\n\n if (shouldShowRationale) {\n return new Promise((resolve, reject) => {\n NativeModules.DialogManagerAndroid.showAlert(\n rationale,\n () => reject(new Error('Error showing rationale')),\n () =>\n resolve(\n NativeModules.PermissionsAndroid.requestPermission(permission),\n ),\n );\n });\n }\n }\n return NativeModules.PermissionsAndroid.requestPermission(permission);\n }\n\n /**\n * Prompts the user to enable multiple permissions in the same dialog and\n * returns an object with the permissions as keys and strings as values\n * indicating whether the user allowed or denied the request\n *\n * See https://facebook.github.io/react-native/docs/permissionsandroid.html#requestmultiple\n */\n requestMultiple(\n permissions: Array,\n ): Promise<{[permission: string]: PermissionStatus}> {\n return NativeModules.PermissionsAndroid.requestMultiplePermissions(\n permissions,\n );\n }\n}\n\nPermissionsAndroid = new PermissionsAndroid();\n\nmodule.exports = PermissionsAndroid;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst HeapCapture = {\n captureHeap: function(path: string) {\n let error = null;\n try {\n global.nativeCaptureHeap(path);\n console.log('HeapCapture.captureHeap succeeded: ' + path);\n } catch (e) {\n console.log('HeapCapture.captureHeap error: ' + e.toString());\n error = e.toString();\n }\n require('NativeModules').JSCHeapCapture.captureComplete(path, error);\n },\n};\n\nmodule.exports = HeapCapture;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst SamplingProfiler = {\n poke: function(token: number): void {\n let error = null;\n let result = null;\n try {\n result = global.pokeSamplingProfiler();\n if (result === null) {\n console.log('The JSC Sampling Profiler has started');\n } else {\n console.log('The JSC Sampling Profiler has stopped');\n }\n } catch (e) {\n console.log(\n 'Error occurred when restarting Sampling Profiler: ' + e.toString(),\n );\n error = e.toString();\n }\n\n const {JSCSamplingProfiler} = require('NativeModules');\n JSCSamplingProfiler.operationComplete(token, result, error);\n },\n};\n\nmodule.exports = SamplingProfiler;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst invariant = require('fbjs/lib/invariant');\n\nconst levelsMap = {\n log: 'log',\n info: 'info',\n warn: 'warn',\n error: 'error',\n fatal: 'error',\n};\n\nlet warningHandler: ?(Array) => void = null;\n\nconst RCTLog = {\n // level one of log, info, warn, error, mustfix\n logIfNoNativeHook(level: string, ...args: Array): void {\n // We already printed in the native console, so only log here if using a js debugger\n if (typeof global.nativeLoggingHook === 'undefined') {\n RCTLog.logToConsole(level, ...args);\n } else {\n // Report native warnings to YellowBox\n if (warningHandler && level === 'warn') {\n warningHandler(...args);\n }\n }\n },\n\n // Log to console regardless of nativeLoggingHook\n logToConsole(level: string, ...args: Array): void {\n const logFn = levelsMap[level];\n invariant(\n logFn,\n 'Level \"' + level + '\" not one of ' + Object.keys(levelsMap).toString(),\n );\n\n console[logFn](...args);\n },\n\n setWarningHandler(handler: typeof warningHandler): void {\n warningHandler = handler;\n },\n};\n\nmodule.exports = RCTLog;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\n\n/**\n * Deprecated - subclass NativeEventEmitter to create granular event modules instead of\n * adding all event listeners directly to RCTNativeAppEventEmitter.\n */\nconst RCTNativeAppEventEmitter = RCTDeviceEventEmitter;\nmodule.exports = RCTNativeAppEventEmitter;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst Systrace = require('Systrace');\n\nconst infoLog = require('infoLog');\nconst performanceNow =\n global.nativeQPLTimestamp ||\n global.nativePerformanceNow ||\n require('fbjs/lib/performanceNow');\n\ntype Timespan = {\n description?: string,\n totalTime?: number,\n startTime?: number,\n endTime?: number,\n};\n\nlet timespans: {[key: string]: Timespan} = {};\nlet extras: {[key: string]: any} = {};\nconst cookies: {[key: string]: number} = {};\n\nconst PRINT_TO_CONSOLE: false = false; // Type as false to prevent accidentally committing `true`;\n\n/**\n * This is meant to collect and log performance data in production, which means\n * it needs to have minimal overhead.\n */\nconst PerformanceLogger = {\n addTimespan(key: string, lengthInMs: number, description?: string) {\n if (timespans[key]) {\n if (__DEV__) {\n infoLog(\n 'PerformanceLogger: Attempting to add a timespan that already exists ',\n key,\n );\n }\n return;\n }\n\n timespans[key] = {\n description: description,\n totalTime: lengthInMs,\n };\n },\n\n startTimespan(key: string, description?: string) {\n if (timespans[key]) {\n if (__DEV__) {\n infoLog(\n 'PerformanceLogger: Attempting to start a timespan that already exists ',\n key,\n );\n }\n return;\n }\n\n timespans[key] = {\n description: description,\n startTime: performanceNow(),\n };\n cookies[key] = Systrace.beginAsyncEvent(key);\n if (PRINT_TO_CONSOLE) {\n infoLog('PerformanceLogger.js', 'start: ' + key);\n }\n },\n\n stopTimespan(key: string) {\n const timespan = timespans[key];\n if (!timespan || !timespan.startTime) {\n if (__DEV__) {\n infoLog(\n 'PerformanceLogger: Attempting to end a timespan that has not started ',\n key,\n );\n }\n return;\n }\n if (timespan.endTime) {\n if (__DEV__) {\n infoLog(\n 'PerformanceLogger: Attempting to end a timespan that has already ended ',\n key,\n );\n }\n return;\n }\n\n timespan.endTime = performanceNow();\n timespan.totalTime = timespan.endTime - (timespan.startTime || 0);\n if (PRINT_TO_CONSOLE) {\n infoLog('PerformanceLogger.js', 'end: ' + key);\n }\n\n Systrace.endAsyncEvent(key, cookies[key]);\n delete cookies[key];\n },\n\n clear() {\n timespans = {};\n extras = {};\n if (PRINT_TO_CONSOLE) {\n infoLog('PerformanceLogger.js', 'clear');\n }\n },\n\n clearCompleted() {\n for (const key in timespans) {\n if (timespans[key].totalTime) {\n delete timespans[key];\n }\n }\n extras = {};\n if (PRINT_TO_CONSOLE) {\n infoLog('PerformanceLogger.js', 'clearCompleted');\n }\n },\n\n clearExceptTimespans(keys: Array) {\n timespans = Object.keys(timespans).reduce(function(previous, key) {\n if (keys.indexOf(key) !== -1) {\n previous[key] = timespans[key];\n }\n return previous;\n }, {});\n extras = {};\n if (PRINT_TO_CONSOLE) {\n infoLog('PerformanceLogger.js', 'clearExceptTimespans', keys);\n }\n },\n\n currentTimestamp() {\n return performanceNow();\n },\n\n getTimespans() {\n return timespans;\n },\n\n hasTimespan(key: string) {\n return !!timespans[key];\n },\n\n logTimespans() {\n for (const key in timespans) {\n if (timespans[key].totalTime) {\n infoLog(key + ': ' + timespans[key].totalTime + 'ms');\n }\n }\n },\n\n addTimespans(newTimespans: Array, labels: Array) {\n for (let ii = 0, l = newTimespans.length; ii < l; ii += 2) {\n const label = labels[ii / 2];\n PerformanceLogger.addTimespan(\n label,\n newTimespans[ii + 1] - newTimespans[ii],\n label,\n );\n }\n },\n\n setExtra(key: string, value: any) {\n if (extras[key]) {\n if (__DEV__) {\n infoLog(\n 'PerformanceLogger: Attempting to set an extra that already exists ',\n {key, currentValue: extras[key], attemptedValue: value},\n );\n }\n return;\n }\n extras[key] = value;\n },\n\n getExtras() {\n return extras;\n },\n\n logExtras() {\n infoLog(extras);\n },\n};\n\nmodule.exports = PerformanceLogger;\n","/**\n * Copyright (c) 2013-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 * @format\n */\n\n'use strict';\n\n/**\n * Intentional info-level logging for clear separation from ad-hoc console debug logging.\n */\nfunction infoLog(...args) {\n return console.log(...args);\n}\n\nmodule.exports = infoLog;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst JSDevSupport = require('NativeModules').JSDevSupport;\nconst ReactNative = require('ReactNative');\n\nconst JSDevSupportModule = {\n getJSHierarchy: function(tag: number) {\n try {\n const {\n computeComponentStackForErrorReporting,\n } = ReactNative.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n const componentStack = computeComponentStackForErrorReporting(tag);\n if (!componentStack) {\n JSDevSupport.onFailure(\n JSDevSupport.ERROR_CODE_VIEW_NOT_FOUND,\n \"Component stack doesn't exist for tag \" + tag,\n );\n } else {\n JSDevSupport.onSuccess(componentStack);\n }\n } catch (e) {\n JSDevSupport.onFailure(JSDevSupport.ERROR_CODE_EXCEPTION, e.message);\n }\n },\n};\n\nmodule.exports = JSDevSupportModule;\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport type {\n ReactNativeBaseComponentViewConfig,\n ViewConfigGetter,\n} from './ReactNativeTypes';\n\nconst invariant = require('fbjs/lib/invariant');\n\n// Event configs\nconst customBubblingEventTypes = {};\nconst customDirectEventTypes = {};\nconst eventTypes = {};\n\nexports.customBubblingEventTypes = customBubblingEventTypes;\nexports.customDirectEventTypes = customDirectEventTypes;\nexports.eventTypes = eventTypes;\n\nconst viewConfigCallbacks = new Map();\nconst viewConfigs = new Map();\n\nfunction processEventTypes(\n viewConfig: ReactNativeBaseComponentViewConfig<>,\n): void {\n const {bubblingEventTypes, directEventTypes} = viewConfig;\n\n if (__DEV__) {\n if (bubblingEventTypes != null && directEventTypes != null) {\n for (const topLevelType in directEventTypes) {\n invariant(\n bubblingEventTypes[topLevelType] == null,\n 'Event cannot be both direct and bubbling: %s',\n topLevelType,\n );\n }\n }\n }\n\n if (bubblingEventTypes != null) {\n for (const topLevelType in bubblingEventTypes) {\n if (customBubblingEventTypes[topLevelType] == null) {\n eventTypes[topLevelType] = customBubblingEventTypes[topLevelType] =\n bubblingEventTypes[topLevelType];\n }\n }\n }\n\n if (directEventTypes != null) {\n for (const topLevelType in directEventTypes) {\n if (customDirectEventTypes[topLevelType] == null) {\n eventTypes[topLevelType] = customDirectEventTypes[topLevelType] =\n directEventTypes[topLevelType];\n }\n }\n }\n}\n\n/**\n * Registers a native view/component by name.\n * A callback is provided to load the view config from UIManager.\n * The callback is deferred until the view is actually rendered.\n * This is done to avoid causing Prepack deopts.\n */\nexports.register = function(name: string, callback: ViewConfigGetter): string {\n invariant(\n !viewConfigCallbacks.has(name),\n 'Tried to register two views with the same name %s',\n name,\n );\n viewConfigCallbacks.set(name, callback);\n return name;\n};\n\n/**\n * Retrieves a config for the specified view.\n * If this is the first time the view has been used,\n * This configuration will be lazy-loaded from UIManager.\n */\nexports.get = function(name: string): ReactNativeBaseComponentViewConfig<> {\n let viewConfig;\n if (!viewConfigs.has(name)) {\n const callback = viewConfigCallbacks.get(name);\n if (typeof callback !== 'function') {\n invariant(\n false,\n 'View config not found for name %s.%s',\n name,\n typeof name[0] === 'string' && /[a-z]/.test(name[0])\n ? ' Make sure to start component names with a capital letter.'\n : '',\n );\n }\n viewConfigCallbacks.set(name, null);\n viewConfig = callback();\n processEventTypes(viewConfig);\n viewConfigs.set(name, viewConfig);\n } else {\n viewConfig = viewConfigs.get(name);\n }\n invariant(viewConfig, 'View config not found for name %s', name);\n return viewConfig;\n};\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst BatchedBridge = require('BatchedBridge');\n\nconst RCTEventEmitter = {\n register(eventEmitter: any) {\n BatchedBridge.registerCallableModule('RCTEventEmitter', eventEmitter);\n },\n};\n\nmodule.exports = RCTEventEmitter;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\n/*\n * @returns {bool} true if different, false if equal\n */\nconst deepDiffer = function(\n one: any,\n two: any,\n maxDepth: number = -1,\n): boolean {\n if (maxDepth === 0) {\n return true;\n }\n if (one === two) {\n // Short circuit on identical object references instead of traversing them.\n return false;\n }\n if (typeof one === 'function' && typeof two === 'function') {\n // We consider all functions equal\n return false;\n }\n if (typeof one !== 'object' || one === null) {\n // Primitives can be directly compared\n return one !== two;\n }\n if (typeof two !== 'object' || two === null) {\n // We know they are different because the previous case would have triggered\n // otherwise.\n return true;\n }\n if (one.constructor !== two.constructor) {\n return true;\n }\n if (Array.isArray(one)) {\n // We know two is also an array because the constructors are equal\n const len = one.length;\n if (two.length !== len) {\n return true;\n }\n for (let ii = 0; ii < len; ii++) {\n if (deepDiffer(one[ii], two[ii], maxDepth - 1)) {\n return true;\n }\n }\n } else {\n for (const key in one) {\n if (deepDiffer(one[key], two[key], maxDepth - 1)) {\n return true;\n }\n }\n for (const twoKey in two) {\n // The only case we haven't checked yet is keys that are in two but aren't\n // in one, which means they are different.\n if (one[twoKey] === undefined && two[twoKey] !== undefined) {\n return true;\n }\n }\n }\n return false;\n};\n\nmodule.exports = deepDiffer;\n","/**\n * Copyright (c) 2015-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 *\n * This class is responsible for coordinating the \"focused\"\n * state for TextInputs. All calls relating to the keyboard\n * should be funneled through here\n *\n * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst Platform = require('Platform');\nconst UIManager = require('UIManager');\n\nlet currentlyFocusedID: ?number = null;\nconst inputs = new Set();\n\n/**\n * Returns the ID of the currently focused text field, if one exists\n * If no text field is focused it returns null\n */\nfunction currentlyFocusedField(): ?number {\n return currentlyFocusedID;\n}\n\n/**\n * @param {number} TextInputID id of the text field to focus\n * Focuses the specified text field\n * noop if the text field was already focused\n */\nfunction focusTextInput(textFieldID: ?number) {\n if (currentlyFocusedID !== textFieldID && textFieldID !== null) {\n currentlyFocusedID = textFieldID;\n if (Platform.OS === 'ios') {\n UIManager.focus(textFieldID);\n } else if (Platform.OS === 'android') {\n UIManager.dispatchViewManagerCommand(\n textFieldID,\n UIManager.AndroidTextInput.Commands.focusTextInput,\n null,\n );\n }\n }\n}\n\n/**\n * @param {number} textFieldID id of the text field to unfocus\n * Unfocuses the specified text field\n * noop if it wasn't focused\n */\nfunction blurTextInput(textFieldID: ?number) {\n if (currentlyFocusedID === textFieldID && textFieldID !== null) {\n currentlyFocusedID = null;\n if (Platform.OS === 'ios') {\n UIManager.blur(textFieldID);\n } else if (Platform.OS === 'android') {\n UIManager.dispatchViewManagerCommand(\n textFieldID,\n UIManager.AndroidTextInput.Commands.blurTextInput,\n null,\n );\n }\n }\n}\n\nfunction registerInput(textFieldID: number) {\n inputs.add(textFieldID);\n}\n\nfunction unregisterInput(textFieldID: number) {\n inputs.delete(textFieldID);\n}\n\nfunction isTextInput(textFieldID: number) {\n return inputs.has(textFieldID);\n}\n\nmodule.exports = {\n currentlyFocusedField,\n focusTextInput,\n blurTextInput,\n registerInput,\n unregisterInput,\n isTextInput,\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.11.3\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});var d=null,f=!1,h=3,k=-1,l=-1,m=!1,n=!1;function p(){if(!m){var a=d.expirationTime;n?q():n=!0;r(t,a)}}\nfunction u(){var a=d,b=d.next;if(d===b)d=null;else{var c=d.previous;d=c.next=b;b.previous=c}a.next=a.previous=null;c=a.callback;b=a.expirationTime;a=a.priorityLevel;var e=h,Q=l;h=a;l=b;try{var g=c()}finally{h=e,l=Q}if(\"function\"===typeof g)if(g={callback:g,priorityLevel:a,expirationTime:b,next:null,previous:null},null===d)d=g.next=g.previous=g;else{c=null;a=d;do{if(a.expirationTime>=b){c=a;break}a=a.next}while(a!==d);null===c?c=d:c===d&&(d=g,p());b=c.previous;b.next=c.previous=g;g.next=c;g.previous=\nb}}function v(){if(-1===k&&null!==d&&1===d.priorityLevel){m=!0;try{do u();while(null!==d&&1===d.priorityLevel)}finally{m=!1,null!==d?p():n=!1}}}function t(a){m=!0;var b=f;f=a;try{if(a)for(;null!==d;){var c=exports.unstable_now();if(d.expirationTime<=c){do u();while(null!==d&&d.expirationTime<=c)}else break}else if(null!==d){do u();while(null!==d&&!w())}}finally{m=!1,f=b,null!==d?p():n=!1,v()}}\nvar x=Date,y=\"function\"===typeof setTimeout?setTimeout:void 0,z=\"function\"===typeof clearTimeout?clearTimeout:void 0,A=\"function\"===typeof requestAnimationFrame?requestAnimationFrame:void 0,B=\"function\"===typeof cancelAnimationFrame?cancelAnimationFrame:void 0,C,D;function E(a){C=A(function(b){z(D);a(b)});D=y(function(){B(C);a(exports.unstable_now())},100)}\nif(\"object\"===typeof performance&&\"function\"===typeof performance.now){var F=performance;exports.unstable_now=function(){return F.now()}}else exports.unstable_now=function(){return x.now()};var r,q,w,G=null;\"undefined\"!==typeof window?G=window:\"undefined\"!==typeof global&&(G=global);\nif(G&&G._schedMock){var H=G._schedMock;r=H[0];q=H[1];w=H[2];exports.unstable_now=H[3]}else if(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var I=null,J=function(a){if(null!==I)try{I(a)}finally{I=null}};r=function(a){null!==I?setTimeout(r,0,a):(I=a,setTimeout(J,0,!1))};q=function(){I=null};w=function(){return!1}}else{\"undefined\"!==typeof console&&(\"function\"!==typeof A&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"),\n\"function\"!==typeof B&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"));var K=null,L=!1,M=-1,N=!1,O=!1,P=0,R=33,S=33;w=function(){return P<=exports.unstable_now()};var T=new MessageChannel,U=T.port2;T.port1.onmessage=function(){L=!1;var a=K,b=M;K=null;M=-1;var c=exports.unstable_now(),e=!1;if(0>=P-c)if(-1!==b&&b<=c)e=!0;else{N||(N=!0,E(V));K=a;M=b;return}if(null!==a){O=!0;try{a(e)}finally{O=!1}}};\nvar V=function(a){if(null!==K){E(V);var b=a-P+S;bb&&(b=8),S=bb?U.postMessage(void 0):N||(N=!0,E(V))};q=function(){K=null;L=!1;M=-1}}exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;\nexports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=h,e=k;h=a;k=exports.unstable_now();try{return b()}finally{h=c,k=e,v()}};\nexports.unstable_scheduleCallback=function(a,b){var c=-1!==k?k:exports.unstable_now();if(\"object\"===typeof b&&null!==b&&\"number\"===typeof b.timeout)b=c+b.timeout;else switch(h){case 1:b=c+-1;break;case 2:b=c+250;break;case 5:b=c+1073741823;break;case 4:b=c+1E4;break;default:b=c+5E3}a={callback:a,priorityLevel:h,expirationTime:b,next:null,previous:null};if(null===d)d=a.next=a.previous=a,p();else{c=null;var e=d;do{if(e.expirationTime>b){c=e;break}e=e.next}while(e!==d);null===c?c=d:c===d&&(d=a,p());\nb=c.previous;b.next=c.previous=a;a.next=c;a.previous=b}return a};exports.unstable_cancelCallback=function(a){var b=a.next;if(null!==b){if(b===a)d=null;else{a===d&&(d=b);var c=a.previous;c.next=b;b.previous=c}a.next=a.previous=null}};exports.unstable_wrapCallback=function(a){var b=h;return function(){var c=h,e=k;h=b;k=exports.unstable_now();try{return a.apply(this,arguments)}finally{h=c,k=e,v()}}};exports.unstable_getCurrentPriorityLevel=function(){return h};\nexports.unstable_shouldYield=function(){return!f&&(null!==d&&d.expirationTime\n createReactNativeComponentClass(uiViewClassName, () =>\n getNativeComponentAttributes(uiViewClassName),\n );\n\nmodule.exports = requireNativeComponent;\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nimport type {ViewConfigGetter} from './ReactNativeTypes';\n\nconst {register} = require('ReactNativeViewConfigRegistry');\n\n/**\n * Creates a renderable ReactNative host component.\n * Use this method for view configs that are loaded from UIManager.\n * Use createReactNativeComponentClass() for view configs defined within JavaScript.\n *\n * @param {string} config iOS View configuration.\n * @private\n */\nconst createReactNativeComponentClass = function(\n name: string,\n callback: ViewConfigGetter,\n): string {\n return register(name, callback);\n};\n\nmodule.exports = createReactNativeComponentClass;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n\n'use strict';\n\nconst ReactNativeStyleAttributes = require('ReactNativeStyleAttributes');\nconst UIManager = require('UIManager');\n\nconst insetsDiffer = require('insetsDiffer');\nconst matricesDiffer = require('matricesDiffer');\nconst pointsDiffer = require('pointsDiffer');\nconst processColor = require('processColor');\nconst resolveAssetSource = require('resolveAssetSource');\nconst sizesDiffer = require('sizesDiffer');\nconst invariant = require('fbjs/lib/invariant');\nconst warning = require('fbjs/lib/warning');\n\nfunction getNativeComponentAttributes(uiViewClassName: string) {\n const viewConfig = UIManager[uiViewClassName];\n\n invariant(\n viewConfig != null && viewConfig.NativeProps != null,\n 'requireNativeComponent: \"%s\" was not found in the UIManager.',\n uiViewClassName,\n );\n\n // TODO: This seems like a whole lot of runtime initialization for every\n // native component that can be either avoided or simplified.\n let {baseModuleName, bubblingEventTypes, directEventTypes} = viewConfig;\n let nativeProps = viewConfig.NativeProps;\n while (baseModuleName) {\n const baseModule = UIManager[baseModuleName];\n if (!baseModule) {\n warning(false, 'Base module \"%s\" does not exist', baseModuleName);\n baseModuleName = null;\n } else {\n bubblingEventTypes = {\n ...baseModule.bubblingEventTypes,\n ...bubblingEventTypes,\n };\n directEventTypes = {\n ...baseModule.directEventTypes,\n ...directEventTypes,\n };\n nativeProps = {\n ...baseModule.NativeProps,\n ...nativeProps,\n };\n baseModuleName = baseModule.baseModuleName;\n }\n }\n\n const validAttributes = {};\n\n for (const key in nativeProps) {\n const typeName = nativeProps[key];\n const diff = getDifferForType(typeName);\n const process = getProcessorForType(typeName);\n\n validAttributes[key] =\n diff == null && process == null ? true : {diff, process};\n }\n\n // Unfortunately, the current setup declares style properties as top-level\n // props. This makes it so we allow style properties in the `style` prop.\n // TODO: Move style properties into a `style` prop and disallow them as\n // top-level props on the native side.\n validAttributes.style = ReactNativeStyleAttributes;\n\n Object.assign(viewConfig, {\n uiViewClassName,\n validAttributes,\n bubblingEventTypes,\n directEventTypes,\n });\n\n if (!hasAttachedDefaultEventTypes) {\n attachDefaultEventTypes(viewConfig);\n hasAttachedDefaultEventTypes = true;\n }\n\n return viewConfig;\n}\n\n// TODO: Figure out how this makes sense. We're using a global boolean to only\n// initialize this on the first eagerly initialized native component.\nlet hasAttachedDefaultEventTypes = false;\nfunction attachDefaultEventTypes(viewConfig: any) {\n // This is supported on UIManager platforms (ex: Android),\n // as lazy view managers are not implemented for all platforms.\n // See [UIManager] for details on constants and implementations.\n if (UIManager.ViewManagerNames) {\n // Lazy view managers enabled.\n viewConfig = merge(viewConfig, UIManager.getDefaultEventTypes());\n } else {\n viewConfig.bubblingEventTypes = merge(\n viewConfig.bubblingEventTypes,\n UIManager.genericBubblingEventTypes,\n );\n viewConfig.directEventTypes = merge(\n viewConfig.directEventTypes,\n UIManager.genericDirectEventTypes,\n );\n }\n}\n\n// TODO: Figure out how to avoid all this runtime initialization cost.\nfunction merge(destination: ?Object, source: ?Object): ?Object {\n if (!source) {\n return destination;\n }\n if (!destination) {\n return source;\n }\n\n for (const key in source) {\n if (!source.hasOwnProperty(key)) {\n continue;\n }\n\n let sourceValue = source[key];\n if (destination.hasOwnProperty(key)) {\n const destinationValue = destination[key];\n if (\n typeof sourceValue === 'object' &&\n typeof destinationValue === 'object'\n ) {\n sourceValue = merge(destinationValue, sourceValue);\n }\n }\n destination[key] = sourceValue;\n }\n return destination;\n}\n\nfunction getDifferForType(\n typeName: string,\n): ?(prevProp: any, nextProp: any) => boolean {\n switch (typeName) {\n // iOS Types\n case 'CATransform3D':\n return matricesDiffer;\n case 'CGPoint':\n return pointsDiffer;\n case 'CGSize':\n return sizesDiffer;\n case 'UIEdgeInsets':\n return insetsDiffer;\n // Android Types\n // (not yet implemented)\n }\n return null;\n}\n\nfunction getProcessorForType(typeName: string): ?(nextProp: any) => any {\n switch (typeName) {\n // iOS Types\n case 'CGColor':\n case 'UIColor':\n return processColor;\n case 'CGColorArray':\n case 'UIColorArray':\n return processColorArray;\n case 'CGImage':\n case 'UIImage':\n case 'RCTImageSource':\n return resolveAssetSource;\n // Android Types\n case 'Color':\n return processColor;\n case 'ColorArray':\n return processColorArray;\n }\n return null;\n}\n\nfunction processColorArray(colors: ?Array): ?Array {\n return colors == null ? null : colors.map(processColor);\n}\n\nmodule.exports = getNativeComponentAttributes;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\ntype Inset = {\n top: ?number,\n left: ?number,\n right: ?number,\n bottom: ?number,\n};\n\nconst dummyInsets = {\n top: undefined,\n left: undefined,\n right: undefined,\n bottom: undefined,\n};\n\nconst insetsDiffer = function(one: ?Inset, two: ?Inset): boolean {\n one = one || dummyInsets;\n two = two || dummyInsets;\n return (\n one !== two &&\n (one.top !== two.top ||\n one.left !== two.left ||\n one.right !== two.right ||\n one.bottom !== two.bottom)\n );\n};\n\nmodule.exports = insetsDiffer;\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\n/**\n * Unrolls an array comparison specially for matrices. Prioritizes\n * checking of indices that are most likely to change so that the comparison\n * bails as early as possible.\n *\n * @param {MatrixMath.Matrix} one First matrix.\n * @param {MatrixMath.Matrix} two Second matrix.\n * @return {boolean} Whether or not the two matrices differ.\n */\nconst matricesDiffer = function(one, two) {\n if (one === two) {\n return false;\n }\n return (\n !one ||\n !two ||\n one[12] !== two[12] ||\n one[13] !== two[13] ||\n one[14] !== two[14] ||\n one[5] !== two[5] ||\n one[10] !== two[10] ||\n one[1] !== two[1] ||\n one[2] !== two[2] ||\n one[3] !== two[3] ||\n one[4] !== two[4] ||\n one[6] !== two[6] ||\n one[7] !== two[7] ||\n one[8] !== two[8] ||\n one[9] !== two[9] ||\n one[11] !== two[11] ||\n one[15] !== two[15]\n );\n};\n\nmodule.exports = matricesDiffer;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\ntype Point = {\n x: ?number,\n y: ?number,\n};\n\nconst dummyPoint = {x: undefined, y: undefined};\n\nconst pointsDiffer = function(one: ?Point, two: ?Point): boolean {\n one = one || dummyPoint;\n two = two || dummyPoint;\n return one !== two && (one.x !== two.x || one.y !== two.y);\n};\n\nmodule.exports = pointsDiffer;\n","/**\n * Copyright (c) 2015-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 *\n * Resolves an asset into a `source` for `Image`.\n *\n * @format\n * @flow\n */\n\n'use strict';\n\nconst AssetRegistry = require('AssetRegistry');\nconst AssetSourceResolver = require('AssetSourceResolver');\n\nimport type {ResolvedAssetSource} from 'AssetSourceResolver';\n\nlet _customSourceTransformer, _serverURL, _scriptURL;\n\nlet _sourceCodeScriptURL: ?string;\nfunction getSourceCodeScriptURL(): ?string {\n if (_sourceCodeScriptURL) {\n return _sourceCodeScriptURL;\n }\n\n let sourceCode =\n global.nativeExtensions && global.nativeExtensions.SourceCode;\n if (!sourceCode) {\n const NativeModules = require('NativeModules');\n sourceCode = NativeModules && NativeModules.SourceCode;\n }\n _sourceCodeScriptURL = sourceCode.scriptURL;\n return _sourceCodeScriptURL;\n}\n\nfunction getDevServerURL(): ?string {\n if (_serverURL === undefined) {\n const sourceCodeScriptURL = getSourceCodeScriptURL();\n const match =\n sourceCodeScriptURL && sourceCodeScriptURL.match(/^https?:\\/\\/.*?\\//);\n if (match) {\n // jsBundle was loaded from network\n _serverURL = match[0];\n } else {\n // jsBundle was loaded from file\n _serverURL = null;\n }\n }\n return _serverURL;\n}\n\nfunction _coerceLocalScriptURL(scriptURL: ?string): ?string {\n if (scriptURL) {\n if (scriptURL.startsWith('assets://')) {\n // android: running from within assets, no offline path to use\n return null;\n }\n scriptURL = scriptURL.substring(0, scriptURL.lastIndexOf('/') + 1);\n if (!scriptURL.includes('://')) {\n // Add file protocol in case we have an absolute file path and not a URL.\n // This shouldn't really be necessary. scriptURL should be a URL.\n scriptURL = 'file://' + scriptURL;\n }\n }\n return scriptURL;\n}\n\nfunction getScriptURL(): ?string {\n if (_scriptURL === undefined) {\n _scriptURL = _coerceLocalScriptURL(getSourceCodeScriptURL());\n }\n return _scriptURL;\n}\n\nfunction setCustomSourceTransformer(\n transformer: (resolver: AssetSourceResolver) => ResolvedAssetSource,\n): void {\n _customSourceTransformer = transformer;\n}\n\n/**\n * `source` is either a number (opaque type returned by require('./foo.png'))\n * or an `ImageSource` like { uri: '' }\n */\nfunction resolveAssetSource(source: any): ?ResolvedAssetSource {\n if (typeof source === 'object') {\n return source;\n }\n\n const asset = AssetRegistry.getAssetByID(source);\n if (!asset) {\n return null;\n }\n\n const resolver = new AssetSourceResolver(\n getDevServerURL(),\n getScriptURL(),\n asset,\n );\n if (_customSourceTransformer) {\n return _customSourceTransformer(resolver);\n }\n return resolver.defaultAsset();\n}\n\nmodule.exports = resolveAssetSource;\nmodule.exports.pickScale = AssetSourceResolver.pickScale;\nmodule.exports.setCustomSourceTransformer = setCustomSourceTransformer;\n","/**\n * Copyright (c) 2015-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 * @flow strict\n * @format\n */\n'use strict';\n\nexport type PackagerAsset = {\n +__packager_asset: boolean,\n +fileSystemLocation: string,\n +httpServerLocation: string,\n +width: ?number,\n +height: ?number,\n +scales: Array,\n +hash: string,\n +name: string,\n +type: string,\n};\n\nconst assets: Array = [];\n\nfunction registerAsset(asset: PackagerAsset): number {\n // `push` returns new array length, so the first asset will\n // get id 1 (not 0) to make the value truthy\n return assets.push(asset);\n}\n\nfunction getAssetByID(assetId: number): PackagerAsset {\n return assets[assetId - 1];\n}\n\nmodule.exports = {registerAsset, getAssetByID};\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nexport type ResolvedAssetSource = {|\n +__packager_asset: boolean,\n +width: ?number,\n +height: ?number,\n +uri: string,\n +scale: number,\n|};\n\nimport type {PackagerAsset} from 'AssetRegistry';\n\nconst PixelRatio = require('PixelRatio');\nconst Platform = require('Platform');\n\nconst assetPathUtils = require('../../local-cli/bundle/assetPathUtils');\nconst invariant = require('fbjs/lib/invariant');\n\n/**\n * Returns a path like 'assets/AwesomeModule/icon@2x.png'\n */\nfunction getScaledAssetPath(asset): string {\n const scale = AssetSourceResolver.pickScale(asset.scales, PixelRatio.get());\n const scaleSuffix = scale === 1 ? '' : '@' + scale + 'x';\n const assetDir = assetPathUtils.getBasePath(asset);\n return assetDir + '/' + asset.name + scaleSuffix + '.' + asset.type;\n}\n\n/**\n * Returns a path like 'drawable-mdpi/icon.png'\n */\nfunction getAssetPathInDrawableFolder(asset): string {\n const scale = AssetSourceResolver.pickScale(asset.scales, PixelRatio.get());\n const drawbleFolder = assetPathUtils.getAndroidResourceFolderName(\n asset,\n scale,\n );\n const fileName = assetPathUtils.getAndroidResourceIdentifier(asset);\n return drawbleFolder + '/' + fileName + '.' + asset.type;\n}\n\nclass AssetSourceResolver {\n serverUrl: ?string;\n // where the jsbundle is being run from\n jsbundleUrl: ?string;\n // the asset to resolve\n asset: PackagerAsset;\n\n constructor(serverUrl: ?string, jsbundleUrl: ?string, asset: PackagerAsset) {\n this.serverUrl = serverUrl;\n this.jsbundleUrl = jsbundleUrl;\n this.asset = asset;\n }\n\n isLoadedFromServer(): boolean {\n return !!this.serverUrl;\n }\n\n isLoadedFromFileSystem(): boolean {\n return !!(this.jsbundleUrl && this.jsbundleUrl.startsWith('file://'));\n }\n\n defaultAsset(): ResolvedAssetSource {\n if (this.isLoadedFromServer()) {\n return this.assetServerURL();\n }\n\n if (Platform.OS === 'android') {\n return this.isLoadedFromFileSystem()\n ? this.drawableFolderInBundle()\n : this.resourceIdentifierWithoutScale();\n } else {\n return this.scaledAssetURLNearBundle();\n }\n }\n\n /**\n * Returns an absolute URL which can be used to fetch the asset\n * from the devserver\n */\n assetServerURL(): ResolvedAssetSource {\n invariant(!!this.serverUrl, 'need server to load from');\n return this.fromSource(\n this.serverUrl +\n getScaledAssetPath(this.asset) +\n '?platform=' +\n Platform.OS +\n '&hash=' +\n this.asset.hash,\n );\n }\n\n /**\n * Resolves to just the scaled asset filename\n * E.g. 'assets/AwesomeModule/icon@2x.png'\n */\n scaledAssetPath(): ResolvedAssetSource {\n return this.fromSource(getScaledAssetPath(this.asset));\n }\n\n /**\n * Resolves to where the bundle is running from, with a scaled asset filename\n * E.g. 'file:///sdcard/bundle/assets/AwesomeModule/icon@2x.png'\n */\n scaledAssetURLNearBundle(): ResolvedAssetSource {\n const path = this.jsbundleUrl || 'file://';\n return this.fromSource(path + getScaledAssetPath(this.asset));\n }\n\n /**\n * The default location of assets bundled with the app, located by\n * resource identifier\n * The Android resource system picks the correct scale.\n * E.g. 'assets_awesomemodule_icon'\n */\n resourceIdentifierWithoutScale(): ResolvedAssetSource {\n invariant(\n Platform.OS === 'android',\n 'resource identifiers work on Android',\n );\n return this.fromSource(\n assetPathUtils.getAndroidResourceIdentifier(this.asset),\n );\n }\n\n /**\n * If the jsbundle is running from a sideload location, this resolves assets\n * relative to its location\n * E.g. 'file:///sdcard/AwesomeModule/drawable-mdpi/icon.png'\n */\n drawableFolderInBundle(): ResolvedAssetSource {\n const path = this.jsbundleUrl || 'file://';\n return this.fromSource(path + getAssetPathInDrawableFolder(this.asset));\n }\n\n fromSource(source: string): ResolvedAssetSource {\n return {\n __packager_asset: true,\n width: this.asset.width,\n height: this.asset.height,\n uri: source,\n scale: AssetSourceResolver.pickScale(this.asset.scales, PixelRatio.get()),\n };\n }\n\n static pickScale(scales: Array, deviceScale: number): number {\n // Packager guarantees that `scales` array is sorted\n for (let i = 0; i < scales.length; i++) {\n if (scales[i] >= deviceScale) {\n return scales[i];\n }\n }\n\n // If nothing matches, device scale is larger than any available\n // scales, so we return the biggest one. Unless the array is empty,\n // in which case we default to 1\n return scales[scales.length - 1] || 1;\n }\n}\n\nmodule.exports = AssetSourceResolver;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict\n */\n\n'use strict';\n\nimport type {PackagerAsset} from '../../Libraries/Image/AssetRegistry';\n\n/**\n * FIXME: using number to represent discrete scale numbers is fragile in essence because of\n * floating point numbers imprecision.\n */\nfunction getAndroidAssetSuffix(scale: number): string {\n switch (scale) {\n case 0.75:\n return 'ldpi';\n case 1:\n return 'mdpi';\n case 1.5:\n return 'hdpi';\n case 2:\n return 'xhdpi';\n case 3:\n return 'xxhdpi';\n case 4:\n return 'xxxhdpi';\n }\n throw new Error('no such scale');\n}\n\n// See https://developer.android.com/guide/topics/resources/drawable-resource.html\nconst drawableFileTypes = new Set([\n 'gif',\n 'jpeg',\n 'jpg',\n 'png',\n 'svg',\n 'webp',\n 'xml',\n]);\n\nfunction getAndroidResourceFolderName(asset: PackagerAsset, scale: number) {\n if (!drawableFileTypes.has(asset.type)) {\n return 'raw';\n }\n var suffix = getAndroidAssetSuffix(scale);\n if (!suffix) {\n throw new Error(\n \"Don't know which android drawable suffix to use for asset: \" +\n JSON.stringify(asset),\n );\n }\n const androidFolder = 'drawable-' + suffix;\n return androidFolder;\n}\n\nfunction getAndroidResourceIdentifier(asset: PackagerAsset) {\n var folderPath = getBasePath(asset);\n return (folderPath + '/' + asset.name)\n .toLowerCase()\n .replace(/\\//g, '_') // Encode folder structure in file name\n .replace(/([^a-z0-9_])/g, '') // Remove illegal chars\n .replace(/^assets_/, ''); // Remove \"assets_\" prefix\n}\n\nfunction getBasePath(asset: PackagerAsset) {\n var basePath = asset.httpServerLocation;\n if (basePath[0] === '/') {\n basePath = basePath.substr(1);\n }\n return basePath;\n}\n\nmodule.exports = {\n getAndroidAssetSuffix: getAndroidAssetSuffix,\n getAndroidResourceFolderName: getAndroidResourceFolderName,\n getAndroidResourceIdentifier: getAndroidResourceIdentifier,\n getBasePath: getBasePath,\n};\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n\n'use strict';\n\nconst React = require('React');\n\nconst requireNativeComponent = require('requireNativeComponent');\n\nimport type {NativeComponent} from 'ReactNative';\nimport type {ViewProps} from 'ViewPropTypes';\n\nconst AndroidProgressBar = requireNativeComponent('AndroidProgressBar');\n\ntype Props = $ReadOnly<{|\n ...ViewProps,\n\n /**\n * Style of the ProgressBar and whether it shows indeterminate progress (e.g. spinner).\n *\n * `indeterminate` can only be false if `styleAttr` is Horizontal, and requires a\n * `progress` value.\n */\n ...\n | {|\n styleAttr: 'Horizontal',\n indeterminate: false,\n progress: number,\n |}\n | {|\n typeAttr:\n | 'Horizontal'\n | 'Normal'\n | 'Small'\n | 'Large'\n | 'Inverse'\n | 'SmallInverse'\n | 'LargeInverse',\n indeterminate: true,\n |},\n /**\n * Whether to show the ProgressBar (true, the default) or hide it (false).\n */\n animating?: ?boolean,\n /**\n * Color of the progress bar.\n */\n color?: ?string,\n /**\n * Used to locate this view in end-to-end tests.\n */\n testID?: ?string,\n|}>;\n\n/**\n * React component that wraps the Android-only `ProgressBar`. This component is\n * used to indicate that the app is loading or there is activity in the app.\n *\n * Example:\n *\n * ```\n * render: function() {\n * var progressBar =\n * \n * \n * ;\n\n * return (\n * \n * );\n * },\n * ```\n */\nconst ProgressBarAndroid = (\n props: Props,\n forwardedRef: ?React.Ref<'AndroidProgressBar'>,\n) => {\n return ;\n};\n\n// $FlowFixMe - TODO T29156721 `React.forwardRef` is not defined in Flow, yet.\nconst ProgressBarAndroidToExport = React.forwardRef(ProgressBarAndroid);\n\nProgressBarAndroidToExport.defaultProps = {\n styleAttr: 'Normal',\n indeterminate: true,\n animating: true,\n};\n\nmodule.exports = (ProgressBarAndroidToExport: Class>);\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\nconst Color = require('art/core/color');\nconst Path = require('ARTSerializablePath');\nconst Transform = require('art/core/transform');\n\nconst React = require('React');\nconst PropTypes = require('prop-types');\nconst ReactNativeViewAttributes = require('ReactNativeViewAttributes');\n\nconst createReactNativeComponentClass = require('createReactNativeComponentClass');\nconst merge = require('merge');\nconst invariant = require('fbjs/lib/invariant');\n\n// Diff Helpers\n\nfunction arrayDiffer(a, b) {\n if (a == null || b == null) {\n return true;\n }\n if (a.length !== b.length) {\n return true;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return true;\n }\n }\n return false;\n}\n\nfunction fontAndLinesDiffer(a, b) {\n if (a === b) {\n return false;\n }\n if (a.font !== b.font) {\n if (a.font === null) {\n return true;\n }\n if (b.font === null) {\n return true;\n }\n\n if (\n a.font.fontFamily !== b.font.fontFamily ||\n a.font.fontSize !== b.font.fontSize ||\n a.font.fontWeight !== b.font.fontWeight ||\n a.font.fontStyle !== b.font.fontStyle\n ) {\n return true;\n }\n }\n return arrayDiffer(a.lines, b.lines);\n}\n\n// Native Attributes\n\nconst SurfaceViewAttributes = merge(ReactNativeViewAttributes.UIView, {\n // This should contain pixel information such as width, height and\n // resolution to know what kind of buffer needs to be allocated.\n // Currently we rely on UIViews and style to figure that out.\n});\n\nconst NodeAttributes = {\n transform: {diff: arrayDiffer},\n opacity: true,\n};\n\nconst GroupAttributes = merge(NodeAttributes, {\n clipping: {diff: arrayDiffer},\n});\n\nconst RenderableAttributes = merge(NodeAttributes, {\n fill: {diff: arrayDiffer},\n stroke: {diff: arrayDiffer},\n strokeWidth: true,\n strokeCap: true,\n strokeJoin: true,\n strokeDash: {diff: arrayDiffer},\n});\n\nconst ShapeAttributes = merge(RenderableAttributes, {\n d: {diff: arrayDiffer},\n});\n\nconst TextAttributes = merge(RenderableAttributes, {\n alignment: true,\n frame: {diff: fontAndLinesDiffer},\n path: {diff: arrayDiffer},\n});\n\n// Native Components\n\nconst NativeSurfaceView = createReactNativeComponentClass(\n 'ARTSurfaceView',\n () => ({\n validAttributes: SurfaceViewAttributes,\n uiViewClassName: 'ARTSurfaceView',\n }),\n);\n\nconst NativeGroup = createReactNativeComponentClass('ARTGroup', () => ({\n validAttributes: GroupAttributes,\n uiViewClassName: 'ARTGroup',\n}));\n\nconst NativeShape = createReactNativeComponentClass('ARTShape', () => ({\n validAttributes: ShapeAttributes,\n uiViewClassName: 'ARTShape',\n}));\n\nconst NativeText = createReactNativeComponentClass('ARTText', () => ({\n validAttributes: TextAttributes,\n uiViewClassName: 'ARTText',\n}));\n\n// Utilities\n\nfunction childrenAsString(children) {\n if (!children) {\n return '';\n }\n if (typeof children === 'string') {\n return children;\n }\n if (children.length) {\n return children.join('\\n');\n }\n return '';\n}\n\n// Surface - Root node of all ART\n\nclass Surface extends React.Component {\n static childContextTypes = {\n isInSurface: PropTypes.bool,\n };\n\n getChildContext() {\n return {isInSurface: true};\n }\n\n render() {\n const height = extractNumber(this.props.height, 0);\n const width = extractNumber(this.props.width, 0);\n\n return (\n \n {this.props.children}\n \n );\n }\n}\n\n// Node Props\n\n// TODO: The desktop version of ART has title and cursor. We should have\n// accessibility support here too even though hovering doesn't work.\n\nfunction extractNumber(value, defaultValue) {\n if (value == null) {\n return defaultValue;\n }\n return +value;\n}\n\nconst pooledTransform = new Transform();\n\nfunction extractTransform(props) {\n const scaleX =\n props.scaleX != null ? props.scaleX : props.scale != null ? props.scale : 1;\n const scaleY =\n props.scaleY != null ? props.scaleY : props.scale != null ? props.scale : 1;\n\n pooledTransform\n .transformTo(1, 0, 0, 1, 0, 0)\n .move(props.x || 0, props.y || 0)\n .rotate(props.rotation || 0, props.originX, props.originY)\n .scale(scaleX, scaleY, props.originX, props.originY);\n\n if (props.transform != null) {\n pooledTransform.transform(props.transform);\n }\n\n return [\n pooledTransform.xx,\n pooledTransform.yx,\n pooledTransform.xy,\n pooledTransform.yy,\n pooledTransform.x,\n pooledTransform.y,\n ];\n}\n\nfunction extractOpacity(props) {\n // TODO: visible === false should also have no hit detection\n if (props.visible === false) {\n return 0;\n }\n if (props.opacity == null) {\n return 1;\n }\n return +props.opacity;\n}\n\n// Groups\n\n// Note: ART has a notion of width and height on Group but AFAIK it's a noop in\n// ReactART.\n\nclass Group extends React.Component {\n static contextTypes = {\n isInSurface: PropTypes.bool.isRequired,\n };\n\n render() {\n const props = this.props;\n invariant(\n this.context.isInSurface,\n 'ART: must be a child of a ',\n );\n return (\n \n {this.props.children}\n \n );\n }\n}\n\nclass ClippingRectangle extends React.Component {\n render() {\n const props = this.props;\n const x = extractNumber(props.x, 0);\n const y = extractNumber(props.y, 0);\n const w = extractNumber(props.width, 0);\n const h = extractNumber(props.height, 0);\n const clipping = [x, y, w, h];\n // The current clipping API requires x and y to be ignored in the transform\n const propsExcludingXAndY = merge(props);\n delete propsExcludingXAndY.x;\n delete propsExcludingXAndY.y;\n return (\n \n {this.props.children}\n \n );\n }\n}\n\n// Renderables\n\nconst SOLID_COLOR = 0;\nconst LINEAR_GRADIENT = 1;\nconst RADIAL_GRADIENT = 2;\nconst PATTERN = 3;\n\nfunction insertColorIntoArray(color, targetArray, atIndex) {\n const c = new Color(color);\n targetArray[atIndex + 0] = c.red / 255;\n targetArray[atIndex + 1] = c.green / 255;\n targetArray[atIndex + 2] = c.blue / 255;\n targetArray[atIndex + 3] = c.alpha;\n}\n\nfunction insertColorsIntoArray(stops, targetArray, atIndex) {\n let i = 0;\n if ('length' in stops) {\n while (i < stops.length) {\n insertColorIntoArray(stops[i], targetArray, atIndex + i * 4);\n i++;\n }\n } else {\n for (const offset in stops) {\n insertColorIntoArray(stops[offset], targetArray, atIndex + i * 4);\n i++;\n }\n }\n return atIndex + i * 4;\n}\n\nfunction insertOffsetsIntoArray(stops, targetArray, atIndex, multi, reverse) {\n let offsetNumber;\n let i = 0;\n if ('length' in stops) {\n while (i < stops.length) {\n offsetNumber = (i / (stops.length - 1)) * multi;\n targetArray[atIndex + i] = reverse ? 1 - offsetNumber : offsetNumber;\n i++;\n }\n } else {\n for (const offsetString in stops) {\n offsetNumber = +offsetString * multi;\n targetArray[atIndex + i] = reverse ? 1 - offsetNumber : offsetNumber;\n i++;\n }\n }\n return atIndex + i;\n}\n\nfunction insertColorStopsIntoArray(stops, targetArray, atIndex) {\n const lastIndex = insertColorsIntoArray(stops, targetArray, atIndex);\n insertOffsetsIntoArray(stops, targetArray, lastIndex, 1, false);\n}\n\nfunction insertDoubleColorStopsIntoArray(stops, targetArray, atIndex) {\n let lastIndex = insertColorsIntoArray(stops, targetArray, atIndex);\n lastIndex = insertColorsIntoArray(stops, targetArray, lastIndex);\n lastIndex = insertOffsetsIntoArray(stops, targetArray, lastIndex, 0.5, false);\n insertOffsetsIntoArray(stops, targetArray, lastIndex, 0.5, true);\n}\n\nfunction applyBoundingBoxToBrushData(brushData, props) {\n const type = brushData[0];\n const width = +props.width;\n const height = +props.height;\n if (type === LINEAR_GRADIENT) {\n brushData[1] *= width;\n brushData[2] *= height;\n brushData[3] *= width;\n brushData[4] *= height;\n } else if (type === RADIAL_GRADIENT) {\n brushData[1] *= width;\n brushData[2] *= height;\n brushData[3] *= width;\n brushData[4] *= height;\n brushData[5] *= width;\n brushData[6] *= height;\n } else if (type === PATTERN) {\n // todo\n }\n}\n\nfunction extractBrush(colorOrBrush, props) {\n if (colorOrBrush == null) {\n return null;\n }\n if (colorOrBrush._brush) {\n if (colorOrBrush._bb) {\n // The legacy API for Gradients allow for the bounding box to be used\n // as a convenience for specifying gradient positions. This should be\n // deprecated. It's not properly implemented in canvas mode. ReactART\n // doesn't handle update to the bounding box correctly. That's why we\n // mutate this so that if it's reused, we reuse the same resolved box.\n applyBoundingBoxToBrushData(colorOrBrush._brush, props);\n colorOrBrush._bb = false;\n }\n return colorOrBrush._brush;\n }\n const c = new Color(colorOrBrush);\n return [SOLID_COLOR, c.red / 255, c.green / 255, c.blue / 255, c.alpha];\n}\n\nfunction extractColor(color) {\n if (color == null) {\n return null;\n }\n const c = new Color(color);\n return [c.red / 255, c.green / 255, c.blue / 255, c.alpha];\n}\n\nfunction extractStrokeCap(strokeCap) {\n switch (strokeCap) {\n case 'butt':\n return 0;\n case 'square':\n return 2;\n default:\n return 1; // round\n }\n}\n\nfunction extractStrokeJoin(strokeJoin) {\n switch (strokeJoin) {\n case 'miter':\n return 0;\n case 'bevel':\n return 2;\n default:\n return 1; // round\n }\n}\n\n// Shape\n\n// Note: ART has a notion of width and height on Shape but AFAIK it's a noop in\n// ReactART.\n\nclass Shape extends React.Component {\n render() {\n const props = this.props;\n const path = props.d || childrenAsString(props.children);\n const d = (path instanceof Path ? path : new Path(path)).toJSON();\n return (\n \n );\n }\n}\n\n// Text\n\nconst cachedFontObjectsFromString = {};\n\nconst fontFamilyPrefix = /^[\\s\"']*/;\nconst fontFamilySuffix = /[\\s\"']*$/;\n\nfunction extractSingleFontFamily(fontFamilyString) {\n // ART on the web allows for multiple font-families to be specified.\n // For compatibility, we extract the first font-family, hoping\n // we'll get a match.\n return fontFamilyString\n .split(',')[0]\n .replace(fontFamilyPrefix, '')\n .replace(fontFamilySuffix, '');\n}\n\nfunction parseFontString(font) {\n if (cachedFontObjectsFromString.hasOwnProperty(font)) {\n return cachedFontObjectsFromString[font];\n }\n const regexp = /^\\s*((?:(?:normal|bold|italic)\\s+)*)(?:(\\d+(?:\\.\\d+)?)[ptexm\\%]*(?:\\s*\\/.*?)?\\s+)?\\s*\\\"?([^\\\"]*)/i;\n const match = regexp.exec(font);\n if (!match) {\n return null;\n }\n const fontFamily = extractSingleFontFamily(match[3]);\n const fontSize = +match[2] || 12;\n const isBold = /bold/.exec(match[1]);\n const isItalic = /italic/.exec(match[1]);\n cachedFontObjectsFromString[font] = {\n fontFamily: fontFamily,\n fontSize: fontSize,\n fontWeight: isBold ? 'bold' : 'normal',\n fontStyle: isItalic ? 'italic' : 'normal',\n };\n return cachedFontObjectsFromString[font];\n}\n\nfunction extractFont(font) {\n if (font == null) {\n return null;\n }\n if (typeof font === 'string') {\n return parseFontString(font);\n }\n const fontFamily = extractSingleFontFamily(font.fontFamily);\n const fontSize = +font.fontSize || 12;\n const fontWeight =\n font.fontWeight != null ? font.fontWeight.toString() : '400';\n return {\n // Normalize\n fontFamily: fontFamily,\n fontSize: fontSize,\n fontWeight: fontWeight,\n fontStyle: font.fontStyle,\n };\n}\n\nconst newLine = /\\n/g;\nfunction extractFontAndLines(font, text) {\n return {font: extractFont(font), lines: text.split(newLine)};\n}\n\nfunction extractAlignment(alignment) {\n switch (alignment) {\n case 'right':\n return 1;\n case 'center':\n return 2;\n default:\n return 0;\n }\n}\n\nclass Text extends React.Component {\n render() {\n const props = this.props;\n const path = props.path;\n const textPath = path\n ? (path instanceof Path ? path : new Path(path)).toJSON()\n : null;\n const textFrame = extractFontAndLines(\n props.font,\n childrenAsString(props.children),\n );\n return (\n \n );\n }\n}\n\n// Declarative fill type objects - API design not finalized\n\nfunction LinearGradient(stops, x1, y1, x2, y2) {\n const type = LINEAR_GRADIENT;\n\n if (arguments.length < 5) {\n const angle = ((x1 == null ? 270 : x1) * Math.PI) / 180;\n\n let x = Math.cos(angle);\n let y = -Math.sin(angle);\n const l = (Math.abs(x) + Math.abs(y)) / 2;\n\n x *= l;\n y *= l;\n\n x1 = 0.5 - x;\n x2 = 0.5 + x;\n y1 = 0.5 - y;\n y2 = 0.5 + y;\n this._bb = true;\n } else {\n this._bb = false;\n }\n\n const brushData = [type, +x1, +y1, +x2, +y2];\n insertColorStopsIntoArray(stops, brushData, 5);\n this._brush = brushData;\n}\n\nfunction RadialGradient(stops, fx, fy, rx, ry, cx, cy) {\n if (ry == null) {\n ry = rx;\n }\n if (cx == null) {\n cx = fx;\n }\n if (cy == null) {\n cy = fy;\n }\n if (fx == null) {\n // As a convenience we allow the whole radial gradient to cover the\n // bounding box. We should consider dropping this API.\n fx = fy = rx = ry = cx = cy = 0.5;\n this._bb = true;\n } else {\n this._bb = false;\n }\n // The ART API expects the radial gradient to be repeated at the edges.\n // To simulate this we render the gradient twice as large and add double\n // color stops. Ideally this API would become more restrictive so that this\n // extra work isn't needed.\n const brushData = [RADIAL_GRADIENT, +fx, +fy, +rx * 2, +ry * 2, +cx, +cy];\n insertDoubleColorStopsIntoArray(stops, brushData, 7);\n this._brush = brushData;\n}\n\nfunction Pattern(url, width, height, left, top) {\n this._brush = [PATTERN, url, +left || 0, +top || 0, +width, +height];\n}\n\nconst ReactART = {\n LinearGradient: LinearGradient,\n RadialGradient: RadialGradient,\n Pattern: Pattern,\n Transform: Transform,\n Path: Path,\n Surface: Surface,\n Group: Group,\n ClippingRectangle: ClippingRectangle,\n Shape: Shape,\n Text: Text,\n};\n\nmodule.exports = ReactART;\n","var colors = {\n\tmaroon: '#800000', red: '#ff0000', orange: '#ffA500', yellow: '#ffff00', olive: '#808000',\n\tpurple: '#800080', fuchsia: \"#ff00ff\", white: '#ffffff', lime: '#00ff00', green: '#008000',\n\tnavy: '#000080', blue: '#0000ff', aqua: '#00ffff', teal: '#008080',\n\tblack: '#000000', silver: '#c0c0c0', gray: '#808080'\n};\n\nvar map = function(array, fn){\n\tvar results = [];\n\tfor (var i = 0, l = array.length; i < l; i++)\n\t\tresults[i] = fn(array[i], i);\n\treturn results;\n};\n\nvar Color = function(color, type){\n\t\n\tif (color.isColor){\n\t\t\n\t\tthis.red = color.red;\n\t\tthis.green = color.green;\n\t\tthis.blue = color.blue;\n\t\tthis.alpha = color.alpha;\n\n\t} else {\n\t\t\n\t\tvar namedColor = colors[color];\n\t\tif (namedColor){\n\t\t\tcolor = namedColor;\n\t\t\ttype = 'hex';\n\t\t}\n\n\t\tswitch (typeof color){\n\t\t\tcase 'string': if (!type) type = (type = color.match(/^rgb|^hsb|^hsl/)) ? type[0] : 'hex'; break;\n\t\t\tcase 'object': type = type || 'rgb'; color = color.toString(); break;\n\t\t\tcase 'number': type = 'hex'; color = color.toString(16); break;\n\t\t}\n\n\t\tcolor = Color['parse' + type.toUpperCase()](color);\n\t\tthis.red = color[0];\n\t\tthis.green = color[1];\n\t\tthis.blue = color[2];\n\t\tthis.alpha = color[3];\n\t}\n\t\n\tthis.isColor = true;\n\n};\n\nvar limit = function(number, min, max){\n\treturn Math.min(max, Math.max(min, number));\n};\n\nvar listMatch = /([-.\\d]+\\%?)\\s*,\\s*([-.\\d]+\\%?)\\s*,\\s*([-.\\d]+\\%?)\\s*,?\\s*([-.\\d]*\\%?)/;\nvar hexMatch = /^#?([a-f0-9]{1,2})([a-f0-9]{1,2})([a-f0-9]{1,2})([a-f0-9]{0,2})$/i;\n\nColor.parseRGB = function(color){\n\treturn map(color.match(listMatch).slice(1), function(bit, i){\n\t\tif (bit) bit = parseFloat(bit) * (bit[bit.length - 1] == '%' ? 2.55 : 1);\n\t\treturn (i < 3) ? Math.round(((bit %= 256) < 0) ? bit + 256 : bit) : limit(((bit === '') ? 1 : Number(bit)), 0, 1);\n\t});\n};\n\t\nColor.parseHEX = function(color){\n\tif (color.length == 1) color = color + color + color;\n\treturn map(color.match(hexMatch).slice(1), function(bit, i){\n\t\tif (i == 3) return (bit) ? parseInt(bit, 16) / 255 : 1;\n\t\treturn parseInt((bit.length == 1) ? bit + bit : bit, 16);\n\t});\n};\n\t\nColor.parseHSB = function(color){\n\tvar hsb = map(color.match(listMatch).slice(1), function(bit, i){\n\t\tif (bit) bit = parseFloat(bit);\n\t\tif (i === 0) return Math.round(((bit %= 360) < 0) ? (bit + 360) : bit);\n\t\telse if (i < 3) return limit(Math.round(bit), 0, 100);\n\t\telse return limit(((bit === '') ? 1 : Number(bit)), 0, 1);\n\t});\n\t\n\tvar a = hsb[3];\n\tvar br = Math.round(hsb[2] / 100 * 255);\n\tif (hsb[1] == 0) return [br, br, br, a];\n\t\t\n\tvar hue = hsb[0];\n\tvar f = hue % 60;\n\tvar p = Math.round((hsb[2] * (100 - hsb[1])) / 10000 * 255);\n\tvar q = Math.round((hsb[2] * (6000 - hsb[1] * f)) / 600000 * 255);\n\tvar t = Math.round((hsb[2] * (6000 - hsb[1] * (60 - f))) / 600000 * 255);\n\n\tswitch (Math.floor(hue / 60)){\n\t\tcase 0: return [br, t, p, a];\n\t\tcase 1: return [q, br, p, a];\n\t\tcase 2: return [p, br, t, a];\n\t\tcase 3: return [p, q, br, a];\n\t\tcase 4: return [t, p, br, a];\n\t\tdefault: return [br, p, q, a];\n\t}\n};\n\nColor.parseHSL = function(color){\n\tvar hsb = map(color.match(listMatch).slice(1), function(bit, i){\n\t\tif (bit) bit = parseFloat(bit);\n\t\tif (i === 0) return Math.round(((bit %= 360) < 0) ? (bit + 360) : bit);\n\t\telse if (i < 3) return limit(Math.round(bit), 0, 100);\n\t\telse return limit(((bit === '') ? 1 : Number(bit)), 0, 1);\n\t});\n\n\tvar h = hsb[0] / 60;\n\tvar s = hsb[1] / 100;\n\tvar l = hsb[2] / 100;\n\tvar a = hsb[3];\n\t\n\tvar c = (1 - Math.abs(2 * l - 1)) * s;\n\tvar x = c * (1 - Math.abs(h % 2 - 1));\n\tvar m = l - c / 2;\n\t\n\tvar p = Math.round((c + m) * 255);\n\tvar q = Math.round((x + m) * 255);\n\tvar t = Math.round((m) * 255);\n\n\tswitch (Math.floor(h)){\n\t\tcase 0: return [p, q, t, a];\n\t\tcase 1: return [q, p, t, a];\n\t\tcase 2: return [t, p, q, a];\n\t\tcase 3: return [t, q, p, a];\n\t\tcase 4: return [q, t, p, a];\n\t\tdefault: return [p, t, q, a];\n\t}\n};\n\nvar toString = function(type, array){\n\tif (array[3] != 1) type += 'a';\n\telse array.pop();\n\treturn type + '(' + array.join(', ') + ')';\n};\n\nColor.prototype = {\n\n\ttoHSB: function(array){\n\t\tvar red = this.red, green = this.green, blue = this.blue, alpha = this.alpha;\n\n\t\tvar max = Math.max(red, green, blue), min = Math.min(red, green, blue), delta = max - min;\n\t\tvar hue = 0, saturation = (delta != 0) ? delta / max : 0, brightness = max / 255;\n\t\tif (saturation){\n\t\t\tvar rr = (max - red) / delta, gr = (max - green) / delta, br = (max - blue) / delta;\n\t\t\thue = (red == max) ? br - gr : (green == max) ? 2 + rr - br : 4 + gr - rr;\n\t\t\tif ((hue /= 6) < 0) hue++;\n\t\t}\n\n\t\tvar hsb = [Math.round(hue * 360), Math.round(saturation * 100), Math.round(brightness * 100), alpha];\n\n\t\treturn (array) ? hsb : toString('hsb', hsb);\n\t},\n\n\ttoHSL: function(array){\n\t\tvar red = this.red, green = this.green, blue = this.blue, alpha = this.alpha;\n\n\t\tvar max = Math.max(red, green, blue), min = Math.min(red, green, blue), delta = max - min;\n\t\tvar hue = 0, saturation = (delta != 0) ? delta / (255 - Math.abs((max + min) - 255)) : 0, lightness = (max + min) / 512;\n\t\tif (saturation){\n\t\t\tvar rr = (max - red) / delta, gr = (max - green) / delta, br = (max - blue) / delta;\n\t\t\thue = (red == max) ? br - gr : (green == max) ? 2 + rr - br : 4 + gr - rr;\n\t\t\tif ((hue /= 6) < 0) hue++;\n\t\t}\n\n\t\tvar hsl = [Math.round(hue * 360), Math.round(saturation * 100), Math.round(lightness * 100), alpha];\n\n\t\treturn (array) ? hsl : toString('hsl', hsl);\n\t},\n\n\ttoHEX: function(array){\n\n\t\tvar a = this.alpha;\n\t\tvar alpha = ((a = Math.round((a * 255)).toString(16)).length == 1) ? a + a : a;\n\t\t\n\t\tvar hex = map([this.red, this.green, this.blue], function(bit){\n\t\t\tbit = bit.toString(16);\n\t\t\treturn (bit.length == 1) ? '0' + bit : bit;\n\t\t});\n\t\t\n\t\treturn (array) ? hex.concat(alpha) : '#' + hex.join('') + ((alpha == 'ff') ? '' : alpha);\n\t},\n\t\n\ttoRGB: function(array){\n\t\tvar rgb = [this.red, this.green, this.blue, this.alpha];\n\t\treturn (array) ? rgb : toString('rgb', rgb);\n\t}\n\n};\n\nColor.prototype.toString = Color.prototype.toRGB;\n\nColor.hex = function(hex){\n\treturn new Color(hex, 'hex');\n};\n\nif (this.hex == null) this.hex = Color.hex;\n\nColor.hsb = function(h, s, b, a){\n\treturn new Color([h || 0, s || 0, b || 0, (a == null) ? 1 : a], 'hsb');\n};\n\nif (this.hsb == null) this.hsb = Color.hsb;\n\nColor.hsl = function(h, s, l, a){\n\treturn new Color([h || 0, s || 0, l || 0, (a == null) ? 1 : a], 'hsl');\n};\n\nif (this.hsl == null) this.hsl = Color.hsl;\n\nColor.rgb = function(r, g, b, a){\n\treturn new Color([r || 0, g || 0, b || 0, (a == null) ? 1 : a], 'rgb');\n};\n\nif (this.rgb == null) this.rgb = Color.rgb;\n\nColor.detach = function(color){\n\tcolor = new Color(color);\n\treturn [Color.rgb(color.red, color.green, color.blue).toString(), color.alpha];\n};\n\nmodule.exports = Color;","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\n// TODO: Move this into an ART mode called \"serialized\" or something\n\nconst Class = require('art/core/class.js');\nconst Path = require('art/core/path.js');\n\nconst MOVE_TO = 0;\nconst CLOSE = 1;\nconst LINE_TO = 2;\nconst CURVE_TO = 3;\nconst ARC = 4;\n\nconst SerializablePath = Class(Path, {\n initialize: function(path) {\n this.reset();\n if (path instanceof SerializablePath) {\n this.path = path.path.slice(0);\n } else if (path) {\n if (path.applyToPath) {\n path.applyToPath(this);\n } else {\n this.push(path);\n }\n }\n },\n\n onReset: function() {\n this.path = [];\n },\n\n onMove: function(sx, sy, x, y) {\n this.path.push(MOVE_TO, x, y);\n },\n\n onLine: function(sx, sy, x, y) {\n this.path.push(LINE_TO, x, y);\n },\n\n onBezierCurve: function(sx, sy, p1x, p1y, p2x, p2y, x, y) {\n this.path.push(CURVE_TO, p1x, p1y, p2x, p2y, x, y);\n },\n\n _arcToBezier: Path.prototype.onArc,\n\n onArc: function(sx, sy, ex, ey, cx, cy, rx, ry, sa, ea, ccw, rotation) {\n if (rx !== ry || rotation) {\n return this._arcToBezier(\n sx,\n sy,\n ex,\n ey,\n cx,\n cy,\n rx,\n ry,\n sa,\n ea,\n ccw,\n rotation,\n );\n }\n this.path.push(ARC, cx, cy, rx, sa, ea, ccw ? 0 : 1);\n },\n\n onClose: function() {\n this.path.push(CLOSE);\n },\n\n toJSON: function() {\n return this.path;\n },\n});\n\nmodule.exports = SerializablePath;\n","module.exports = function(mixins){\n\tvar proto = {};\n\tfor (var i = 0, l = arguments.length; i < l; i++){\n\t\tvar mixin = arguments[i];\n\t\tif (typeof mixin == 'function') mixin = mixin.prototype;\n\t\tfor (var key in mixin) proto[key] = mixin[key];\n\t}\n\tif (!proto.initialize) proto.initialize = function(){};\n\tproto.constructor = function(a,b,c,d,e,f,g,h){\n\t\treturn new proto.initialize(a,b,c,d,e,f,g,h);\n\t};\n\tproto.constructor.prototype = proto.initialize.prototype = proto;\n\treturn proto.constructor;\n};\n","var Class = require('./class');\n\nmodule.exports = Class({\n\t\n\tinitialize: function(path){\n\t\tthis.reset().push(path);\n\t},\n\n\t/* parser */\n\t\n\tpush: function(){\n\t\tvar p = Array.prototype.join.call(arguments, ' ')\n\t\t\t.match(/[a-df-z]|[\\-+]?(?:[\\d\\.]e[\\-+]?|[^\\s\\-+,a-z])+/ig);\n\t\tif (!p) return this;\n\n\t\tvar last, cmd = p[0], i = 1;\n\t\twhile (cmd){\n\t\t\tswitch (cmd){\n\t\t\t\tcase 'm': this.move(p[i++], p[i++]); break;\n\t\t\t\tcase 'l': this.line(p[i++], p[i++]); break;\n\t\t\t\tcase 'c': this.curve(p[i++], p[i++], p[i++], p[i++], p[i++], p[i++]); break;\n\t\t\t\tcase 's': this.curve(p[i++], p[i++], null, null, p[i++], p[i++]); break;\n\t\t\t\tcase 'q': this.curve(p[i++], p[i++], p[i++], p[i++]); break;\n\t\t\t\tcase 't': this.curve(p[i++], p[i++]); break;\n\t\t\t\tcase 'a': this.arc(p[i+5], p[i+6], p[i], p[i+1], p[i+3], !+p[i+4], p[i+2]); i += 7; break;\n\t\t\t\tcase 'h': this.line(p[i++], 0); break;\n\t\t\t\tcase 'v': this.line(0, p[i++]); break;\n\n\t\t\t\tcase 'M': this.moveTo(p[i++], p[i++]); break;\n\t\t\t\tcase 'L': this.lineTo(p[i++], p[i++]); break;\n\t\t\t\tcase 'C': this.curveTo(p[i++], p[i++], p[i++], p[i++], p[i++], p[i++]); break;\n\t\t\t\tcase 'S': this.curveTo(p[i++], p[i++], null, null, p[i++], p[i++]); break;\n\t\t\t\tcase 'Q': this.curveTo(p[i++], p[i++], p[i++], p[i++]); break;\n\t\t\t\tcase 'T': this.curveTo(p[i++], p[i++]); break;\n\t\t\t\tcase 'A': this.arcTo(p[i+5], p[i+6], p[i], p[i+1], p[i+3], !+p[i+4], p[i+2]); i += 7; break;\n\t\t\t\tcase 'H': this.lineTo(p[i++], this.penY); break;\n\t\t\t\tcase 'V': this.lineTo(this.penX, p[i++]); break;\n\t\t\t\t\n\t\t\t\tcase 'Z': case 'z': this.close(); break;\n\t\t\t\tdefault: cmd = last; i--; continue;\n\t\t\t}\n\n\t\t\tlast = cmd;\n\t\t\tif (last == 'm') last = 'l';\n\t\t\telse if (last == 'M') last = 'L';\n\t\t\tcmd = p[i++];\n\t\t}\n\t\treturn this;\n\t},\n\n\t/* utility methods */\n\n\treset: function(){\n\t\tthis.penX = this.penY = 0;\n\t\tthis.penDownX = this.penDownY = null;\n\t\tthis._pivotX = this._pivotY = 0;\n\t\tthis.onReset();\n\t\treturn this;\n\t},\n\t\n\tmove: function(x,y){\n\t\tthis.onMove(this.penX, this.penY, this._pivotX = this.penX += (+x), this._pivotY = this.penY += (+y));\n\t\treturn this;\n\t},\n\tmoveTo: function(x,y){\n\t\tthis.onMove(this.penX, this.penY, this._pivotX = this.penX = (+x), this._pivotY = this.penY = (+y));\n\t\treturn this;\n\t},\n\n\tline: function(x,y){\n\t\treturn this.lineTo(this.penX + (+x), this.penY + (+y));\n\t},\n\tlineTo: function(x,y){\n\t\tif (this.penDownX == null){ this.penDownX = this.penX; this.penDownY = this.penY; }\n\t\tthis.onLine(this.penX, this.penY, this._pivotX = this.penX = (+x), this._pivotY = this.penY = (+y));\n\t\treturn this;\n\t},\n\t\n\tcurve: function(c1x, c1y, c2x, c2y, ex, ey){\n\t\tvar x = this.penX, y = this.penY;\n\t\treturn this.curveTo(\n\t\t\tx + (+c1x), y + (+c1y),\n\t\t\tc2x == null ? null : x + (+c2x),\n\t\t\tc2y == null ? null : y + (+c2y),\n\t\t\tex == null ? null : x + (+ex),\n\t\t\tey == null ? null : y + (+ey)\n\t\t);\n\t},\n\tcurveTo: function(c1x, c1y, c2x, c2y, ex, ey){\n\t\tvar x = this.penX, y = this.penY;\n\t\tif (c2x == null){\n\t\t\tc2x = +c1x; c2y = +c1y;\n\t\t\tc1x = (x * 2) - (this._pivotX || 0); c1y = (y * 2) - (this._pivotY || 0);\n\t\t}\n\t\tif (ex == null){\n\t\t\tthis._pivotX = +c1x; this._pivotY = +c1y;\n\t\t\tex = +c2x; ey = +c2y;\n\t\t\tc2x = (ex + (+c1x) * 2) / 3; c2y = (ey + (+c1y) * 2) / 3;\n\t\t\tc1x = (x + (+c1x) * 2) / 3; c1y = (y + (+c1y) * 2) / 3;\n\t\t} else {\n\t\t\tthis._pivotX = +c2x; this._pivotY = +c2y;\n\t\t}\n\t\tif (this.penDownX == null){ this.penDownX = x; this.penDownY = y; }\n\t\tthis.onBezierCurve(x, y, +c1x, +c1y, +c2x, +c2y, this.penX = +ex, this.penY = +ey);\n\t\treturn this;\n\t},\n\t\n\tarc: function(x, y, rx, ry, outer, counterClockwise, rotation){\n\t\treturn this.arcTo(this.penX + (+x), this.penY + (+y), rx, ry, outer, counterClockwise, rotation);\n\t},\n\tarcTo: function(x, y, rx, ry, outer, counterClockwise, rotation){\n\t\try = Math.abs(+ry || +rx || (+y - this.penY));\n\t\trx = Math.abs(+rx || (+x - this.penX));\n\n\t\tif (!rx || !ry || (x == this.penX && y == this.penY)) return this.lineTo(x, y);\n\n\t\tvar tX = this.penX, tY = this.penY, clockwise = !+counterClockwise, large = !!+outer;\n\n\t\tvar rad = rotation ? rotation * Math.PI / 180 : 0, cos = Math.cos(rad), sin = Math.sin(rad);\n\t\tx -= tX; y -= tY;\n\t\t\n\t\t// Ellipse Center\n\t\tvar cx = cos * x / 2 + sin * y / 2,\n\t\t\tcy = -sin * x / 2 + cos * y / 2,\n\t\t\trxry = rx * rx * ry * ry,\n\t\t\trycx = ry * ry * cx * cx,\n\t\t\trxcy = rx * rx * cy * cy,\n\t\t\ta = rxry - rxcy - rycx;\n\n\t\tif (a < 0){\n\t\t\ta = Math.sqrt(1 - a / rxry);\n\t\t\trx *= a; ry *= a;\n\t\t\tcx = x / 2; cy = y / 2;\n\t\t} else {\n\t\t\ta = Math.sqrt(a / (rxcy + rycx));\n\t\t\tif (large == clockwise) a = -a;\n\t\t\tvar cxd = -a * cy * rx / ry,\n\t\t\t cyd = a * cx * ry / rx;\n\t\t\tcx = cos * cxd - sin * cyd + x / 2;\n\t\t\tcy = sin * cxd + cos * cyd + y / 2;\n\t\t}\n\n\t\t// Rotation + Scale Transform\n\t\tvar xx = cos / rx, yx = sin / rx,\n\t\t xy = -sin / ry, yy = cos / ry;\n\n\t\t// Start and End Angle\n\t\tvar sa = Math.atan2(xy * -cx + yy * -cy, xx * -cx + yx * -cy),\n\t\t ea = Math.atan2(xy * (x - cx) + yy * (y - cy), xx * (x - cx) + yx * (y - cy));\n\n\t\tcx += tX; cy += tY;\n\t\tx += tX; y += tY;\n\n\t\t// Circular Arc\n\t\tif (this.penDownX == null){ this.penDownX = this.penX; this.penDownY = this.penY; }\n\t\tthis.onArc(\n\t\t\ttX, tY, this._pivotX = this.penX = x, this._pivotY = this.penY = y,\n\t\t\tcx, cy, rx, ry, sa, ea, !clockwise, rotation\n\t\t);\n\t\treturn this;\n\t},\n\n\tcounterArc: function(x, y, rx, ry, outer){\n\t\treturn this.arc(x, y, rx, ry, outer, true);\n\t},\n\tcounterArcTo: function(x, y, rx, ry, outer){\n\t\treturn this.arcTo(x, y, rx, ry, outer, true);\n\t},\n\n\tclose: function(){\n\t\tif (this.penDownX != null){\n\t\t\tthis.onClose(this.penX, this.penY, this.penX = this.penDownX, this.penY = this.penDownY);\n\t\t\tthis.penDownX = null;\n\t\t}\n\t\treturn this;\n\t},\n\n\t/* overridable handlers */\n\t\n\tonReset: function(){\n\t},\n\n\tonMove: function(sx, sy, ex, ey){\n\t},\n\n\tonLine: function(sx, sy, ex, ey){\n\t\tthis.onBezierCurve(sx, sy, sx, sy, ex, ey, ex, ey);\n\t},\n\n\tonBezierCurve: function(sx, sy, c1x, c1y, c2x, c2y, ex, ey){\n\t\tvar gx = ex - sx, gy = ey - sy,\n\t\t\tg = gx * gx + gy * gy,\n\t\t\tv1, v2, cx, cy, u;\n\n\t\tcx = c1x - sx; cy = c1y - sy;\n\t\tu = cx * gx + cy * gy;\n\n\t\tif (u > g){\n\t\t\tcx -= gx;\n\t\t\tcy -= gy;\n\t\t} else if (u > 0 && g != 0){\n\t\t\tcx -= u/g * gx;\n\t\t\tcy -= u/g * gy;\n\t\t}\n\n\t\tv1 = cx * cx + cy * cy;\n\n\t\tcx = c2x - sx; cy = c2y - sy;\n\t\tu = cx * gx + cy * gy;\n\n\t\tif (u > g){\n\t\t\tcx -= gx;\n\t\t\tcy -= gy;\n\t\t} else if (u > 0 && g != 0){\n\t\t\tcx -= u/g * gx;\n\t\t\tcy -= u/g * gy;\n\t\t}\n\n\t\tv2 = cx * cx + cy * cy;\n\n\t\tif (v1 < 0.01 && v2 < 0.01){\n\t\t\tthis.onLine(sx, sy, ex, ey);\n\t\t\treturn;\n\t\t}\n\n\t\t// Avoid infinite recursion\n\t\tif (isNaN(v1) || isNaN(v2)){\n\t\t\tthrow new Error('Bad input');\n\t\t}\n\n\t\t// Split curve\n\t\tvar s1x = (c1x + c2x) * 0.5, s1y = (c1y + c2y) * 0.5,\n\t\t l1x = (c1x + sx) * 0.5, l1y = (c1y + sy) * 0.5,\n\t\t l2x = (l1x + s1x) * 0.5, l2y = (l1y + s1y) * 0.5,\n\t\t r2x = (ex + c2x) * 0.5, r2y = (ey + c2y) * 0.5,\n\t\t r1x = (r2x + s1x) * 0.5, r1y = (r2y + s1y) * 0.5,\n\t\t l2r1x = (l2x + r1x) * 0.5, l2r1y = (l2y + r1y) * 0.5;\n\n\t\t// TODO: Manual stack if necessary. Currently recursive without tail optimization.\n\t\tthis.onBezierCurve(sx, sy, l1x, l1y, l2x, l2y, l2r1x, l2r1y);\n\t\tthis.onBezierCurve(l2r1x, l2r1y, r1x, r1y, r2x, r2y, ex, ey);\n\t},\n\n\tonArc: function(sx, sy, ex, ey, cx, cy, rx, ry, sa, ea, ccw, rotation){\n\t\t// Inverse Rotation + Scale Transform\n\t\tvar rad = rotation ? rotation * Math.PI / 180 : 0, cos = Math.cos(rad), sin = Math.sin(rad),\n\t\t\txx = cos * rx, yx = -sin * ry,\n\t\t xy = sin * rx, yy = cos * ry;\n\n\t\t// Bezier Curve Approximation\n\t\tvar arc = ea - sa;\n\t\tif (arc < 0 && !ccw) arc += Math.PI * 2;\n\t\telse if (arc > 0 && ccw) arc -= Math.PI * 2;\n\n\t\tvar n = Math.ceil(Math.abs(arc / (Math.PI / 2))),\n\t\t step = arc / n,\n\t\t k = (4 / 3) * Math.tan(step / 4);\n\n\t\tvar x = Math.cos(sa), y = Math.sin(sa);\n\n\t\tfor (var i = 0; i < n; i++){\n\t\t\tvar cp1x = x - k * y, cp1y = y + k * x;\n\n\t\t\tsa += step;\n\t\t\tx = Math.cos(sa); y = Math.sin(sa);\n\n\t\t\tvar cp2x = x + k * y, cp2y = y - k * x;\n\n\t\t\tthis.onBezierCurve(\n\t\t\t\tsx, sy,\n\t\t\t\tcx + xx * cp1x + yx * cp1y, cy + xy * cp1x + yy * cp1y,\n\t\t\t\tcx + xx * cp2x + yx * cp2y, cy + xy * cp2x + yy * cp2y,\n\t\t\t\t(sx = (cx + xx * x + yx * y)), (sy = (cy + xy * x + yy * y))\n\t\t\t);\n\t\t}\n\t},\n\n\tonClose: function(sx, sy, ex, ey){\n\t\tthis.onLine(sx, sy, ex, ey);\n\t}\n\n});","var Class = require('./class');\n\nfunction Transform(xx, yx, xy, yy, x, y){\n\tif (xx && typeof xx == 'object'){\n\t\tyx = xx.yx; yy = xx.yy; y = xx.y;\n\t\txy = xx.xy; x = xx.x; xx = xx.xx;\n\t}\n\tthis.xx = xx == null ? 1 : xx;\n\tthis.yx = yx || 0;\n\tthis.xy = xy || 0;\n\tthis.yy = yy == null ? 1 : yy;\n\tthis.x = (x == null ? this.x : x) || 0;\n\tthis.y = (y == null ? this.y : y) || 0;\n\tthis._transform();\n\treturn this;\n};\n\nmodule.exports = Class({\n\n\tinitialize: Transform,\n\n\t_transform: function(){},\n\n\txx: 1, yx: 0, x: 0,\n\txy: 0, yy: 1, y: 0,\n\n\ttransform: function(xx, yx, xy, yy, x, y){\n\t\tvar m = this;\n\t\tif (xx && typeof xx == 'object'){\n\t\t\tyx = xx.yx; yy = xx.yy; y = xx.y;\n\t\t\txy = xx.xy; x = xx.x; xx = xx.xx;\n\t\t}\n\t\tif (!x) x = 0;\n\t\tif (!y) y = 0;\n\t\treturn this.transformTo(\n\t\t\tm.xx * xx + m.xy * yx,\n\t\t\tm.yx * xx + m.yy * yx,\n\t\t\tm.xx * xy + m.xy * yy,\n\t\t\tm.yx * xy + m.yy * yy,\n\t\t\tm.xx * x + m.xy * y + m.x,\n\t\t\tm.yx * x + m.yy * y + m.y\n\t\t);\n\t},\n\n\ttransformTo: Transform,\n\n\ttranslate: function(x, y){\n\t\treturn this.transform(1, 0, 0, 1, x, y);\n\t},\n\n\tmove: function(x, y){\n\t\tthis.x += x || 0;\n\t\tthis.y += y || 0;\n\t\tthis._transform();\n\t\treturn this;\n\t},\n\n\tscale: function(x, y){\n\t\tif (y == null) y = x;\n\t\treturn this.transform(x, 0, 0, y, 0, 0);\n\t},\n\n\trotate: function(deg, x, y){\n\t\tif (x == null || y == null){\n\t\t\tx = (this.left || 0) + (this.width || 0) / 2;\n\t\t\ty = (this.top || 0) + (this.height || 0) / 2;\n\t\t}\n\n\t\tvar rad = deg * Math.PI / 180, sin = Math.sin(rad), cos = Math.cos(rad);\n\n\t\tthis.transform(1, 0, 0, 1, x, y);\n\t\tvar m = this;\n\n\t\treturn this.transformTo(\n\t\t\tcos * m.xx - sin * m.yx,\n\t\t\tsin * m.xx + cos * m.yx,\n\t\t\tcos * m.xy - sin * m.yy,\n\t\t\tsin * m.xy + cos * m.yy,\n\t\t\tm.x,\n\t\t\tm.y\n\t\t).transform(1, 0, 0, 1, -x, -y);\n\t},\n\n\tmoveTo: function(x, y){\n\t\tvar m = this;\n\t\treturn this.transformTo(m.xx, m.yx, m.xy, m.yy, x, y);\n\t},\n\n\trotateTo: function(deg, x, y){\n\t\tvar m = this;\n\t\tvar flip = m.yx / m.xx > m.yy / m.xy ? -1 : 1;\n\t\tif (m.xx < 0 ? m.xy >= 0 : m.xy < 0) flip = -flip;\n\t\treturn this.rotate(deg - Math.atan2(flip * m.yx, flip * m.xx) * 180 / Math.PI, x, y);\n\t},\n\n\tscaleTo: function(x, y){\n\t\t// Normalize\n\t\tvar m = this;\n\n\t\tvar h = Math.sqrt(m.xx * m.xx + m.yx * m.yx);\n\t\tm.xx /= h; m.yx /= h;\n\n\t\th = Math.sqrt(m.yy * m.yy + m.xy * m.xy);\n\t\tm.yy /= h; m.xy /= h;\n\n\t\treturn this.scale(x, y);\n\t},\n\n\tresizeTo: function(width, height){\n\t\tvar w = this.width, h = this.height;\n\t\tif (!w || !h) return this;\n\t\treturn this.scaleTo(width / w, height / h);\n\t},\n\n\t/*\n\tinverse: function(){\n\t\tvar a = this.xx, b = this.yx,\n\t\t\tc = this.xy, d = this.yy,\n\t\t\te = this.x, f = this.y;\n\t\tif (a * d - b * c == 0) return null;\n\t\treturn new Transform(\n\t\t\td/(a * d-b * c), b/(b * c-a * d),\n\t\t\tc/(b * c-a * d), a/(a * d-b * c),\n\t\t\t(d * e-c * f)/(b * c-a * d), (b * e-a * f)/(a * d-b * c)\n\t\t);\n\t},\n\t*/\n\n\tinversePoint: function(x, y){\n\t\tvar a = this.xx, b = this.yx,\n\t\t\tc = this.xy, d = this.yy,\n\t\t\te = this.x, f = this.y;\n\t\tvar det = b * c - a * d;\n\t\tif (det == 0) return null;\n\t\treturn {\n\t\t\tx: (d * (e - x) + c * (y - f)) / det,\n\t\t\ty: (a * (f - y) + b * (x - e)) / det\n\t\t};\n\t},\n\n\tpoint: function(x, y){\n\t\tvar m = this;\n\t\treturn {\n\t\t\tx: m.xx * x + m.xy * y + m.x,\n\t\t\ty: m.yx * x + m.yy * y + m.y\n\t\t};\n\t}\t\n\n});\n","/**\n * Copyright (c) 2015-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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nconst ReactNativeStyleAttributes = require('ReactNativeStyleAttributes');\n\nconst ReactNativeViewAttributes = {};\n\nReactNativeViewAttributes.UIView = {\n pointerEvents: true,\n accessible: true,\n accessibilityActions: true,\n accessibilityLabel: true,\n accessibilityComponentType: true,\n accessibilityLiveRegion: true,\n accessibilityRole: true,\n accessibilityStates: true,\n accessibilityTraits: true,\n accessibilityHint: true,\n importantForAccessibility: true,\n nativeID: true,\n testID: true,\n renderToHardwareTextureAndroid: true,\n shouldRasterizeIOS: true,\n onLayout: true,\n onAccessibilityAction: true,\n onAccessibilityTap: true,\n onMagicTap: true,\n collapsable: true,\n needsOffscreenAlphaCompositing: true,\n style: ReactNativeStyleAttributes,\n};\n\nReactNativeViewAttributes.RCTView = {\n ...ReactNativeViewAttributes.UIView,\n\n // This is a special performance property exposed by RCTView and useful for\n // scrolling content when there are many subviews, most of which are offscreen.\n // For this property to be effective, it must be applied to a view that contains\n // many subviews that extend outside its bound. The subviews must also have\n // overflow: hidden, as should the containing view (or one of its superviews).\n removeClippedSubviews: true,\n};\n\nmodule.exports = ReactNativeViewAttributes;\n","/**\n * @generated SignedSource<<148d1974f94f5c9597e86f946bdf0d4e>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n\"use strict\";\n\nvar mergeInto = require('mergeInto');\n\n/**\n * Shallow merges two structures into a return value, without mutating either.\n *\n * @param {?object} one Optional object with properties to merge from.\n * @param {?object} two Optional object with properties to merge from.\n * @return {object} The shallow extension of one by two.\n */\nvar merge = function(one, two) {\n var result = {};\n mergeInto(result, one);\n mergeInto(result, two);\n return result;\n};\n\nmodule.exports = merge;\n","/**\n * @generated SignedSource<>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @typechecks static-only\n */\n\n\"use strict\";\n\nvar mergeHelpers = require('mergeHelpers');\n\nvar checkMergeObjectArg = mergeHelpers.checkMergeObjectArg;\nvar checkMergeIntoObjectArg = mergeHelpers.checkMergeIntoObjectArg;\n\n/**\n * Shallow merges two structures by mutating the first parameter.\n *\n * @param {object|function} one Object to be merged into.\n * @param {?object} two Optional object with properties to merge from.\n */\nfunction mergeInto(one, two) {\n checkMergeIntoObjectArg(one);\n if (two != null) {\n checkMergeObjectArg(two);\n for (var key in two) {\n if (!Object.prototype.hasOwnProperty.call(two, key)) {\n continue;\n }\n one[key] = two[key];\n }\n }\n}\n\nmodule.exports = mergeInto;\n","/**\n * Copyright (c) 2013-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 *\n * requiresPolyfills: Array.isArray\n *\n * @format\n */\n\n'use strict';\n\nconst invariant = require('fbjs/lib/invariant');\n\n/**\n * Maximum number of levels to traverse. Will catch circular structures.\n * @const\n */\nconst MAX_MERGE_DEPTH = 36;\n\n/**\n * We won't worry about edge cases like new String('x') or new Boolean(true).\n * Functions and Dates are considered terminals, and arrays are not.\n * @param {*} o The item/object/value to test.\n * @return {boolean} true iff the argument is a terminal.\n */\nconst isTerminal = function(o) {\n return typeof o !== 'object' || o instanceof Date || o === null;\n};\n\nconst mergeHelpers = {\n MAX_MERGE_DEPTH: MAX_MERGE_DEPTH,\n\n isTerminal: isTerminal,\n\n /**\n * Converts null/undefined values into empty object.\n *\n * @param {?Object=} arg Argument to be normalized (nullable optional)\n * @return {!Object}\n */\n normalizeMergeArg: function(arg) {\n return arg === undefined || arg === null ? {} : arg;\n },\n\n /**\n * If merging Arrays, a merge strategy *must* be supplied. If not, it is\n * likely the caller's fault. If this function is ever called with anything\n * but `one` and `two` being `Array`s, it is the fault of the merge utilities.\n *\n * @param {*} one Array to merge into.\n * @param {*} two Array to merge from.\n */\n checkMergeArrayArgs: function(one, two) {\n invariant(\n Array.isArray(one) && Array.isArray(two),\n 'Tried to merge arrays, instead got %s and %s.',\n one,\n two,\n );\n },\n\n /**\n * @param {*} one Object to merge into.\n * @param {*} two Object to merge from.\n */\n checkMergeObjectArgs: function(one, two) {\n mergeHelpers.checkMergeObjectArg(one);\n mergeHelpers.checkMergeObjectArg(two);\n },\n\n /**\n * @param {*} arg\n */\n checkMergeObjectArg: function(arg) {\n invariant(\n !isTerminal(arg) && !Array.isArray(arg),\n 'Tried to merge an object, instead got %s.',\n arg,\n );\n },\n\n /**\n * @param {*} arg\n */\n checkMergeIntoObjectArg: function(arg) {\n invariant(\n (!isTerminal(arg) || typeof arg === 'function') && !Array.isArray(arg),\n 'Tried to merge into an object, instead got %s.',\n arg,\n );\n },\n\n /**\n * Checks that a merge was not given a circular object or an object that had\n * too great of depth.\n *\n * @param {number} Level of recursion to validate against maximum.\n */\n checkMergeLevel: function(level) {\n invariant(\n level < MAX_MERGE_DEPTH,\n 'Maximum deep merge depth exceeded. You may be attempting to merge ' +\n 'circular structures in an unsupported way.',\n );\n },\n\n /**\n * Checks that the supplied merge strategy is valid.\n *\n * @param {string} Array merge strategy.\n */\n checkArrayStrategy: function(strategy) {\n invariant(\n strategy === undefined || strategy in mergeHelpers.ArrayStrategies,\n 'You must provide an array strategy to deep merge functions to ' +\n 'instruct the deep merge how to resolve merging two arrays.',\n );\n },\n\n /**\n * Set of possible behaviors of merge algorithms when encountering two Arrays\n * that must be merged together.\n * - `clobber`: The left `Array` is ignored.\n * - `indexByIndex`: The result is achieved by recursively deep merging at\n * each index. (not yet supported.)\n */\n ArrayStrategies: {\n Clobber: 'Clobber',\n Concat: 'Concat',\n IndexByIndex: 'IndexByIndex',\n },\n};\n\nmodule.exports = mergeHelpers;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst ColorPropType = require('ColorPropType');\nconst Platform = require('Platform');\nconst React = require('React');\nconst PropTypes = require('prop-types');\nconst StyleSheet = require('StyleSheet');\nconst Text = require('Text');\nconst TouchableNativeFeedback = require('TouchableNativeFeedback');\nconst TouchableOpacity = require('TouchableOpacity');\nconst View = require('View');\n\nconst invariant = require('fbjs/lib/invariant');\n\n/**\n * A basic button component that should render nicely on any platform. Supports\n * a minimal level of customization.\n *\n *
\n *\n * If this button doesn't look right for your app, you can build your own\n * button using [TouchableOpacity](docs/touchableopacity.html)\n * or [TouchableNativeFeedback](docs/touchablenativefeedback.html).\n * For inspiration, look at the [source code for this button component](https://github.com/facebook/react-native/blob/master/Libraries/Components/Button.js).\n * Or, take a look at the [wide variety of button components built by the community](https://js.coach/react-native?search=button).\n *\n * Example usage:\n *\n * ```\n * import { Button } from 'react-native';\n * ...\n *\n * \n * ```\n *\n */\n\nclass Button extends React.Component<{\n title: string,\n onPress: () => any,\n color?: ?string,\n hasTVPreferredFocus?: ?boolean,\n accessibilityLabel?: ?string,\n disabled?: ?boolean,\n testID?: ?string,\n}> {\n static propTypes = {\n /**\n * Text to display inside the button\n */\n title: PropTypes.string.isRequired,\n /**\n * Text to display for blindness accessibility features\n */\n accessibilityLabel: PropTypes.string,\n /**\n * Color of the text (iOS), or background color of the button (Android)\n */\n color: ColorPropType,\n /**\n * If true, disable all interactions for this component.\n */\n disabled: PropTypes.bool,\n /**\n * TV preferred focus (see documentation for the View component).\n */\n hasTVPreferredFocus: PropTypes.bool,\n /**\n * Handler to be called when the user taps the button\n */\n onPress: PropTypes.func.isRequired,\n /**\n * Used to locate this view in end-to-end tests.\n */\n testID: PropTypes.string,\n };\n\n render() {\n const {\n accessibilityLabel,\n color,\n onPress,\n title,\n hasTVPreferredFocus,\n disabled,\n testID,\n } = this.props;\n const buttonStyles = [styles.button];\n const textStyles = [styles.text];\n if (color) {\n if (Platform.OS === 'ios') {\n textStyles.push({color: color});\n } else {\n buttonStyles.push({backgroundColor: color});\n }\n }\n const accessibilityStates = [];\n if (disabled) {\n buttonStyles.push(styles.buttonDisabled);\n textStyles.push(styles.textDisabled);\n accessibilityStates.push('disabled');\n }\n invariant(\n typeof title === 'string',\n 'The title prop of a Button must be a string',\n );\n const formattedTitle =\n Platform.OS === 'android' ? title.toUpperCase() : title;\n const Touchable =\n Platform.OS === 'android' ? TouchableNativeFeedback : TouchableOpacity;\n return (\n \n \n \n {formattedTitle}\n \n \n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n button: Platform.select({\n ios: {},\n android: {\n elevation: 4,\n // Material design blue from https://material.google.com/style/color.html#color-color-palette\n backgroundColor: '#2196F3',\n borderRadius: 2,\n },\n }),\n text: Platform.select({\n ios: {\n // iOS blue from https://developer.apple.com/ios/human-interface-guidelines/visual-design/color/\n color: '#007AFF',\n textAlign: 'center',\n padding: 8,\n fontSize: 18,\n },\n android: {\n color: 'white',\n textAlign: 'center',\n padding: 8,\n fontWeight: '500',\n },\n }),\n buttonDisabled: Platform.select({\n ios: {},\n android: {\n elevation: 0,\n backgroundColor: '#dfdfdf',\n },\n }),\n textDisabled: Platform.select({\n ios: {\n color: '#cdcdcd',\n },\n android: {\n color: '#a1a1a1',\n },\n }),\n});\n\nmodule.exports = Button;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n\n'use strict';\n\nconst React = require('React');\nconst ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nconst TextAncestor = require('TextAncestor');\nconst TextPropTypes = require('TextPropTypes');\nconst Touchable = require('Touchable');\nconst UIManager = require('UIManager');\n\nconst createReactNativeComponentClass = require('createReactNativeComponentClass');\nconst nullthrows = require('fbjs/lib/nullthrows');\nconst processColor = require('processColor');\n\nimport type {PressEvent} from 'CoreEventTypes';\nimport type {NativeComponent} from 'ReactNative';\nimport type {PressRetentionOffset, TextProps} from 'TextProps';\n\ntype ResponseHandlers = $ReadOnly<{|\n onStartShouldSetResponder: () => boolean,\n onResponderGrant: (event: SyntheticEvent<>, dispatchID: string) => void,\n onResponderMove: (event: SyntheticEvent<>) => void,\n onResponderRelease: (event: SyntheticEvent<>) => void,\n onResponderTerminate: (event: SyntheticEvent<>) => void,\n onResponderTerminationRequest: () => boolean,\n|}>;\n\ntype Props = $ReadOnly<{\n ...TextProps,\n forwardedRef: ?React.Ref<'RCTText' | 'RCTVirtualText'>,\n}>;\n\ntype State = {|\n touchable: {|\n touchState: ?string,\n responderID: ?number,\n |},\n isHighlighted: boolean,\n createResponderHandlers: () => ResponseHandlers,\n responseHandlers: ?ResponseHandlers,\n|};\n\nconst PRESS_RECT_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\n\nconst viewConfig = {\n validAttributes: {\n ...ReactNativeViewAttributes.UIView,\n isHighlighted: true,\n numberOfLines: true,\n ellipsizeMode: true,\n allowFontScaling: true,\n disabled: true,\n selectable: true,\n selectionColor: true,\n adjustsFontSizeToFit: true,\n minimumFontScale: true,\n textBreakStrategy: true,\n onTextLayout: true,\n },\n directEventTypes: {\n topTextLayout: {\n registrationName: 'onTextLayout',\n },\n },\n uiViewClassName: 'RCTText',\n};\n\n/**\n * A React component for displaying text.\n *\n * See https://facebook.github.io/react-native/docs/text.html\n */\nclass TouchableText extends React.Component {\n static defaultProps = {\n accessible: true,\n allowFontScaling: true,\n ellipsizeMode: 'tail',\n };\n\n touchableGetPressRectOffset: ?() => PressRetentionOffset;\n touchableHandleActivePressIn: ?() => void;\n touchableHandleActivePressOut: ?() => void;\n touchableHandleLongPress: ?(event: PressEvent) => void;\n touchableHandlePress: ?(event: PressEvent) => void;\n touchableHandleResponderGrant: ?(\n event: SyntheticEvent<>,\n dispatchID: string,\n ) => void;\n touchableHandleResponderMove: ?(event: SyntheticEvent<>) => void;\n touchableHandleResponderRelease: ?(event: SyntheticEvent<>) => void;\n touchableHandleResponderTerminate: ?(event: SyntheticEvent<>) => void;\n touchableHandleResponderTerminationRequest: ?() => boolean;\n\n state = {\n ...Touchable.Mixin.touchableGetInitialState(),\n isHighlighted: false,\n createResponderHandlers: this._createResponseHandlers.bind(this),\n responseHandlers: null,\n };\n\n static getDerivedStateFromProps(nextProps: Props, prevState: State): ?State {\n return prevState.responseHandlers == null && isTouchable(nextProps)\n ? {\n ...prevState,\n responseHandlers: prevState.createResponderHandlers(),\n }\n : null;\n }\n\n static viewConfig = viewConfig;\n\n render(): React.Node {\n let props = this.props;\n if (isTouchable(props)) {\n props = {\n ...props,\n ...this.state.responseHandlers,\n isHighlighted: this.state.isHighlighted,\n };\n }\n if (props.selectionColor != null) {\n props = {\n ...props,\n selectionColor: processColor(props.selectionColor),\n };\n }\n if (__DEV__) {\n if (Touchable.TOUCH_TARGET_DEBUG && props.onPress != null) {\n props = {\n ...props,\n style: [props.style, {color: 'magenta'}],\n };\n }\n }\n return (\n \n {hasTextAncestor =>\n hasTextAncestor ? (\n \n ) : (\n \n \n \n )\n }\n \n );\n }\n\n _createResponseHandlers(): ResponseHandlers {\n return {\n onStartShouldSetResponder: (): boolean => {\n const {onStartShouldSetResponder} = this.props;\n const shouldSetResponder =\n (onStartShouldSetResponder == null\n ? false\n : onStartShouldSetResponder()) || isTouchable(this.props);\n\n if (shouldSetResponder) {\n this._attachTouchHandlers();\n }\n return shouldSetResponder;\n },\n onResponderGrant: (event: SyntheticEvent<>, dispatchID: string): void => {\n nullthrows(this.touchableHandleResponderGrant)(event, dispatchID);\n if (this.props.onResponderGrant != null) {\n this.props.onResponderGrant.call(this, event, dispatchID);\n }\n },\n onResponderMove: (event: SyntheticEvent<>): void => {\n nullthrows(this.touchableHandleResponderMove)(event);\n if (this.props.onResponderMove != null) {\n this.props.onResponderMove.call(this, event);\n }\n },\n onResponderRelease: (event: SyntheticEvent<>): void => {\n nullthrows(this.touchableHandleResponderRelease)(event);\n if (this.props.onResponderRelease != null) {\n this.props.onResponderRelease.call(this, event);\n }\n },\n onResponderTerminate: (event: SyntheticEvent<>): void => {\n nullthrows(this.touchableHandleResponderTerminate)(event);\n if (this.props.onResponderTerminate != null) {\n this.props.onResponderTerminate.call(this, event);\n }\n },\n onResponderTerminationRequest: (): boolean => {\n const {onResponderTerminationRequest} = this.props;\n if (!nullthrows(this.touchableHandleResponderTerminationRequest)()) {\n return false;\n }\n if (onResponderTerminationRequest == null) {\n return true;\n }\n return onResponderTerminationRequest();\n },\n };\n }\n\n /**\n * Lazily attaches Touchable.Mixin handlers.\n */\n _attachTouchHandlers(): void {\n if (this.touchableGetPressRectOffset != null) {\n return;\n }\n for (const key in Touchable.Mixin) {\n if (typeof Touchable.Mixin[key] === 'function') {\n (this: any)[key] = Touchable.Mixin[key].bind(this);\n }\n }\n this.touchableHandleActivePressIn = (): void => {\n if (!this.props.suppressHighlighting && isTouchable(this.props)) {\n this.setState({isHighlighted: true});\n }\n };\n this.touchableHandleActivePressOut = (): void => {\n if (!this.props.suppressHighlighting && isTouchable(this.props)) {\n this.setState({isHighlighted: false});\n }\n };\n this.touchableHandlePress = (event: PressEvent): void => {\n if (this.props.onPress != null) {\n this.props.onPress(event);\n }\n };\n this.touchableHandleLongPress = (event: PressEvent): void => {\n if (this.props.onLongPress != null) {\n this.props.onLongPress(event);\n }\n };\n this.touchableGetPressRectOffset = (): PressRetentionOffset =>\n this.props.pressRetentionOffset == null\n ? PRESS_RECT_OFFSET\n : this.props.pressRetentionOffset;\n }\n}\n\nconst isTouchable = (props: Props): boolean =>\n props.onPress != null ||\n props.onLongPress != null ||\n props.onStartShouldSetResponder != null;\n\nconst RCTText = createReactNativeComponentClass(\n viewConfig.uiViewClassName,\n () => viewConfig,\n);\n\nconst RCTVirtualText =\n UIManager.RCTVirtualText == null\n ? RCTText\n : createReactNativeComponentClass('RCTVirtualText', () => ({\n validAttributes: {\n ...ReactNativeViewAttributes.UIView,\n isHighlighted: true,\n },\n uiViewClassName: 'RCTVirtualText',\n }));\n\nconst Text = (\n props: TextProps,\n forwardedRef: ?React.Ref<'RCTText' | 'RCTVirtualText'>,\n) => {\n return ;\n};\n// $FlowFixMe - TODO T29156721 `React.forwardRef` is not defined in Flow, yet.\nconst TextToExport = React.forwardRef(Text);\nTextToExport.displayName = 'Text';\n\n// TODO: Deprecate this.\nTextToExport.propTypes = TextPropTypes;\n\nmodule.exports = (TextToExport: Class>);\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n\n'use strict';\n\nconst ColorPropType = require('ColorPropType');\nconst EdgeInsetsPropType = require('EdgeInsetsPropType');\nconst PropTypes = require('prop-types');\nconst StyleSheetPropType = require('StyleSheetPropType');\nconst TextStylePropTypes = require('TextStylePropTypes');\n\nconst stylePropType = StyleSheetPropType(TextStylePropTypes);\n\nmodule.exports = {\n /**\n * When `numberOfLines` is set, this prop defines how text will be\n * truncated.\n *\n * See https://facebook.github.io/react-native/docs/text.html#ellipsizemode\n */\n ellipsizeMode: PropTypes.oneOf(['head', 'middle', 'tail', 'clip']),\n /**\n * Used to truncate the text with an ellipsis.\n *\n * See https://facebook.github.io/react-native/docs/text.html#numberoflines\n */\n numberOfLines: PropTypes.number,\n /**\n * Set text break strategy on Android.\n *\n * See https://facebook.github.io/react-native/docs/text.html#textbreakstrategy\n */\n textBreakStrategy: PropTypes.oneOf(['simple', 'highQuality', 'balanced']),\n /**\n * Invoked on mount and layout changes.\n *\n * See https://facebook.github.io/react-native/docs/text.html#onlayout\n */\n onLayout: PropTypes.func,\n /**\n * This function is called on press.\n *\n * See https://facebook.github.io/react-native/docs/text.html#onpress\n */\n onPress: PropTypes.func,\n /**\n * This function is called on long press.\n *\n * See https://facebook.github.io/react-native/docs/text.html#onlongpress\n */\n onLongPress: PropTypes.func,\n /**\n * Defines how far your touch may move off of the button, before\n * deactivating the button.\n *\n * See https://facebook.github.io/react-native/docs/text.html#pressretentionoffset\n */\n pressRetentionOffset: EdgeInsetsPropType,\n /**\n * Lets the user select text.\n *\n * See https://facebook.github.io/react-native/docs/text.html#selectable\n */\n selectable: PropTypes.bool,\n /**\n * The highlight color of the text.\n *\n * See https://facebook.github.io/react-native/docs/text.html#selectioncolor\n */\n selectionColor: ColorPropType,\n /**\n * When `true`, no visual change is made when text is pressed down.\n *\n * See https://facebook.github.io/react-native/docs/text.html#supperhighlighting\n */\n suppressHighlighting: PropTypes.bool,\n style: stylePropType,\n /**\n * Used to locate this view in end-to-end tests.\n *\n * See https://facebook.github.io/react-native/docs/text.html#testid\n */\n testID: PropTypes.string,\n /**\n * Used to locate this view from native code.\n *\n * See https://facebook.github.io/react-native/docs/text.html#nativeid\n */\n nativeID: PropTypes.string,\n /**\n * Whether fonts should scale to respect Text Size accessibility settings.\n *\n * See https://facebook.github.io/react-native/docs/text.html#allowfontscaling\n */\n allowFontScaling: PropTypes.bool,\n /**\n * Indicates whether the view is an accessibility element.\n *\n * See https://facebook.github.io/react-native/docs/text.html#accessible\n */\n accessible: PropTypes.bool,\n /**\n * Whether font should be scaled down automatically.\n *\n * See https://facebook.github.io/react-native/docs/text.html#adjustsfontsizetofit\n */\n adjustsFontSizeToFit: PropTypes.bool,\n /**\n * Smallest possible scale a font can reach.\n *\n * See https://facebook.github.io/react-native/docs/text.html#minimumfontscale\n */\n minimumFontScale: PropTypes.number,\n /**\n * Specifies the disabled state of the text view for testing purposes.\n *\n * See https://facebook.github.io/react-native/docs/text.html#disabled\n */\n disabled: PropTypes.bool,\n};\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict\n */\n\n'use strict';\n\nconst PropTypes = require('prop-types');\n\nconst EdgeInsetsPropType = PropTypes.shape({\n top: PropTypes.number,\n left: PropTypes.number,\n bottom: PropTypes.number,\n right: PropTypes.number,\n});\n\nexport type EdgeInsetsProp = $ReadOnly<{|\n top?: ?number,\n left?: ?number,\n bottom?: ?number,\n right?: ?number,\n|}>;\n\nmodule.exports = EdgeInsetsPropType;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\nconst flattenStyle = require('flattenStyle');\n\nfunction StyleSheetPropType(shape: {\n [key: string]: ReactPropsCheckType,\n}): ReactPropsCheckType {\n const shapePropType = createStrictShapeTypeChecker(shape);\n return function(props, propName, componentName, location?, ...rest) {\n let newProps = props;\n if (props[propName]) {\n // Just make a dummy prop object with only the flattened style\n newProps = {};\n newProps[propName] = flattenStyle(props[propName]);\n }\n return shapePropType(newProps, propName, componentName, location, ...rest);\n };\n}\n\nmodule.exports = StyleSheetPropType;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst invariant = require('fbjs/lib/invariant');\nconst merge = require('merge');\n\nfunction createStrictShapeTypeChecker(shapeTypes: {\n [key: string]: ReactPropsCheckType,\n}): ReactPropsChainableTypeChecker {\n function checkType(\n isRequired,\n props,\n propName,\n componentName,\n location?,\n ...rest\n ) {\n if (!props[propName]) {\n if (isRequired) {\n invariant(\n false,\n `Required object \\`${propName}\\` was not specified in ` +\n `\\`${componentName}\\`.`,\n );\n }\n return;\n }\n const propValue = props[propName];\n const propType = typeof propValue;\n const locationName = location || '(unknown)';\n if (propType !== 'object') {\n invariant(\n false,\n `Invalid ${locationName} \\`${propName}\\` of type \\`${propType}\\` ` +\n `supplied to \\`${componentName}\\`, expected \\`object\\`.`,\n );\n }\n // We need to check all keys in case some are required but missing from\n // props.\n const allKeys = merge(props[propName], shapeTypes);\n for (const key in allKeys) {\n const checker = shapeTypes[key];\n if (!checker) {\n invariant(\n false,\n `Invalid props.${propName} key \\`${key}\\` supplied to \\`${componentName}\\`.` +\n '\\nBad object: ' +\n JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' +\n JSON.stringify(Object.keys(shapeTypes), null, ' '),\n );\n }\n const error = checker(propValue, key, componentName, location, ...rest);\n if (error) {\n invariant(\n false,\n error.message +\n '\\nBad object: ' +\n JSON.stringify(props[propName], null, ' '),\n );\n }\n }\n }\n function chainedCheckType(\n props: {[key: string]: any},\n propName: string,\n componentName: string,\n location?: string,\n ...rest\n ): ?Error {\n return checkType(false, props, propName, componentName, location, ...rest);\n }\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n}\n\nmodule.exports = createStrictShapeTypeChecker;\n","/**\n * Copyright (c) 2013-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 * @format\n */\n\n'use strict';\n\nconst BoundingDimensions = require('BoundingDimensions');\nconst Platform = require('Platform');\nconst Position = require('Position');\nconst React = require('React');\nconst ReactNative = require('ReactNative');\nconst TVEventHandler = require('TVEventHandler');\nconst TouchEventUtils = require('fbjs/lib/TouchEventUtils');\nconst UIManager = require('UIManager');\nconst View = require('View');\n\nconst keyMirror = require('fbjs/lib/keyMirror');\nconst normalizeColor = require('normalizeColor');\n\n/**\n * `Touchable`: Taps done right.\n *\n * You hook your `ResponderEventPlugin` events into `Touchable`. `Touchable`\n * will measure time/geometry and tells you when to give feedback to the user.\n *\n * ====================== Touchable Tutorial ===============================\n * The `Touchable` mixin helps you handle the \"press\" interaction. It analyzes\n * the geometry of elements, and observes when another responder (scroll view\n * etc) has stolen the touch lock. It notifies your component when it should\n * give feedback to the user. (bouncing/highlighting/unhighlighting).\n *\n * - When a touch was activated (typically you highlight)\n * - When a touch was deactivated (typically you unhighlight)\n * - When a touch was \"pressed\" - a touch ended while still within the geometry\n * of the element, and no other element (like scroller) has \"stolen\" touch\n * lock (\"responder\") (Typically you bounce the element).\n *\n * A good tap interaction isn't as simple as you might think. There should be a\n * slight delay before showing a highlight when starting a touch. If a\n * subsequent touch move exceeds the boundary of the element, it should\n * unhighlight, but if that same touch is brought back within the boundary, it\n * should rehighlight again. A touch can move in and out of that boundary\n * several times, each time toggling highlighting, but a \"press\" is only\n * triggered if that touch ends while within the element's boundary and no\n * scroller (or anything else) has stolen the lock on touches.\n *\n * To create a new type of component that handles interaction using the\n * `Touchable` mixin, do the following:\n *\n * - Initialize the `Touchable` state.\n *\n * getInitialState: function() {\n * return merge(this.touchableGetInitialState(), yourComponentState);\n * }\n *\n * - Choose the rendered component who's touches should start the interactive\n * sequence. On that rendered node, forward all `Touchable` responder\n * handlers. You can choose any rendered node you like. Choose a node whose\n * hit target you'd like to instigate the interaction sequence:\n *\n * // In render function:\n * return (\n * \n * \n * Even though the hit detection/interactions are triggered by the\n * wrapping (typically larger) node, we usually end up implementing\n * custom logic that highlights this inner one.\n * \n *
\n * );\n *\n * - You may set up your own handlers for each of these events, so long as you\n * also invoke the `touchable*` handlers inside of your custom handler.\n *\n * - Implement the handlers on your component class in order to provide\n * feedback to the user. See documentation for each of these class methods\n * that you should implement.\n *\n * touchableHandlePress: function() {\n * this.performBounceAnimation(); // or whatever you want to do.\n * },\n * touchableHandleActivePressIn: function() {\n * this.beginHighlighting(...); // Whatever you like to convey activation\n * },\n * touchableHandleActivePressOut: function() {\n * this.endHighlighting(...); // Whatever you like to convey deactivation\n * },\n *\n * - There are more advanced methods you can implement (see documentation below):\n * touchableGetHighlightDelayMS: function() {\n * return 20;\n * }\n * // In practice, *always* use a predeclared constant (conserve memory).\n * touchableGetPressRectOffset: function() {\n * return {top: 20, left: 20, right: 20, bottom: 100};\n * }\n */\n\n/**\n * Touchable states.\n */\nconst States = keyMirror({\n NOT_RESPONDER: null, // Not the responder\n RESPONDER_INACTIVE_PRESS_IN: null, // Responder, inactive, in the `PressRect`\n RESPONDER_INACTIVE_PRESS_OUT: null, // Responder, inactive, out of `PressRect`\n RESPONDER_ACTIVE_PRESS_IN: null, // Responder, active, in the `PressRect`\n RESPONDER_ACTIVE_PRESS_OUT: null, // Responder, active, out of `PressRect`\n RESPONDER_ACTIVE_LONG_PRESS_IN: null, // Responder, active, in the `PressRect`, after long press threshold\n RESPONDER_ACTIVE_LONG_PRESS_OUT: null, // Responder, active, out of `PressRect`, after long press threshold\n ERROR: null,\n});\n\n/**\n * Quick lookup map for states that are considered to be \"active\"\n */\nconst IsActive = {\n RESPONDER_ACTIVE_PRESS_OUT: true,\n RESPONDER_ACTIVE_PRESS_IN: true,\n};\n\n/**\n * Quick lookup for states that are considered to be \"pressing\" and are\n * therefore eligible to result in a \"selection\" if the press stops.\n */\nconst IsPressingIn = {\n RESPONDER_INACTIVE_PRESS_IN: true,\n RESPONDER_ACTIVE_PRESS_IN: true,\n RESPONDER_ACTIVE_LONG_PRESS_IN: true,\n};\n\nconst IsLongPressingIn = {\n RESPONDER_ACTIVE_LONG_PRESS_IN: true,\n};\n\n/**\n * Inputs to the state machine.\n */\nconst Signals = keyMirror({\n DELAY: null,\n RESPONDER_GRANT: null,\n RESPONDER_RELEASE: null,\n RESPONDER_TERMINATED: null,\n ENTER_PRESS_RECT: null,\n LEAVE_PRESS_RECT: null,\n LONG_PRESS_DETECTED: null,\n});\n\n/**\n * Mapping from States x Signals => States\n */\nconst Transitions = {\n NOT_RESPONDER: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN,\n RESPONDER_RELEASE: States.ERROR,\n RESPONDER_TERMINATED: States.ERROR,\n ENTER_PRESS_RECT: States.ERROR,\n LEAVE_PRESS_RECT: States.ERROR,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n RESPONDER_INACTIVE_PRESS_IN: {\n DELAY: States.RESPONDER_ACTIVE_PRESS_IN,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n RESPONDER_INACTIVE_PRESS_OUT: {\n DELAY: States.RESPONDER_ACTIVE_PRESS_OUT,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n RESPONDER_ACTIVE_PRESS_IN: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n },\n RESPONDER_ACTIVE_PRESS_OUT: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n RESPONDER_ACTIVE_LONG_PRESS_IN: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\n LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n },\n RESPONDER_ACTIVE_LONG_PRESS_OUT: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n error: {\n DELAY: States.NOT_RESPONDER,\n RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.NOT_RESPONDER,\n LEAVE_PRESS_RECT: States.NOT_RESPONDER,\n LONG_PRESS_DETECTED: States.NOT_RESPONDER,\n },\n};\n\n// ==== Typical Constants for integrating into UI components ====\n// var HIT_EXPAND_PX = 20;\n// var HIT_VERT_OFFSET_PX = 10;\nconst HIGHLIGHT_DELAY_MS = 130;\n\nconst PRESS_EXPAND_PX = 20;\n\nconst LONG_PRESS_THRESHOLD = 500;\n\nconst LONG_PRESS_DELAY_MS = LONG_PRESS_THRESHOLD - HIGHLIGHT_DELAY_MS;\n\nconst LONG_PRESS_ALLOWED_MOVEMENT = 10;\n\n// Default amount \"active\" region protrudes beyond box\n\n/**\n * By convention, methods prefixed with underscores are meant to be @private,\n * and not @protected. Mixers shouldn't access them - not even to provide them\n * as callback handlers.\n *\n *\n * ========== Geometry =========\n * `Touchable` only assumes that there exists a `HitRect` node. The `PressRect`\n * is an abstract box that is extended beyond the `HitRect`.\n *\n * +--------------------------+\n * | | - \"Start\" events in `HitRect` cause `HitRect`\n * | +--------------------+ | to become the responder.\n * | | +--------------+ | | - `HitRect` is typically expanded around\n * | | | | | | the `VisualRect`, but shifted downward.\n * | | | VisualRect | | | - After pressing down, after some delay,\n * | | | | | | and before letting up, the Visual React\n * | | +--------------+ | | will become \"active\". This makes it eligible\n * | | HitRect | | for being highlighted (so long as the\n * | +--------------------+ | press remains in the `PressRect`).\n * | PressRect o |\n * +----------------------|---+\n * Out Region |\n * +-----+ This gap between the `HitRect` and\n * `PressRect` allows a touch to move far away\n * from the original hit rect, and remain\n * highlighted, and eligible for a \"Press\".\n * Customize this via\n * `touchableGetPressRectOffset()`.\n *\n *\n *\n * ======= State Machine =======\n *\n * +-------------+ <---+ RESPONDER_RELEASE\n * |NOT_RESPONDER|\n * +-------------+ <---+ RESPONDER_TERMINATED\n * +\n * | RESPONDER_GRANT (HitRect)\n * v\n * +---------------------------+ DELAY +-------------------------+ T + DELAY +------------------------------+\n * |RESPONDER_INACTIVE_PRESS_IN|+-------->|RESPONDER_ACTIVE_PRESS_IN| +------------> |RESPONDER_ACTIVE_LONG_PRESS_IN|\n * +---------------------------+ +-------------------------+ +------------------------------+\n * + ^ + ^ + ^\n * |LEAVE_ |ENTER_ |LEAVE_ |ENTER_ |LEAVE_ |ENTER_\n * |PRESS_RECT |PRESS_RECT |PRESS_RECT |PRESS_RECT |PRESS_RECT |PRESS_RECT\n * | | | | | |\n * v + v + v +\n * +----------------------------+ DELAY +--------------------------+ +-------------------------------+\n * |RESPONDER_INACTIVE_PRESS_OUT|+------->|RESPONDER_ACTIVE_PRESS_OUT| |RESPONDER_ACTIVE_LONG_PRESS_OUT|\n * +----------------------------+ +--------------------------+ +-------------------------------+\n *\n * T + DELAY => LONG_PRESS_DELAY_MS + DELAY\n *\n * Not drawn are the side effects of each transition. The most important side\n * effect is the `touchableHandlePress` abstract method invocation that occurs\n * when a responder is released while in either of the \"Press\" states.\n *\n * The other important side effects are the highlight abstract method\n * invocations (internal callbacks) to be implemented by the mixer.\n *\n *\n * @lends Touchable.prototype\n */\nconst TouchableMixin = {\n componentDidMount: function() {\n if (!Platform.isTV) {\n return;\n }\n\n this._tvEventHandler = new TVEventHandler();\n this._tvEventHandler.enable(this, function(cmp, evt) {\n const myTag = ReactNative.findNodeHandle(cmp);\n evt.dispatchConfig = {};\n if (myTag === evt.tag) {\n if (evt.eventType === 'focus') {\n cmp.touchableHandleFocus(evt);\n } else if (evt.eventType === 'blur') {\n cmp.touchableHandleBlur(evt);\n } else if (evt.eventType === 'select') {\n cmp.touchableHandlePress &&\n !cmp.props.disabled &&\n cmp.touchableHandlePress(evt);\n }\n }\n });\n },\n\n /**\n * Clear all timeouts on unmount\n */\n componentWillUnmount: function() {\n if (this._tvEventHandler) {\n this._tvEventHandler.disable();\n delete this._tvEventHandler;\n }\n this.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\n this.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\n this.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout);\n },\n\n /**\n * It's prefer that mixins determine state in this way, having the class\n * explicitly mix the state in the one and only `getInitialState` method.\n *\n * @return {object} State object to be placed inside of\n * `this.state.touchable`.\n */\n touchableGetInitialState: function() {\n return {\n touchable: {touchState: undefined, responderID: null},\n };\n },\n\n // ==== Hooks to Gesture Responder system ====\n /**\n * Must return true if embedded in a native platform scroll view.\n */\n touchableHandleResponderTerminationRequest: function() {\n return !this.props.rejectResponderTermination;\n },\n\n /**\n * Must return true to start the process of `Touchable`.\n */\n touchableHandleStartShouldSetResponder: function() {\n return !this.props.disabled;\n },\n\n /**\n * Return true to cancel press on long press.\n */\n touchableLongPressCancelsPress: function() {\n return true;\n },\n\n /**\n * Place as callback for a DOM element's `onResponderGrant` event.\n * @param {SyntheticEvent} e Synthetic event from event system.\n *\n */\n touchableHandleResponderGrant: function(e) {\n const dispatchID = e.currentTarget;\n // Since e is used in a callback invoked on another event loop\n // (as in setTimeout etc), we need to call e.persist() on the\n // event to make sure it doesn't get reused in the event object pool.\n e.persist();\n\n this.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout);\n this.pressOutDelayTimeout = null;\n\n this.state.touchable.touchState = States.NOT_RESPONDER;\n this.state.touchable.responderID = dispatchID;\n this._receiveSignal(Signals.RESPONDER_GRANT, e);\n let delayMS =\n this.touchableGetHighlightDelayMS !== undefined\n ? Math.max(this.touchableGetHighlightDelayMS(), 0)\n : HIGHLIGHT_DELAY_MS;\n delayMS = isNaN(delayMS) ? HIGHLIGHT_DELAY_MS : delayMS;\n if (delayMS !== 0) {\n this.touchableDelayTimeout = setTimeout(\n this._handleDelay.bind(this, e),\n delayMS,\n );\n } else {\n this._handleDelay(e);\n }\n\n let longDelayMS =\n this.touchableGetLongPressDelayMS !== undefined\n ? Math.max(this.touchableGetLongPressDelayMS(), 10)\n : LONG_PRESS_DELAY_MS;\n longDelayMS = isNaN(longDelayMS) ? LONG_PRESS_DELAY_MS : longDelayMS;\n this.longPressDelayTimeout = setTimeout(\n this._handleLongDelay.bind(this, e),\n longDelayMS + delayMS,\n );\n },\n\n /**\n * Place as callback for a DOM element's `onResponderRelease` event.\n */\n touchableHandleResponderRelease: function(e) {\n this._receiveSignal(Signals.RESPONDER_RELEASE, e);\n },\n\n /**\n * Place as callback for a DOM element's `onResponderTerminate` event.\n */\n touchableHandleResponderTerminate: function(e) {\n this._receiveSignal(Signals.RESPONDER_TERMINATED, e);\n },\n\n /**\n * Place as callback for a DOM element's `onResponderMove` event.\n */\n touchableHandleResponderMove: function(e) {\n // Not enough time elapsed yet, wait for highlight -\n // this is just a perf optimization.\n if (\n this.state.touchable.touchState === States.RESPONDER_INACTIVE_PRESS_IN\n ) {\n return;\n }\n\n // Measurement may not have returned yet.\n if (!this.state.touchable.positionOnActivate) {\n return;\n }\n\n const positionOnActivate = this.state.touchable.positionOnActivate;\n const dimensionsOnActivate = this.state.touchable.dimensionsOnActivate;\n const pressRectOffset = this.touchableGetPressRectOffset\n ? this.touchableGetPressRectOffset()\n : {\n left: PRESS_EXPAND_PX,\n right: PRESS_EXPAND_PX,\n top: PRESS_EXPAND_PX,\n bottom: PRESS_EXPAND_PX,\n };\n\n let pressExpandLeft = pressRectOffset.left;\n let pressExpandTop = pressRectOffset.top;\n let pressExpandRight = pressRectOffset.right;\n let pressExpandBottom = pressRectOffset.bottom;\n\n const hitSlop = this.touchableGetHitSlop\n ? this.touchableGetHitSlop()\n : null;\n\n if (hitSlop) {\n pressExpandLeft += hitSlop.left || 0;\n pressExpandTop += hitSlop.top || 0;\n pressExpandRight += hitSlop.right || 0;\n pressExpandBottom += hitSlop.bottom || 0;\n }\n\n const touch = TouchEventUtils.extractSingleTouch(e.nativeEvent);\n const pageX = touch && touch.pageX;\n const pageY = touch && touch.pageY;\n\n if (this.pressInLocation) {\n const movedDistance = this._getDistanceBetweenPoints(\n pageX,\n pageY,\n this.pressInLocation.pageX,\n this.pressInLocation.pageY,\n );\n if (movedDistance > LONG_PRESS_ALLOWED_MOVEMENT) {\n this._cancelLongPressDelayTimeout();\n }\n }\n\n const isTouchWithinActive =\n pageX > positionOnActivate.left - pressExpandLeft &&\n pageY > positionOnActivate.top - pressExpandTop &&\n pageX <\n positionOnActivate.left +\n dimensionsOnActivate.width +\n pressExpandRight &&\n pageY <\n positionOnActivate.top +\n dimensionsOnActivate.height +\n pressExpandBottom;\n if (isTouchWithinActive) {\n this._receiveSignal(Signals.ENTER_PRESS_RECT, e);\n const curState = this.state.touchable.touchState;\n if (curState === States.RESPONDER_INACTIVE_PRESS_IN) {\n // fix for t7967420\n this._cancelLongPressDelayTimeout();\n }\n } else {\n this._cancelLongPressDelayTimeout();\n this._receiveSignal(Signals.LEAVE_PRESS_RECT, e);\n }\n },\n\n /**\n * Invoked when the item receives focus. Mixers might override this to\n * visually distinguish the `VisualRect` so that the user knows that it\n * currently has the focus. Most platforms only support a single element being\n * focused at a time, in which case there may have been a previously focused\n * element that was blurred just prior to this.\n */\n touchableHandleFocus: function(e: Event) {\n this.props.onFocus && this.props.onFocus(e);\n },\n\n /**\n * Invoked when the item loses focus. Mixers might override this to\n * visually distinguish the `VisualRect` so that the user knows that it\n * no longer has focus. Most platforms only support a single element being\n * focused at a time, in which case the focus may have moved to another.\n */\n touchableHandleBlur: function(e: Event) {\n this.props.onBlur && this.props.onBlur(e);\n },\n\n // ==== Abstract Application Callbacks ====\n\n /**\n * Invoked when the item should be highlighted. Mixers should implement this\n * to visually distinguish the `VisualRect` so that the user knows that\n * releasing a touch will result in a \"selection\" (analog to click).\n *\n * @abstract\n * touchableHandleActivePressIn: function,\n */\n\n /**\n * Invoked when the item is \"active\" (in that it is still eligible to become\n * a \"select\") but the touch has left the `PressRect`. Usually the mixer will\n * want to unhighlight the `VisualRect`. If the user (while pressing) moves\n * back into the `PressRect` `touchableHandleActivePressIn` will be invoked\n * again and the mixer should probably highlight the `VisualRect` again. This\n * event will not fire on an `touchEnd/mouseUp` event, only move events while\n * the user is depressing the mouse/touch.\n *\n * @abstract\n * touchableHandleActivePressOut: function\n */\n\n /**\n * Invoked when the item is \"selected\" - meaning the interaction ended by\n * letting up while the item was either in the state\n * `RESPONDER_ACTIVE_PRESS_IN` or `RESPONDER_INACTIVE_PRESS_IN`.\n *\n * @abstract\n * touchableHandlePress: function\n */\n\n /**\n * Invoked when the item is long pressed - meaning the interaction ended by\n * letting up while the item was in `RESPONDER_ACTIVE_LONG_PRESS_IN`. If\n * `touchableHandleLongPress` is *not* provided, `touchableHandlePress` will\n * be called as it normally is. If `touchableHandleLongPress` is provided, by\n * default any `touchableHandlePress` callback will not be invoked. To\n * override this default behavior, override `touchableLongPressCancelsPress`\n * to return false. As a result, `touchableHandlePress` will be called when\n * lifting up, even if `touchableHandleLongPress` has also been called.\n *\n * @abstract\n * touchableHandleLongPress: function\n */\n\n /**\n * Returns the number of millis to wait before triggering a highlight.\n *\n * @abstract\n * touchableGetHighlightDelayMS: function\n */\n\n /**\n * Returns the amount to extend the `HitRect` into the `PressRect`. Positive\n * numbers mean the size expands outwards.\n *\n * @abstract\n * touchableGetPressRectOffset: function\n */\n\n // ==== Internal Logic ====\n\n /**\n * Measures the `HitRect` node on activation. The Bounding rectangle is with\n * respect to viewport - not page, so adding the `pageXOffset/pageYOffset`\n * should result in points that are in the same coordinate system as an\n * event's `globalX/globalY` data values.\n *\n * - Consider caching this for the lifetime of the component, or possibly\n * being able to share this cache between any `ScrollMap` view.\n *\n * @sideeffects\n * @private\n */\n _remeasureMetricsOnActivation: function() {\n const tag = this.state.touchable.responderID;\n if (tag == null) {\n return;\n }\n\n UIManager.measure(tag, this._handleQueryLayout);\n },\n\n _handleQueryLayout: function(l, t, w, h, globalX, globalY) {\n //don't do anything UIManager failed to measure node\n if (!l && !t && !w && !h && !globalX && !globalY) {\n return;\n }\n this.state.touchable.positionOnActivate &&\n Position.release(this.state.touchable.positionOnActivate);\n this.state.touchable.dimensionsOnActivate &&\n BoundingDimensions.release(this.state.touchable.dimensionsOnActivate);\n this.state.touchable.positionOnActivate = Position.getPooled(\n globalX,\n globalY,\n );\n this.state.touchable.dimensionsOnActivate = BoundingDimensions.getPooled(\n w,\n h,\n );\n },\n\n _handleDelay: function(e) {\n this.touchableDelayTimeout = null;\n this._receiveSignal(Signals.DELAY, e);\n },\n\n _handleLongDelay: function(e) {\n this.longPressDelayTimeout = null;\n const curState = this.state.touchable.touchState;\n if (\n curState !== States.RESPONDER_ACTIVE_PRESS_IN &&\n curState !== States.RESPONDER_ACTIVE_LONG_PRESS_IN\n ) {\n console.error(\n 'Attempted to transition from state `' +\n curState +\n '` to `' +\n States.RESPONDER_ACTIVE_LONG_PRESS_IN +\n '`, which is not supported. This is ' +\n 'most likely due to `Touchable.longPressDelayTimeout` not being cancelled.',\n );\n } else {\n this._receiveSignal(Signals.LONG_PRESS_DETECTED, e);\n }\n },\n\n /**\n * Receives a state machine signal, performs side effects of the transition\n * and stores the new state. Validates the transition as well.\n *\n * @param {Signals} signal State machine signal.\n * @throws Error if invalid state transition or unrecognized signal.\n * @sideeffects\n */\n _receiveSignal: function(signal, e) {\n const responderID = this.state.touchable.responderID;\n const curState = this.state.touchable.touchState;\n const nextState = Transitions[curState] && Transitions[curState][signal];\n if (!responderID && signal === Signals.RESPONDER_RELEASE) {\n return;\n }\n if (!nextState) {\n throw new Error(\n 'Unrecognized signal `' +\n signal +\n '` or state `' +\n curState +\n '` for Touchable responder `' +\n responderID +\n '`',\n );\n }\n if (nextState === States.ERROR) {\n throw new Error(\n 'Touchable cannot transition from `' +\n curState +\n '` to `' +\n signal +\n '` for responder `' +\n responderID +\n '`',\n );\n }\n if (curState !== nextState) {\n this._performSideEffectsForTransition(curState, nextState, signal, e);\n this.state.touchable.touchState = nextState;\n }\n },\n\n _cancelLongPressDelayTimeout: function() {\n this.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\n this.longPressDelayTimeout = null;\n },\n\n _isHighlight: function(state) {\n return (\n state === States.RESPONDER_ACTIVE_PRESS_IN ||\n state === States.RESPONDER_ACTIVE_LONG_PRESS_IN\n );\n },\n\n _savePressInLocation: function(e) {\n const touch = TouchEventUtils.extractSingleTouch(e.nativeEvent);\n const pageX = touch && touch.pageX;\n const pageY = touch && touch.pageY;\n const locationX = touch && touch.locationX;\n const locationY = touch && touch.locationY;\n this.pressInLocation = {pageX, pageY, locationX, locationY};\n },\n\n _getDistanceBetweenPoints: function(aX, aY, bX, bY) {\n const deltaX = aX - bX;\n const deltaY = aY - bY;\n return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n },\n\n /**\n * Will perform a transition between touchable states, and identify any\n * highlighting or unhighlighting that must be performed for this particular\n * transition.\n *\n * @param {States} curState Current Touchable state.\n * @param {States} nextState Next Touchable state.\n * @param {Signal} signal Signal that triggered the transition.\n * @param {Event} e Native event.\n * @sideeffects\n */\n _performSideEffectsForTransition: function(curState, nextState, signal, e) {\n const curIsHighlight = this._isHighlight(curState);\n const newIsHighlight = this._isHighlight(nextState);\n\n const isFinalSignal =\n signal === Signals.RESPONDER_TERMINATED ||\n signal === Signals.RESPONDER_RELEASE;\n\n if (isFinalSignal) {\n this._cancelLongPressDelayTimeout();\n }\n\n if (!IsActive[curState] && IsActive[nextState]) {\n this._remeasureMetricsOnActivation();\n }\n\n if (IsPressingIn[curState] && signal === Signals.LONG_PRESS_DETECTED) {\n this.touchableHandleLongPress && this.touchableHandleLongPress(e);\n }\n\n if (newIsHighlight && !curIsHighlight) {\n this._startHighlight(e);\n } else if (!newIsHighlight && curIsHighlight) {\n this._endHighlight(e);\n }\n\n if (IsPressingIn[curState] && signal === Signals.RESPONDER_RELEASE) {\n const hasLongPressHandler = !!this.props.onLongPress;\n const pressIsLongButStillCallOnPress =\n IsLongPressingIn[curState] && // We *are* long pressing.. // But either has no long handler\n (!hasLongPressHandler || !this.touchableLongPressCancelsPress()); // or we're told to ignore it.\n\n const shouldInvokePress =\n !IsLongPressingIn[curState] || pressIsLongButStillCallOnPress;\n if (shouldInvokePress && this.touchableHandlePress) {\n if (!newIsHighlight && !curIsHighlight) {\n // we never highlighted because of delay, but we should highlight now\n this._startHighlight(e);\n this._endHighlight(e);\n }\n if (Platform.OS === 'android') {\n this._playTouchSound();\n }\n this.touchableHandlePress(e);\n }\n }\n\n this.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\n this.touchableDelayTimeout = null;\n },\n\n _playTouchSound: function() {\n UIManager.playTouchSound();\n },\n\n _startHighlight: function(e) {\n this._savePressInLocation(e);\n this.touchableHandleActivePressIn && this.touchableHandleActivePressIn(e);\n },\n\n _endHighlight: function(e) {\n if (this.touchableHandleActivePressOut) {\n if (\n this.touchableGetPressOutDelayMS &&\n this.touchableGetPressOutDelayMS()\n ) {\n this.pressOutDelayTimeout = setTimeout(() => {\n this.touchableHandleActivePressOut(e);\n }, this.touchableGetPressOutDelayMS());\n } else {\n this.touchableHandleActivePressOut(e);\n }\n }\n },\n};\n\nconst Touchable = {\n Mixin: TouchableMixin,\n TOUCH_TARGET_DEBUG: false, // Highlights all touchable targets. Toggle with Inspector.\n /**\n * Renders a debugging overlay to visualize touch target with hitSlop (might not work on Android).\n */\n renderDebugView: ({color, hitSlop}) => {\n if (!Touchable.TOUCH_TARGET_DEBUG) {\n return null;\n }\n if (!__DEV__) {\n throw Error(\n 'Touchable.TOUCH_TARGET_DEBUG should not be enabled in prod!',\n );\n }\n const debugHitSlopStyle = {};\n hitSlop = hitSlop || {top: 0, bottom: 0, left: 0, right: 0};\n for (const key in hitSlop) {\n debugHitSlopStyle[key] = -hitSlop[key];\n }\n const hexColor =\n '#' + ('00000000' + normalizeColor(color).toString(16)).substr(-8);\n return (\n \n );\n },\n};\n\nmodule.exports = Touchable;\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\nconst PooledClass = require('PooledClass');\n\nconst twoArgumentPooler = PooledClass.twoArgumentPooler;\n\n/**\n * PooledClass representing the bounding rectangle of a region.\n *\n * @param {number} width Width of bounding rectangle.\n * @param {number} height Height of bounding rectangle.\n * @constructor BoundingDimensions\n */\nfunction BoundingDimensions(width, height) {\n this.width = width;\n this.height = height;\n}\n\nBoundingDimensions.prototype.destructor = function() {\n this.width = null;\n this.height = null;\n};\n\n/**\n * @param {HTMLElement} element Element to return `BoundingDimensions` for.\n * @return {BoundingDimensions} Bounding dimensions of `element`.\n */\nBoundingDimensions.getPooledFromElement = function(element) {\n return BoundingDimensions.getPooled(\n element.offsetWidth,\n element.offsetHeight,\n );\n};\n\nPooledClass.addPoolingTo(BoundingDimensions, twoArgumentPooler);\n\nmodule.exports = BoundingDimensions;\n","/**\n * Copyright (c) 2013-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst invariant = require('fbjs/lib/invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nconst oneArgumentPooler = function(copyFieldsFrom) {\n const Klass = this;\n if (Klass.instancePool.length) {\n const instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nconst twoArgumentPooler = function(a1, a2) {\n const Klass = this;\n if (Klass.instancePool.length) {\n const instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nconst threeArgumentPooler = function(a1, a2, a3) {\n const Klass = this;\n if (Klass.instancePool.length) {\n const instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nconst fourArgumentPooler = function(a1, a2, a3, a4) {\n const Klass = this;\n if (Klass.instancePool.length) {\n const instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nconst standardReleaser = function(instance) {\n const Klass = this;\n invariant(\n instance instanceof Klass,\n 'Trying to release an instance into a pool of a different type.',\n );\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nconst DEFAULT_POOL_SIZE = 10;\nconst DEFAULT_POOLER = oneArgumentPooler;\n\ntype Pooler = any;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nconst addPoolingTo = function(\n CopyConstructor: Class,\n pooler: Pooler,\n): Class & {\n getPooled(\n ...args: $ReadOnlyArray\n ): /* arguments of the constructor */ T,\n release(instance: mixed): void,\n} {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n const NewKlass = (CopyConstructor: any);\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nconst PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: (oneArgumentPooler: Pooler),\n twoArgumentPooler: (twoArgumentPooler: Pooler),\n threeArgumentPooler: (threeArgumentPooler: Pooler),\n fourArgumentPooler: (fourArgumentPooler: Pooler),\n};\n\nmodule.exports = PooledClass;\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\nconst PooledClass = require('PooledClass');\n\nconst twoArgumentPooler = PooledClass.twoArgumentPooler;\n\n/**\n * Position does not expose methods for construction via an `HTMLDOMElement`,\n * because it isn't meaningful to construct such a thing without first defining\n * a frame of reference.\n *\n * @param {number} windowStartKey Key that window starts at.\n * @param {number} windowEndKey Key that window ends at.\n */\nfunction Position(left, top) {\n this.left = left;\n this.top = top;\n}\n\nPosition.prototype.destructor = function() {\n this.left = null;\n this.top = null;\n};\n\nPooledClass.addPoolingTo(Position, twoArgumentPooler);\n\nmodule.exports = Position;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst Platform = require('Platform');\nconst TVNavigationEventEmitter = require('NativeModules')\n .TVNavigationEventEmitter;\nconst NativeEventEmitter = require('NativeEventEmitter');\n\nfunction TVEventHandler() {\n this.__nativeTVNavigationEventListener = null;\n this.__nativeTVNavigationEventEmitter = null;\n}\n\nTVEventHandler.prototype.enable = function(\n component: ?any,\n callback: Function,\n) {\n if (Platform.OS === 'ios' && !TVNavigationEventEmitter) {\n return;\n }\n\n this.__nativeTVNavigationEventEmitter = new NativeEventEmitter(\n TVNavigationEventEmitter,\n );\n this.__nativeTVNavigationEventListener = this.__nativeTVNavigationEventEmitter.addListener(\n 'onHWKeyEvent',\n data => {\n if (callback) {\n callback(component, data);\n }\n },\n );\n};\n\nTVEventHandler.prototype.disable = function() {\n if (this.__nativeTVNavigationEventListener) {\n this.__nativeTVNavigationEventListener.remove();\n delete this.__nativeTVNavigationEventListener;\n }\n if (this.__nativeTVNavigationEventEmitter) {\n delete this.__nativeTVNavigationEventEmitter;\n }\n};\n\nmodule.exports = TVEventHandler;\n","\"use strict\";\n\n/**\n * Copyright (c) 2013-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 TouchEventUtils = {\n /**\n * Utility function for common case of extracting out the primary touch from a\n * touch event.\n * - `touchEnd` events usually do not have the `touches` property.\n * http://stackoverflow.com/questions/3666929/\n * mobile-sarai-touchend-event-not-firing-when-last-touch-is-removed\n *\n * @param {Event} nativeEvent Native event that may or may not be a touch.\n * @return {TouchesObject?} an object with pageX and pageY or null.\n */\n extractSingleTouch: function extractSingleTouch(nativeEvent) {\n var touches = nativeEvent.touches;\n var changedTouches = nativeEvent.changedTouches;\n var hasTouches = touches && touches.length > 0;\n var hasChangedTouches = changedTouches && changedTouches.length > 0;\n return !hasTouches && hasChangedTouches ? changedTouches[0] : hasTouches ? touches[0] : nativeEvent;\n }\n};\nmodule.exports = TouchEventUtils;","\"use strict\";\n\n/**\n * Copyright (c) 2013-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 * \n */\nvar nullthrows = function nullthrows(x) {\n if (x != null) {\n return x;\n }\n\n throw new Error(\"Got unexpected null or undefined\");\n};\n\nmodule.exports = nullthrows;","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\nconst Platform = require('Platform');\nconst React = require('React');\nconst PropTypes = require('prop-types');\nconst ReactNative = require('ReactNative');\nconst Touchable = require('Touchable');\nconst TouchableWithoutFeedback = require('TouchableWithoutFeedback');\nconst UIManager = require('UIManager');\nconst View = require('View');\n\nconst createReactClass = require('create-react-class');\nconst ensurePositiveDelayProps = require('ensurePositiveDelayProps');\nconst processColor = require('processColor');\n\nconst rippleBackgroundPropType = PropTypes.shape({\n type: PropTypes.oneOf(['RippleAndroid']),\n color: PropTypes.number,\n borderless: PropTypes.bool,\n});\n\nconst themeAttributeBackgroundPropType = PropTypes.shape({\n type: PropTypes.oneOf(['ThemeAttrAndroid']),\n attribute: PropTypes.string.isRequired,\n});\n\nconst backgroundPropType = PropTypes.oneOfType([\n rippleBackgroundPropType,\n themeAttributeBackgroundPropType,\n]);\n\ntype Event = Object;\n\nconst PRESS_RETENTION_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\n\n/**\n * A wrapper for making views respond properly to touches (Android only).\n * On Android this component uses native state drawable to display touch\n * feedback.\n *\n * At the moment it only supports having a single View instance as a child\n * node, as it's implemented by replacing that View with another instance of\n * RCTView node with some additional properties set.\n *\n * Background drawable of native feedback touchable can be customized with\n * `background` property.\n *\n * Example:\n *\n * ```\n * renderButton: function() {\n * return (\n * \n * \n * Button\n * \n * \n * );\n * },\n * ```\n */\n\nconst TouchableNativeFeedback = createReactClass({\n displayName: 'TouchableNativeFeedback',\n propTypes: {\n ...TouchableWithoutFeedback.propTypes,\n\n /**\n * Determines the type of background drawable that's going to be used to\n * display feedback. It takes an object with `type` property and extra data\n * depending on the `type`. It's recommended to use one of the static\n * methods to generate that dictionary.\n */\n background: backgroundPropType,\n\n /**\n * TV preferred focus (see documentation for the View component).\n */\n hasTVPreferredFocus: PropTypes.bool,\n\n /**\n * Set to true to add the ripple effect to the foreground of the view, instead of the\n * background. This is useful if one of your child views has a background of its own, or you're\n * e.g. displaying images, and you don't want the ripple to be covered by them.\n *\n * Check TouchableNativeFeedback.canUseNativeForeground() first, as this is only available on\n * Android 6.0 and above. If you try to use this on older versions you will get a warning and\n * fallback to background.\n */\n useForeground: PropTypes.bool,\n },\n\n statics: {\n /**\n * Creates an object that represents android theme's default background for\n * selectable elements (?android:attr/selectableItemBackground).\n */\n SelectableBackground: function() {\n return {type: 'ThemeAttrAndroid', attribute: 'selectableItemBackground'};\n },\n /**\n * Creates an object that represent android theme's default background for borderless\n * selectable elements (?android:attr/selectableItemBackgroundBorderless).\n * Available on android API level 21+.\n */\n SelectableBackgroundBorderless: function() {\n return {\n type: 'ThemeAttrAndroid',\n attribute: 'selectableItemBackgroundBorderless',\n };\n },\n /**\n * Creates an object that represents ripple drawable with specified color (as a\n * string). If property `borderless` evaluates to true the ripple will\n * render outside of the view bounds (see native actionbar buttons as an\n * example of that behavior). This background type is available on Android\n * API level 21+.\n *\n * @param color The ripple color\n * @param borderless If the ripple can render outside it's bounds\n */\n Ripple: function(color: string, borderless: boolean) {\n return {\n type: 'RippleAndroid',\n color: processColor(color),\n borderless: borderless,\n };\n },\n\n canUseNativeForeground: function() {\n return Platform.OS === 'android' && Platform.Version >= 23;\n },\n },\n\n mixins: [Touchable.Mixin],\n\n getDefaultProps: function() {\n return {\n background: this.SelectableBackground(),\n };\n },\n\n getInitialState: function() {\n return this.touchableGetInitialState();\n },\n\n componentDidMount: function() {\n ensurePositiveDelayProps(this.props);\n },\n\n UNSAFE_componentWillReceiveProps: function(nextProps) {\n ensurePositiveDelayProps(nextProps);\n },\n\n /**\n * `Touchable.Mixin` self callbacks. The mixin will invoke these if they are\n * defined on your component.\n */\n touchableHandleActivePressIn: function(e: Event) {\n this.props.onPressIn && this.props.onPressIn(e);\n this._dispatchPressedStateChange(true);\n if (this.pressInLocation) {\n this._dispatchHotspotUpdate(\n this.pressInLocation.locationX,\n this.pressInLocation.locationY,\n );\n }\n },\n\n touchableHandleActivePressOut: function(e: Event) {\n this.props.onPressOut && this.props.onPressOut(e);\n this._dispatchPressedStateChange(false);\n },\n\n touchableHandlePress: function(e: Event) {\n this.props.onPress && this.props.onPress(e);\n },\n\n touchableHandleLongPress: function(e: Event) {\n this.props.onLongPress && this.props.onLongPress(e);\n },\n\n touchableGetPressRectOffset: function() {\n // Always make sure to predeclare a constant!\n return this.props.pressRetentionOffset || PRESS_RETENTION_OFFSET;\n },\n\n touchableGetHitSlop: function() {\n return this.props.hitSlop;\n },\n\n touchableGetHighlightDelayMS: function() {\n return this.props.delayPressIn;\n },\n\n touchableGetLongPressDelayMS: function() {\n return this.props.delayLongPress;\n },\n\n touchableGetPressOutDelayMS: function() {\n return this.props.delayPressOut;\n },\n\n _handleResponderMove: function(e) {\n this.touchableHandleResponderMove(e);\n this._dispatchHotspotUpdate(\n e.nativeEvent.locationX,\n e.nativeEvent.locationY,\n );\n },\n\n _dispatchHotspotUpdate: function(destX, destY) {\n UIManager.dispatchViewManagerCommand(\n ReactNative.findNodeHandle(this),\n UIManager.RCTView.Commands.hotspotUpdate,\n [destX || 0, destY || 0],\n );\n },\n\n _dispatchPressedStateChange: function(pressed) {\n UIManager.dispatchViewManagerCommand(\n ReactNative.findNodeHandle(this),\n UIManager.RCTView.Commands.setPressed,\n [pressed],\n );\n },\n\n render: function() {\n const child = React.Children.only(this.props.children);\n let children = child.props.children;\n if (Touchable.TOUCH_TARGET_DEBUG && child.type === View) {\n if (!Array.isArray(children)) {\n children = [children];\n }\n children.push(\n Touchable.renderDebugView({\n color: 'brown',\n hitSlop: this.props.hitSlop,\n }),\n );\n }\n if (\n this.props.useForeground &&\n !TouchableNativeFeedback.canUseNativeForeground()\n ) {\n console.warn(\n 'Requested foreground ripple, but it is not available on this version of Android. ' +\n 'Consider calling TouchableNativeFeedback.canUseNativeForeground() and using a different ' +\n 'Touchable if the result is false.',\n );\n }\n const drawableProp =\n this.props.useForeground &&\n TouchableNativeFeedback.canUseNativeForeground()\n ? 'nativeForegroundAndroid'\n : 'nativeBackgroundAndroid';\n const childProps = {\n ...child.props,\n [drawableProp]: this.props.background,\n accessible: this.props.accessible !== false,\n accessibilityLabel: this.props.accessibilityLabel,\n accessibilityRole: this.props.accessibilityRole,\n accessibilityStates: this.props.accessibilityStates,\n children,\n testID: this.props.testID,\n onLayout: this.props.onLayout,\n hitSlop: this.props.hitSlop,\n isTVSelectable: true,\n hasTVPreferredFocus: this.props.hasTVPreferredFocus,\n onStartShouldSetResponder: this.touchableHandleStartShouldSetResponder,\n onResponderTerminationRequest: this\n .touchableHandleResponderTerminationRequest,\n onResponderGrant: this.touchableHandleResponderGrant,\n onResponderMove: this._handleResponderMove,\n onResponderRelease: this.touchableHandleResponderRelease,\n onResponderTerminate: this.touchableHandleResponderTerminate,\n };\n\n // We need to clone the actual element so that the ripple background drawable\n // can be applied directly to the background of this element rather than to\n // a wrapper view as done in other Touchable*\n return React.cloneElement(child, childProps);\n },\n});\n\nmodule.exports = TouchableNativeFeedback;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst EdgeInsetsPropType = require('EdgeInsetsPropType');\nconst React = require('React');\nconst PropTypes = require('prop-types');\nconst TimerMixin = require('react-timer-mixin');\nconst Touchable = require('Touchable');\nconst View = require('View');\n\nconst createReactClass = require('create-react-class');\nconst ensurePositiveDelayProps = require('ensurePositiveDelayProps');\nconst warning = require('fbjs/lib/warning');\n\nconst {\n AccessibilityComponentTypes,\n AccessibilityRoles,\n AccessibilityStates,\n AccessibilityTraits,\n} = require('ViewAccessibility');\n\nimport type {PressEvent} from 'CoreEventTypes';\nimport type {EdgeInsetsProp} from 'EdgeInsetsPropType';\nimport type {\n AccessibilityComponentType,\n AccessibilityRole,\n AccessibilityStates as AccessibilityStatesFlow,\n AccessibilityTraits as AccessibilityTraitsFlow,\n} from 'ViewAccessibility';\n\nconst PRESS_RETENTION_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\n\nexport type Props = $ReadOnly<{|\n accessible?: ?boolean,\n accessibilityComponentType?: ?AccessibilityComponentType,\n accessibilityLabel?:\n | null\n | React$PropType$Primitive\n | string\n | Array\n | any,\n accessibilityHint?: string,\n accessibilityRole?: ?AccessibilityRole,\n accessibilityStates?: ?AccessibilityStatesFlow,\n accessibilityTraits?: ?AccessibilityTraitsFlow,\n children?: ?React.Node,\n delayLongPress?: ?number,\n delayPressIn?: ?number,\n delayPressOut?: ?number,\n disabled?: ?boolean,\n hitSlop?: ?EdgeInsetsProp,\n nativeID?: ?string,\n onLayout?: ?Function,\n onLongPress?: ?Function,\n onPress?: ?Function,\n onPressIn?: ?Function,\n onPressOut?: ?Function,\n pressRetentionOffset?: ?EdgeInsetsProp,\n rejectResponderTermination?: ?boolean,\n testID?: ?string,\n|}>;\n\n/**\n * Do not use unless you have a very good reason. All elements that\n * respond to press should have a visual feedback when touched.\n *\n * TouchableWithoutFeedback supports only one child.\n * If you wish to have several child components, wrap them in a View.\n */\nconst TouchableWithoutFeedback = ((createReactClass({\n displayName: 'TouchableWithoutFeedback',\n mixins: [TimerMixin, Touchable.Mixin],\n\n propTypes: {\n accessible: PropTypes.bool,\n accessibilityLabel: PropTypes.node,\n accessibilityHint: PropTypes.string,\n accessibilityComponentType: PropTypes.oneOf(AccessibilityComponentTypes),\n accessibilityRole: PropTypes.oneOf(AccessibilityRoles),\n accessibilityStates: PropTypes.arrayOf(\n PropTypes.oneOf(AccessibilityStates),\n ),\n accessibilityTraits: PropTypes.oneOfType([\n PropTypes.oneOf(AccessibilityTraits),\n PropTypes.arrayOf(PropTypes.oneOf(AccessibilityTraits)),\n ]),\n /**\n * When `accessible` is true (which is the default) this may be called when\n * the OS-specific concept of \"focus\" occurs. Some platforms may not have\n * the concept of focus.\n */\n onFocus: PropTypes.func,\n /**\n * When `accessible` is true (which is the default) this may be called when\n * the OS-specific concept of \"blur\" occurs, meaning the element lost focus.\n * Some platforms may not have the concept of blur.\n */\n onBlur: PropTypes.func,\n /**\n * If true, disable all interactions for this component.\n */\n disabled: PropTypes.bool,\n /**\n * Called when the touch is released, but not if cancelled (e.g. by a scroll\n * that steals the responder lock).\n */\n onPress: PropTypes.func,\n /**\n * Called as soon as the touchable element is pressed and invoked even before onPress.\n * This can be useful when making network requests.\n */\n onPressIn: PropTypes.func,\n /**\n * Called as soon as the touch is released even before onPress.\n */\n onPressOut: PropTypes.func,\n /**\n * Invoked on mount and layout changes with\n *\n * `{nativeEvent: {layout: {x, y, width, height}}}`\n */\n onLayout: PropTypes.func,\n\n onLongPress: PropTypes.func,\n\n nativeID: PropTypes.string,\n testID: PropTypes.string,\n\n /**\n * Delay in ms, from the start of the touch, before onPressIn is called.\n */\n delayPressIn: PropTypes.number,\n /**\n * Delay in ms, from the release of the touch, before onPressOut is called.\n */\n delayPressOut: PropTypes.number,\n /**\n * Delay in ms, from onPressIn, before onLongPress is called.\n */\n delayLongPress: PropTypes.number,\n /**\n * When the scroll view is disabled, this defines how far your touch may\n * move off of the button, before deactivating the button. Once deactivated,\n * try moving it back and you'll see that the button is once again\n * reactivated! Move it back and forth several times while the scroll view\n * is disabled. Ensure you pass in a constant to reduce memory allocations.\n */\n pressRetentionOffset: EdgeInsetsPropType,\n /**\n * This defines how far your touch can start away from the button. This is\n * added to `pressRetentionOffset` when moving off of the button.\n * ** NOTE **\n * The touch area never extends past the parent view bounds and the Z-index\n * of sibling views always takes precedence if a touch hits two overlapping\n * views.\n */\n hitSlop: EdgeInsetsPropType,\n },\n\n getInitialState: function() {\n return this.touchableGetInitialState();\n },\n\n componentDidMount: function() {\n ensurePositiveDelayProps(this.props);\n },\n\n UNSAFE_componentWillReceiveProps: function(nextProps: Object) {\n ensurePositiveDelayProps(nextProps);\n },\n\n /**\n * `Touchable.Mixin` self callbacks. The mixin will invoke these if they are\n * defined on your component.\n */\n touchableHandlePress: function(e: PressEvent) {\n this.props.onPress && this.props.onPress(e);\n },\n\n touchableHandleActivePressIn: function(e: PressEvent) {\n this.props.onPressIn && this.props.onPressIn(e);\n },\n\n touchableHandleActivePressOut: function(e: PressEvent) {\n this.props.onPressOut && this.props.onPressOut(e);\n },\n\n touchableHandleLongPress: function(e: PressEvent) {\n this.props.onLongPress && this.props.onLongPress(e);\n },\n\n touchableGetPressRectOffset: function(): typeof PRESS_RETENTION_OFFSET {\n // $FlowFixMe Invalid prop usage\n return this.props.pressRetentionOffset || PRESS_RETENTION_OFFSET;\n },\n\n touchableGetHitSlop: function(): ?Object {\n return this.props.hitSlop;\n },\n\n touchableGetHighlightDelayMS: function(): number {\n return this.props.delayPressIn || 0;\n },\n\n touchableGetLongPressDelayMS: function(): number {\n return this.props.delayLongPress === 0\n ? 0\n : this.props.delayLongPress || 500;\n },\n\n touchableGetPressOutDelayMS: function(): number {\n return this.props.delayPressOut || 0;\n },\n\n render: function(): React.Element {\n // Note(avik): remove dynamic typecast once Flow has been upgraded\n // $FlowFixMe(>=0.41.0)\n const child = React.Children.only(this.props.children);\n let children = child.props.children;\n if (Touchable.TOUCH_TARGET_DEBUG && child.type === View) {\n children = React.Children.toArray(children);\n children.push(\n Touchable.renderDebugView({color: 'red', hitSlop: this.props.hitSlop}),\n );\n }\n return (React: any).cloneElement(child, {\n accessible: this.props.accessible !== false,\n accessibilityLabel: this.props.accessibilityLabel,\n accessibilityHint: this.props.accessibilityHint,\n accessibilityComponentType: this.props.accessibilityComponentType,\n accessibilityRole: this.props.accessibilityRole,\n accessibilityStates: this.props.accessibilityStates,\n accessibilityTraits: this.props.accessibilityTraits,\n nativeID: this.props.nativeID,\n testID: this.props.testID,\n onLayout: this.props.onLayout,\n hitSlop: this.props.hitSlop,\n onStartShouldSetResponder: this.touchableHandleStartShouldSetResponder,\n onResponderTerminationRequest: this\n .touchableHandleResponderTerminationRequest,\n onResponderGrant: this.touchableHandleResponderGrant,\n onResponderMove: this.touchableHandleResponderMove,\n onResponderRelease: this.touchableHandleResponderRelease,\n onResponderTerminate: this.touchableHandleResponderTerminate,\n children,\n });\n },\n}): any): React.ComponentType);\n\nmodule.exports = TouchableWithoutFeedback;\n","/*\n * Copyright (c) Facebook, Inc. and its affiliates.\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 */\n'use strict';\n\nvar GLOBAL = typeof window === 'undefined' ? global : window;\n\nvar setter = function(_setter, _clearer, array) {\n return function(callback, delta) {\n var id = _setter(function() {\n _clearer.call(this, id);\n callback.apply(this, arguments);\n }.bind(this), delta);\n\n if (!this[array]) {\n this[array] = [id];\n } else {\n this[array].push(id);\n }\n return id;\n };\n};\n\nvar clearer = function(_clearer, array) {\n return function(id) {\n if (this[array]) {\n var index = this[array].indexOf(id);\n if (index !== -1) {\n this[array].splice(index, 1);\n }\n }\n _clearer(id);\n };\n};\n\nvar _timeouts = 'TimerMixin_timeouts';\nvar _clearTimeout = clearer(GLOBAL.clearTimeout, _timeouts);\nvar _setTimeout = setter(GLOBAL.setTimeout, _clearTimeout, _timeouts);\n\nvar _intervals = 'TimerMixin_intervals';\nvar _clearInterval = clearer(GLOBAL.clearInterval, _intervals);\nvar _setInterval = setter(GLOBAL.setInterval, function() {/* noop */}, _intervals);\n\nvar _immediates = 'TimerMixin_immediates';\nvar _clearImmediate = clearer(GLOBAL.clearImmediate, _immediates);\nvar _setImmediate = setter(GLOBAL.setImmediate, _clearImmediate, _immediates);\n\nvar _rafs = 'TimerMixin_rafs';\nvar _cancelAnimationFrame = clearer(GLOBAL.cancelAnimationFrame, _rafs);\nvar _requestAnimationFrame = setter(GLOBAL.requestAnimationFrame, _cancelAnimationFrame, _rafs);\n\nvar TimerMixin = {\n componentWillUnmount: function() {\n this[_timeouts] && this[_timeouts].forEach(function(id) {\n GLOBAL.clearTimeout(id);\n });\n this[_timeouts] = null;\n this[_intervals] && this[_intervals].forEach(function(id) {\n GLOBAL.clearInterval(id);\n });\n this[_intervals] = null;\n this[_immediates] && this[_immediates].forEach(function(id) {\n GLOBAL.clearImmediate(id);\n });\n this[_immediates] = null;\n this[_rafs] && this[_rafs].forEach(function(id) {\n GLOBAL.cancelAnimationFrame(id);\n });\n this[_rafs] = null;\n },\n\n setTimeout: _setTimeout,\n clearTimeout: _clearTimeout,\n\n setInterval: _setInterval,\n clearInterval: _clearInterval,\n\n setImmediate: _setImmediate,\n clearImmediate: _clearImmediate,\n\n requestAnimationFrame: _requestAnimationFrame,\n cancelAnimationFrame: _cancelAnimationFrame,\n};\n\nmodule.exports = TimerMixin;\n","/**\n * Copyright (c) 2013-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 */\n\n'use strict';\n\nvar React = require('react');\nvar factory = require('./factory');\n\nif (typeof React === 'undefined') {\n throw Error(\n 'create-react-class could not find the React object. If you are using script tags, ' +\n 'make sure that React is being loaded before create-react-class.'\n );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n React.Component,\n React.isValidElement,\n ReactNoopUpdateQueue\n);\n","/**\n * Copyright (c) 2013-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 */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar _invariant = require('fbjs/lib/invariant');\n\nif (process.env.NODE_ENV !== 'production') {\n var warning = require('fbjs/lib/warning');\n}\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n} else {\n ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n /**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n var injectedMixins = [];\n\n /**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return
Hello World
;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\n var ReactClassInterface = {\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return
Hello, {name}!
;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillMount`.\n *\n * @optional\n */\n UNSAFE_componentWillMount: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillReceiveProps`.\n *\n * @optional\n */\n UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillUpdate`.\n *\n * @optional\n */\n UNSAFE_componentWillUpdate: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n };\n\n /**\n * Similar to ReactClassInterface but for static methods.\n */\n var ReactClassStaticInterface = {\n /**\n * This method is invoked after a component is instantiated and when it\n * receives new props. Return an object to update state in response to\n * prop changes. Return null to indicate no change to state.\n *\n * If an object is returned, its keys will be merged into the existing state.\n *\n * @return {object || null}\n * @optional\n */\n getDerivedStateFromProps: 'DEFINE_MANY_MERGED'\n };\n\n /**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\n var RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function() {}\n };\n\n function validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an _invariant so components\n // don't show up in prod but only in __DEV__\n if (process.env.NODE_ENV !== 'production') {\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n }\n }\n\n function validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name)\n ? ReactClassInterface[name]\n : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n _invariant(\n specPolicy === 'OVERRIDE_BASE',\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n _invariant(\n specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n }\n\n /**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\n function mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n isMixinValid,\n \"%s: You're attempting to include a mixin that is either null \" +\n 'or not an object. Check the mixins included by the component, ' +\n 'as well as any mixins they include themselves. ' +\n 'Expected object but got %s.',\n Constructor.displayName || 'ReactClass',\n spec === null ? null : typeofSpec\n );\n }\n }\n\n return;\n }\n\n _invariant(\n typeof spec !== 'function',\n \"ReactClass: You're attempting to \" +\n 'use a component class or function as a mixin. Instead, just use a ' +\n 'regular object.'\n );\n _invariant(\n !isValidElement(spec),\n \"ReactClass: You're attempting to \" +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n _invariant(\n isReactClassMethod &&\n (specPolicy === 'DEFINE_MANY_MERGED' ||\n specPolicy === 'DEFINE_MANY'),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n }\n\n function mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n _invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isAlreadyDefined = name in Constructor;\n if (isAlreadyDefined) {\n var specPolicy = ReactClassStaticInterface.hasOwnProperty(name)\n ? ReactClassStaticInterface[name]\n : null;\n\n _invariant(\n specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n\n Constructor[name] = createMergedResultFunction(Constructor[name], property);\n\n return;\n }\n\n Constructor[name] = property;\n }\n }\n\n /**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\n function mergeIntoWithNoDuplicateKeys(one, two) {\n _invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n _invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n }\n\n /**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n }\n\n /**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n }\n\n /**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\n function bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function(newThis) {\n for (\n var _len = arguments.length,\n args = Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n }\n } else if (!args.length) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n }\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n }\n\n /**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\n function bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n }\n\n var IsMountedPreMixin = {\n componentDidMount: function() {\n this.__isMounted = true;\n }\n };\n\n var IsMountedPostMixin = {\n componentWillUnmount: function() {\n this.__isMounted = false;\n }\n };\n\n /**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\n var ReactClassMixin = {\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n this.updater.enqueueReplaceState(this, newState, callback);\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this.__didWarnIsMounted,\n '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n 'subscriptions and pending requests in componentWillUnmount to ' +\n 'prevent memory leaks.',\n (this.constructor && this.constructor.displayName) ||\n this.name ||\n 'Component'\n );\n this.__didWarnIsMounted = true;\n }\n return !!this.__isMounted;\n }\n };\n\n var ReactClassComponent = function() {};\n _assign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n );\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n function createClass(spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function(props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: https://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (\n initialState === undefined &&\n this.getInitialState._isMockFunction\n ) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n _invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n mixSpecIntoComponent(Constructor, spec);\n mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n _invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.componentWillRecieveProps,\n '%s has a method called ' +\n 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.UNSAFE_componentWillRecieveProps,\n '%s has a method called UNSAFE_componentWillRecieveProps(). ' +\n 'Did you mean UNSAFE_componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n }\n\n return createClass;\n}\n\nmodule.exports = factory;\n","/**\n * Copyright (c) 2013-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 */\n\n'use strict';\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;","/**\n * Copyright (c) 2013-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 */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst invariant = require('fbjs/lib/invariant');\n\nconst ensurePositiveDelayProps = function(props: any) {\n invariant(\n !(\n props.delayPressIn < 0 ||\n props.delayPressOut < 0 ||\n props.delayLongPress < 0\n ),\n 'Touchable components cannot have negative delay properties',\n );\n};\n\nmodule.exports = ensurePositiveDelayProps;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict\n */\n\n'use strict';\n\nexport type AccessibilityTrait =\n | 'none'\n | 'button'\n | 'link'\n | 'header'\n | 'search'\n | 'image'\n | 'selected'\n | 'plays'\n | 'key'\n | 'text'\n | 'summary'\n | 'disabled'\n | 'frequentUpdates'\n | 'startsMedia'\n | 'adjustable'\n | 'allowsDirectInteraction'\n | 'pageTurn';\n\nexport type AccessibilityTraits =\n | AccessibilityTrait\n | $ReadOnlyArray;\n\nexport type AccessibilityComponentType =\n | 'none'\n | 'button'\n | 'radiobutton_checked'\n | 'radiobutton_unchecked';\n\nexport type AccessibilityRole =\n | 'none'\n | 'button'\n | 'link'\n | 'search'\n | 'image'\n | 'keyboardkey'\n | 'text'\n | 'adjustable'\n | 'imagebutton'\n | 'header'\n | 'summary';\n\nexport type AccessibilityState = 'selected' | 'disabled';\n\nexport type AccessibilityStates =\n | AccessibilityState\n | $ReadOnlyArray;\n\nmodule.exports = {\n AccessibilityTraits: [\n 'none',\n 'button',\n 'link',\n 'header',\n 'search',\n 'image',\n 'selected',\n 'plays',\n 'key',\n 'text',\n 'summary',\n 'disabled',\n 'frequentUpdates',\n 'startsMedia',\n 'adjustable',\n 'allowsDirectInteraction',\n 'pageTurn',\n ],\n AccessibilityComponentTypes: [\n 'none',\n 'button',\n 'radiobutton_checked',\n 'radiobutton_unchecked',\n ],\n // This must be kept in sync with the AccessibilityRolesMask in RCTViewManager.m\n AccessibilityRoles: [\n 'none',\n 'button',\n 'link',\n 'search',\n 'image',\n 'keyboardkey',\n 'text',\n 'adjustable',\n 'imagebutton',\n 'header',\n 'summary',\n ],\n // This must be kept in sync with the AccessibilityStatesMask in RCTViewManager.m\n AccessibilityStates: ['selected', 'disabled'],\n};\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst Animated = require('Animated');\nconst Easing = require('Easing');\nconst NativeMethodsMixin = require('NativeMethodsMixin');\nconst React = require('React');\nconst PropTypes = require('prop-types');\nconst TimerMixin = require('react-timer-mixin');\nconst Touchable = require('Touchable');\nconst TouchableWithoutFeedback = require('TouchableWithoutFeedback');\n\nconst createReactClass = require('create-react-class');\nconst ensurePositiveDelayProps = require('ensurePositiveDelayProps');\nconst flattenStyle = require('flattenStyle');\n\nimport type {Props as TouchableWithoutFeedbackProps} from 'TouchableWithoutFeedback';\nimport type {ViewStyleProp} from 'StyleSheet';\n\ntype Event = Object;\n\nconst PRESS_RETENTION_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\n\ntype TVProps = $ReadOnly<{|\n hasTVPreferredFocus?: ?boolean,\n tvParallaxProperties?: ?Object,\n|}>;\n\ntype Props = $ReadOnly<{|\n ...TouchableWithoutFeedbackProps,\n ...TVProps,\n activeOpacity?: ?number,\n style?: ?ViewStyleProp,\n|}>;\n\n/**\n * A wrapper for making views respond properly to touches.\n * On press down, the opacity of the wrapped view is decreased, dimming it.\n *\n * Opacity is controlled by wrapping the children in an Animated.View, which is\n * added to the view hiearchy. Be aware that this can affect layout.\n *\n * Example:\n *\n * ```\n * renderButton: function() {\n * return (\n * \n * \n * \n * );\n * },\n * ```\n * ### Example\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react'\n * import {\n * AppRegistry,\n * StyleSheet,\n * TouchableOpacity,\n * Text,\n * View,\n * } from 'react-native'\n *\n * class App extends Component {\n * constructor(props) {\n * super(props)\n * this.state = { count: 0 }\n * }\n *\n * onPress = () => {\n * this.setState({\n * count: this.state.count+1\n * })\n * }\n *\n * render() {\n * return (\n * \n * \n * Touch Here \n * \n * \n * \n * { this.state.count !== 0 ? this.state.count: null}\n * \n * \n * \n * )\n * }\n * }\n *\n * const styles = StyleSheet.create({\n * container: {\n * flex: 1,\n * justifyContent: 'center',\n * paddingHorizontal: 10\n * },\n * button: {\n * alignItems: 'center',\n * backgroundColor: '#DDDDDD',\n * padding: 10\n * },\n * countContainer: {\n * alignItems: 'center',\n * padding: 10\n * },\n * countText: {\n * color: '#FF00FF'\n * }\n * })\n *\n * AppRegistry.registerComponent('App', () => App)\n * ```\n *\n */\nconst TouchableOpacity = ((createReactClass({\n displayName: 'TouchableOpacity',\n mixins: [TimerMixin, Touchable.Mixin, NativeMethodsMixin],\n\n propTypes: {\n ...TouchableWithoutFeedback.propTypes,\n /**\n * Determines what the opacity of the wrapped view should be when touch is\n * active. Defaults to 0.2.\n */\n activeOpacity: PropTypes.number,\n /**\n * TV preferred focus (see documentation for the View component).\n */\n hasTVPreferredFocus: PropTypes.bool,\n /**\n * Apple TV parallax effects\n */\n tvParallaxProperties: PropTypes.object,\n },\n\n getDefaultProps: function() {\n return {\n activeOpacity: 0.2,\n };\n },\n\n getInitialState: function() {\n return {\n ...this.touchableGetInitialState(),\n anim: new Animated.Value(this._getChildStyleOpacityWithDefault()),\n };\n },\n\n componentDidMount: function() {\n ensurePositiveDelayProps(this.props);\n },\n\n UNSAFE_componentWillReceiveProps: function(nextProps) {\n ensurePositiveDelayProps(nextProps);\n },\n\n componentDidUpdate: function(prevProps, prevState) {\n if (this.props.disabled !== prevProps.disabled) {\n this._opacityInactive(250);\n }\n },\n\n /**\n * Animate the touchable to a new opacity.\n */\n setOpacityTo: function(value: number, duration: number) {\n Animated.timing(this.state.anim, {\n toValue: value,\n duration: duration,\n easing: Easing.inOut(Easing.quad),\n useNativeDriver: true,\n }).start();\n },\n\n /**\n * `Touchable.Mixin` self callbacks. The mixin will invoke these if they are\n * defined on your component.\n */\n touchableHandleActivePressIn: function(e: Event) {\n if (e.dispatchConfig.registrationName === 'onResponderGrant') {\n this._opacityActive(0);\n } else {\n this._opacityActive(150);\n }\n this.props.onPressIn && this.props.onPressIn(e);\n },\n\n touchableHandleActivePressOut: function(e: Event) {\n this._opacityInactive(250);\n this.props.onPressOut && this.props.onPressOut(e);\n },\n\n touchableHandlePress: function(e: Event) {\n this.props.onPress && this.props.onPress(e);\n },\n\n touchableHandleLongPress: function(e: Event) {\n this.props.onLongPress && this.props.onLongPress(e);\n },\n\n touchableGetPressRectOffset: function() {\n return this.props.pressRetentionOffset || PRESS_RETENTION_OFFSET;\n },\n\n touchableGetHitSlop: function() {\n return this.props.hitSlop;\n },\n\n touchableGetHighlightDelayMS: function() {\n return this.props.delayPressIn || 0;\n },\n\n touchableGetLongPressDelayMS: function() {\n return this.props.delayLongPress === 0\n ? 0\n : this.props.delayLongPress || 500;\n },\n\n touchableGetPressOutDelayMS: function() {\n return this.props.delayPressOut;\n },\n\n _opacityActive: function(duration: number) {\n this.setOpacityTo(this.props.activeOpacity, duration);\n },\n\n _opacityInactive: function(duration: number) {\n this.setOpacityTo(this._getChildStyleOpacityWithDefault(), duration);\n },\n\n _getChildStyleOpacityWithDefault: function() {\n const childStyle = flattenStyle(this.props.style) || {};\n return childStyle.opacity == undefined ? 1 : childStyle.opacity;\n },\n\n render: function() {\n return (\n \n {this.props.children}\n {Touchable.renderDebugView({\n color: 'cyan',\n hitSlop: this.props.hitSlop,\n })}\n \n );\n },\n}): any): React.ComponentType);\n\nmodule.exports = TouchableOpacity;\n","/**\n * Copyright (c) 2015-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 * @flow strict-local\n * @format\n */\n\n'use strict';\n\nconst AnimatedImplementation = require('AnimatedImplementation');\nconst FlatList = require('FlatList');\nconst Image = require('Image');\nconst ScrollView = require('ScrollView');\nconst SectionList = require('SectionList');\nconst Text = require('Text');\nconst View = require('View');\n\nmodule.exports = {\n ...AnimatedImplementation,\n View: AnimatedImplementation.createAnimatedComponent(View),\n Text: AnimatedImplementation.createAnimatedComponent(Text),\n Image: AnimatedImplementation.createAnimatedComponent(Image),\n ScrollView: AnimatedImplementation.createAnimatedComponent(ScrollView),\n FlatList: AnimatedImplementation.createAnimatedComponent(FlatList),\n SectionList: AnimatedImplementation.createAnimatedComponent(SectionList),\n};\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n * @preventMunge\n */\n'use strict';\n\nconst {AnimatedEvent, attachNativeEvent} = require('./AnimatedEvent');\nconst AnimatedAddition = require('./nodes/AnimatedAddition');\nconst AnimatedDiffClamp = require('./nodes/AnimatedDiffClamp');\nconst AnimatedDivision = require('./nodes/AnimatedDivision');\nconst AnimatedInterpolation = require('./nodes/AnimatedInterpolation');\nconst AnimatedModulo = require('./nodes/AnimatedModulo');\nconst AnimatedMultiplication = require('./nodes/AnimatedMultiplication');\nconst AnimatedNode = require('./nodes/AnimatedNode');\nconst AnimatedProps = require('./nodes/AnimatedProps');\nconst AnimatedSubtraction = require('./nodes/AnimatedSubtraction');\nconst AnimatedTracking = require('./nodes/AnimatedTracking');\nconst AnimatedValue = require('./nodes/AnimatedValue');\nconst AnimatedValueXY = require('./nodes/AnimatedValueXY');\nconst DecayAnimation = require('./animations/DecayAnimation');\nconst SpringAnimation = require('./animations/SpringAnimation');\nconst TimingAnimation = require('./animations/TimingAnimation');\n\nconst createAnimatedComponent = require('./createAnimatedComponent');\n\nimport type {\n AnimationConfig,\n EndCallback,\n EndResult,\n} from './animations/Animation';\nimport type {TimingAnimationConfig} from './animations/TimingAnimation';\nimport type {DecayAnimationConfig} from './animations/DecayAnimation';\nimport type {SpringAnimationConfig} from './animations/SpringAnimation';\nimport type {Mapping, EventConfig} from './AnimatedEvent';\n\nexport type CompositeAnimation = {\n start: (callback?: ?EndCallback) => void,\n stop: () => void,\n reset: () => void,\n _startNativeLoop: (iterations?: number) => void,\n _isUsingNativeDriver: () => boolean,\n};\n\nconst add = function(\n a: AnimatedNode | number,\n b: AnimatedNode | number,\n): AnimatedAddition {\n return new AnimatedAddition(a, b);\n};\n\nconst subtract = function(\n a: AnimatedNode | number,\n b: AnimatedNode | number,\n): AnimatedSubtraction {\n return new AnimatedSubtraction(a, b);\n};\n\nconst divide = function(\n a: AnimatedNode | number,\n b: AnimatedNode | number,\n): AnimatedDivision {\n return new AnimatedDivision(a, b);\n};\n\nconst multiply = function(\n a: AnimatedNode | number,\n b: AnimatedNode | number,\n): AnimatedMultiplication {\n return new AnimatedMultiplication(a, b);\n};\n\nconst modulo = function(a: AnimatedNode, modulus: number): AnimatedModulo {\n return new AnimatedModulo(a, modulus);\n};\n\nconst diffClamp = function(\n a: AnimatedNode,\n min: number,\n max: number,\n): AnimatedDiffClamp {\n return new AnimatedDiffClamp(a, min, max);\n};\n\nconst _combineCallbacks = function(\n callback: ?EndCallback,\n config: AnimationConfig,\n) {\n if (callback && config.onComplete) {\n return (...args) => {\n config.onComplete && config.onComplete(...args);\n callback && callback(...args);\n };\n } else {\n return callback || config.onComplete;\n }\n};\n\nconst maybeVectorAnim = function(\n value: AnimatedValue | AnimatedValueXY,\n config: Object,\n anim: (value: AnimatedValue, config: Object) => CompositeAnimation,\n): ?CompositeAnimation {\n if (value instanceof AnimatedValueXY) {\n const configX = {...config};\n const configY = {...config};\n for (const key in config) {\n const {x, y} = config[key];\n if (x !== undefined && y !== undefined) {\n configX[key] = x;\n configY[key] = y;\n }\n }\n const aX = anim((value: AnimatedValueXY).x, configX);\n const aY = anim((value: AnimatedValueXY).y, configY);\n // We use `stopTogether: false` here because otherwise tracking will break\n // because the second animation will get stopped before it can update.\n return parallel([aX, aY], {stopTogether: false});\n }\n return null;\n};\n\nconst spring = function(\n value: AnimatedValue | AnimatedValueXY,\n config: SpringAnimationConfig,\n): CompositeAnimation {\n const start = function(\n animatedValue: AnimatedValue | AnimatedValueXY,\n configuration: SpringAnimationConfig,\n callback?: ?EndCallback,\n ): void {\n callback = _combineCallbacks(callback, configuration);\n const singleValue: any = animatedValue;\n const singleConfig: any = configuration;\n singleValue.stopTracking();\n if (configuration.toValue instanceof AnimatedNode) {\n singleValue.track(\n new AnimatedTracking(\n singleValue,\n configuration.toValue,\n SpringAnimation,\n singleConfig,\n callback,\n ),\n );\n } else {\n singleValue.animate(new SpringAnimation(singleConfig), callback);\n }\n };\n return (\n maybeVectorAnim(value, config, spring) || {\n start: function(callback?: ?EndCallback): void {\n start(value, config, callback);\n },\n\n stop: function(): void {\n value.stopAnimation();\n },\n\n reset: function(): void {\n value.resetAnimation();\n },\n\n _startNativeLoop: function(iterations?: number): void {\n const singleConfig = {...config, iterations};\n start(value, singleConfig);\n },\n\n _isUsingNativeDriver: function(): boolean {\n return config.useNativeDriver || false;\n },\n }\n );\n};\n\nconst timing = function(\n value: AnimatedValue | AnimatedValueXY,\n config: TimingAnimationConfig,\n): CompositeAnimation {\n const start = function(\n animatedValue: AnimatedValue | AnimatedValueXY,\n configuration: TimingAnimationConfig,\n callback?: ?EndCallback,\n ): void {\n callback = _combineCallbacks(callback, configuration);\n const singleValue: any = animatedValue;\n const singleConfig: any = configuration;\n singleValue.stopTracking();\n if (configuration.toValue instanceof AnimatedNode) {\n singleValue.track(\n new AnimatedTracking(\n singleValue,\n configuration.toValue,\n TimingAnimation,\n singleConfig,\n callback,\n ),\n );\n } else {\n singleValue.animate(new TimingAnimation(singleConfig), callback);\n }\n };\n\n return (\n maybeVectorAnim(value, config, timing) || {\n start: function(callback?: ?EndCallback): void {\n start(value, config, callback);\n },\n\n stop: function(): void {\n value.stopAnimation();\n },\n\n reset: function(): void {\n value.resetAnimation();\n },\n\n _startNativeLoop: function(iterations?: number): void {\n const singleConfig = {...config, iterations};\n start(value, singleConfig);\n },\n\n _isUsingNativeDriver: function(): boolean {\n return config.useNativeDriver || false;\n },\n }\n );\n};\n\nconst decay = function(\n value: AnimatedValue | AnimatedValueXY,\n config: DecayAnimationConfig,\n): CompositeAnimation {\n const start = function(\n animatedValue: AnimatedValue | AnimatedValueXY,\n configuration: DecayAnimationConfig,\n callback?: ?EndCallback,\n ): void {\n callback = _combineCallbacks(callback, configuration);\n const singleValue: any = animatedValue;\n const singleConfig: any = configuration;\n singleValue.stopTracking();\n singleValue.animate(new DecayAnimation(singleConfig), callback);\n };\n\n return (\n maybeVectorAnim(value, config, decay) || {\n start: function(callback?: ?EndCallback): void {\n start(value, config, callback);\n },\n\n stop: function(): void {\n value.stopAnimation();\n },\n\n reset: function(): void {\n value.resetAnimation();\n },\n\n _startNativeLoop: function(iterations?: number): void {\n const singleConfig = {...config, iterations};\n start(value, singleConfig);\n },\n\n _isUsingNativeDriver: function(): boolean {\n return config.useNativeDriver || false;\n },\n }\n );\n};\n\nconst sequence = function(\n animations: Array,\n): CompositeAnimation {\n let current = 0;\n return {\n start: function(callback?: ?EndCallback) {\n const onComplete = function(result) {\n if (!result.finished) {\n callback && callback(result);\n return;\n }\n\n current++;\n\n if (current === animations.length) {\n callback && callback(result);\n return;\n }\n\n animations[current].start(onComplete);\n };\n\n if (animations.length === 0) {\n callback && callback({finished: true});\n } else {\n animations[current].start(onComplete);\n }\n },\n\n stop: function() {\n if (current < animations.length) {\n animations[current].stop();\n }\n },\n\n reset: function() {\n animations.forEach((animation, idx) => {\n if (idx <= current) {\n animation.reset();\n }\n });\n current = 0;\n },\n\n _startNativeLoop: function() {\n throw new Error(\n 'Loops run using the native driver cannot contain Animated.sequence animations',\n );\n },\n\n _isUsingNativeDriver: function(): boolean {\n return false;\n },\n };\n};\n\ntype ParallelConfig = {\n stopTogether?: boolean, // If one is stopped, stop all. default: true\n};\nconst parallel = function(\n animations: Array,\n config?: ?ParallelConfig,\n): CompositeAnimation {\n let doneCount = 0;\n // Make sure we only call stop() at most once for each animation\n const hasEnded = {};\n const stopTogether = !(config && config.stopTogether === false);\n\n const result = {\n start: function(callback?: ?EndCallback) {\n if (doneCount === animations.length) {\n callback && callback({finished: true});\n return;\n }\n\n animations.forEach((animation, idx) => {\n const cb = function(endResult) {\n hasEnded[idx] = true;\n doneCount++;\n if (doneCount === animations.length) {\n doneCount = 0;\n callback && callback(endResult);\n return;\n }\n\n if (!endResult.finished && stopTogether) {\n result.stop();\n }\n };\n\n if (!animation) {\n cb({finished: true});\n } else {\n animation.start(cb);\n }\n });\n },\n\n stop: function(): void {\n animations.forEach((animation, idx) => {\n !hasEnded[idx] && animation.stop();\n hasEnded[idx] = true;\n });\n },\n\n reset: function(): void {\n animations.forEach((animation, idx) => {\n animation.reset();\n hasEnded[idx] = false;\n doneCount = 0;\n });\n },\n\n _startNativeLoop: function() {\n throw new Error(\n 'Loops run using the native driver cannot contain Animated.parallel animations',\n );\n },\n\n _isUsingNativeDriver: function(): boolean {\n return false;\n },\n };\n\n return result;\n};\n\nconst delay = function(time: number): CompositeAnimation {\n // Would be nice to make a specialized implementation\n return timing(new AnimatedValue(0), {toValue: 0, delay: time, duration: 0});\n};\n\nconst stagger = function(\n time: number,\n animations: Array,\n): CompositeAnimation {\n return parallel(\n animations.map((animation, i) => {\n return sequence([delay(time * i), animation]);\n }),\n );\n};\n\ntype LoopAnimationConfig = {iterations: number};\n\nconst loop = function(\n animation: CompositeAnimation,\n {iterations = -1}: LoopAnimationConfig = {},\n): CompositeAnimation {\n let isFinished = false;\n let iterationsSoFar = 0;\n return {\n start: function(callback?: ?EndCallback) {\n const restart = function(result: EndResult = {finished: true}): void {\n if (\n isFinished ||\n iterationsSoFar === iterations ||\n result.finished === false\n ) {\n callback && callback(result);\n } else {\n iterationsSoFar++;\n animation.reset();\n animation.start(restart);\n }\n };\n if (!animation || iterations === 0) {\n callback && callback({finished: true});\n } else {\n if (animation._isUsingNativeDriver()) {\n animation._startNativeLoop(iterations);\n } else {\n restart(); // Start looping recursively on the js thread\n }\n }\n },\n\n stop: function(): void {\n isFinished = true;\n animation.stop();\n },\n\n reset: function(): void {\n iterationsSoFar = 0;\n isFinished = false;\n animation.reset();\n },\n\n _startNativeLoop: function() {\n throw new Error(\n 'Loops run using the native driver cannot contain Animated.loop animations',\n );\n },\n\n _isUsingNativeDriver: function(): boolean {\n return animation._isUsingNativeDriver();\n },\n };\n};\n\nfunction forkEvent(\n event: ?AnimatedEvent | ?Function,\n listener: Function,\n): AnimatedEvent | Function {\n if (!event) {\n return listener;\n } else if (event instanceof AnimatedEvent) {\n event.__addListener(listener);\n return event;\n } else {\n return (...args) => {\n typeof event === 'function' && event(...args);\n listener(...args);\n };\n }\n}\n\nfunction unforkEvent(\n event: ?AnimatedEvent | ?Function,\n listener: Function,\n): void {\n if (event && event instanceof AnimatedEvent) {\n event.__removeListener(listener);\n }\n}\n\nconst event = function(argMapping: Array, config?: EventConfig): any {\n const animatedEvent = new AnimatedEvent(argMapping, config);\n if (animatedEvent.__isNative) {\n return animatedEvent;\n } else {\n return animatedEvent.__getHandler();\n }\n};\n\n/**\n * The `Animated` library is designed to make animations fluid, powerful, and\n * easy to build and maintain. `Animated` focuses on declarative relationships\n * between inputs and outputs, with configurable transforms in between, and\n * simple `start`/`stop` methods to control time-based animation execution.\n *\n * See http://facebook.github.io/react-native/docs/animated.html\n */\nmodule.exports = {\n /**\n * Standard value class for driving animations. Typically initialized with\n * `new Animated.Value(0);`\n *\n * See http://facebook.github.io/react-native/docs/animated.html#value\n */\n Value: AnimatedValue,\n /**\n * 2D value class for driving 2D animations, such as pan gestures.\n *\n * See https://facebook.github.io/react-native/docs/animatedvaluexy.html\n */\n ValueXY: AnimatedValueXY,\n /**\n * Exported to use the Interpolation type in flow.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#interpolation\n */\n Interpolation: AnimatedInterpolation,\n /**\n * Exported for ease of type checking. All animated values derive from this\n * class.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#node\n */\n Node: AnimatedNode,\n\n /**\n * Animates a value from an initial velocity to zero based on a decay\n * coefficient.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#decay\n */\n decay,\n /**\n * Animates a value along a timed easing curve. The Easing module has tons of\n * predefined curves, or you can use your own function.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#timing\n */\n timing,\n /**\n * Animates a value according to an analytical spring model based on\n * damped harmonic oscillation.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#spring\n */\n spring,\n\n /**\n * Creates a new Animated value composed from two Animated values added\n * together.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#add\n */\n add,\n\n /**\n * Creates a new Animated value composed by subtracting the second Animated\n * value from the first Animated value.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#subtract\n */\n subtract,\n\n /**\n * Creates a new Animated value composed by dividing the first Animated value\n * by the second Animated value.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#divide\n */\n divide,\n\n /**\n * Creates a new Animated value composed from two Animated values multiplied\n * together.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#multiply\n */\n multiply,\n\n /**\n * Creates a new Animated value that is the (non-negative) modulo of the\n * provided Animated value.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#modulo\n */\n modulo,\n\n /**\n * Create a new Animated value that is limited between 2 values. It uses the\n * difference between the last value so even if the value is far from the\n * bounds it will start changing when the value starts getting closer again.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#diffclamp\n */\n diffClamp,\n\n /**\n * Starts an animation after the given delay.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#delay\n */\n delay,\n /**\n * Starts an array of animations in order, waiting for each to complete\n * before starting the next. If the current running animation is stopped, no\n * following animations will be started.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#sequence\n */\n sequence,\n /**\n * Starts an array of animations all at the same time. By default, if one\n * of the animations is stopped, they will all be stopped. You can override\n * this with the `stopTogether` flag.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#parallel\n */\n parallel,\n /**\n * Array of animations may run in parallel (overlap), but are started in\n * sequence with successive delays. Nice for doing trailing effects.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#stagger\n */\n stagger,\n /**\n * Loops a given animation continuously, so that each time it reaches the\n * end, it resets and begins again from the start.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#loop\n */\n loop,\n\n /**\n * Takes an array of mappings and extracts values from each arg accordingly,\n * then calls `setValue` on the mapped outputs.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#event\n */\n event,\n\n /**\n * Make any React component Animatable. Used to create `Animated.View`, etc.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#createanimatedcomponent\n */\n createAnimatedComponent,\n\n /**\n * Imperative API to attach an animated value to an event on a view. Prefer\n * using `Animated.event` with `useNativeDrive: true` if possible.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#attachnativeevent\n */\n attachNativeEvent,\n\n /**\n * Advanced imperative API for snooping on animated events that are passed in\n * through props. Use values directly where possible.\n *\n * See http://facebook.github.io/react-native/docs/animated.html#forkevent\n */\n forkEvent,\n unforkEvent,\n\n __PropsOnlyForTests: AnimatedProps,\n};\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst AnimatedValue = require('./nodes/AnimatedValue');\nconst NativeAnimatedHelper = require('./NativeAnimatedHelper');\nconst ReactNative = require('ReactNative');\n\nconst invariant = require('fbjs/lib/invariant');\nconst {shouldUseNativeDriver} = require('./NativeAnimatedHelper');\n\nexport type Mapping = {[key: string]: Mapping} | AnimatedValue;\nexport type EventConfig = {\n listener?: ?Function,\n useNativeDriver?: boolean,\n};\n\nfunction attachNativeEvent(\n viewRef: any,\n eventName: string,\n argMapping: Array,\n) {\n // Find animated values in `argMapping` and create an array representing their\n // key path inside the `nativeEvent` object. Ex.: ['contentOffset', 'x'].\n const eventMappings = [];\n\n const traverse = (value, path) => {\n if (value instanceof AnimatedValue) {\n value.__makeNative();\n\n eventMappings.push({\n nativeEventPath: path,\n animatedValueTag: value.__getNativeTag(),\n });\n } else if (typeof value === 'object') {\n for (const key in value) {\n traverse(value[key], path.concat(key));\n }\n }\n };\n\n invariant(\n argMapping[0] && argMapping[0].nativeEvent,\n 'Native driven events only support animated values contained inside `nativeEvent`.',\n );\n\n // Assume that the event containing `nativeEvent` is always the first argument.\n traverse(argMapping[0].nativeEvent, []);\n\n const viewTag = ReactNative.findNodeHandle(viewRef);\n\n eventMappings.forEach(mapping => {\n NativeAnimatedHelper.API.addAnimatedEventToView(\n viewTag,\n eventName,\n mapping,\n );\n });\n\n return {\n detach() {\n eventMappings.forEach(mapping => {\n NativeAnimatedHelper.API.removeAnimatedEventFromView(\n viewTag,\n eventName,\n mapping.animatedValueTag,\n );\n });\n },\n };\n}\n\nclass AnimatedEvent {\n _argMapping: Array;\n _listeners: Array = [];\n _callListeners: Function;\n _attachedEvent: ?{\n detach: () => void,\n };\n __isNative: boolean;\n\n constructor(argMapping: Array, config?: EventConfig = {}) {\n this._argMapping = argMapping;\n if (config.listener) {\n this.__addListener(config.listener);\n }\n this._callListeners = this._callListeners.bind(this);\n this._attachedEvent = null;\n this.__isNative = shouldUseNativeDriver(config);\n\n if (__DEV__) {\n this._validateMapping();\n }\n }\n\n __addListener(callback: Function): void {\n this._listeners.push(callback);\n }\n\n __removeListener(callback: Function): void {\n this._listeners = this._listeners.filter(listener => listener !== callback);\n }\n\n __attach(viewRef: any, eventName: string) {\n invariant(\n this.__isNative,\n 'Only native driven events need to be attached.',\n );\n\n this._attachedEvent = attachNativeEvent(\n viewRef,\n eventName,\n this._argMapping,\n );\n }\n\n __detach(viewTag: any, eventName: string) {\n invariant(\n this.__isNative,\n 'Only native driven events need to be detached.',\n );\n\n this._attachedEvent && this._attachedEvent.detach();\n }\n\n __getHandler() {\n if (this.__isNative) {\n return this._callListeners;\n }\n\n return (...args: any) => {\n const traverse = (recMapping, recEvt, key) => {\n if (typeof recEvt === 'number' && recMapping instanceof AnimatedValue) {\n recMapping.setValue(recEvt);\n } else if (typeof recMapping === 'object') {\n for (const mappingKey in recMapping) {\n /* $FlowFixMe(>=0.53.0 site=react_native_fb,react_native_oss) This\n * comment suppresses an error when upgrading Flow's support for\n * React. To see the error delete this comment and run Flow. */\n traverse(recMapping[mappingKey], recEvt[mappingKey], mappingKey);\n }\n }\n };\n\n if (!this.__isNative) {\n this._argMapping.forEach((mapping, idx) => {\n traverse(mapping, args[idx], 'arg' + idx);\n });\n }\n this._callListeners(...args);\n };\n }\n\n _callListeners(...args) {\n this._listeners.forEach(listener => listener(...args));\n }\n\n _validateMapping() {\n const traverse = (recMapping, recEvt, key) => {\n if (typeof recEvt === 'number') {\n invariant(\n recMapping instanceof AnimatedValue,\n 'Bad mapping of type ' +\n typeof recMapping +\n ' for key ' +\n key +\n ', event value must map to AnimatedValue',\n );\n return;\n }\n invariant(\n typeof recMapping === 'object',\n 'Bad mapping of type ' + typeof recMapping + ' for key ' + key,\n );\n invariant(\n typeof recEvt === 'object',\n 'Bad event of type ' + typeof recEvt + ' for key ' + key,\n );\n for (const mappingKey in recMapping) {\n traverse(recMapping[mappingKey], recEvt[mappingKey], mappingKey);\n }\n };\n }\n}\n\nmodule.exports = {AnimatedEvent, attachNativeEvent};\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst AnimatedInterpolation = require('./AnimatedInterpolation');\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\nconst InteractionManager = require('InteractionManager');\nconst NativeAnimatedHelper = require('../NativeAnimatedHelper');\n\nimport type Animation, {EndCallback} from '../animations/Animation';\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\nimport type AnimatedTracking from './AnimatedTracking';\n\nconst NativeAnimatedAPI = NativeAnimatedHelper.API;\n\ntype ValueListenerCallback = (state: {value: number}) => void;\n\nlet _uniqueId = 1;\n\n/**\n * Animated works by building a directed acyclic graph of dependencies\n * transparently when you render your Animated components.\n *\n * new Animated.Value(0)\n * .interpolate() .interpolate() new Animated.Value(1)\n * opacity translateY scale\n * style transform\n * View#234 style\n * View#123\n *\n * A) Top Down phase\n * When an Animated.Value is updated, we recursively go down through this\n * graph in order to find leaf nodes: the views that we flag as needing\n * an update.\n *\n * B) Bottom Up phase\n * When a view is flagged as needing an update, we recursively go back up\n * in order to build the new value that it needs. The reason why we need\n * this two-phases process is to deal with composite props such as\n * transform which can receive values from multiple parents.\n */\nfunction _flush(rootNode: AnimatedValue): void {\n const animatedStyles = new Set();\n function findAnimatedStyles(node) {\n /* $FlowFixMe(>=0.68.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.68 was deployed. To see the error delete this\n * comment and run Flow. */\n if (typeof node.update === 'function') {\n animatedStyles.add(node);\n } else {\n node.__getChildren().forEach(findAnimatedStyles);\n }\n }\n findAnimatedStyles(rootNode);\n /* $FlowFixMe */\n animatedStyles.forEach(animatedStyle => animatedStyle.update());\n}\n\n/**\n * Standard value for driving animations. One `Animated.Value` can drive\n * multiple properties in a synchronized fashion, but can only be driven by one\n * mechanism at a time. Using a new mechanism (e.g. starting a new animation,\n * or calling `setValue`) will stop any previous ones.\n *\n * See http://facebook.github.io/react-native/docs/animatedvalue.html\n */\nclass AnimatedValue extends AnimatedWithChildren {\n _value: number;\n _startingValue: number;\n _offset: number;\n _animation: ?Animation;\n _tracking: ?AnimatedTracking;\n _listeners: {[key: string]: ValueListenerCallback};\n __nativeAnimatedValueListener: ?any;\n\n constructor(value: number) {\n super();\n this._startingValue = this._value = value;\n this._offset = 0;\n this._animation = null;\n this._listeners = {};\n }\n\n __detach() {\n this.stopAnimation();\n super.__detach();\n }\n\n __getValue(): number {\n return this._value + this._offset;\n }\n\n __makeNative() {\n super.__makeNative();\n\n if (Object.keys(this._listeners).length) {\n this._startListeningToNativeValueUpdates();\n }\n }\n\n /**\n * Directly set the value. This will stop any animations running on the value\n * and update all the bound properties.\n *\n * See http://facebook.github.io/react-native/docs/animatedvalue.html#setvalue\n */\n setValue(value: number): void {\n if (this._animation) {\n this._animation.stop();\n this._animation = null;\n }\n this._updateValue(\n value,\n !this.__isNative /* don't perform a flush for natively driven values */,\n );\n if (this.__isNative) {\n NativeAnimatedAPI.setAnimatedNodeValue(this.__getNativeTag(), value);\n }\n }\n\n /**\n * Sets an offset that is applied on top of whatever value is set, whether via\n * `setValue`, an animation, or `Animated.event`. Useful for compensating\n * things like the start of a pan gesture.\n *\n * See http://facebook.github.io/react-native/docs/animatedvalue.html#setoffset\n */\n setOffset(offset: number): void {\n this._offset = offset;\n if (this.__isNative) {\n NativeAnimatedAPI.setAnimatedNodeOffset(this.__getNativeTag(), offset);\n }\n }\n\n /**\n * Merges the offset value into the base value and resets the offset to zero.\n * The final output of the value is unchanged.\n *\n * See http://facebook.github.io/react-native/docs/animatedvalue.html#flattenoffset\n */\n flattenOffset(): void {\n this._value += this._offset;\n this._offset = 0;\n if (this.__isNative) {\n NativeAnimatedAPI.flattenAnimatedNodeOffset(this.__getNativeTag());\n }\n }\n\n /**\n * Sets the offset value to the base value, and resets the base value to zero.\n * The final output of the value is unchanged.\n *\n * See http://facebook.github.io/react-native/docs/animatedvalue.html#extractoffset\n */\n extractOffset(): void {\n this._offset += this._value;\n this._value = 0;\n if (this.__isNative) {\n NativeAnimatedAPI.extractAnimatedNodeOffset(this.__getNativeTag());\n }\n }\n\n /**\n * Adds an asynchronous listener to the value so you can observe updates from\n * animations. This is useful because there is no way to\n * synchronously read the value because it might be driven natively.\n *\n * See http://facebook.github.io/react-native/docs/animatedvalue.html#addlistener\n */\n addListener(callback: ValueListenerCallback): string {\n const id = String(_uniqueId++);\n this._listeners[id] = callback;\n if (this.__isNative) {\n this._startListeningToNativeValueUpdates();\n }\n return id;\n }\n\n /**\n * Unregister a listener. The `id` param shall match the identifier\n * previously returned by `addListener()`.\n *\n * See http://facebook.github.io/react-native/docs/animatedvalue.html#removelistener\n */\n removeListener(id: string): void {\n delete this._listeners[id];\n if (this.__isNative && Object.keys(this._listeners).length === 0) {\n this._stopListeningForNativeValueUpdates();\n }\n }\n\n /**\n * Remove all registered listeners.\n *\n * See http://facebook.github.io/react-native/docs/animatedvalue.html#removealllisteners\n */\n removeAllListeners(): void {\n this._listeners = {};\n if (this.__isNative) {\n this._stopListeningForNativeValueUpdates();\n }\n }\n\n _startListeningToNativeValueUpdates() {\n if (this.__nativeAnimatedValueListener) {\n return;\n }\n\n NativeAnimatedAPI.startListeningToAnimatedNodeValue(this.__getNativeTag());\n this.__nativeAnimatedValueListener = NativeAnimatedHelper.nativeEventEmitter.addListener(\n 'onAnimatedValueUpdate',\n data => {\n if (data.tag !== this.__getNativeTag()) {\n return;\n }\n this._updateValue(data.value, false /* flush */);\n },\n );\n }\n\n _stopListeningForNativeValueUpdates() {\n if (!this.__nativeAnimatedValueListener) {\n return;\n }\n\n this.__nativeAnimatedValueListener.remove();\n this.__nativeAnimatedValueListener = null;\n NativeAnimatedAPI.stopListeningToAnimatedNodeValue(this.__getNativeTag());\n }\n\n /**\n * Stops any running animation or tracking. `callback` is invoked with the\n * final value after stopping the animation, which is useful for updating\n * state to match the animation position with layout.\n *\n * See http://facebook.github.io/react-native/docs/animatedvalue.html#stopanimation\n */\n stopAnimation(callback?: ?(value: number) => void): void {\n this.stopTracking();\n this._animation && this._animation.stop();\n this._animation = null;\n callback && callback(this.__getValue());\n }\n\n /**\n * Stops any animation and resets the value to its original.\n *\n * See http://facebook.github.io/react-native/docs/animatedvalue.html#resetanimation\n */\n resetAnimation(callback?: ?(value: number) => void): void {\n this.stopAnimation(callback);\n this._value = this._startingValue;\n }\n\n /**\n * Interpolates the value before updating the property, e.g. mapping 0-1 to\n * 0-10.\n */\n interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n return new AnimatedInterpolation(this, config);\n }\n\n /**\n * Typically only used internally, but could be used by a custom Animation\n * class.\n *\n * See http://facebook.github.io/react-native/docs/animatedvalue.html#animate\n */\n animate(animation: Animation, callback: ?EndCallback): void {\n let handle = null;\n if (animation.__isInteraction) {\n handle = InteractionManager.createInteractionHandle();\n }\n const previousAnimation = this._animation;\n this._animation && this._animation.stop();\n this._animation = animation;\n animation.start(\n this._value,\n value => {\n // Natively driven animations will never call into that callback, therefore we can always\n // pass flush = true to allow the updated value to propagate to native with setNativeProps\n this._updateValue(value, true /* flush */);\n },\n result => {\n this._animation = null;\n if (handle !== null) {\n InteractionManager.clearInteractionHandle(handle);\n }\n callback && callback(result);\n },\n previousAnimation,\n this,\n );\n }\n\n /**\n * Typically only used internally.\n */\n stopTracking(): void {\n this._tracking && this._tracking.__detach();\n this._tracking = null;\n }\n\n /**\n * Typically only used internally.\n */\n track(tracking: AnimatedTracking): void {\n this.stopTracking();\n this._tracking = tracking;\n }\n\n _updateValue(value: number, flush: boolean): void {\n this._value = value;\n if (flush) {\n _flush(this);\n }\n for (const key in this._listeners) {\n this._listeners[key]({value: this.__getValue()});\n }\n }\n\n __getNativeConfig(): Object {\n return {\n type: 'value',\n value: this._value,\n offset: this._offset,\n };\n }\n}\n\nmodule.exports = AnimatedValue;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n/* eslint no-bitwise: 0 */\n'use strict';\n\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\nconst NativeAnimatedHelper = require('../NativeAnimatedHelper');\n\nconst invariant = require('fbjs/lib/invariant');\nconst normalizeColor = require('normalizeColor');\n\ntype ExtrapolateType = 'extend' | 'identity' | 'clamp';\n\nexport type InterpolationConfigType = {\n inputRange: Array,\n /* $FlowFixMe(>=0.38.0 site=react_native_fb,react_native_oss) - Flow error\n * detected during the deployment of v0.38.0. To see the error, remove this\n * comment and run flow\n */\n outputRange: Array | Array,\n easing?: (input: number) => number,\n extrapolate?: ExtrapolateType,\n extrapolateLeft?: ExtrapolateType,\n extrapolateRight?: ExtrapolateType,\n};\n\nconst linear = t => t;\n\n/**\n * Very handy helper to map input ranges to output ranges with an easing\n * function and custom behavior outside of the ranges.\n */\nfunction createInterpolation(\n config: InterpolationConfigType,\n): (input: number) => number | string {\n if (config.outputRange && typeof config.outputRange[0] === 'string') {\n return createInterpolationFromStringOutputRange(config);\n }\n\n const outputRange: Array = (config.outputRange: any);\n checkInfiniteRange('outputRange', outputRange);\n\n const inputRange = config.inputRange;\n checkInfiniteRange('inputRange', inputRange);\n checkValidInputRange(inputRange);\n\n invariant(\n inputRange.length === outputRange.length,\n 'inputRange (' +\n inputRange.length +\n ') and outputRange (' +\n outputRange.length +\n ') must have the same length',\n );\n\n const easing = config.easing || linear;\n\n let extrapolateLeft: ExtrapolateType = 'extend';\n if (config.extrapolateLeft !== undefined) {\n extrapolateLeft = config.extrapolateLeft;\n } else if (config.extrapolate !== undefined) {\n extrapolateLeft = config.extrapolate;\n }\n\n let extrapolateRight: ExtrapolateType = 'extend';\n if (config.extrapolateRight !== undefined) {\n extrapolateRight = config.extrapolateRight;\n } else if (config.extrapolate !== undefined) {\n extrapolateRight = config.extrapolate;\n }\n\n return input => {\n invariant(\n typeof input === 'number',\n 'Cannot interpolation an input which is not a number',\n );\n\n const range = findRange(input, inputRange);\n return interpolate(\n input,\n inputRange[range],\n inputRange[range + 1],\n outputRange[range],\n outputRange[range + 1],\n easing,\n extrapolateLeft,\n extrapolateRight,\n );\n };\n}\n\nfunction interpolate(\n input: number,\n inputMin: number,\n inputMax: number,\n outputMin: number,\n outputMax: number,\n easing: (input: number) => number,\n extrapolateLeft: ExtrapolateType,\n extrapolateRight: ExtrapolateType,\n) {\n let result = input;\n\n // Extrapolate\n if (result < inputMin) {\n if (extrapolateLeft === 'identity') {\n return result;\n } else if (extrapolateLeft === 'clamp') {\n result = inputMin;\n } else if (extrapolateLeft === 'extend') {\n // noop\n }\n }\n\n if (result > inputMax) {\n if (extrapolateRight === 'identity') {\n return result;\n } else if (extrapolateRight === 'clamp') {\n result = inputMax;\n } else if (extrapolateRight === 'extend') {\n // noop\n }\n }\n\n if (outputMin === outputMax) {\n return outputMin;\n }\n\n if (inputMin === inputMax) {\n if (input <= inputMin) {\n return outputMin;\n }\n return outputMax;\n }\n\n // Input Range\n if (inputMin === -Infinity) {\n result = -result;\n } else if (inputMax === Infinity) {\n result = result - inputMin;\n } else {\n result = (result - inputMin) / (inputMax - inputMin);\n }\n\n // Easing\n result = easing(result);\n\n // Output Range\n if (outputMin === -Infinity) {\n result = -result;\n } else if (outputMax === Infinity) {\n result = result + outputMin;\n } else {\n result = result * (outputMax - outputMin) + outputMin;\n }\n\n return result;\n}\n\nfunction colorToRgba(input: string): string {\n let int32Color = normalizeColor(input);\n if (int32Color === null) {\n return input;\n }\n\n int32Color = int32Color || 0;\n\n const r = (int32Color & 0xff000000) >>> 24;\n const g = (int32Color & 0x00ff0000) >>> 16;\n const b = (int32Color & 0x0000ff00) >>> 8;\n const a = (int32Color & 0x000000ff) / 255;\n\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n}\n\nconst stringShapeRegex = /[0-9\\.-]+/g;\n\n/**\n * Supports string shapes by extracting numbers so new values can be computed,\n * and recombines those values into new strings of the same shape. Supports\n * things like:\n *\n * rgba(123, 42, 99, 0.36) // colors\n * -45deg // values with units\n */\nfunction createInterpolationFromStringOutputRange(\n config: InterpolationConfigType,\n): (input: number) => string {\n let outputRange: Array = (config.outputRange: any);\n invariant(outputRange.length >= 2, 'Bad output range');\n outputRange = outputRange.map(colorToRgba);\n checkPattern(outputRange);\n\n // ['rgba(0, 100, 200, 0)', 'rgba(50, 150, 250, 0.5)']\n // ->\n // [\n // [0, 50],\n // [100, 150],\n // [200, 250],\n // [0, 0.5],\n // ]\n /* $FlowFixMe(>=0.18.0): `outputRange[0].match()` can return `null`. Need to\n * guard against this possibility.\n */\n const outputRanges = outputRange[0].match(stringShapeRegex).map(() => []);\n outputRange.forEach(value => {\n /* $FlowFixMe(>=0.18.0): `value.match()` can return `null`. Need to guard\n * against this possibility.\n */\n value.match(stringShapeRegex).forEach((number, i) => {\n outputRanges[i].push(+number);\n });\n });\n\n /* $FlowFixMe(>=0.18.0): `outputRange[0].match()` can return `null`. Need to\n * guard against this possibility.\n */\n const interpolations = outputRange[0]\n .match(stringShapeRegex)\n .map((value, i) => {\n return createInterpolation({\n ...config,\n outputRange: outputRanges[i],\n });\n });\n\n // rgba requires that the r,g,b are integers.... so we want to round them, but we *dont* want to\n // round the opacity (4th column).\n const shouldRound = isRgbOrRgba(outputRange[0]);\n\n return input => {\n let i = 0;\n // 'rgba(0, 100, 200, 0)'\n // ->\n // 'rgba(${interpolations[0](input)}, ${interpolations[1](input)}, ...'\n return outputRange[0].replace(stringShapeRegex, () => {\n const val = +interpolations[i++](input);\n const rounded =\n shouldRound && i < 4 ? Math.round(val) : Math.round(val * 1000) / 1000;\n return String(rounded);\n });\n };\n}\n\nfunction isRgbOrRgba(range) {\n return typeof range === 'string' && range.startsWith('rgb');\n}\n\nfunction checkPattern(arr: Array) {\n const pattern = arr[0].replace(stringShapeRegex, '');\n for (let i = 1; i < arr.length; ++i) {\n invariant(\n pattern === arr[i].replace(stringShapeRegex, ''),\n 'invalid pattern ' + arr[0] + ' and ' + arr[i],\n );\n }\n}\n\nfunction findRange(input: number, inputRange: Array) {\n let i;\n for (i = 1; i < inputRange.length - 1; ++i) {\n if (inputRange[i] >= input) {\n break;\n }\n }\n return i - 1;\n}\n\nfunction checkValidInputRange(arr: Array) {\n invariant(arr.length >= 2, 'inputRange must have at least 2 elements');\n for (let i = 1; i < arr.length; ++i) {\n invariant(\n arr[i] >= arr[i - 1],\n /* $FlowFixMe(>=0.13.0) - In the addition expression below this comment,\n * one or both of the operands may be something that doesn't cleanly\n * convert to a string, like undefined, null, and object, etc. If you really\n * mean this implicit string conversion, you can do something like\n * String(myThing)\n */\n 'inputRange must be monotonically non-decreasing ' + arr,\n );\n }\n}\n\nfunction checkInfiniteRange(name: string, arr: Array) {\n invariant(arr.length >= 2, name + ' must have at least 2 elements');\n invariant(\n arr.length !== 2 || arr[0] !== -Infinity || arr[1] !== Infinity,\n /* $FlowFixMe(>=0.13.0) - In the addition expression below this comment,\n * one or both of the operands may be something that doesn't cleanly convert\n * to a string, like undefined, null, and object, etc. If you really mean\n * this implicit string conversion, you can do something like\n * String(myThing)\n */\n name + 'cannot be ]-infinity;+infinity[ ' + arr,\n );\n}\n\nclass AnimatedInterpolation extends AnimatedWithChildren {\n // Export for testing.\n static __createInterpolation = createInterpolation;\n\n _parent: AnimatedNode;\n _config: InterpolationConfigType;\n _interpolation: (input: number) => number | string;\n\n constructor(parent: AnimatedNode, config: InterpolationConfigType) {\n super();\n this._parent = parent;\n this._config = config;\n this._interpolation = createInterpolation(config);\n }\n\n __makeNative() {\n this._parent.__makeNative();\n super.__makeNative();\n }\n\n __getValue(): number | string {\n const parentValue: number = this._parent.__getValue();\n invariant(\n typeof parentValue === 'number',\n 'Cannot interpolate an input which is not a number.',\n );\n return this._interpolation(parentValue);\n }\n\n interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n return new AnimatedInterpolation(this, config);\n }\n\n __attach(): void {\n this._parent.__addChild(this);\n }\n\n __detach(): void {\n this._parent.__removeChild(this);\n super.__detach();\n }\n\n __transformDataType(range: Array) {\n // Change the string array type to number array\n // So we can reuse the same logic in iOS and Android platform\n /* $FlowFixMe(>=0.70.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.70 was deployed. To see the error delete this\n * comment and run Flow. */\n return range.map(function(value) {\n if (typeof value !== 'string') {\n return value;\n }\n if (/deg$/.test(value)) {\n const degrees = parseFloat(value) || 0;\n const radians = (degrees * Math.PI) / 180.0;\n return radians;\n } else {\n // Assume radians\n return parseFloat(value) || 0;\n }\n });\n }\n\n __getNativeConfig(): any {\n if (__DEV__) {\n NativeAnimatedHelper.validateInterpolation(this._config);\n }\n\n return {\n inputRange: this._config.inputRange,\n // Only the `outputRange` can contain strings so we don't need to transform `inputRange` here\n outputRange: this.__transformDataType(this._config.outputRange),\n extrapolateLeft:\n this._config.extrapolateLeft || this._config.extrapolate || 'extend',\n extrapolateRight:\n this._config.extrapolateRight || this._config.extrapolate || 'extend',\n type: 'interpolation',\n };\n }\n}\n\nmodule.exports = AnimatedInterpolation;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst NativeAnimatedHelper = require('../NativeAnimatedHelper');\n\nconst invariant = require('fbjs/lib/invariant');\n\n// Note(vjeux): this would be better as an interface but flow doesn't\n// support them yet\nclass AnimatedNode {\n __attach(): void {}\n __detach(): void {\n if (this.__isNative && this.__nativeTag != null) {\n NativeAnimatedHelper.API.dropAnimatedNode(this.__nativeTag);\n this.__nativeTag = undefined;\n }\n }\n __getValue(): any {}\n __getAnimatedValue(): any {\n return this.__getValue();\n }\n __addChild(child: AnimatedNode) {}\n __removeChild(child: AnimatedNode) {}\n __getChildren(): Array {\n return [];\n }\n\n /* Methods and props used by native Animated impl */\n __isNative: boolean;\n __nativeTag: ?number;\n __makeNative() {\n if (!this.__isNative) {\n throw new Error('This node cannot be made a \"native\" animated node');\n }\n }\n __getNativeTag(): ?number {\n NativeAnimatedHelper.assertNativeAnimatedModule();\n invariant(\n this.__isNative,\n 'Attempt to get native tag from node not marked as \"native\"',\n );\n if (this.__nativeTag == null) {\n const nativeTag: ?number = NativeAnimatedHelper.generateNewNodeTag();\n NativeAnimatedHelper.API.createAnimatedNode(\n nativeTag,\n this.__getNativeConfig(),\n );\n this.__nativeTag = nativeTag;\n }\n return this.__nativeTag;\n }\n __getNativeConfig(): Object {\n throw new Error(\n 'This JS animated node type cannot be used as native animated node',\n );\n }\n toJSON(): any {\n return this.__getValue();\n }\n}\n\nmodule.exports = AnimatedNode;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst NativeAnimatedModule = require('NativeModules').NativeAnimatedModule;\nconst NativeEventEmitter = require('NativeEventEmitter');\n\nconst invariant = require('fbjs/lib/invariant');\n\nimport type {AnimationConfig} from './animations/Animation';\nimport type {EventConfig} from './AnimatedEvent';\n\nlet __nativeAnimatedNodeTagCount = 1; /* used for animated nodes */\nlet __nativeAnimationIdCount = 1; /* used for started animations */\n\ntype EndResult = {finished: boolean};\ntype EndCallback = (result: EndResult) => void;\ntype EventMapping = {\n nativeEventPath: Array,\n animatedValueTag: ?number,\n};\n\nlet nativeEventEmitter;\n\n/**\n * Simple wrappers around NativeAnimatedModule to provide flow and autocmplete support for\n * the native module methods\n */\nconst API = {\n createAnimatedNode: function(tag: ?number, config: Object): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.createAnimatedNode(tag, config);\n },\n startListeningToAnimatedNodeValue: function(tag: ?number) {\n assertNativeAnimatedModule();\n NativeAnimatedModule.startListeningToAnimatedNodeValue(tag);\n },\n stopListeningToAnimatedNodeValue: function(tag: ?number) {\n assertNativeAnimatedModule();\n NativeAnimatedModule.stopListeningToAnimatedNodeValue(tag);\n },\n connectAnimatedNodes: function(parentTag: ?number, childTag: ?number): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.connectAnimatedNodes(parentTag, childTag);\n },\n disconnectAnimatedNodes: function(\n parentTag: ?number,\n childTag: ?number,\n ): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.disconnectAnimatedNodes(parentTag, childTag);\n },\n startAnimatingNode: function(\n animationId: ?number,\n nodeTag: ?number,\n config: Object,\n endCallback: EndCallback,\n ): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.startAnimatingNode(\n animationId,\n nodeTag,\n config,\n endCallback,\n );\n },\n stopAnimation: function(animationId: ?number) {\n assertNativeAnimatedModule();\n NativeAnimatedModule.stopAnimation(animationId);\n },\n setAnimatedNodeValue: function(nodeTag: ?number, value: ?number): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.setAnimatedNodeValue(nodeTag, value);\n },\n setAnimatedNodeOffset: function(nodeTag: ?number, offset: ?number): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.setAnimatedNodeOffset(nodeTag, offset);\n },\n flattenAnimatedNodeOffset: function(nodeTag: ?number): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.flattenAnimatedNodeOffset(nodeTag);\n },\n extractAnimatedNodeOffset: function(nodeTag: ?number): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.extractAnimatedNodeOffset(nodeTag);\n },\n connectAnimatedNodeToView: function(\n nodeTag: ?number,\n viewTag: ?number,\n ): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.connectAnimatedNodeToView(nodeTag, viewTag);\n },\n disconnectAnimatedNodeFromView: function(\n nodeTag: ?number,\n viewTag: ?number,\n ): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.disconnectAnimatedNodeFromView(nodeTag, viewTag);\n },\n dropAnimatedNode: function(tag: ?number): void {\n assertNativeAnimatedModule();\n NativeAnimatedModule.dropAnimatedNode(tag);\n },\n addAnimatedEventToView: function(\n viewTag: ?number,\n eventName: string,\n eventMapping: EventMapping,\n ) {\n assertNativeAnimatedModule();\n NativeAnimatedModule.addAnimatedEventToView(\n viewTag,\n eventName,\n eventMapping,\n );\n },\n removeAnimatedEventFromView(\n viewTag: ?number,\n eventName: string,\n animatedNodeTag: ?number,\n ) {\n assertNativeAnimatedModule();\n NativeAnimatedModule.removeAnimatedEventFromView(\n viewTag,\n eventName,\n animatedNodeTag,\n );\n },\n};\n\n/**\n * Styles allowed by the native animated implementation.\n *\n * In general native animated implementation should support any numeric property that doesn't need\n * to be updated through the shadow view hierarchy (all non-layout properties).\n */\nconst STYLES_WHITELIST = {\n opacity: true,\n transform: true,\n borderRadius: true,\n borderBottomEndRadius: true,\n borderBottomLeftRadius: true,\n borderBottomRightRadius: true,\n borderBottomStartRadius: true,\n borderTopEndRadius: true,\n borderTopLeftRadius: true,\n borderTopRightRadius: true,\n borderTopStartRadius: true,\n /* ios styles */\n shadowOpacity: true,\n shadowRadius: true,\n /* legacy android transform properties */\n scaleX: true,\n scaleY: true,\n translateX: true,\n translateY: true,\n};\n\nconst TRANSFORM_WHITELIST = {\n translateX: true,\n translateY: true,\n scale: true,\n scaleX: true,\n scaleY: true,\n rotate: true,\n rotateX: true,\n rotateY: true,\n perspective: true,\n};\n\nconst SUPPORTED_INTERPOLATION_PARAMS = {\n inputRange: true,\n outputRange: true,\n extrapolate: true,\n extrapolateRight: true,\n extrapolateLeft: true,\n};\n\nfunction addWhitelistedStyleProp(prop: string): void {\n STYLES_WHITELIST[prop] = true;\n}\n\nfunction addWhitelistedTransformProp(prop: string): void {\n TRANSFORM_WHITELIST[prop] = true;\n}\n\nfunction addWhitelistedInterpolationParam(param: string): void {\n SUPPORTED_INTERPOLATION_PARAMS[param] = true;\n}\n\nfunction validateTransform(configs: Array): void {\n configs.forEach(config => {\n if (!TRANSFORM_WHITELIST.hasOwnProperty(config.property)) {\n throw new Error(\n `Property '${\n config.property\n }' is not supported by native animated module`,\n );\n }\n });\n}\n\nfunction validateStyles(styles: Object): void {\n for (const key in styles) {\n if (!STYLES_WHITELIST.hasOwnProperty(key)) {\n throw new Error(\n `Style property '${key}' is not supported by native animated module`,\n );\n }\n }\n}\n\nfunction validateInterpolation(config: Object): void {\n for (const key in config) {\n if (!SUPPORTED_INTERPOLATION_PARAMS.hasOwnProperty(key)) {\n throw new Error(\n `Interpolation property '${key}' is not supported by native animated module`,\n );\n }\n }\n}\n\nfunction generateNewNodeTag(): number {\n return __nativeAnimatedNodeTagCount++;\n}\n\nfunction generateNewAnimationId(): number {\n return __nativeAnimationIdCount++;\n}\n\nfunction assertNativeAnimatedModule(): void {\n invariant(NativeAnimatedModule, 'Native animated module is not available');\n}\n\nlet _warnedMissingNativeAnimated = false;\n\nfunction shouldUseNativeDriver(config: AnimationConfig | EventConfig): boolean {\n if (config.useNativeDriver && !NativeAnimatedModule) {\n if (!_warnedMissingNativeAnimated) {\n console.warn(\n 'Animated: `useNativeDriver` is not supported because the native ' +\n 'animated module is missing. Falling back to JS-based animation. To ' +\n 'resolve this, add `RCTAnimation` module to this app, or remove ' +\n '`useNativeDriver`. ' +\n 'More info: https://github.com/facebook/react-native/issues/11094#issuecomment-263240420',\n );\n _warnedMissingNativeAnimated = true;\n }\n return false;\n }\n\n return config.useNativeDriver || false;\n}\n\nmodule.exports = {\n API,\n addWhitelistedStyleProp,\n addWhitelistedTransformProp,\n addWhitelistedInterpolationParam,\n validateStyles,\n validateTransform,\n validateInterpolation,\n generateNewNodeTag,\n generateNewAnimationId,\n assertNativeAnimatedModule,\n shouldUseNativeDriver,\n get nativeEventEmitter() {\n if (!nativeEventEmitter) {\n nativeEventEmitter = new NativeEventEmitter(NativeAnimatedModule);\n }\n return nativeEventEmitter;\n },\n};\n","/**\n * Copyright (c) 2015-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 * @flow strict-local\n * @format\n */\n'use strict';\n\nconst AnimatedNode = require('./AnimatedNode');\nconst NativeAnimatedHelper = require('../NativeAnimatedHelper');\n\nclass AnimatedWithChildren extends AnimatedNode {\n _children: Array;\n\n constructor() {\n super();\n this._children = [];\n }\n\n __makeNative() {\n if (!this.__isNative) {\n this.__isNative = true;\n for (const child of this._children) {\n child.__makeNative();\n NativeAnimatedHelper.API.connectAnimatedNodes(\n this.__getNativeTag(),\n child.__getNativeTag(),\n );\n }\n }\n }\n\n __addChild(child: AnimatedNode): void {\n if (this._children.length === 0) {\n this.__attach();\n }\n this._children.push(child);\n if (this.__isNative) {\n // Only accept \"native\" animated nodes as children\n child.__makeNative();\n NativeAnimatedHelper.API.connectAnimatedNodes(\n this.__getNativeTag(),\n child.__getNativeTag(),\n );\n }\n }\n\n __removeChild(child: AnimatedNode): void {\n const index = this._children.indexOf(child);\n if (index === -1) {\n console.warn(\"Trying to remove a child that doesn't exist\");\n return;\n }\n if (this.__isNative && child.__isNative) {\n NativeAnimatedHelper.API.disconnectAnimatedNodes(\n this.__getNativeTag(),\n child.__getNativeTag(),\n );\n }\n this._children.splice(index, 1);\n if (this._children.length === 0) {\n this.__detach();\n }\n }\n\n __getChildren(): Array {\n return this._children;\n }\n}\n\nmodule.exports = AnimatedWithChildren;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst BatchedBridge = require('BatchedBridge');\nconst EventEmitter = require('EventEmitter');\nconst Set = require('Set');\nconst TaskQueue = require('TaskQueue');\n\nconst infoLog = require('infoLog');\nconst invariant = require('fbjs/lib/invariant');\n/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error\n * found when Flow v0.54 was deployed. To see the error delete this comment and\n * run Flow. */\nconst keyMirror = require('fbjs/lib/keyMirror');\n\ntype Handle = number;\nimport type {Task} from 'TaskQueue';\n\nconst _emitter = new EventEmitter();\n\nconst DEBUG_DELAY = 0;\nconst DEBUG = false;\n\n/**\n * InteractionManager allows long-running work to be scheduled after any\n * interactions/animations have completed. In particular, this allows JavaScript\n * animations to run smoothly.\n *\n * Applications can schedule tasks to run after interactions with the following:\n *\n * ```\n * InteractionManager.runAfterInteractions(() => {\n * // ...long-running synchronous task...\n * });\n * ```\n *\n * Compare this to other scheduling alternatives:\n *\n * - requestAnimationFrame(): for code that animates a view over time.\n * - setImmediate/setTimeout(): run code later, note this may delay animations.\n * - runAfterInteractions(): run code later, without delaying active animations.\n *\n * The touch handling system considers one or more active touches to be an\n * 'interaction' and will delay `runAfterInteractions()` callbacks until all\n * touches have ended or been cancelled.\n *\n * InteractionManager also allows applications to register animations by\n * creating an interaction 'handle' on animation start, and clearing it upon\n * completion:\n *\n * ```\n * var handle = InteractionManager.createInteractionHandle();\n * // run animation... (`runAfterInteractions` tasks are queued)\n * // later, on animation completion:\n * InteractionManager.clearInteractionHandle(handle);\n * // queued tasks run if all handles were cleared\n * ```\n *\n * `runAfterInteractions` takes either a plain callback function, or a\n * `PromiseTask` object with a `gen` method that returns a `Promise`. If a\n * `PromiseTask` is supplied, then it is fully resolved (including asynchronous\n * dependencies that also schedule more tasks via `runAfterInteractions`) before\n * starting on the next task that might have been queued up synchronously\n * earlier.\n *\n * By default, queued tasks are executed together in a loop in one\n * `setImmediate` batch. If `setDeadline` is called with a positive number, then\n * tasks will only be executed until the deadline (in terms of js event loop run\n * time) approaches, at which point execution will yield via setTimeout,\n * allowing events such as touches to start interactions and block queued tasks\n * from executing, making apps more responsive.\n */\nconst InteractionManager = {\n Events: keyMirror({\n interactionStart: true,\n interactionComplete: true,\n }),\n\n /**\n * Schedule a function to run after all interactions have completed. Returns a cancellable\n * \"promise\".\n */\n runAfterInteractions(\n task: ?Task,\n ): {then: Function, done: Function, cancel: Function} {\n const tasks = [];\n const promise = new Promise(resolve => {\n _scheduleUpdate();\n if (task) {\n tasks.push(task);\n }\n tasks.push({\n run: resolve,\n name: 'resolve ' + ((task && task.name) || '?'),\n });\n _taskQueue.enqueueTasks(tasks);\n });\n return {\n then: promise.then.bind(promise),\n done: (...args) => {\n if (promise.done) {\n return promise.done(...args);\n } else {\n console.warn(\n 'Tried to call done when not supported by current Promise implementation.',\n );\n }\n },\n cancel: function() {\n _taskQueue.cancelTasks(tasks);\n },\n };\n },\n\n /**\n * Notify manager that an interaction has started.\n */\n createInteractionHandle(): Handle {\n DEBUG && infoLog('create interaction handle');\n _scheduleUpdate();\n const handle = ++_inc;\n _addInteractionSet.add(handle);\n return handle;\n },\n\n /**\n * Notify manager that an interaction has completed.\n */\n clearInteractionHandle(handle: Handle) {\n DEBUG && infoLog('clear interaction handle');\n invariant(!!handle, 'Must provide a handle to clear.');\n _scheduleUpdate();\n _addInteractionSet.delete(handle);\n _deleteInteractionSet.add(handle);\n },\n\n addListener: _emitter.addListener.bind(_emitter),\n\n /**\n * A positive number will use setTimeout to schedule any tasks after the\n * eventLoopRunningTime hits the deadline value, otherwise all tasks will be\n * executed in one setImmediate batch (default).\n */\n setDeadline(deadline: number) {\n _deadline = deadline;\n },\n};\n\nconst _interactionSet = new Set();\nconst _addInteractionSet = new Set();\nconst _deleteInteractionSet = new Set();\nconst _taskQueue = new TaskQueue({onMoreTasks: _scheduleUpdate});\nlet _nextUpdateHandle = 0;\nlet _inc = 0;\nlet _deadline = -1;\n\ndeclare function setImmediate(callback: any, ...args: Array): number;\n\n/**\n * Schedule an asynchronous update to the interaction state.\n */\nfunction _scheduleUpdate() {\n if (!_nextUpdateHandle) {\n if (_deadline > 0) {\n /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.63 was deployed. To see the error delete this\n * comment and run Flow. */\n _nextUpdateHandle = setTimeout(_processUpdate, 0 + DEBUG_DELAY);\n } else {\n _nextUpdateHandle = setImmediate(_processUpdate);\n }\n }\n}\n\n/**\n * Notify listeners, process queue, etc\n */\nfunction _processUpdate() {\n _nextUpdateHandle = 0;\n\n const interactionCount = _interactionSet.size;\n _addInteractionSet.forEach(handle => _interactionSet.add(handle));\n _deleteInteractionSet.forEach(handle => _interactionSet.delete(handle));\n const nextInteractionCount = _interactionSet.size;\n\n if (interactionCount !== 0 && nextInteractionCount === 0) {\n // transition from 1+ --> 0 interactions\n _emitter.emit(InteractionManager.Events.interactionComplete);\n } else if (interactionCount === 0 && nextInteractionCount !== 0) {\n // transition from 0 --> 1+ interactions\n _emitter.emit(InteractionManager.Events.interactionStart);\n }\n\n // process the queue regardless of a transition\n if (nextInteractionCount === 0) {\n while (_taskQueue.hasTasksToProcess()) {\n _taskQueue.processNext();\n if (\n _deadline > 0 &&\n BatchedBridge.getEventLoopRunningTime() >= _deadline\n ) {\n // Hit deadline before processing all tasks, so process more later.\n _scheduleUpdate();\n break;\n }\n }\n }\n _addInteractionSet.clear();\n _deleteInteractionSet.clear();\n}\n\nmodule.exports = InteractionManager;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst infoLog = require('infoLog');\nconst invariant = require('fbjs/lib/invariant');\n\ntype SimpleTask = {\n name: string,\n run: () => void,\n};\ntype PromiseTask = {\n name: string,\n gen: () => Promise,\n};\nexport type Task = Function | SimpleTask | PromiseTask;\n\nconst DEBUG = false;\n\n/**\n * TaskQueue - A system for queueing and executing a mix of simple callbacks and\n * trees of dependent tasks based on Promises. No tasks are executed unless\n * `processNext` is called.\n *\n * `enqueue` takes a Task object with either a simple `run` callback, or a\n * `gen` function that returns a `Promise` and puts it in the queue. If a gen\n * function is supplied, then the promise it returns will block execution of\n * tasks already in the queue until it resolves. This can be used to make sure\n * the first task is fully resolved (including asynchronous dependencies that\n * also schedule more tasks via `enqueue`) before starting on the next task.\n * The `onMoreTasks` constructor argument is used to inform the owner that an\n * async task has resolved and that the queue should be processed again.\n *\n * Note: Tasks are only actually executed with explicit calls to `processNext`.\n */\nclass TaskQueue {\n /**\n * TaskQueue instances are self contained and independent, so multiple tasks\n * of varying semantics and priority can operate together.\n *\n * `onMoreTasks` is invoked when `PromiseTask`s resolve if there are more\n * tasks to process.\n */\n constructor({onMoreTasks}: {onMoreTasks: () => void}) {\n this._onMoreTasks = onMoreTasks;\n this._queueStack = [{tasks: [], popable: false}];\n }\n\n /**\n * Add a task to the queue. It is recommended to name your tasks for easier\n * async debugging. Tasks will not be executed until `processNext` is called\n * explicitly.\n */\n enqueue(task: Task): void {\n this._getCurrentQueue().push(task);\n }\n\n enqueueTasks(tasks: Array): void {\n tasks.forEach(task => this.enqueue(task));\n }\n\n cancelTasks(tasksToCancel: Array): void {\n // search through all tasks and remove them.\n this._queueStack = this._queueStack\n .map(queue => ({\n ...queue,\n tasks: queue.tasks.filter(task => tasksToCancel.indexOf(task) === -1),\n }))\n .filter((queue, idx) => queue.tasks.length > 0 || idx === 0);\n }\n\n /**\n * Check to see if `processNext` should be called.\n *\n * @returns {boolean} Returns true if there are tasks that are ready to be\n * processed with `processNext`, or returns false if there are no more tasks\n * to be processed right now, although there may be tasks in the queue that\n * are blocked by earlier `PromiseTask`s that haven't resolved yet.\n * `onMoreTasks` will be called after each `PromiseTask` resolves if there are\n * tasks ready to run at that point.\n */\n hasTasksToProcess(): boolean {\n return this._getCurrentQueue().length > 0;\n }\n\n /**\n * Executes the next task in the queue.\n */\n processNext(): void {\n const queue = this._getCurrentQueue();\n if (queue.length) {\n const task = queue.shift();\n try {\n if (task.gen) {\n DEBUG && infoLog('genPromise for task ' + task.name);\n this._genPromise((task: any)); // Rather than annoying tagged union\n } else if (task.run) {\n DEBUG && infoLog('run task ' + task.name);\n task.run();\n } else {\n invariant(\n typeof task === 'function',\n 'Expected Function, SimpleTask, or PromiseTask, but got:\\n' +\n JSON.stringify(task, null, 2),\n );\n DEBUG && infoLog('run anonymous task');\n task();\n }\n } catch (e) {\n e.message =\n 'TaskQueue: Error with task ' + (task.name || '') + ': ' + e.message;\n throw e;\n }\n }\n }\n\n _queueStack: Array<{tasks: Array, popable: boolean}>;\n _onMoreTasks: () => void;\n\n _getCurrentQueue(): Array {\n const stackIdx = this._queueStack.length - 1;\n const queue = this._queueStack[stackIdx];\n if (\n queue.popable &&\n queue.tasks.length === 0 &&\n this._queueStack.length > 1\n ) {\n this._queueStack.pop();\n DEBUG &&\n infoLog('popped queue: ', {\n stackIdx,\n queueStackSize: this._queueStack.length,\n });\n return this._getCurrentQueue();\n } else {\n return queue.tasks;\n }\n }\n\n _genPromise(task: PromiseTask) {\n // Each async task pushes it's own queue onto the queue stack. This\n // effectively defers execution of previously queued tasks until the promise\n // resolves, at which point we allow the new queue to be popped, which\n // happens once it is fully processed.\n this._queueStack.push({tasks: [], popable: false});\n const stackIdx = this._queueStack.length - 1;\n DEBUG && infoLog('push new queue: ', {stackIdx});\n DEBUG && infoLog('exec gen task ' + task.name);\n task\n .gen()\n .then(() => {\n DEBUG &&\n infoLog('onThen for gen task ' + task.name, {\n stackIdx,\n queueStackSize: this._queueStack.length,\n });\n this._queueStack[stackIdx].popable = true;\n this.hasTasksToProcess() && this._onMoreTasks();\n })\n .catch(ex => {\n ex.message = `TaskQueue: Error resolving Promise in task ${\n task.name\n }: ${ex.message}`;\n throw ex;\n })\n .done();\n }\n}\n\nmodule.exports = TaskQueue;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst AnimatedInterpolation = require('./AnimatedInterpolation');\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedValue = require('./AnimatedValue');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\n\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\n\nclass AnimatedAddition extends AnimatedWithChildren {\n _a: AnimatedNode;\n _b: AnimatedNode;\n\n constructor(a: AnimatedNode | number, b: AnimatedNode | number) {\n super();\n this._a = typeof a === 'number' ? new AnimatedValue(a) : a;\n this._b = typeof b === 'number' ? new AnimatedValue(b) : b;\n }\n\n __makeNative() {\n this._a.__makeNative();\n this._b.__makeNative();\n super.__makeNative();\n }\n\n __getValue(): number {\n return this._a.__getValue() + this._b.__getValue();\n }\n\n interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n return new AnimatedInterpolation(this, config);\n }\n\n __attach(): void {\n this._a.__addChild(this);\n this._b.__addChild(this);\n }\n\n __detach(): void {\n this._a.__removeChild(this);\n this._b.__removeChild(this);\n super.__detach();\n }\n\n __getNativeConfig(): any {\n return {\n type: 'addition',\n input: [this._a.__getNativeTag(), this._b.__getNativeTag()],\n };\n }\n}\n\nmodule.exports = AnimatedAddition;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst AnimatedInterpolation = require('./AnimatedInterpolation');\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\n\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\n\nclass AnimatedDiffClamp extends AnimatedWithChildren {\n _a: AnimatedNode;\n _min: number;\n _max: number;\n _value: number;\n _lastValue: number;\n\n constructor(a: AnimatedNode, min: number, max: number) {\n super();\n\n this._a = a;\n this._min = min;\n this._max = max;\n this._value = this._lastValue = this._a.__getValue();\n }\n\n __makeNative() {\n this._a.__makeNative();\n super.__makeNative();\n }\n\n interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n return new AnimatedInterpolation(this, config);\n }\n\n __getValue(): number {\n const value = this._a.__getValue();\n const diff = value - this._lastValue;\n this._lastValue = value;\n this._value = Math.min(Math.max(this._value + diff, this._min), this._max);\n return this._value;\n }\n\n __attach(): void {\n this._a.__addChild(this);\n }\n\n __detach(): void {\n this._a.__removeChild(this);\n super.__detach();\n }\n\n __getNativeConfig(): any {\n return {\n type: 'diffclamp',\n input: this._a.__getNativeTag(),\n min: this._min,\n max: this._max,\n };\n }\n}\n\nmodule.exports = AnimatedDiffClamp;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst AnimatedInterpolation = require('./AnimatedInterpolation');\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedValue = require('./AnimatedValue');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\n\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\n\nclass AnimatedDivision extends AnimatedWithChildren {\n _a: AnimatedNode;\n _b: AnimatedNode;\n\n constructor(a: AnimatedNode | number, b: AnimatedNode | number) {\n super();\n this._a = typeof a === 'number' ? new AnimatedValue(a) : a;\n this._b = typeof b === 'number' ? new AnimatedValue(b) : b;\n }\n\n __makeNative() {\n this._a.__makeNative();\n this._b.__makeNative();\n super.__makeNative();\n }\n\n __getValue(): number {\n const a = this._a.__getValue();\n const b = this._b.__getValue();\n if (b === 0) {\n console.error('Detected division by zero in AnimatedDivision');\n }\n return a / b;\n }\n\n interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n return new AnimatedInterpolation(this, config);\n }\n\n __attach(): void {\n this._a.__addChild(this);\n this._b.__addChild(this);\n }\n\n __detach(): void {\n this._a.__removeChild(this);\n this._b.__removeChild(this);\n super.__detach();\n }\n\n __getNativeConfig(): any {\n return {\n type: 'division',\n input: [this._a.__getNativeTag(), this._b.__getNativeTag()],\n };\n }\n}\n\nmodule.exports = AnimatedDivision;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst AnimatedInterpolation = require('./AnimatedInterpolation');\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\n\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\n\nclass AnimatedModulo extends AnimatedWithChildren {\n _a: AnimatedNode;\n _modulus: number;\n\n constructor(a: AnimatedNode, modulus: number) {\n super();\n this._a = a;\n this._modulus = modulus;\n }\n\n __makeNative() {\n this._a.__makeNative();\n super.__makeNative();\n }\n\n __getValue(): number {\n return (\n ((this._a.__getValue() % this._modulus) + this._modulus) % this._modulus\n );\n }\n\n interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n return new AnimatedInterpolation(this, config);\n }\n\n __attach(): void {\n this._a.__addChild(this);\n }\n\n __detach(): void {\n this._a.__removeChild(this);\n super.__detach();\n }\n\n __getNativeConfig(): any {\n return {\n type: 'modulus',\n input: this._a.__getNativeTag(),\n modulus: this._modulus,\n };\n }\n}\n\nmodule.exports = AnimatedModulo;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst AnimatedInterpolation = require('./AnimatedInterpolation');\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedValue = require('./AnimatedValue');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\n\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\n\nclass AnimatedMultiplication extends AnimatedWithChildren {\n _a: AnimatedNode;\n _b: AnimatedNode;\n\n constructor(a: AnimatedNode | number, b: AnimatedNode | number) {\n super();\n this._a = typeof a === 'number' ? new AnimatedValue(a) : a;\n this._b = typeof b === 'number' ? new AnimatedValue(b) : b;\n }\n\n __makeNative() {\n this._a.__makeNative();\n this._b.__makeNative();\n super.__makeNative();\n }\n\n __getValue(): number {\n return this._a.__getValue() * this._b.__getValue();\n }\n\n interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n return new AnimatedInterpolation(this, config);\n }\n\n __attach(): void {\n this._a.__addChild(this);\n this._b.__addChild(this);\n }\n\n __detach(): void {\n this._a.__removeChild(this);\n this._b.__removeChild(this);\n super.__detach();\n }\n\n __getNativeConfig(): any {\n return {\n type: 'multiplication',\n input: [this._a.__getNativeTag(), this._b.__getNativeTag()],\n };\n }\n}\n\nmodule.exports = AnimatedMultiplication;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst {AnimatedEvent} = require('../AnimatedEvent');\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedStyle = require('./AnimatedStyle');\nconst NativeAnimatedHelper = require('../NativeAnimatedHelper');\nconst ReactNative = require('ReactNative');\n\nconst invariant = require('fbjs/lib/invariant');\n\nclass AnimatedProps extends AnimatedNode {\n _props: Object;\n _animatedView: any;\n _callback: () => void;\n\n constructor(props: Object, callback: () => void) {\n super();\n if (props.style) {\n props = {\n ...props,\n style: new AnimatedStyle(props.style),\n };\n }\n this._props = props;\n this._callback = callback;\n this.__attach();\n }\n\n __getValue(): Object {\n const props = {};\n for (const key in this._props) {\n const value = this._props[key];\n if (value instanceof AnimatedNode) {\n if (!value.__isNative || value instanceof AnimatedStyle) {\n // We cannot use value of natively driven nodes this way as the value we have access from\n // JS may not be up to date.\n props[key] = value.__getValue();\n }\n } else if (value instanceof AnimatedEvent) {\n props[key] = value.__getHandler();\n } else {\n props[key] = value;\n }\n }\n return props;\n }\n\n __getAnimatedValue(): Object {\n const props = {};\n for (const key in this._props) {\n const value = this._props[key];\n if (value instanceof AnimatedNode) {\n props[key] = value.__getAnimatedValue();\n }\n }\n return props;\n }\n\n __attach(): void {\n for (const key in this._props) {\n const value = this._props[key];\n if (value instanceof AnimatedNode) {\n value.__addChild(this);\n }\n }\n }\n\n __detach(): void {\n if (this.__isNative && this._animatedView) {\n this.__disconnectAnimatedView();\n }\n for (const key in this._props) {\n const value = this._props[key];\n if (value instanceof AnimatedNode) {\n value.__removeChild(this);\n }\n }\n super.__detach();\n }\n\n update(): void {\n this._callback();\n }\n\n __makeNative(): void {\n if (!this.__isNative) {\n this.__isNative = true;\n for (const key in this._props) {\n const value = this._props[key];\n if (value instanceof AnimatedNode) {\n value.__makeNative();\n }\n }\n if (this._animatedView) {\n this.__connectAnimatedView();\n }\n }\n }\n\n setNativeView(animatedView: any): void {\n if (this._animatedView === animatedView) {\n return;\n }\n this._animatedView = animatedView;\n if (this.__isNative) {\n this.__connectAnimatedView();\n }\n }\n\n __connectAnimatedView(): void {\n invariant(this.__isNative, 'Expected node to be marked as \"native\"');\n const nativeViewTag: ?number = ReactNative.findNodeHandle(\n this._animatedView,\n );\n invariant(\n nativeViewTag != null,\n 'Unable to locate attached view in the native tree',\n );\n NativeAnimatedHelper.API.connectAnimatedNodeToView(\n this.__getNativeTag(),\n nativeViewTag,\n );\n }\n\n __disconnectAnimatedView(): void {\n invariant(this.__isNative, 'Expected node to be marked as \"native\"');\n const nativeViewTag: ?number = ReactNative.findNodeHandle(\n this._animatedView,\n );\n invariant(\n nativeViewTag != null,\n 'Unable to locate attached view in the native tree',\n );\n NativeAnimatedHelper.API.disconnectAnimatedNodeFromView(\n this.__getNativeTag(),\n nativeViewTag,\n );\n }\n\n __getNativeConfig(): Object {\n const propsConfig = {};\n for (const propKey in this._props) {\n const value = this._props[propKey];\n if (value instanceof AnimatedNode) {\n propsConfig[propKey] = value.__getNativeTag();\n }\n }\n return {\n type: 'props',\n props: propsConfig,\n };\n }\n}\n\nmodule.exports = AnimatedProps;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedTransform = require('./AnimatedTransform');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\nconst NativeAnimatedHelper = require('../NativeAnimatedHelper');\n\nconst flattenStyle = require('flattenStyle');\n\nclass AnimatedStyle extends AnimatedWithChildren {\n _style: Object;\n\n constructor(style: any) {\n super();\n style = flattenStyle(style) || {};\n if (style.transform) {\n style = {\n ...style,\n transform: new AnimatedTransform(style.transform),\n };\n }\n this._style = style;\n }\n\n // Recursively get values for nested styles (like iOS's shadowOffset)\n _walkStyleAndGetValues(style) {\n const updatedStyle = {};\n for (const key in style) {\n const value = style[key];\n if (value instanceof AnimatedNode) {\n if (!value.__isNative) {\n // We cannot use value of natively driven nodes this way as the value we have access from\n // JS may not be up to date.\n updatedStyle[key] = value.__getValue();\n }\n } else if (value && !Array.isArray(value) && typeof value === 'object') {\n // Support animating nested values (for example: shadowOffset.height)\n updatedStyle[key] = this._walkStyleAndGetValues(value);\n } else {\n updatedStyle[key] = value;\n }\n }\n return updatedStyle;\n }\n\n __getValue(): Object {\n return this._walkStyleAndGetValues(this._style);\n }\n\n // Recursively get animated values for nested styles (like iOS's shadowOffset)\n _walkStyleAndGetAnimatedValues(style) {\n const updatedStyle = {};\n for (const key in style) {\n const value = style[key];\n if (value instanceof AnimatedNode) {\n updatedStyle[key] = value.__getAnimatedValue();\n } else if (value && !Array.isArray(value) && typeof value === 'object') {\n // Support animating nested values (for example: shadowOffset.height)\n updatedStyle[key] = this._walkStyleAndGetAnimatedValues(value);\n }\n }\n return updatedStyle;\n }\n\n __getAnimatedValue(): Object {\n return this._walkStyleAndGetAnimatedValues(this._style);\n }\n\n __attach(): void {\n for (const key in this._style) {\n const value = this._style[key];\n if (value instanceof AnimatedNode) {\n value.__addChild(this);\n }\n }\n }\n\n __detach(): void {\n for (const key in this._style) {\n const value = this._style[key];\n if (value instanceof AnimatedNode) {\n value.__removeChild(this);\n }\n }\n super.__detach();\n }\n\n __makeNative() {\n for (const key in this._style) {\n const value = this._style[key];\n if (value instanceof AnimatedNode) {\n value.__makeNative();\n }\n }\n super.__makeNative();\n }\n\n __getNativeConfig(): Object {\n const styleConfig = {};\n for (const styleKey in this._style) {\n if (this._style[styleKey] instanceof AnimatedNode) {\n styleConfig[styleKey] = this._style[styleKey].__getNativeTag();\n }\n // Non-animated styles are set using `setNativeProps`, no need\n // to pass those as a part of the node config\n }\n NativeAnimatedHelper.validateStyles(styleConfig);\n return {\n type: 'style',\n style: styleConfig,\n };\n }\n}\n\nmodule.exports = AnimatedStyle;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\nconst NativeAnimatedHelper = require('../NativeAnimatedHelper');\n\nclass AnimatedTransform extends AnimatedWithChildren {\n _transforms: $ReadOnlyArray;\n\n constructor(transforms: $ReadOnlyArray) {\n super();\n this._transforms = transforms;\n }\n\n __makeNative() {\n this._transforms.forEach(transform => {\n for (const key in transform) {\n const value = transform[key];\n if (value instanceof AnimatedNode) {\n value.__makeNative();\n }\n }\n });\n super.__makeNative();\n }\n\n __getValue(): $ReadOnlyArray {\n return this._transforms.map(transform => {\n const result = {};\n for (const key in transform) {\n const value = transform[key];\n if (value instanceof AnimatedNode) {\n result[key] = value.__getValue();\n } else {\n result[key] = value;\n }\n }\n return result;\n });\n }\n\n __getAnimatedValue(): $ReadOnlyArray {\n return this._transforms.map(transform => {\n const result = {};\n for (const key in transform) {\n const value = transform[key];\n if (value instanceof AnimatedNode) {\n result[key] = value.__getAnimatedValue();\n } else {\n // All transform components needed to recompose matrix\n result[key] = value;\n }\n }\n return result;\n });\n }\n\n __attach(): void {\n this._transforms.forEach(transform => {\n for (const key in transform) {\n const value = transform[key];\n if (value instanceof AnimatedNode) {\n value.__addChild(this);\n }\n }\n });\n }\n\n __detach(): void {\n this._transforms.forEach(transform => {\n for (const key in transform) {\n const value = transform[key];\n if (value instanceof AnimatedNode) {\n value.__removeChild(this);\n }\n }\n });\n super.__detach();\n }\n\n __getNativeConfig(): any {\n const transConfigs = [];\n\n this._transforms.forEach(transform => {\n for (const key in transform) {\n const value = transform[key];\n if (value instanceof AnimatedNode) {\n transConfigs.push({\n type: 'animated',\n property: key,\n nodeTag: value.__getNativeTag(),\n });\n } else {\n transConfigs.push({\n type: 'static',\n property: key,\n value,\n });\n }\n }\n });\n\n NativeAnimatedHelper.validateTransform(transConfigs);\n return {\n type: 'transform',\n transforms: transConfigs,\n };\n }\n}\n\nmodule.exports = AnimatedTransform;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst AnimatedInterpolation = require('./AnimatedInterpolation');\nconst AnimatedNode = require('./AnimatedNode');\nconst AnimatedValue = require('./AnimatedValue');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\n\nimport type {InterpolationConfigType} from './AnimatedInterpolation';\n\nclass AnimatedSubtraction extends AnimatedWithChildren {\n _a: AnimatedNode;\n _b: AnimatedNode;\n\n constructor(a: AnimatedNode | number, b: AnimatedNode | number) {\n super();\n this._a = typeof a === 'number' ? new AnimatedValue(a) : a;\n this._b = typeof b === 'number' ? new AnimatedValue(b) : b;\n }\n\n __makeNative() {\n this._a.__makeNative();\n this._b.__makeNative();\n super.__makeNative();\n }\n\n __getValue(): number {\n return this._a.__getValue() - this._b.__getValue();\n }\n\n interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n return new AnimatedInterpolation(this, config);\n }\n\n __attach(): void {\n this._a.__addChild(this);\n this._b.__addChild(this);\n }\n\n __detach(): void {\n this._a.__removeChild(this);\n this._b.__removeChild(this);\n super.__detach();\n }\n\n __getNativeConfig(): any {\n return {\n type: 'subtraction',\n input: [this._a.__getNativeTag(), this._b.__getNativeTag()],\n };\n }\n}\n\nmodule.exports = AnimatedSubtraction;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst AnimatedValue = require('./AnimatedValue');\nconst AnimatedNode = require('./AnimatedNode');\nconst {\n generateNewAnimationId,\n shouldUseNativeDriver,\n} = require('../NativeAnimatedHelper');\n\nimport type {EndCallback} from '../animations/Animation';\n\nclass AnimatedTracking extends AnimatedNode {\n _value: AnimatedValue;\n _parent: AnimatedNode;\n _callback: ?EndCallback;\n _animationConfig: Object;\n _animationClass: any;\n _useNativeDriver: boolean;\n\n constructor(\n value: AnimatedValue,\n parent: AnimatedNode,\n animationClass: any,\n animationConfig: Object,\n callback?: ?EndCallback,\n ) {\n super();\n this._value = value;\n this._parent = parent;\n this._animationClass = animationClass;\n this._animationConfig = animationConfig;\n this._useNativeDriver = shouldUseNativeDriver(animationConfig);\n this._callback = callback;\n this.__attach();\n }\n\n __makeNative() {\n this.__isNative = true;\n this._parent.__makeNative();\n super.__makeNative();\n this._value.__makeNative();\n }\n\n __getValue(): Object {\n return this._parent.__getValue();\n }\n\n __attach(): void {\n this._parent.__addChild(this);\n if (this._useNativeDriver) {\n // when the tracking starts we need to convert this node to a \"native node\"\n // so that the parent node will be made \"native\" too. This is necessary as\n // if we don't do this `update` method will get called. At that point it\n // may be too late as it would mean the JS driver has already started\n // updating node values\n this.__makeNative();\n }\n }\n\n __detach(): void {\n this._parent.__removeChild(this);\n super.__detach();\n }\n\n update(): void {\n this._value.animate(\n new this._animationClass({\n ...this._animationConfig,\n toValue: (this._animationConfig.toValue: any).__getValue(),\n }),\n this._callback,\n );\n }\n\n __getNativeConfig(): any {\n const animation = new this._animationClass({\n ...this._animationConfig,\n // remove toValue from the config as it's a ref to Animated.Value\n toValue: undefined,\n });\n const animationConfig = animation.__getNativeAnimationConfig();\n return {\n type: 'tracking',\n animationId: generateNewAnimationId(),\n animationConfig,\n toValue: this._parent.__getNativeTag(),\n value: this._value.__getNativeTag(),\n };\n }\n}\n\nmodule.exports = AnimatedTracking;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst AnimatedValue = require('./AnimatedValue');\nconst AnimatedWithChildren = require('./AnimatedWithChildren');\n\nconst invariant = require('fbjs/lib/invariant');\n\ntype ValueXYListenerCallback = (value: {x: number, y: number}) => void;\n\nlet _uniqueId = 1;\n\n/**\n * 2D Value for driving 2D animations, such as pan gestures. Almost identical\n * API to normal `Animated.Value`, but multiplexed.\n *\n * See http://facebook.github.io/react-native/docs/animatedvaluexy.html\n */\nclass AnimatedValueXY extends AnimatedWithChildren {\n x: AnimatedValue;\n y: AnimatedValue;\n _listeners: {[key: string]: {x: string, y: string}};\n\n constructor(\n valueIn?: ?{+x: number | AnimatedValue, +y: number | AnimatedValue},\n ) {\n super();\n const value: any = valueIn || {x: 0, y: 0}; // @flowfixme: shouldn't need `: any`\n if (typeof value.x === 'number' && typeof value.y === 'number') {\n this.x = new AnimatedValue(value.x);\n this.y = new AnimatedValue(value.y);\n } else {\n invariant(\n value.x instanceof AnimatedValue && value.y instanceof AnimatedValue,\n 'AnimatedValueXY must be initialized with an object of numbers or ' +\n 'AnimatedValues.',\n );\n this.x = value.x;\n this.y = value.y;\n }\n this._listeners = {};\n }\n\n /**\n * Directly set the value. This will stop any animations running on the value\n * and update all the bound properties.\n *\n * See http://facebook.github.io/react-native/docs/animatedvaluexy.html#setvalue\n */\n setValue(value: {x: number, y: number}) {\n this.x.setValue(value.x);\n this.y.setValue(value.y);\n }\n\n /**\n * Sets an offset that is applied on top of whatever value is set, whether\n * via `setValue`, an animation, or `Animated.event`. Useful for compensating\n * things like the start of a pan gesture.\n *\n * See http://facebook.github.io/react-native/docs/animatedvaluexy.html#setoffset\n */\n setOffset(offset: {x: number, y: number}) {\n this.x.setOffset(offset.x);\n this.y.setOffset(offset.y);\n }\n\n /**\n * Merges the offset value into the base value and resets the offset to zero.\n * The final output of the value is unchanged.\n *\n * See http://facebook.github.io/react-native/docs/animatedvaluexy.html#flattenoffset\n */\n flattenOffset(): void {\n this.x.flattenOffset();\n this.y.flattenOffset();\n }\n\n /**\n * Sets the offset value to the base value, and resets the base value to\n * zero. The final output of the value is unchanged.\n *\n * See http://facebook.github.io/react-native/docs/animatedvaluexy.html#extractoffset\n */\n extractOffset(): void {\n this.x.extractOffset();\n this.y.extractOffset();\n }\n\n __getValue(): {x: number, y: number} {\n return {\n x: this.x.__getValue(),\n y: this.y.__getValue(),\n };\n }\n\n /**\n * Stops any animation and resets the value to its original.\n *\n * See http://facebook.github.io/react-native/docs/animatedvaluexy.html#resetanimation\n */\n resetAnimation(callback?: (value: {x: number, y: number}) => void): void {\n this.x.resetAnimation();\n this.y.resetAnimation();\n callback && callback(this.__getValue());\n }\n\n /**\n * Stops any running animation or tracking. `callback` is invoked with the\n * final value after stopping the animation, which is useful for updating\n * state to match the animation position with layout.\n *\n * See http://facebook.github.io/react-native/docs/animatedvaluexy.html#stopanimation\n */\n stopAnimation(callback?: (value: {x: number, y: number}) => void): void {\n this.x.stopAnimation();\n this.y.stopAnimation();\n callback && callback(this.__getValue());\n }\n\n /**\n * Adds an asynchronous listener to the value so you can observe updates from\n * animations. This is useful because there is no way to synchronously read\n * the value because it might be driven natively.\n *\n * Returns a string that serves as an identifier for the listener.\n *\n * See http://facebook.github.io/react-native/docs/animatedvaluexy.html#addlistener\n */\n addListener(callback: ValueXYListenerCallback): string {\n const id = String(_uniqueId++);\n const jointCallback = ({value: number}) => {\n callback(this.__getValue());\n };\n this._listeners[id] = {\n x: this.x.addListener(jointCallback),\n y: this.y.addListener(jointCallback),\n };\n return id;\n }\n\n /**\n * Unregister a listener. The `id` param shall match the identifier\n * previously returned by `addListener()`.\n *\n * See http://facebook.github.io/react-native/docs/animatedvaluexy.html#removelistener\n */\n removeListener(id: string): void {\n this.x.removeListener(this._listeners[id].x);\n this.y.removeListener(this._listeners[id].y);\n delete this._listeners[id];\n }\n\n /**\n * Remove all registered listeners.\n *\n * See http://facebook.github.io/react-native/docs/animatedvaluexy.html#removealllisteners\n */\n removeAllListeners(): void {\n this.x.removeAllListeners();\n this.y.removeAllListeners();\n this._listeners = {};\n }\n\n /**\n * Converts `{x, y}` into `{left, top}` for use in style.\n *\n * See http://facebook.github.io/react-native/docs/animatedvaluexy.html#getlayout\n */\n getLayout(): {[key: string]: AnimatedValue} {\n return {\n left: this.x,\n top: this.y,\n };\n }\n\n /**\n * Converts `{x, y}` into a useable translation transform.\n *\n * See http://facebook.github.io/react-native/docs/animatedvaluexy.html#gettranslatetransform\n */\n getTranslateTransform(): Array<{[key: string]: AnimatedValue}> {\n return [{translateX: this.x}, {translateY: this.y}];\n }\n}\n\nmodule.exports = AnimatedValueXY;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst Animation = require('./Animation');\n\nconst {shouldUseNativeDriver} = require('../NativeAnimatedHelper');\n\nimport type {AnimationConfig, EndCallback} from './Animation';\nimport type AnimatedValue from '../nodes/AnimatedValue';\n\nexport type DecayAnimationConfig = AnimationConfig & {\n velocity: number | {x: number, y: number},\n deceleration?: number,\n};\n\nexport type DecayAnimationConfigSingle = AnimationConfig & {\n velocity: number,\n deceleration?: number,\n};\n\nclass DecayAnimation extends Animation {\n _startTime: number;\n _lastValue: number;\n _fromValue: number;\n _deceleration: number;\n _velocity: number;\n _onUpdate: (value: number) => void;\n _animationFrame: any;\n _useNativeDriver: boolean;\n\n constructor(config: DecayAnimationConfigSingle) {\n super();\n this._deceleration =\n config.deceleration !== undefined ? config.deceleration : 0.998;\n this._velocity = config.velocity;\n this._useNativeDriver = shouldUseNativeDriver(config);\n this.__isInteraction =\n config.isInteraction !== undefined ? config.isInteraction : true;\n this.__iterations = config.iterations !== undefined ? config.iterations : 1;\n }\n\n __getNativeAnimationConfig() {\n return {\n type: 'decay',\n deceleration: this._deceleration,\n velocity: this._velocity,\n iterations: this.__iterations,\n };\n }\n\n start(\n fromValue: number,\n onUpdate: (value: number) => void,\n onEnd: ?EndCallback,\n previousAnimation: ?Animation,\n animatedValue: AnimatedValue,\n ): void {\n this.__active = true;\n this._lastValue = fromValue;\n this._fromValue = fromValue;\n this._onUpdate = onUpdate;\n this.__onEnd = onEnd;\n this._startTime = Date.now();\n if (this._useNativeDriver) {\n this.__startNativeAnimation(animatedValue);\n } else {\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n }\n\n onUpdate(): void {\n const now = Date.now();\n\n const value =\n this._fromValue +\n (this._velocity / (1 - this._deceleration)) *\n (1 - Math.exp(-(1 - this._deceleration) * (now - this._startTime)));\n\n this._onUpdate(value);\n\n if (Math.abs(this._lastValue - value) < 0.1) {\n this.__debouncedOnEnd({finished: true});\n return;\n }\n\n this._lastValue = value;\n if (this.__active) {\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n }\n\n stop(): void {\n super.stop();\n this.__active = false;\n global.cancelAnimationFrame(this._animationFrame);\n this.__debouncedOnEnd({finished: false});\n }\n}\n\nmodule.exports = DecayAnimation;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst NativeAnimatedHelper = require('NativeAnimatedHelper');\n\nimport type AnimatedValue from '../nodes/AnimatedValue';\n\nexport type EndResult = {finished: boolean};\nexport type EndCallback = (result: EndResult) => void;\n\nexport type AnimationConfig = {\n isInteraction?: boolean,\n useNativeDriver?: boolean,\n onComplete?: ?EndCallback,\n iterations?: number,\n};\n\n// Important note: start() and stop() will only be called at most once.\n// Once an animation has been stopped or finished its course, it will\n// not be reused.\nclass Animation {\n __active: boolean;\n __isInteraction: boolean;\n __nativeId: number;\n __onEnd: ?EndCallback;\n __iterations: number;\n start(\n fromValue: number,\n onUpdate: (value: number) => void,\n onEnd: ?EndCallback,\n previousAnimation: ?Animation,\n animatedValue: AnimatedValue,\n ): void {}\n stop(): void {\n if (this.__nativeId) {\n NativeAnimatedHelper.API.stopAnimation(this.__nativeId);\n }\n }\n __getNativeAnimationConfig(): any {\n // Subclasses that have corresponding animation implementation done in native\n // should override this method\n throw new Error('This animation type cannot be offloaded to native');\n }\n // Helper function for subclasses to make sure onEnd is only called once.\n __debouncedOnEnd(result: EndResult): void {\n const onEnd = this.__onEnd;\n this.__onEnd = null;\n onEnd && onEnd(result);\n }\n __startNativeAnimation(animatedValue: AnimatedValue): void {\n animatedValue.__makeNative();\n this.__nativeId = NativeAnimatedHelper.generateNewAnimationId();\n NativeAnimatedHelper.API.startAnimatingNode(\n this.__nativeId,\n animatedValue.__getNativeTag(),\n this.__getNativeAnimationConfig(),\n this.__debouncedOnEnd.bind(this),\n );\n }\n}\n\nmodule.exports = Animation;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst AnimatedValue = require('../nodes/AnimatedValue');\nconst AnimatedValueXY = require('../nodes/AnimatedValueXY');\nconst Animation = require('./Animation');\nconst SpringConfig = require('../SpringConfig');\n\nconst invariant = require('fbjs/lib/invariant');\nconst {shouldUseNativeDriver} = require('../NativeAnimatedHelper');\n\nimport type {AnimationConfig, EndCallback} from './Animation';\n\nexport type SpringAnimationConfig = AnimationConfig & {\n toValue: number | AnimatedValue | {x: number, y: number} | AnimatedValueXY,\n overshootClamping?: boolean,\n restDisplacementThreshold?: number,\n restSpeedThreshold?: number,\n velocity?: number | {x: number, y: number},\n bounciness?: number,\n speed?: number,\n tension?: number,\n friction?: number,\n stiffness?: number,\n damping?: number,\n mass?: number,\n delay?: number,\n};\n\nexport type SpringAnimationConfigSingle = AnimationConfig & {\n toValue: number | AnimatedValue,\n overshootClamping?: boolean,\n restDisplacementThreshold?: number,\n restSpeedThreshold?: number,\n velocity?: number,\n bounciness?: number,\n speed?: number,\n tension?: number,\n friction?: number,\n stiffness?: number,\n damping?: number,\n mass?: number,\n delay?: number,\n};\n\nfunction withDefault(value: ?T, defaultValue: T): T {\n if (value === undefined || value === null) {\n return defaultValue;\n }\n return value;\n}\n\nclass SpringAnimation extends Animation {\n _overshootClamping: boolean;\n _restDisplacementThreshold: number;\n _restSpeedThreshold: number;\n _lastVelocity: number;\n _startPosition: number;\n _lastPosition: number;\n _fromValue: number;\n _toValue: any;\n _stiffness: number;\n _damping: number;\n _mass: number;\n _initialVelocity: number;\n _delay: number;\n _timeout: any;\n _startTime: number;\n _lastTime: number;\n _frameTime: number;\n _onUpdate: (value: number) => void;\n _animationFrame: any;\n _useNativeDriver: boolean;\n\n constructor(config: SpringAnimationConfigSingle) {\n super();\n\n this._overshootClamping = withDefault(config.overshootClamping, false);\n this._restDisplacementThreshold = withDefault(\n config.restDisplacementThreshold,\n 0.001,\n );\n this._restSpeedThreshold = withDefault(config.restSpeedThreshold, 0.001);\n this._initialVelocity = withDefault(config.velocity, 0);\n this._lastVelocity = withDefault(config.velocity, 0);\n this._toValue = config.toValue;\n this._delay = withDefault(config.delay, 0);\n this._useNativeDriver = shouldUseNativeDriver(config);\n this.__isInteraction =\n config.isInteraction !== undefined ? config.isInteraction : true;\n this.__iterations = config.iterations !== undefined ? config.iterations : 1;\n\n if (\n config.stiffness !== undefined ||\n config.damping !== undefined ||\n config.mass !== undefined\n ) {\n invariant(\n config.bounciness === undefined &&\n config.speed === undefined &&\n config.tension === undefined &&\n config.friction === undefined,\n 'You can define one of bounciness/speed, tension/friction, or stiffness/damping/mass, but not more than one',\n );\n this._stiffness = withDefault(config.stiffness, 100);\n this._damping = withDefault(config.damping, 10);\n this._mass = withDefault(config.mass, 1);\n } else if (config.bounciness !== undefined || config.speed !== undefined) {\n // Convert the origami bounciness/speed values to stiffness/damping\n // We assume mass is 1.\n invariant(\n config.tension === undefined &&\n config.friction === undefined &&\n config.stiffness === undefined &&\n config.damping === undefined &&\n config.mass === undefined,\n 'You can define one of bounciness/speed, tension/friction, or stiffness/damping/mass, but not more than one',\n );\n const springConfig = SpringConfig.fromBouncinessAndSpeed(\n withDefault(config.bounciness, 8),\n withDefault(config.speed, 12),\n );\n this._stiffness = springConfig.stiffness;\n this._damping = springConfig.damping;\n this._mass = 1;\n } else {\n // Convert the origami tension/friction values to stiffness/damping\n // We assume mass is 1.\n const springConfig = SpringConfig.fromOrigamiTensionAndFriction(\n withDefault(config.tension, 40),\n withDefault(config.friction, 7),\n );\n this._stiffness = springConfig.stiffness;\n this._damping = springConfig.damping;\n this._mass = 1;\n }\n\n invariant(this._stiffness > 0, 'Stiffness value must be greater than 0');\n invariant(this._damping > 0, 'Damping value must be greater than 0');\n invariant(this._mass > 0, 'Mass value must be greater than 0');\n }\n\n __getNativeAnimationConfig() {\n return {\n type: 'spring',\n overshootClamping: this._overshootClamping,\n restDisplacementThreshold: this._restDisplacementThreshold,\n restSpeedThreshold: this._restSpeedThreshold,\n stiffness: this._stiffness,\n damping: this._damping,\n mass: this._mass,\n initialVelocity: withDefault(this._initialVelocity, this._lastVelocity),\n toValue: this._toValue,\n iterations: this.__iterations,\n };\n }\n\n start(\n fromValue: number,\n onUpdate: (value: number) => void,\n onEnd: ?EndCallback,\n previousAnimation: ?Animation,\n animatedValue: AnimatedValue,\n ): void {\n this.__active = true;\n this._startPosition = fromValue;\n this._lastPosition = this._startPosition;\n\n this._onUpdate = onUpdate;\n this.__onEnd = onEnd;\n this._lastTime = Date.now();\n this._frameTime = 0.0;\n\n if (previousAnimation instanceof SpringAnimation) {\n const internalState = previousAnimation.getInternalState();\n this._lastPosition = internalState.lastPosition;\n this._lastVelocity = internalState.lastVelocity;\n // Set the initial velocity to the last velocity\n this._initialVelocity = this._lastVelocity;\n this._lastTime = internalState.lastTime;\n }\n\n const start = () => {\n if (this._useNativeDriver) {\n this.__startNativeAnimation(animatedValue);\n } else {\n this.onUpdate();\n }\n };\n\n // If this._delay is more than 0, we start after the timeout.\n if (this._delay) {\n this._timeout = setTimeout(start, this._delay);\n } else {\n start();\n }\n }\n\n getInternalState(): Object {\n return {\n lastPosition: this._lastPosition,\n lastVelocity: this._lastVelocity,\n lastTime: this._lastTime,\n };\n }\n\n /**\n * This spring model is based off of a damped harmonic oscillator\n * (https://en.wikipedia.org/wiki/Harmonic_oscillator#Damped_harmonic_oscillator).\n *\n * We use the closed form of the second order differential equation:\n *\n * x'' + (2ζ⍵_0)x' + ⍵^2x = 0\n *\n * where\n * ⍵_0 = √(k / m) (undamped angular frequency of the oscillator),\n * ζ = c / 2√mk (damping ratio),\n * c = damping constant\n * k = stiffness\n * m = mass\n *\n * The derivation of the closed form is described in detail here:\n * http://planetmath.org/sites/default/files/texpdf/39745.pdf\n *\n * This algorithm happens to match the algorithm used by CASpringAnimation,\n * a QuartzCore (iOS) API that creates spring animations.\n */\n onUpdate(): void {\n // If for some reason we lost a lot of frames (e.g. process large payload or\n // stopped in the debugger), we only advance by 4 frames worth of\n // computation and will continue on the next frame. It's better to have it\n // running at faster speed than jumping to the end.\n const MAX_STEPS = 64;\n let now = Date.now();\n if (now > this._lastTime + MAX_STEPS) {\n now = this._lastTime + MAX_STEPS;\n }\n\n const deltaTime = (now - this._lastTime) / 1000;\n this._frameTime += deltaTime;\n\n const c: number = this._damping;\n const m: number = this._mass;\n const k: number = this._stiffness;\n const v0: number = -this._initialVelocity;\n\n const zeta = c / (2 * Math.sqrt(k * m)); // damping ratio\n const omega0 = Math.sqrt(k / m); // undamped angular frequency of the oscillator (rad/ms)\n const omega1 = omega0 * Math.sqrt(1.0 - zeta * zeta); // exponential decay\n const x0 = this._toValue - this._startPosition; // calculate the oscillation from x0 = 1 to x = 0\n\n let position = 0.0;\n let velocity = 0.0;\n const t = this._frameTime;\n if (zeta < 1) {\n // Under damped\n const envelope = Math.exp(-zeta * omega0 * t);\n position =\n this._toValue -\n envelope *\n (((v0 + zeta * omega0 * x0) / omega1) * Math.sin(omega1 * t) +\n x0 * Math.cos(omega1 * t));\n // This looks crazy -- it's actually just the derivative of the\n // oscillation function\n velocity =\n zeta *\n omega0 *\n envelope *\n ((Math.sin(omega1 * t) * (v0 + zeta * omega0 * x0)) / omega1 +\n x0 * Math.cos(omega1 * t)) -\n envelope *\n (Math.cos(omega1 * t) * (v0 + zeta * omega0 * x0) -\n omega1 * x0 * Math.sin(omega1 * t));\n } else {\n // Critically damped\n const envelope = Math.exp(-omega0 * t);\n position = this._toValue - envelope * (x0 + (v0 + omega0 * x0) * t);\n velocity =\n envelope * (v0 * (t * omega0 - 1) + t * x0 * (omega0 * omega0));\n }\n\n this._lastTime = now;\n this._lastPosition = position;\n this._lastVelocity = velocity;\n\n this._onUpdate(position);\n if (!this.__active) {\n // a listener might have stopped us in _onUpdate\n return;\n }\n\n // Conditions for stopping the spring animation\n let isOvershooting = false;\n if (this._overshootClamping && this._stiffness !== 0) {\n if (this._startPosition < this._toValue) {\n isOvershooting = position > this._toValue;\n } else {\n isOvershooting = position < this._toValue;\n }\n }\n const isVelocity = Math.abs(velocity) <= this._restSpeedThreshold;\n let isDisplacement = true;\n if (this._stiffness !== 0) {\n isDisplacement =\n Math.abs(this._toValue - position) <= this._restDisplacementThreshold;\n }\n\n if (isOvershooting || (isVelocity && isDisplacement)) {\n if (this._stiffness !== 0) {\n // Ensure that we end up with a round value\n this._lastPosition = this._toValue;\n this._lastVelocity = 0;\n this._onUpdate(this._toValue);\n }\n\n this.__debouncedOnEnd({finished: true});\n return;\n }\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n\n stop(): void {\n super.stop();\n this.__active = false;\n clearTimeout(this._timeout);\n global.cancelAnimationFrame(this._animationFrame);\n this.__debouncedOnEnd({finished: false});\n }\n}\n\nmodule.exports = SpringAnimation;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict\n */\n\n'use strict';\n\ntype SpringConfigType = {\n stiffness: number,\n damping: number,\n};\n\nfunction stiffnessFromOrigamiValue(oValue) {\n return (oValue - 30) * 3.62 + 194;\n}\n\nfunction dampingFromOrigamiValue(oValue) {\n return (oValue - 8) * 3 + 25;\n}\n\nfunction fromOrigamiTensionAndFriction(\n tension: number,\n friction: number,\n): SpringConfigType {\n return {\n stiffness: stiffnessFromOrigamiValue(tension),\n damping: dampingFromOrigamiValue(friction),\n };\n}\n\nfunction fromBouncinessAndSpeed(\n bounciness: number,\n speed: number,\n): SpringConfigType {\n function normalize(value, startValue, endValue) {\n return (value - startValue) / (endValue - startValue);\n }\n\n function projectNormal(n, start, end) {\n return start + n * (end - start);\n }\n\n function linearInterpolation(t, start, end) {\n return t * end + (1 - t) * start;\n }\n\n function quadraticOutInterpolation(t, start, end) {\n return linearInterpolation(2 * t - t * t, start, end);\n }\n\n function b3Friction1(x) {\n return 0.0007 * Math.pow(x, 3) - 0.031 * Math.pow(x, 2) + 0.64 * x + 1.28;\n }\n\n function b3Friction2(x) {\n return 0.000044 * Math.pow(x, 3) - 0.006 * Math.pow(x, 2) + 0.36 * x + 2;\n }\n\n function b3Friction3(x) {\n return (\n 0.00000045 * Math.pow(x, 3) -\n 0.000332 * Math.pow(x, 2) +\n 0.1078 * x +\n 5.84\n );\n }\n\n function b3Nobounce(tension) {\n if (tension <= 18) {\n return b3Friction1(tension);\n } else if (tension > 18 && tension <= 44) {\n return b3Friction2(tension);\n } else {\n return b3Friction3(tension);\n }\n }\n\n let b = normalize(bounciness / 1.7, 0, 20);\n b = projectNormal(b, 0, 0.8);\n const s = normalize(speed / 1.7, 0, 20);\n const bouncyTension = projectNormal(s, 0.5, 200);\n const bouncyFriction = quadraticOutInterpolation(\n b,\n b3Nobounce(bouncyTension),\n 0.01,\n );\n\n return {\n stiffness: stiffnessFromOrigamiValue(bouncyTension),\n damping: dampingFromOrigamiValue(bouncyFriction),\n };\n}\n\nmodule.exports = {\n fromOrigamiTensionAndFriction,\n fromBouncinessAndSpeed,\n};\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst AnimatedValue = require('../nodes/AnimatedValue');\nconst AnimatedValueXY = require('../nodes/AnimatedValueXY');\nconst Animation = require('./Animation');\n\nconst {shouldUseNativeDriver} = require('../NativeAnimatedHelper');\n\nimport type {AnimationConfig, EndCallback} from './Animation';\n\nexport type TimingAnimationConfig = AnimationConfig & {\n toValue: number | AnimatedValue | {x: number, y: number} | AnimatedValueXY,\n easing?: (value: number) => number,\n duration?: number,\n delay?: number,\n};\n\nexport type TimingAnimationConfigSingle = AnimationConfig & {\n toValue: number | AnimatedValue,\n easing?: (value: number) => number,\n duration?: number,\n delay?: number,\n};\n\nlet _easeInOut;\nfunction easeInOut() {\n if (!_easeInOut) {\n const Easing = require('Easing');\n _easeInOut = Easing.inOut(Easing.ease);\n }\n return _easeInOut;\n}\n\nclass TimingAnimation extends Animation {\n _startTime: number;\n _fromValue: number;\n _toValue: any;\n _duration: number;\n _delay: number;\n _easing: (value: number) => number;\n _onUpdate: (value: number) => void;\n _animationFrame: any;\n _timeout: any;\n _useNativeDriver: boolean;\n\n constructor(config: TimingAnimationConfigSingle) {\n super();\n this._toValue = config.toValue;\n this._easing = config.easing !== undefined ? config.easing : easeInOut();\n this._duration = config.duration !== undefined ? config.duration : 500;\n this._delay = config.delay !== undefined ? config.delay : 0;\n this.__iterations = config.iterations !== undefined ? config.iterations : 1;\n this.__isInteraction =\n config.isInteraction !== undefined ? config.isInteraction : true;\n this._useNativeDriver = shouldUseNativeDriver(config);\n }\n\n __getNativeAnimationConfig(): any {\n const frameDuration = 1000.0 / 60.0;\n const frames = [];\n for (let dt = 0.0; dt < this._duration; dt += frameDuration) {\n frames.push(this._easing(dt / this._duration));\n }\n frames.push(this._easing(1));\n return {\n type: 'frames',\n frames,\n toValue: this._toValue,\n iterations: this.__iterations,\n };\n }\n\n start(\n fromValue: number,\n onUpdate: (value: number) => void,\n onEnd: ?EndCallback,\n previousAnimation: ?Animation,\n animatedValue: AnimatedValue,\n ): void {\n this.__active = true;\n this._fromValue = fromValue;\n this._onUpdate = onUpdate;\n this.__onEnd = onEnd;\n\n const start = () => {\n // Animations that sometimes have 0 duration and sometimes do not\n // still need to use the native driver when duration is 0 so as to\n // not cause intermixed JS and native animations.\n if (this._duration === 0 && !this._useNativeDriver) {\n this._onUpdate(this._toValue);\n this.__debouncedOnEnd({finished: true});\n } else {\n this._startTime = Date.now();\n if (this._useNativeDriver) {\n this.__startNativeAnimation(animatedValue);\n } else {\n this._animationFrame = requestAnimationFrame(\n this.onUpdate.bind(this),\n );\n }\n }\n };\n if (this._delay) {\n this._timeout = setTimeout(start, this._delay);\n } else {\n start();\n }\n }\n\n onUpdate(): void {\n const now = Date.now();\n if (now >= this._startTime + this._duration) {\n if (this._duration === 0) {\n this._onUpdate(this._toValue);\n } else {\n this._onUpdate(\n this._fromValue + this._easing(1) * (this._toValue - this._fromValue),\n );\n }\n this.__debouncedOnEnd({finished: true});\n return;\n }\n\n this._onUpdate(\n this._fromValue +\n this._easing((now - this._startTime) / this._duration) *\n (this._toValue - this._fromValue),\n );\n if (this.__active) {\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n }\n\n stop(): void {\n super.stop();\n this.__active = false;\n clearTimeout(this._timeout);\n global.cancelAnimationFrame(this._animationFrame);\n this.__debouncedOnEnd({finished: false});\n }\n}\n\nmodule.exports = TimingAnimation;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nlet ease;\n\n/**\n * The `Easing` module implements common easing functions. This module is used\n * by [Animate.timing()](docs/animate.html#timing) to convey physically\n * believable motion in animations.\n *\n * You can find a visualization of some common easing functions at\n * http://easings.net/\n *\n * ### Predefined animations\n *\n * The `Easing` module provides several predefined animations through the\n * following methods:\n *\n * - [`back`](docs/easing.html#back) provides a simple animation where the\n * object goes slightly back before moving forward\n * - [`bounce`](docs/easing.html#bounce) provides a bouncing animation\n * - [`ease`](docs/easing.html#ease) provides a simple inertial animation\n * - [`elastic`](docs/easing.html#elastic) provides a simple spring interaction\n *\n * ### Standard functions\n *\n * Three standard easing functions are provided:\n *\n * - [`linear`](docs/easing.html#linear)\n * - [`quad`](docs/easing.html#quad)\n * - [`cubic`](docs/easing.html#cubic)\n *\n * The [`poly`](docs/easing.html#poly) function can be used to implement\n * quartic, quintic, and other higher power functions.\n *\n * ### Additional functions\n *\n * Additional mathematical functions are provided by the following methods:\n *\n * - [`bezier`](docs/easing.html#bezier) provides a cubic bezier curve\n * - [`circle`](docs/easing.html#circle) provides a circular function\n * - [`sin`](docs/easing.html#sin) provides a sinusoidal function\n * - [`exp`](docs/easing.html#exp) provides an exponential function\n *\n * The following helpers are used to modify other easing functions.\n *\n * - [`in`](docs/easing.html#in) runs an easing function forwards\n * - [`inOut`](docs/easing.html#inout) makes any easing function symmetrical\n * - [`out`](docs/easing.html#out) runs an easing function backwards\n */\nclass Easing {\n /**\n * A stepping function, returns 1 for any positive value of `n`.\n */\n static step0(n: number) {\n return n > 0 ? 1 : 0;\n }\n\n /**\n * A stepping function, returns 1 if `n` is greater than or equal to 1.\n */\n static step1(n: number) {\n return n >= 1 ? 1 : 0;\n }\n\n /**\n * A linear function, `f(t) = t`. Position correlates to elapsed time one to\n * one.\n *\n * http://cubic-bezier.com/#0,0,1,1\n */\n static linear(t: number) {\n return t;\n }\n\n /**\n * A simple inertial interaction, similar to an object slowly accelerating to\n * speed.\n *\n * http://cubic-bezier.com/#.42,0,1,1\n */\n static ease(t: number): number {\n if (!ease) {\n ease = Easing.bezier(0.42, 0, 1, 1);\n }\n return ease(t);\n }\n\n /**\n * A quadratic function, `f(t) = t * t`. Position equals the square of elapsed\n * time.\n *\n * http://easings.net/#easeInQuad\n */\n static quad(t: number) {\n return t * t;\n }\n\n /**\n * A cubic function, `f(t) = t * t * t`. Position equals the cube of elapsed\n * time.\n *\n * http://easings.net/#easeInCubic\n */\n static cubic(t: number) {\n return t * t * t;\n }\n\n /**\n * A power function. Position is equal to the Nth power of elapsed time.\n *\n * n = 4: http://easings.net/#easeInQuart\n * n = 5: http://easings.net/#easeInQuint\n */\n static poly(n: number) {\n return (t: number) => Math.pow(t, n);\n }\n\n /**\n * A sinusoidal function.\n *\n * http://easings.net/#easeInSine\n */\n static sin(t: number) {\n return 1 - Math.cos((t * Math.PI) / 2);\n }\n\n /**\n * A circular function.\n *\n * http://easings.net/#easeInCirc\n */\n static circle(t: number) {\n return 1 - Math.sqrt(1 - t * t);\n }\n\n /**\n * An exponential function.\n *\n * http://easings.net/#easeInExpo\n */\n static exp(t: number) {\n return Math.pow(2, 10 * (t - 1));\n }\n\n /**\n * A simple elastic interaction, similar to a spring oscillating back and\n * forth.\n *\n * Default bounciness is 1, which overshoots a little bit once. 0 bounciness\n * doesn't overshoot at all, and bounciness of N > 1 will overshoot about N\n * times.\n *\n * http://easings.net/#easeInElastic\n */\n static elastic(bounciness: number = 1): (t: number) => number {\n const p = bounciness * Math.PI;\n return t => 1 - Math.pow(Math.cos((t * Math.PI) / 2), 3) * Math.cos(t * p);\n }\n\n /**\n * Use with `Animated.parallel()` to create a simple effect where the object\n * animates back slightly as the animation starts.\n *\n * Wolfram Plot:\n *\n * - http://tiny.cc/back_default (s = 1.70158, default)\n */\n static back(s: number): (t: number) => number {\n if (s === undefined) {\n s = 1.70158;\n }\n return t => t * t * ((s + 1) * t - s);\n }\n\n /**\n * Provides a simple bouncing effect.\n *\n * http://easings.net/#easeInBounce\n */\n static bounce(t: number): number {\n if (t < 1 / 2.75) {\n return 7.5625 * t * t;\n }\n\n if (t < 2 / 2.75) {\n t -= 1.5 / 2.75;\n return 7.5625 * t * t + 0.75;\n }\n\n if (t < 2.5 / 2.75) {\n t -= 2.25 / 2.75;\n return 7.5625 * t * t + 0.9375;\n }\n\n t -= 2.625 / 2.75;\n return 7.5625 * t * t + 0.984375;\n }\n\n /**\n * Provides a cubic bezier curve, equivalent to CSS Transitions'\n * `transition-timing-function`.\n *\n * A useful tool to visualize cubic bezier curves can be found at\n * http://cubic-bezier.com/\n */\n static bezier(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n ): (t: number) => number {\n const _bezier = require('bezier');\n return _bezier(x1, y1, x2, y2);\n }\n\n /**\n * Runs an easing function forwards.\n */\n static in(easing: (t: number) => number): (t: number) => number {\n return easing;\n }\n\n /**\n * Runs an easing function backwards.\n */\n static out(easing: (t: number) => number): (t: number) => number {\n return t => 1 - easing(1 - t);\n }\n\n /**\n * Makes any easing function symmetrical. The easing function will run\n * forwards for half of the duration, then backwards for the rest of the\n * duration.\n */\n static inOut(easing: (t: number) => number): (t: number) => number {\n return t => {\n if (t < 0.5) {\n return easing(t * 2) / 2;\n }\n return 1 - easing((1 - t) * 2) / 2;\n };\n }\n}\n\nmodule.exports = Easing;\n","/**\n * BezierEasing - use bezier curve for transition easing function\n * https://github.com/gre/bezier-easing\n *\n * @flow\n * @format\n * @copyright 2014-2015 Gaëtan Renaudeau. MIT License.\n */\n\n'use strict';\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nconst NEWTON_ITERATIONS = 4;\nconst NEWTON_MIN_SLOPE = 0.001;\nconst SUBDIVISION_PRECISION = 0.0000001;\nconst SUBDIVISION_MAX_ITERATIONS = 10;\n\nconst kSplineTableSize = 11;\nconst kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nconst float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n}\nfunction B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n}\nfunction C(aA1) {\n return 3.0 * aA1;\n}\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n}\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n}\n\nfunction binarySubdivide(aX, aA, aB, mX1, mX2) {\n let currentX,\n currentT,\n i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (\n Math.abs(currentX) > SUBDIVISION_PRECISION &&\n ++i < SUBDIVISION_MAX_ITERATIONS\n );\n return currentT;\n}\n\nfunction newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (let i = 0; i < NEWTON_ITERATIONS; ++i) {\n const currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n const currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\n\nmodule.exports = function bezier(\n mX1: number,\n mY1: number,\n mX2: number,\n mY2: number,\n) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n throw new Error('bezier x values must be in [0, 1] range');\n }\n\n // Precompute samples table\n const sampleValues = float32ArraySupported\n ? new Float32Array(kSplineTableSize)\n : new Array(kSplineTableSize);\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (let i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n let intervalStart = 0.0;\n let currentSample = 1;\n const lastSample = kSplineTableSize - 1;\n\n for (\n ;\n currentSample !== lastSample && sampleValues[currentSample] <= aX;\n ++currentSample\n ) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n const dist =\n (aX - sampleValues[currentSample]) /\n (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n const guessForT = intervalStart + dist * kSampleStepSize;\n\n const initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(\n aX,\n intervalStart,\n intervalStart + kSampleStepSize,\n mX1,\n mX2,\n );\n }\n }\n\n return function BezierEasing(x: number): number {\n if (mX1 === mY1 && mX2 === mY2) {\n return x; // linear\n }\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) {\n return 0;\n }\n if (x === 1) {\n return 1;\n }\n return calcBezier(getTForX(x), mY1, mY2);\n };\n};\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst {AnimatedEvent} = require('./AnimatedEvent');\nconst AnimatedProps = require('./nodes/AnimatedProps');\nconst React = require('React');\nconst ViewStylePropTypes = require('ViewStylePropTypes');\n\nconst invariant = require('fbjs/lib/invariant');\n\nfunction createAnimatedComponent(Component: any): any {\n invariant(\n typeof Component !== 'function' ||\n (Component.prototype && Component.prototype.isReactComponent),\n '`createAnimatedComponent` does not support stateless functional components; ' +\n 'use a class component instead.',\n );\n\n class AnimatedComponent extends React.Component {\n _component: any;\n _invokeAnimatedPropsCallbackOnMount: boolean = false;\n _prevComponent: any;\n _propsAnimated: AnimatedProps;\n _eventDetachers: Array = [];\n _setComponentRef: Function;\n\n static __skipSetNativeProps_FOR_TESTS_ONLY = false;\n\n constructor(props: Object) {\n super(props);\n this._setComponentRef = this._setComponentRef.bind(this);\n }\n\n componentWillUnmount() {\n this._propsAnimated && this._propsAnimated.__detach();\n this._detachNativeEvents();\n }\n\n setNativeProps(props) {\n this._component.setNativeProps(props);\n }\n\n UNSAFE_componentWillMount() {\n this._attachProps(this.props);\n }\n\n componentDidMount() {\n if (this._invokeAnimatedPropsCallbackOnMount) {\n this._invokeAnimatedPropsCallbackOnMount = false;\n this._animatedPropsCallback();\n }\n\n this._propsAnimated.setNativeView(this._component);\n this._attachNativeEvents();\n }\n\n _attachNativeEvents() {\n // Make sure to get the scrollable node for components that implement\n // `ScrollResponder.Mixin`.\n const scrollableNode = this._component.getScrollableNode\n ? this._component.getScrollableNode()\n : this._component;\n\n for (const key in this.props) {\n const prop = this.props[key];\n if (prop instanceof AnimatedEvent && prop.__isNative) {\n prop.__attach(scrollableNode, key);\n this._eventDetachers.push(() => prop.__detach(scrollableNode, key));\n }\n }\n }\n\n _detachNativeEvents() {\n this._eventDetachers.forEach(remove => remove());\n this._eventDetachers = [];\n }\n\n // The system is best designed when setNativeProps is implemented. It is\n // able to avoid re-rendering and directly set the attributes that changed.\n // However, setNativeProps can only be implemented on leaf native\n // components. If you want to animate a composite component, you need to\n // re-render it. In this case, we have a fallback that uses forceUpdate.\n _animatedPropsCallback = () => {\n if (this._component == null) {\n // AnimatedProps is created in will-mount because it's used in render.\n // But this callback may be invoked before mount in async mode,\n // In which case we should defer the setNativeProps() call.\n // React may throw away uncommitted work in async mode,\n // So a deferred call won't always be invoked.\n this._invokeAnimatedPropsCallbackOnMount = true;\n } else if (\n AnimatedComponent.__skipSetNativeProps_FOR_TESTS_ONLY ||\n typeof this._component.setNativeProps !== 'function'\n ) {\n this.forceUpdate();\n } else if (!this._propsAnimated.__isNative) {\n this._component.setNativeProps(\n this._propsAnimated.__getAnimatedValue(),\n );\n } else {\n throw new Error(\n 'Attempting to run JS driven animation on animated ' +\n 'node that has been moved to \"native\" earlier by starting an ' +\n 'animation with `useNativeDriver: true`',\n );\n }\n };\n\n _attachProps(nextProps) {\n const oldPropsAnimated = this._propsAnimated;\n\n this._propsAnimated = new AnimatedProps(\n nextProps,\n this._animatedPropsCallback,\n );\n\n // When you call detach, it removes the element from the parent list\n // of children. If it goes to 0, then the parent also detaches itself\n // and so on.\n // An optimization is to attach the new elements and THEN detach the old\n // ones instead of detaching and THEN attaching.\n // This way the intermediate state isn't to go to 0 and trigger\n // this expensive recursive detaching to then re-attach everything on\n // the very next operation.\n oldPropsAnimated && oldPropsAnimated.__detach();\n }\n\n UNSAFE_componentWillReceiveProps(newProps) {\n this._attachProps(newProps);\n }\n\n componentDidUpdate(prevProps) {\n if (this._component !== this._prevComponent) {\n this._propsAnimated.setNativeView(this._component);\n }\n if (this._component !== this._prevComponent || prevProps !== this.props) {\n this._detachNativeEvents();\n this._attachNativeEvents();\n }\n }\n\n render() {\n const props = this._propsAnimated.__getValue();\n return (\n \n );\n }\n\n _setComponentRef(c) {\n this._prevComponent = this._component;\n this._component = c;\n }\n\n // A third party library can use getNode()\n // to get the node reference of the decorated component\n getNode() {\n return this._component;\n }\n }\n\n const propTypes = Component.propTypes;\n\n AnimatedComponent.propTypes = {\n style: function(props, propName, componentName) {\n if (!propTypes) {\n return;\n }\n\n for (const key in ViewStylePropTypes) {\n if (!propTypes[key] && props[key] !== undefined) {\n console.warn(\n 'You are setting the style `{ ' +\n key +\n ': ... }` as a prop. You ' +\n 'should nest it in a style object. ' +\n 'E.g. `{ style: { ' +\n key +\n ': ... } }`',\n );\n }\n }\n },\n };\n\n return AnimatedComponent;\n}\n\nmodule.exports = createAnimatedComponent;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst MetroListView = require('MetroListView'); // Used as a fallback legacy option\nconst React = require('React');\nconst View = require('View');\nconst VirtualizedList = require('VirtualizedList');\nconst ListView = require('ListView');\nconst StyleSheet = require('StyleSheet');\n\nconst invariant = require('fbjs/lib/invariant');\n\nimport type {DangerouslyImpreciseStyleProp, ViewStyleProp} from 'StyleSheet';\nimport type {\n ViewabilityConfig,\n ViewToken,\n ViewabilityConfigCallbackPair,\n} from 'ViewabilityHelper';\nimport type {Props as VirtualizedListProps} from 'VirtualizedList';\n\nexport type SeparatorsObj = {\n highlight: () => void,\n unhighlight: () => void,\n updateProps: (select: 'leading' | 'trailing', newProps: Object) => void,\n};\n\ntype RequiredProps = {\n /**\n * Takes an item from `data` and renders it into the list. Example usage:\n *\n * (\n * \n * )}\n * data={[{title: 'Title Text', key: 'item1'}]}\n * renderItem={({item, separators}) => (\n * this._onPress(item)}\n * onShowUnderlay={separators.highlight}\n * onHideUnderlay={separators.unhighlight}>\n * \n * {item.title}\n * \n * \n * )}\n * />\n *\n * Provides additional metadata like `index` if you need it, as well as a more generic\n * `separators.updateProps` function which let's you set whatever props you want to change the\n * rendering of either the leading separator or trailing separator in case the more common\n * `highlight` and `unhighlight` (which set the `highlighted: boolean` prop) are insufficient for\n * your use-case.\n */\n renderItem: (info: {\n item: ItemT,\n index: number,\n separators: SeparatorsObj,\n }) => ?React.Element,\n /**\n * For simplicity, data is just a plain array. If you want to use something else, like an\n * immutable list, use the underlying `VirtualizedList` directly.\n */\n data: ?$ReadOnlyArray,\n};\ntype OptionalProps = {\n /**\n * Rendered in between each item, but not at the top or bottom. By default, `highlighted` and\n * `leadingItem` props are provided. `renderItem` provides `separators.highlight`/`unhighlight`\n * which will update the `highlighted` prop, but you can also add custom props with\n * `separators.updateProps`.\n */\n ItemSeparatorComponent?: ?React.ComponentType,\n /**\n * Rendered when the list is empty. Can be a React Component Class, a render function, or\n * a rendered element.\n */\n ListEmptyComponent?: ?(React.ComponentType | React.Element),\n /**\n * Rendered at the bottom of all the items. Can be a React Component Class, a render function, or\n * a rendered element.\n */\n ListFooterComponent?: ?(React.ComponentType | React.Element),\n /**\n * Styling for internal View for ListFooterComponent\n */\n ListFooterComponentStyle?: ViewStyleProp,\n /**\n * Rendered at the top of all the items. Can be a React Component Class, a render function, or\n * a rendered element.\n */\n ListHeaderComponent?: ?(React.ComponentType | React.Element),\n /**\n * Styling for internal View for ListHeaderComponent\n */\n ListHeaderComponentStyle?: ViewStyleProp,\n /**\n * Optional custom style for multi-item rows generated when numColumns > 1.\n */\n columnWrapperStyle?: DangerouslyImpreciseStyleProp,\n /**\n * A marker property for telling the list to re-render (since it implements `PureComponent`). If\n * any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the\n * `data` prop, stick it here and treat it immutably.\n */\n extraData?: any,\n /**\n * `getItemLayout` is an optional optimizations that let us skip measurement of dynamic content if\n * you know the height of items a priori. `getItemLayout` is the most efficient, and is easy to\n * use if you have fixed height items, for example:\n *\n * getItemLayout={(data, index) => (\n * {length: ITEM_HEIGHT, offset: ITEM_HEIGHT * index, index}\n * )}\n *\n * Adding `getItemLayout` can be a great performance boost for lists of several hundred items.\n * Remember to include separator length (height or width) in your offset calculation if you\n * specify `ItemSeparatorComponent`.\n */\n getItemLayout?: (\n data: ?Array,\n index: number,\n ) => {length: number, offset: number, index: number},\n /**\n * If true, renders items next to each other horizontally instead of stacked vertically.\n */\n horizontal?: ?boolean,\n /**\n * How many items to render in the initial batch. This should be enough to fill the screen but not\n * much more. Note these items will never be unmounted as part of the windowed rendering in order\n * to improve perceived performance of scroll-to-top actions.\n */\n initialNumToRender: number,\n /**\n * Instead of starting at the top with the first item, start at `initialScrollIndex`. This\n * disables the \"scroll to top\" optimization that keeps the first `initialNumToRender` items\n * always rendered and immediately renders the items starting at this initial index. Requires\n * `getItemLayout` to be implemented.\n */\n initialScrollIndex?: ?number,\n /**\n * Reverses the direction of scroll. Uses scale transforms of -1.\n */\n inverted?: ?boolean,\n /**\n * Used to extract a unique key for a given item at the specified index. Key is used for caching\n * and as the react key to track item re-ordering. The default extractor checks `item.key`, then\n * falls back to using the index, like React does.\n */\n keyExtractor: (item: ItemT, index: number) => string,\n /**\n * Multiple columns can only be rendered with `horizontal={false}` and will zig-zag like a\n * `flexWrap` layout. Items should all be the same height - masonry layouts are not supported.\n */\n numColumns: number,\n /**\n * Called once when the scroll position gets within `onEndReachedThreshold` of the rendered\n * content.\n */\n onEndReached?: ?(info: {distanceFromEnd: number}) => void,\n /**\n * How far from the end (in units of visible length of the list) the bottom edge of the\n * list must be from the end of the content to trigger the `onEndReached` callback.\n * Thus a value of 0.5 will trigger `onEndReached` when the end of the content is\n * within half the visible length of the list.\n */\n onEndReachedThreshold?: ?number,\n /**\n * If provided, a standard RefreshControl will be added for \"Pull to Refresh\" functionality. Make\n * sure to also set the `refreshing` prop correctly.\n */\n onRefresh?: ?() => void,\n /**\n * Called when the viewability of rows changes, as defined by the `viewabilityConfig` prop.\n */\n onViewableItemsChanged?: ?(info: {\n viewableItems: Array,\n changed: Array,\n }) => void,\n /**\n * Set this when offset is needed for the loading indicator to show correctly.\n * @platform android\n */\n progressViewOffset?: number,\n legacyImplementation?: ?boolean,\n /**\n * Set this true while waiting for new data from a refresh.\n */\n refreshing?: ?boolean,\n /**\n * Note: may have bugs (missing content) in some circumstances - use at your own risk.\n *\n * This may improve scroll performance for large lists.\n */\n removeClippedSubviews?: boolean,\n /**\n * See `ViewabilityHelper` for flow type and further documentation.\n */\n viewabilityConfig?: ViewabilityConfig,\n /**\n * List of ViewabilityConfig/onViewableItemsChanged pairs. A specific onViewableItemsChanged\n * will be called when its corresponding ViewabilityConfig's conditions are met.\n */\n viewabilityConfigCallbackPairs?: Array,\n};\nexport type Props = RequiredProps &\n OptionalProps &\n VirtualizedListProps;\n\nconst defaultProps = {\n ...VirtualizedList.defaultProps,\n numColumns: 1,\n};\nexport type DefaultProps = typeof defaultProps;\n\n/**\n * A performant interface for rendering simple, flat lists, supporting the most handy features:\n *\n * - Fully cross-platform.\n * - Optional horizontal mode.\n * - Configurable viewability callbacks.\n * - Header support.\n * - Footer support.\n * - Separator support.\n * - Pull to Refresh.\n * - Scroll loading.\n * - ScrollToIndex support.\n *\n * If you need section support, use [``](docs/sectionlist.html).\n *\n * Minimal Example:\n *\n * {item.key}}\n * />\n *\n * More complex, multi-select example demonstrating `PureComponent` usage for perf optimization and avoiding bugs.\n *\n * - By binding the `onPressItem` handler, the props will remain `===` and `PureComponent` will\n * prevent wasteful re-renders unless the actual `id`, `selected`, or `title` props change, even\n * if the components rendered in `MyListItem` did not have such optimizations.\n * - By passing `extraData={this.state}` to `FlatList` we make sure `FlatList` itself will re-render\n * when the `state.selected` changes. Without setting this prop, `FlatList` would not know it\n * needs to re-render any items because it is also a `PureComponent` and the prop comparison will\n * not show any changes.\n * - `keyExtractor` tells the list to use the `id`s for the react keys instead of the default `key` property.\n *\n *\n * class MyListItem extends React.PureComponent {\n * _onPress = () => {\n * this.props.onPressItem(this.props.id);\n * };\n *\n * render() {\n * const textColor = this.props.selected ? \"red\" : \"black\";\n * return (\n * \n * \n * \n * {this.props.title}\n * \n * \n * \n * );\n * }\n * }\n *\n * class MultiSelectList extends React.PureComponent {\n * state = {selected: (new Map(): Map)};\n *\n * _keyExtractor = (item, index) => item.id;\n *\n * _onPressItem = (id: string) => {\n * // updater functions are preferred for transactional updates\n * this.setState((state) => {\n * // copy the map rather than modifying state.\n * const selected = new Map(state.selected);\n * selected.set(id, !selected.get(id)); // toggle\n * return {selected};\n * });\n * };\n *\n * _renderItem = ({item}) => (\n * \n * );\n *\n * render() {\n * return (\n * \n * );\n * }\n * }\n *\n * This is a convenience wrapper around [``](docs/virtualizedlist.html),\n * and thus inherits its props (as well as those of `ScrollView`) that aren't explicitly listed\n * here, along with the following caveats:\n *\n * - Internal state is not preserved when content scrolls out of the render window. Make sure all\n * your data is captured in the item data or external stores like Flux, Redux, or Relay.\n * - This is a `PureComponent` which means that it will not re-render if `props` remain shallow-\n * equal. Make sure that everything your `renderItem` function depends on is passed as a prop\n * (e.g. `extraData`) that is not `===` after updates, otherwise your UI may not update on\n * changes. This includes the `data` prop and parent component state.\n * - In order to constrain memory and enable smooth scrolling, content is rendered asynchronously\n * offscreen. This means it's possible to scroll faster than the fill rate ands momentarily see\n * blank content. This is a tradeoff that can be adjusted to suit the needs of each application,\n * and we are working on improving it behind the scenes.\n * - By default, the list looks for a `key` prop on each item and uses that for the React key.\n * Alternatively, you can provide a custom `keyExtractor` prop.\n *\n * Also inherits [ScrollView Props](docs/scrollview.html#props), unless it is nested in another FlatList of same orientation.\n */\nclass FlatList extends React.PureComponent, void> {\n static defaultProps: DefaultProps = defaultProps;\n props: Props;\n /**\n * Scrolls to the end of the content. May be janky without `getItemLayout` prop.\n */\n scrollToEnd(params?: ?{animated?: ?boolean}) {\n if (this._listRef) {\n this._listRef.scrollToEnd(params);\n }\n }\n\n /**\n * Scrolls to the item at the specified index such that it is positioned in the viewable area\n * such that `viewPosition` 0 places it at the top, 1 at the bottom, and 0.5 centered in the\n * middle. `viewOffset` is a fixed number of pixels to offset the final target position.\n *\n * Note: cannot scroll to locations outside the render window without specifying the\n * `getItemLayout` prop.\n */\n scrollToIndex(params: {\n animated?: ?boolean,\n index: number,\n viewOffset?: number,\n viewPosition?: number,\n }) {\n if (this._listRef) {\n // $FlowFixMe Found when typing ListView\n this._listRef.scrollToIndex(params);\n }\n }\n\n /**\n * Requires linear scan through data - use `scrollToIndex` instead if possible.\n *\n * Note: cannot scroll to locations outside the render window without specifying the\n * `getItemLayout` prop.\n */\n scrollToItem(params: {\n animated?: ?boolean,\n item: ItemT,\n viewPosition?: number,\n }) {\n if (this._listRef) {\n // $FlowFixMe Found when typing ListView\n this._listRef.scrollToItem(params);\n }\n }\n\n /**\n * Scroll to a specific content pixel offset in the list.\n *\n * Check out [scrollToOffset](docs/virtualizedlist.html#scrolltooffset) of VirtualizedList\n */\n scrollToOffset(params: {animated?: ?boolean, offset: number}) {\n if (this._listRef) {\n // $FlowFixMe Found when typing ListView\n this._listRef.scrollToOffset(params);\n }\n }\n\n /**\n * Tells the list an interaction has occurred, which should trigger viewability calculations, e.g.\n * if `waitForInteractions` is true and the user has not scrolled. This is typically called by\n * taps on items or by navigation actions.\n */\n recordInteraction() {\n if (this._listRef) {\n // $FlowFixMe Found when typing ListView\n this._listRef.recordInteraction();\n }\n }\n\n /**\n * Displays the scroll indicators momentarily.\n *\n * @platform ios\n */\n flashScrollIndicators() {\n if (this._listRef) {\n // $FlowFixMe Found when typing ListView\n this._listRef.flashScrollIndicators();\n }\n }\n\n /**\n * Provides a handle to the underlying scroll responder.\n */\n getScrollResponder() {\n if (this._listRef) {\n // $FlowFixMe Found when typing ListView\n return this._listRef.getScrollResponder();\n }\n }\n\n getScrollableNode() {\n if (this._listRef) {\n // $FlowFixMe Found when typing ListView\n return this._listRef.getScrollableNode();\n }\n }\n\n setNativeProps(props: {[string]: mixed}) {\n if (this._listRef) {\n this._listRef.setNativeProps(props);\n }\n }\n\n constructor(props: Props) {\n super(props);\n this._checkProps(this.props);\n if (this.props.viewabilityConfigCallbackPairs) {\n this._virtualizedListPairs = this.props.viewabilityConfigCallbackPairs.map(\n pair => ({\n viewabilityConfig: pair.viewabilityConfig,\n onViewableItemsChanged: this._createOnViewableItemsChanged(\n pair.onViewableItemsChanged,\n ),\n }),\n );\n } else if (this.props.onViewableItemsChanged) {\n /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.63 was deployed. To see the error delete this\n * comment and run Flow. */\n this._virtualizedListPairs.push({\n viewabilityConfig: this.props.viewabilityConfig,\n onViewableItemsChanged: this._createOnViewableItemsChanged(\n this.props.onViewableItemsChanged,\n ),\n });\n }\n }\n\n componentDidUpdate(prevProps: Props) {\n invariant(\n prevProps.numColumns === this.props.numColumns,\n 'Changing numColumns on the fly is not supported. Change the key prop on FlatList when ' +\n 'changing the number of columns to force a fresh render of the component.',\n );\n invariant(\n prevProps.onViewableItemsChanged === this.props.onViewableItemsChanged,\n 'Changing onViewableItemsChanged on the fly is not supported',\n );\n invariant(\n prevProps.viewabilityConfig === this.props.viewabilityConfig,\n 'Changing viewabilityConfig on the fly is not supported',\n );\n invariant(\n prevProps.viewabilityConfigCallbackPairs ===\n this.props.viewabilityConfigCallbackPairs,\n 'Changing viewabilityConfigCallbackPairs on the fly is not supported',\n );\n\n this._checkProps(this.props);\n }\n\n _hasWarnedLegacy = false;\n _listRef: null | VirtualizedList | ListView | MetroListView;\n _virtualizedListPairs: Array = [];\n\n _captureRef = ref => {\n this._listRef = ref;\n };\n\n _checkProps(props: Props) {\n const {\n getItem,\n getItemCount,\n horizontal,\n legacyImplementation,\n numColumns,\n columnWrapperStyle,\n onViewableItemsChanged,\n viewabilityConfigCallbackPairs,\n } = props;\n invariant(\n !getItem && !getItemCount,\n 'FlatList does not support custom data formats.',\n );\n if (numColumns > 1) {\n invariant(!horizontal, 'numColumns does not support horizontal.');\n } else {\n invariant(\n !columnWrapperStyle,\n 'columnWrapperStyle not supported for single column lists',\n );\n }\n if (legacyImplementation) {\n invariant(\n numColumns === 1,\n 'Legacy list does not support multiple columns.',\n );\n // Warning: may not have full feature parity and is meant more for debugging and performance\n // comparison.\n if (!this._hasWarnedLegacy) {\n console.warn(\n 'FlatList: legacyImplementation is deprecated and will be removed in a ' +\n 'future release - some features not supported and performance may suffer. ' +\n 'Please migrate to the default implementation.',\n );\n this._hasWarnedLegacy = true;\n }\n }\n invariant(\n !(onViewableItemsChanged && viewabilityConfigCallbackPairs),\n 'FlatList does not support setting both onViewableItemsChanged and ' +\n 'viewabilityConfigCallbackPairs.',\n );\n }\n\n _getItem = (data: Array, index: number) => {\n const {numColumns} = this.props;\n if (numColumns > 1) {\n const ret = [];\n for (let kk = 0; kk < numColumns; kk++) {\n const item = data[index * numColumns + kk];\n if (item != null) {\n ret.push(item);\n }\n }\n return ret;\n } else {\n return data[index];\n }\n };\n\n _getItemCount = (data: ?Array): number => {\n return data ? Math.ceil(data.length / this.props.numColumns) : 0;\n };\n\n _keyExtractor = (items: ItemT | Array, index: number) => {\n const {keyExtractor, numColumns} = this.props;\n if (numColumns > 1) {\n invariant(\n Array.isArray(items),\n 'FlatList: Encountered internal consistency error, expected each item to consist of an ' +\n 'array with 1-%s columns; instead, received a single item.',\n numColumns,\n );\n return items\n .map((it, kk) => keyExtractor(it, index * numColumns + kk))\n .join(':');\n } else {\n /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.63 was deployed. To see the error delete this\n * comment and run Flow. */\n return keyExtractor(items, index);\n }\n };\n\n _pushMultiColumnViewable(arr: Array, v: ViewToken): void {\n const {numColumns, keyExtractor} = this.props;\n v.item.forEach((item, ii) => {\n invariant(v.index != null, 'Missing index!');\n const index = v.index * numColumns + ii;\n arr.push({...v, item, key: keyExtractor(item, index), index});\n });\n }\n\n _createOnViewableItemsChanged(\n onViewableItemsChanged: ?(info: {\n viewableItems: Array,\n changed: Array,\n }) => void,\n ) {\n return (info: {\n viewableItems: Array,\n changed: Array,\n }) => {\n const {numColumns} = this.props;\n if (onViewableItemsChanged) {\n if (numColumns > 1) {\n const changed = [];\n const viewableItems = [];\n info.viewableItems.forEach(v =>\n this._pushMultiColumnViewable(viewableItems, v),\n );\n info.changed.forEach(v => this._pushMultiColumnViewable(changed, v));\n onViewableItemsChanged({viewableItems, changed});\n } else {\n onViewableItemsChanged(info);\n }\n }\n };\n }\n\n _renderItem = (info: Object) => {\n const {renderItem, numColumns, columnWrapperStyle} = this.props;\n if (numColumns > 1) {\n const {item, index} = info;\n invariant(\n Array.isArray(item),\n 'Expected array of items with numColumns > 1',\n );\n return (\n \n {item.map((it, kk) => {\n const element = renderItem({\n item: it,\n index: index * numColumns + kk,\n separators: info.separators,\n });\n return element && React.cloneElement(element, {key: kk});\n })}\n \n );\n } else {\n return renderItem(info);\n }\n };\n\n render() {\n if (this.props.legacyImplementation) {\n return (\n /* $FlowFixMe(>=0.66.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.66 was deployed. To see the error delete\n * this comment and run Flow. */\n =0.66.0 site=react_native_fb) This comment suppresses\n * an error found when Flow v0.66 was deployed. To see the error\n * delete this comment and run Flow. */\n items={this.props.data}\n ref={this._captureRef}\n />\n );\n } else {\n return (\n \n );\n }\n }\n}\n\nconst styles = StyleSheet.create({\n row: {flexDirection: 'row'},\n});\n\nmodule.exports = FlatList;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst ListView = require('ListView');\nconst React = require('React');\nconst RefreshControl = require('RefreshControl');\nconst ScrollView = require('ScrollView');\n\nconst invariant = require('fbjs/lib/invariant');\n\ntype Item = any;\n\ntype NormalProps = {\n FooterComponent?: React.ComponentType<*>,\n renderItem: (info: Object) => ?React.Element,\n /* $FlowFixMe(>=0.53.0 site=react_native_fb,react_native_oss) This comment\n * suppresses an error when upgrading Flow's support for React. To see the\n * error delete this comment and run Flow. */\n renderSectionHeader?: ({section: Object}) => ?React.Element,\n SeparatorComponent?: ?React.ComponentType<*>, // not supported yet\n\n // Provide either `items` or `sections`\n items?: ?Array, // By default, an Item is assumed to be {key: string}\n // $FlowFixMe - Something is a little off with the type Array\n sections?: ?Array<{key: string, data: Array}>,\n\n /**\n * If provided, a standard RefreshControl will be added for \"Pull to Refresh\" functionality. Make\n * sure to also set the `refreshing` prop correctly.\n */\n onRefresh?: ?Function,\n /**\n * Set this true while waiting for new data from a refresh.\n */\n refreshing?: boolean,\n /**\n * If true, renders items next to each other horizontally instead of stacked vertically.\n */\n horizontal?: ?boolean,\n};\ntype DefaultProps = {\n keyExtractor: (item: Item, index: number) => string,\n};\ntype Props = NormalProps & DefaultProps;\n\n/**\n * This is just a wrapper around the legacy ListView that matches the new API of FlatList, but with\n * some section support tacked on. It is recommended to just use FlatList directly, this component\n * is mostly for debugging and performance comparison.\n */\nclass MetroListView extends React.Component {\n scrollToEnd(params?: ?{animated?: ?boolean}) {\n throw new Error('scrollToEnd not supported in legacy ListView.');\n }\n scrollToIndex(params: {\n animated?: ?boolean,\n index: number,\n viewPosition?: number,\n }) {\n throw new Error('scrollToIndex not supported in legacy ListView.');\n }\n scrollToItem(params: {\n animated?: ?boolean,\n item: Item,\n viewPosition?: number,\n }) {\n throw new Error('scrollToItem not supported in legacy ListView.');\n }\n scrollToLocation(params: {\n animated?: ?boolean,\n itemIndex: number,\n sectionIndex: number,\n viewOffset?: number,\n viewPosition?: number,\n }) {\n throw new Error('scrollToLocation not supported in legacy ListView.');\n }\n scrollToOffset(params: {animated?: ?boolean, offset: number}) {\n const {animated, offset} = params;\n // $FlowFixMe Invalid prop usage\n this._listRef.scrollTo(\n this.props.horizontal ? {x: offset, animated} : {y: offset, animated},\n );\n }\n getListRef() {\n return this._listRef;\n }\n setNativeProps(props: Object) {\n if (this._listRef) {\n this._listRef.setNativeProps(props);\n }\n }\n static defaultProps: DefaultProps = {\n keyExtractor: (item, index) => item.key || String(index),\n renderScrollComponent: (props: Props) => {\n if (props.onRefresh) {\n return (\n // $FlowFixMe Invalid prop usage\n =0.53.0 site=react_native_fb,react_native_oss)\n * This comment suppresses an error when upgrading Flow's support\n * for React. To see the error delete this comment and run Flow.\n */\n \n }\n />\n );\n } else {\n // $FlowFixMe Invalid prop usage\n return ;\n }\n },\n };\n state = this._computeState(this.props, {\n ds: new ListView.DataSource({\n rowHasChanged: (itemA, itemB) => true,\n sectionHeaderHasChanged: () => true,\n getSectionHeaderData: (dataBlob, sectionID) =>\n this.state.sectionHeaderData[sectionID],\n }),\n sectionHeaderData: {},\n });\n UNSAFE_componentWillReceiveProps(newProps: Props) {\n this.setState(state => this._computeState(newProps, state));\n }\n render() {\n return (\n // $FlowFixMe Found when typing ListView\n \n );\n }\n _listRef: ?ListView;\n _captureRef = ref => {\n this._listRef = ref;\n };\n _computeState(props: Props, state) {\n const sectionHeaderData = {};\n if (props.sections) {\n invariant(!props.items, 'Cannot have both sections and items props.');\n const sections = {};\n props.sections.forEach((sectionIn, ii) => {\n const sectionID = 's' + ii;\n sections[sectionID] = sectionIn.data;\n sectionHeaderData[sectionID] = sectionIn;\n });\n return {\n ds: state.ds.cloneWithRowsAndSections(sections),\n sectionHeaderData,\n };\n } else {\n invariant(!props.sections, 'Cannot have both sections and items props.');\n return {\n // $FlowFixMe Found when typing ListView\n ds: state.ds.cloneWithRows(props.items),\n sectionHeaderData,\n };\n }\n }\n /* $FlowFixMe(>=0.53.0 site=react_native_fb,react_native_oss) This comment\n * suppresses an error when upgrading Flow's support for React. To see the\n * error delete this comment and run Flow. */\n _renderFooter = () => ;\n _renderRow = (item, sectionID, rowID, highlightRow) => {\n return this.props.renderItem({item, index: rowID});\n };\n _renderSectionHeader = (section, sectionID) => {\n const {renderSectionHeader} = this.props;\n invariant(\n renderSectionHeader,\n 'Must provide renderSectionHeader with sections prop',\n );\n return renderSectionHeader({section});\n };\n _renderSeparator = (sID, rID) => (\n /* $FlowFixMe(>=0.53.0 site=react_native_fb,react_native_oss) This comment\n * suppresses an error when upgrading Flow's support for React. To see the\n * error delete this comment and run Flow. */\n \n );\n}\n\nmodule.exports = MetroListView;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst InternalListViewType = require('InternalListViewType');\nconst ListViewDataSource = require('ListViewDataSource');\nconst Platform = require('Platform');\nconst React = require('React');\nconst ReactNative = require('ReactNative');\nconst RCTScrollViewManager = require('NativeModules').ScrollViewManager;\nconst ScrollView = require('ScrollView');\nconst ScrollResponder = require('ScrollResponder');\nconst StaticRenderer = require('StaticRenderer');\nconst View = require('View');\nconst cloneReferencedElement = require('react-clone-referenced-element');\nconst createReactClass = require('create-react-class');\nconst isEmpty = require('isEmpty');\nconst merge = require('merge');\n\nimport type {Props as ScrollViewProps} from 'ScrollView';\n\nconst DEFAULT_PAGE_SIZE = 1;\nconst DEFAULT_INITIAL_ROWS = 10;\nconst DEFAULT_SCROLL_RENDER_AHEAD = 1000;\nconst DEFAULT_END_REACHED_THRESHOLD = 1000;\nconst DEFAULT_SCROLL_CALLBACK_THROTTLE = 50;\n\ntype Props = $ReadOnly<{|\n ...ScrollViewProps,\n\n /**\n * An instance of [ListView.DataSource](docs/listviewdatasource.html) to use\n */\n dataSource: ListViewDataSource,\n /**\n * (sectionID, rowID, adjacentRowHighlighted) => renderable\n *\n * If provided, a renderable component to be rendered as the separator\n * below each row but not the last row if there is a section header below.\n * Take a sectionID and rowID of the row above and whether its adjacent row\n * is highlighted.\n */\n renderSeparator?: ?Function,\n /**\n * (rowData, sectionID, rowID, highlightRow) => renderable\n *\n * Takes a data entry from the data source and its ids and should return\n * a renderable component to be rendered as the row. By default the data\n * is exactly what was put into the data source, but it's also possible to\n * provide custom extractors. ListView can be notified when a row is\n * being highlighted by calling `highlightRow(sectionID, rowID)`. This\n * sets a boolean value of adjacentRowHighlighted in renderSeparator, allowing you\n * to control the separators above and below the highlighted row. The highlighted\n * state of a row can be reset by calling highlightRow(null).\n */\n renderRow: Function,\n /**\n * How many rows to render on initial component mount. Use this to make\n * it so that the first screen worth of data appears at one time instead of\n * over the course of multiple frames.\n */\n initialListSize?: ?number,\n /**\n * Called when all rows have been rendered and the list has been scrolled\n * to within onEndReachedThreshold of the bottom. The native scroll\n * event is provided.\n */\n onEndReached?: ?Function,\n /**\n * Threshold in pixels (virtual, not physical) for calling onEndReached.\n */\n onEndReachedThreshold?: ?number,\n /**\n * Number of rows to render per event loop. Note: if your 'rows' are actually\n * cells, i.e. they don't span the full width of your view (as in the\n * ListViewGridLayoutExample), you should set the pageSize to be a multiple\n * of the number of cells per row, otherwise you're likely to see gaps at\n * the edge of the ListView as new pages are loaded.\n */\n pageSize?: ?number,\n /**\n * () => renderable\n *\n * The header and footer are always rendered (if these props are provided)\n * on every render pass. If they are expensive to re-render, wrap them\n * in StaticContainer or other mechanism as appropriate. Footer is always\n * at the bottom of the list, and header at the top, on every render pass.\n * In a horizontal ListView, the header is rendered on the left and the\n * footer on the right.\n */\n renderFooter?: ?Function,\n renderHeader?: ?Function,\n /**\n * (sectionData, sectionID) => renderable\n *\n * If provided, a header is rendered for this section.\n */\n renderSectionHeader?: ?Function,\n /**\n * (props) => renderable\n *\n * A function that returns the scrollable component in which the list rows\n * are rendered. Defaults to returning a ScrollView with the given props.\n */\n renderScrollComponent?: ?Function,\n /**\n * How early to start rendering rows before they come on screen, in\n * pixels.\n */\n scrollRenderAheadDistance?: ?number,\n /**\n * (visibleRows, changedRows) => void\n *\n * Called when the set of visible rows changes. `visibleRows` maps\n * { sectionID: { rowID: true }} for all the visible rows, and\n * `changedRows` maps { sectionID: { rowID: true | false }} for the rows\n * that have changed their visibility, with true indicating visible, and\n * false indicating the view has moved out of view.\n */\n onChangeVisibleRows?: ?Function,\n /**\n * A performance optimization for improving scroll perf of\n * large lists, used in conjunction with overflow: 'hidden' on the row\n * containers. This is enabled by default.\n */\n removeClippedSubviews?: ?boolean,\n /**\n * Makes the sections headers sticky. The sticky behavior means that it\n * will scroll with the content at the top of the section until it reaches\n * the top of the screen, at which point it will stick to the top until it\n * is pushed off the screen by the next section header. This property is\n * not supported in conjunction with `horizontal={true}`. Only enabled by\n * default on iOS because of typical platform standards.\n */\n stickySectionHeadersEnabled?: ?boolean,\n /**\n * An array of child indices determining which children get docked to the\n * top of the screen when scrolling. For example, passing\n * `stickyHeaderIndices={[0]}` will cause the first child to be fixed to the\n * top of the scroll view. This property is not supported in conjunction\n * with `horizontal={true}`.\n */\n stickyHeaderIndices?: ?$ReadOnlyArray,\n /**\n * Flag indicating whether empty section headers should be rendered. In the future release\n * empty section headers will be rendered by default, and the flag will be deprecated.\n * If empty sections are not desired to be rendered their indices should be excluded from sectionID object.\n */\n enableEmptySections?: ?boolean,\n|}>;\n\n/**\n * DEPRECATED - use one of the new list components, such as [`FlatList`](docs/flatlist.html)\n * or [`SectionList`](docs/sectionlist.html) for bounded memory use, fewer bugs,\n * better performance, an easier to use API, and more features. Check out this\n * [blog post](https://facebook.github.io/react-native/blog/2017/03/13/better-list-views.html)\n * for more details.\n *\n * ListView - A core component designed for efficient display of vertically\n * scrolling lists of changing data. The minimal API is to create a\n * [`ListView.DataSource`](docs/listviewdatasource.html), populate it with a simple\n * array of data blobs, and instantiate a `ListView` component with that data\n * source and a `renderRow` callback which takes a blob from the data array and\n * returns a renderable component.\n *\n * Minimal example:\n *\n * ```\n * class MyComponent extends Component {\n * constructor() {\n * super();\n * const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});\n * this.state = {\n * dataSource: ds.cloneWithRows(['row 1', 'row 2']),\n * };\n * }\n *\n * render() {\n * return (\n * {rowData}}\n * />\n * );\n * }\n * }\n * ```\n *\n * ListView also supports more advanced features, including sections with sticky\n * section headers, header and footer support, callbacks on reaching the end of\n * the available data (`onEndReached`) and on the set of rows that are visible\n * in the device viewport change (`onChangeVisibleRows`), and several\n * performance optimizations.\n *\n * There are a few performance operations designed to make ListView scroll\n * smoothly while dynamically loading potentially very large (or conceptually\n * infinite) data sets:\n *\n * * Only re-render changed rows - the rowHasChanged function provided to the\n * data source tells the ListView if it needs to re-render a row because the\n * source data has changed - see ListViewDataSource for more details.\n *\n * * Rate-limited row rendering - By default, only one row is rendered per\n * event-loop (customizable with the `pageSize` prop). This breaks up the\n * work into smaller chunks to reduce the chance of dropping frames while\n * rendering rows.\n */\n\nconst ListView = createReactClass({\n displayName: 'ListView',\n _rafIds: ([]: Array),\n _childFrames: ([]: Array),\n _sentEndForContentLength: (null: ?number),\n _scrollComponent: (null: ?React.ElementRef),\n _prevRenderedRowsCount: 0,\n _visibleRows: ({}: Object),\n scrollProperties: ({}: Object),\n\n mixins: [ScrollResponder.Mixin],\n\n statics: {\n DataSource: ListViewDataSource,\n },\n\n /**\n * Exports some data, e.g. for perf investigations or analytics.\n */\n getMetrics: function() {\n return {\n contentLength: this.scrollProperties.contentLength,\n totalRows: this.props.enableEmptySections\n ? this.props.dataSource.getRowAndSectionCount()\n : this.props.dataSource.getRowCount(),\n renderedRows: this.state.curRenderedRowsCount,\n visibleRows: Object.keys(this._visibleRows).length,\n };\n },\n\n /**\n * Provides a handle to the underlying scroll responder.\n * Note that `this._scrollComponent` might not be a `ScrollView`, so we\n * need to check that it responds to `getScrollResponder` before calling it.\n */\n getScrollResponder: function() {\n if (this._scrollComponent && this._scrollComponent.getScrollResponder) {\n return this._scrollComponent.getScrollResponder();\n }\n },\n\n getScrollableNode: function() {\n if (this._scrollComponent && this._scrollComponent.getScrollableNode) {\n return this._scrollComponent.getScrollableNode();\n } else {\n return ReactNative.findNodeHandle(this._scrollComponent);\n }\n },\n\n /**\n * Scrolls to a given x, y offset, either immediately or with a smooth animation.\n *\n * See `ScrollView#scrollTo`.\n */\n scrollTo: function(...args: any) {\n if (this._scrollComponent && this._scrollComponent.scrollTo) {\n this._scrollComponent.scrollTo(...args);\n }\n },\n\n /**\n * If this is a vertical ListView scrolls to the bottom.\n * If this is a horizontal ListView scrolls to the right.\n *\n * Use `scrollToEnd({animated: true})` for smooth animated scrolling,\n * `scrollToEnd({animated: false})` for immediate scrolling.\n * If no options are passed, `animated` defaults to true.\n *\n * See `ScrollView#scrollToEnd`.\n */\n scrollToEnd: function(options?: ?{animated?: boolean}) {\n if (this._scrollComponent) {\n if (this._scrollComponent.scrollToEnd) {\n this._scrollComponent.scrollToEnd(options);\n } else {\n console.warn(\n 'The scroll component used by the ListView does not support ' +\n 'scrollToEnd. Check the renderScrollComponent prop of your ListView.',\n );\n }\n }\n },\n\n /**\n * Displays the scroll indicators momentarily.\n *\n * @platform ios\n */\n flashScrollIndicators: function() {\n if (this._scrollComponent && this._scrollComponent.flashScrollIndicators) {\n this._scrollComponent.flashScrollIndicators();\n }\n },\n\n setNativeProps: function(props: Object) {\n if (this._scrollComponent) {\n this._scrollComponent.setNativeProps(props);\n }\n },\n\n /**\n * React life cycle hooks.\n */\n\n getDefaultProps: function() {\n return {\n initialListSize: DEFAULT_INITIAL_ROWS,\n pageSize: DEFAULT_PAGE_SIZE,\n renderScrollComponent: props => ,\n scrollRenderAheadDistance: DEFAULT_SCROLL_RENDER_AHEAD,\n onEndReachedThreshold: DEFAULT_END_REACHED_THRESHOLD,\n stickySectionHeadersEnabled: Platform.OS === 'ios',\n stickyHeaderIndices: [],\n };\n },\n\n getInitialState: function() {\n return {\n curRenderedRowsCount: this.props.initialListSize,\n highlightedRow: ({}: Object),\n };\n },\n\n getInnerViewNode: function() {\n return this._scrollComponent && this._scrollComponent.getInnerViewNode();\n },\n\n UNSAFE_componentWillMount: function() {\n // this data should never trigger a render pass, so don't put in state\n this.scrollProperties = {\n visibleLength: null,\n contentLength: null,\n offset: 0,\n };\n\n this._rafIds = [];\n this._childFrames = [];\n this._visibleRows = {};\n this._prevRenderedRowsCount = 0;\n this._sentEndForContentLength = null;\n },\n\n componentWillUnmount: function() {\n this._rafIds.forEach(cancelAnimationFrame);\n this._rafIds = [];\n },\n\n componentDidMount: function() {\n // do this in animation frame until componentDidMount actually runs after\n // the component is laid out\n this._requestAnimationFrame(() => {\n this._measureAndUpdateScrollProps();\n });\n },\n\n UNSAFE_componentWillReceiveProps: function(nextProps: Object) {\n if (\n this.props.dataSource !== nextProps.dataSource ||\n this.props.initialListSize !== nextProps.initialListSize\n ) {\n this.setState(\n (state, props) => {\n this._prevRenderedRowsCount = 0;\n return {\n curRenderedRowsCount: Math.min(\n Math.max(state.curRenderedRowsCount, props.initialListSize),\n props.enableEmptySections\n ? props.dataSource.getRowAndSectionCount()\n : props.dataSource.getRowCount(),\n ),\n };\n },\n () => this._renderMoreRowsIfNeeded(),\n );\n }\n },\n\n componentDidUpdate: function() {\n this._requestAnimationFrame(() => {\n this._measureAndUpdateScrollProps();\n });\n },\n\n _onRowHighlighted: function(sectionID: string, rowID: string) {\n this.setState({highlightedRow: {sectionID, rowID}});\n },\n\n render: function() {\n const bodyComponents = [];\n\n const dataSource = this.props.dataSource;\n const allRowIDs = dataSource.rowIdentities;\n let rowCount = 0;\n const stickySectionHeaderIndices = [];\n\n const {renderSectionHeader} = this.props;\n\n const header = this.props.renderHeader && this.props.renderHeader();\n const footer = this.props.renderFooter && this.props.renderFooter();\n let totalIndex = header ? 1 : 0;\n\n for (let sectionIdx = 0; sectionIdx < allRowIDs.length; sectionIdx++) {\n const sectionID = dataSource.sectionIdentities[sectionIdx];\n const rowIDs = allRowIDs[sectionIdx];\n if (rowIDs.length === 0) {\n if (this.props.enableEmptySections === undefined) {\n const warning = require('fbjs/lib/warning');\n warning(\n false,\n 'In next release empty section headers will be rendered.' +\n \" In this release you can use 'enableEmptySections' flag to render empty section headers.\",\n );\n continue;\n } else {\n const invariant = require('fbjs/lib/invariant');\n invariant(\n this.props.enableEmptySections,\n \"In next release 'enableEmptySections' flag will be deprecated, empty section headers will always be rendered.\" +\n ' If empty section headers are not desirable their indices should be excluded from sectionIDs object.' +\n \" In this release 'enableEmptySections' may only have value 'true' to allow empty section headers rendering.\",\n );\n }\n }\n\n if (renderSectionHeader) {\n const element = renderSectionHeader(\n dataSource.getSectionHeaderData(sectionIdx),\n sectionID,\n );\n if (element) {\n bodyComponents.push(\n React.cloneElement(element, {key: 's_' + sectionID}),\n );\n if (this.props.stickySectionHeadersEnabled) {\n stickySectionHeaderIndices.push(totalIndex);\n }\n totalIndex++;\n }\n }\n\n for (let rowIdx = 0; rowIdx < rowIDs.length; rowIdx++) {\n const rowID = rowIDs[rowIdx];\n const comboID = sectionID + '_' + rowID;\n const shouldUpdateRow =\n rowCount >= this._prevRenderedRowsCount &&\n dataSource.rowShouldUpdate(sectionIdx, rowIdx);\n const row = (\n \n );\n bodyComponents.push(row);\n totalIndex++;\n\n if (\n this.props.renderSeparator &&\n (rowIdx !== rowIDs.length - 1 || sectionIdx === allRowIDs.length - 1)\n ) {\n const adjacentRowHighlighted =\n this.state.highlightedRow.sectionID === sectionID &&\n (this.state.highlightedRow.rowID === rowID ||\n this.state.highlightedRow.rowID === rowIDs[rowIdx + 1]);\n const separator = this.props.renderSeparator(\n sectionID,\n rowID,\n adjacentRowHighlighted,\n );\n if (separator) {\n bodyComponents.push({separator});\n totalIndex++;\n }\n }\n if (++rowCount === this.state.curRenderedRowsCount) {\n break;\n }\n }\n if (rowCount >= this.state.curRenderedRowsCount) {\n break;\n }\n }\n\n const {renderScrollComponent, ...props} = this.props;\n if (!props.scrollEventThrottle) {\n props.scrollEventThrottle = DEFAULT_SCROLL_CALLBACK_THROTTLE;\n }\n if (props.removeClippedSubviews === undefined) {\n props.removeClippedSubviews = true;\n }\n Object.assign(props, {\n onScroll: this._onScroll,\n stickyHeaderIndices: this.props.stickyHeaderIndices.concat(\n stickySectionHeaderIndices,\n ),\n\n // Do not pass these events downstream to ScrollView since they will be\n // registered in ListView's own ScrollResponder.Mixin\n onKeyboardWillShow: undefined,\n onKeyboardWillHide: undefined,\n onKeyboardDidShow: undefined,\n onKeyboardDidHide: undefined,\n });\n\n return cloneReferencedElement(\n renderScrollComponent(props),\n {\n ref: this._setScrollComponentRef,\n onContentSizeChange: this._onContentSizeChange,\n onLayout: this._onLayout,\n DEPRECATED_sendUpdatedChildFrames:\n typeof props.onChangeVisibleRows !== undefined,\n },\n header,\n bodyComponents,\n footer,\n );\n },\n\n /**\n * Private methods\n */\n\n _requestAnimationFrame: function(fn: () => void): void {\n const rafId = requestAnimationFrame(() => {\n this._rafIds = this._rafIds.filter(id => id !== rafId);\n fn();\n });\n this._rafIds.push(rafId);\n },\n\n _measureAndUpdateScrollProps: function() {\n const scrollComponent = this.getScrollResponder();\n if (!scrollComponent || !scrollComponent.getInnerViewNode) {\n return;\n }\n\n // RCTScrollViewManager.calculateChildFrames is not available on\n // every platform\n RCTScrollViewManager &&\n RCTScrollViewManager.calculateChildFrames &&\n RCTScrollViewManager.calculateChildFrames(\n ReactNative.findNodeHandle(scrollComponent),\n this._updateVisibleRows,\n );\n },\n\n _setScrollComponentRef: function(scrollComponent) {\n this._scrollComponent = scrollComponent;\n },\n\n _onContentSizeChange: function(width: number, height: number) {\n const contentLength = !this.props.horizontal ? height : width;\n if (contentLength !== this.scrollProperties.contentLength) {\n this.scrollProperties.contentLength = contentLength;\n this._updateVisibleRows();\n this._renderMoreRowsIfNeeded();\n }\n this.props.onContentSizeChange &&\n this.props.onContentSizeChange(width, height);\n },\n\n _onLayout: function(event: Object) {\n const {width, height} = event.nativeEvent.layout;\n const visibleLength = !this.props.horizontal ? height : width;\n if (visibleLength !== this.scrollProperties.visibleLength) {\n this.scrollProperties.visibleLength = visibleLength;\n this._updateVisibleRows();\n this._renderMoreRowsIfNeeded();\n }\n this.props.onLayout && this.props.onLayout(event);\n },\n\n _maybeCallOnEndReached: function(event?: Object) {\n if (\n this.props.onEndReached &&\n this.scrollProperties.contentLength !== this._sentEndForContentLength &&\n this._getDistanceFromEnd(this.scrollProperties) <\n this.props.onEndReachedThreshold &&\n this.state.curRenderedRowsCount ===\n (this.props.enableEmptySections\n ? this.props.dataSource.getRowAndSectionCount()\n : this.props.dataSource.getRowCount())\n ) {\n this._sentEndForContentLength = this.scrollProperties.contentLength;\n this.props.onEndReached(event);\n return true;\n }\n return false;\n },\n\n _renderMoreRowsIfNeeded: function() {\n if (\n this.scrollProperties.contentLength === null ||\n this.scrollProperties.visibleLength === null ||\n this.state.curRenderedRowsCount ===\n (this.props.enableEmptySections\n ? this.props.dataSource.getRowAndSectionCount()\n : this.props.dataSource.getRowCount())\n ) {\n this._maybeCallOnEndReached();\n return;\n }\n\n const distanceFromEnd = this._getDistanceFromEnd(this.scrollProperties);\n if (distanceFromEnd < this.props.scrollRenderAheadDistance) {\n this._pageInNewRows();\n }\n },\n\n _pageInNewRows: function() {\n this.setState(\n (state, props) => {\n const rowsToRender = Math.min(\n state.curRenderedRowsCount + props.pageSize,\n props.enableEmptySections\n ? props.dataSource.getRowAndSectionCount()\n : props.dataSource.getRowCount(),\n );\n this._prevRenderedRowsCount = state.curRenderedRowsCount;\n return {\n curRenderedRowsCount: rowsToRender,\n };\n },\n () => {\n this._measureAndUpdateScrollProps();\n this._prevRenderedRowsCount = this.state.curRenderedRowsCount;\n },\n );\n },\n\n _getDistanceFromEnd: function(scrollProperties: Object) {\n return (\n scrollProperties.contentLength -\n scrollProperties.visibleLength -\n scrollProperties.offset\n );\n },\n\n _updateVisibleRows: function(updatedFrames?: Array) {\n if (!this.props.onChangeVisibleRows) {\n return; // No need to compute visible rows if there is no callback\n }\n if (updatedFrames) {\n updatedFrames.forEach(newFrame => {\n this._childFrames[newFrame.index] = merge(newFrame);\n });\n }\n const isVertical = !this.props.horizontal;\n const dataSource = this.props.dataSource;\n const visibleMin = this.scrollProperties.offset;\n const visibleMax = visibleMin + this.scrollProperties.visibleLength;\n const allRowIDs = dataSource.rowIdentities;\n\n const header = this.props.renderHeader && this.props.renderHeader();\n let totalIndex = header ? 1 : 0;\n let visibilityChanged = false;\n const changedRows = {};\n for (let sectionIdx = 0; sectionIdx < allRowIDs.length; sectionIdx++) {\n const rowIDs = allRowIDs[sectionIdx];\n if (rowIDs.length === 0) {\n continue;\n }\n const sectionID = dataSource.sectionIdentities[sectionIdx];\n if (this.props.renderSectionHeader) {\n totalIndex++;\n }\n let visibleSection = this._visibleRows[sectionID];\n if (!visibleSection) {\n visibleSection = {};\n }\n for (let rowIdx = 0; rowIdx < rowIDs.length; rowIdx++) {\n const rowID = rowIDs[rowIdx];\n const frame = this._childFrames[totalIndex];\n totalIndex++;\n if (\n this.props.renderSeparator &&\n (rowIdx !== rowIDs.length - 1 || sectionIdx === allRowIDs.length - 1)\n ) {\n totalIndex++;\n }\n if (!frame) {\n break;\n }\n const rowVisible = visibleSection[rowID];\n const min = isVertical ? frame.y : frame.x;\n const max = min + (isVertical ? frame.height : frame.width);\n if ((!min && !max) || min === max) {\n break;\n }\n if (min > visibleMax || max < visibleMin) {\n if (rowVisible) {\n visibilityChanged = true;\n delete visibleSection[rowID];\n if (!changedRows[sectionID]) {\n changedRows[sectionID] = {};\n }\n changedRows[sectionID][rowID] = false;\n }\n } else if (!rowVisible) {\n visibilityChanged = true;\n visibleSection[rowID] = true;\n if (!changedRows[sectionID]) {\n changedRows[sectionID] = {};\n }\n changedRows[sectionID][rowID] = true;\n }\n }\n if (!isEmpty(visibleSection)) {\n this._visibleRows[sectionID] = visibleSection;\n } else if (this._visibleRows[sectionID]) {\n delete this._visibleRows[sectionID];\n }\n }\n visibilityChanged &&\n this.props.onChangeVisibleRows(this._visibleRows, changedRows);\n },\n\n _onScroll: function(e: Object) {\n const isVertical = !this.props.horizontal;\n this.scrollProperties.visibleLength =\n e.nativeEvent.layoutMeasurement[isVertical ? 'height' : 'width'];\n this.scrollProperties.contentLength =\n e.nativeEvent.contentSize[isVertical ? 'height' : 'width'];\n this.scrollProperties.offset =\n e.nativeEvent.contentOffset[isVertical ? 'y' : 'x'];\n this._updateVisibleRows(e.nativeEvent.updatedChildFrames);\n if (!this._maybeCallOnEndReached(e)) {\n this._renderMoreRowsIfNeeded();\n }\n\n if (\n this.props.onEndReached &&\n this._getDistanceFromEnd(this.scrollProperties) >\n this.props.onEndReachedThreshold\n ) {\n // Scrolled out of the end zone, so it should be able to trigger again.\n this._sentEndForContentLength = null;\n }\n\n this.props.onScroll && this.props.onScroll(e);\n },\n});\n\nmodule.exports = ((ListView: any): Class>);\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\nconst React = require('React');\nconst ListViewDataSource = require('ListViewDataSource');\n\n// This class is purely a facsimile of ListView so that we can\n// properly type it with Flow before migrating ListView off of\n// createReactClass. If there are things missing here that are in\n// ListView, that is unintentional.\nclass InternalListViewType extends React.Component {\n static DataSource = ListViewDataSource;\n setNativeProps(props: Object) {}\n flashScrollIndicators() {}\n getScrollResponder(): any {}\n getScrollableNode(): any {}\n // $FlowFixMe\n getMetrics(): Object {}\n scrollTo(...args: Array) {}\n scrollToEnd(options?: ?{animated?: ?boolean}) {}\n}\n\nmodule.exports = InternalListViewType;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst invariant = require('fbjs/lib/invariant');\nconst isEmpty = require('isEmpty');\n/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error\n * found when Flow v0.54 was deployed. To see the error delete this comment and\n * run Flow. */\nconst warning = require('fbjs/lib/warning');\n\nfunction defaultGetRowData(\n dataBlob: any,\n sectionID: number | string,\n rowID: number | string,\n): any {\n return dataBlob[sectionID][rowID];\n}\n\nfunction defaultGetSectionHeaderData(\n dataBlob: any,\n sectionID: number | string,\n): any {\n return dataBlob[sectionID];\n}\n\ntype differType = (data1: any, data2: any) => boolean;\n\ntype ParamType = {\n rowHasChanged: differType,\n getRowData?: ?typeof defaultGetRowData,\n sectionHeaderHasChanged?: ?differType,\n getSectionHeaderData?: ?typeof defaultGetSectionHeaderData,\n};\n\n/**\n * Provides efficient data processing and access to the\n * `ListView` component. A `ListViewDataSource` is created with functions for\n * extracting data from the input blob, and comparing elements (with default\n * implementations for convenience). The input blob can be as simple as an\n * array of strings, or an object with rows nested inside section objects.\n *\n * To update the data in the datasource, use `cloneWithRows` (or\n * `cloneWithRowsAndSections` if you care about sections). The data in the\n * data source is immutable, so you can't modify it directly. The clone methods\n * suck in the new data and compute a diff for each row so ListView knows\n * whether to re-render it or not.\n *\n * In this example, a component receives data in chunks, handled by\n * `_onDataArrived`, which concats the new data onto the old data and updates the\n * data source. We use `concat` to create a new array - mutating `this._data`,\n * e.g. with `this._data.push(newRowData)`, would be an error. `_rowHasChanged`\n * understands the shape of the row data and knows how to efficiently compare\n * it.\n *\n * ```\n * getInitialState: function() {\n * var ds = new ListView.DataSource({rowHasChanged: this._rowHasChanged});\n * return {ds};\n * },\n * _onDataArrived(newData) {\n * this._data = this._data.concat(newData);\n * this.setState({\n * ds: this.state.ds.cloneWithRows(this._data)\n * });\n * }\n * ```\n */\n\nclass ListViewDataSource {\n /**\n * You can provide custom extraction and `hasChanged` functions for section\n * headers and rows. If absent, data will be extracted with the\n * `defaultGetRowData` and `defaultGetSectionHeaderData` functions.\n *\n * The default extractor expects data of one of the following forms:\n *\n * { sectionID_1: { rowID_1: , ... }, ... }\n *\n * or\n *\n * { sectionID_1: [ , , ... ], ... }\n *\n * or\n *\n * [ [ , , ... ], ... ]\n *\n * The constructor takes in a params argument that can contain any of the\n * following:\n *\n * - getRowData(dataBlob, sectionID, rowID);\n * - getSectionHeaderData(dataBlob, sectionID);\n * - rowHasChanged(prevRowData, nextRowData);\n * - sectionHeaderHasChanged(prevSectionData, nextSectionData);\n */\n constructor(params: ParamType) {\n invariant(\n params && typeof params.rowHasChanged === 'function',\n 'Must provide a rowHasChanged function.',\n );\n this._rowHasChanged = params.rowHasChanged;\n this._getRowData = params.getRowData || defaultGetRowData;\n this._sectionHeaderHasChanged = params.sectionHeaderHasChanged;\n this._getSectionHeaderData =\n params.getSectionHeaderData || defaultGetSectionHeaderData;\n\n this._dataBlob = null;\n this._dirtyRows = [];\n this._dirtySections = [];\n this._cachedRowCount = 0;\n\n // These two private variables are accessed by outsiders because ListView\n // uses them to iterate over the data in this class.\n this.rowIdentities = [];\n this.sectionIdentities = [];\n }\n\n /**\n * Clones this `ListViewDataSource` with the specified `dataBlob` and\n * `rowIdentities`. The `dataBlob` is just an arbitrary blob of data. At\n * construction an extractor to get the interesting information was defined\n * (or the default was used).\n *\n * The `rowIdentities` is a 2D array of identifiers for rows.\n * ie. [['a1', 'a2'], ['b1', 'b2', 'b3'], ...]. If not provided, it's\n * assumed that the keys of the section data are the row identities.\n *\n * Note: This function does NOT clone the data in this data source. It simply\n * passes the functions defined at construction to a new data source with\n * the data specified. If you wish to maintain the existing data you must\n * handle merging of old and new data separately and then pass that into\n * this function as the `dataBlob`.\n */\n cloneWithRows(\n dataBlob: $ReadOnlyArray | {+[key: string]: any},\n rowIdentities: ?$ReadOnlyArray,\n ): ListViewDataSource {\n const rowIds = rowIdentities ? [[...rowIdentities]] : null;\n if (!this._sectionHeaderHasChanged) {\n this._sectionHeaderHasChanged = () => false;\n }\n return this.cloneWithRowsAndSections({s1: dataBlob}, ['s1'], rowIds);\n }\n\n /**\n * This performs the same function as the `cloneWithRows` function but here\n * you also specify what your `sectionIdentities` are. If you don't care\n * about sections you should safely be able to use `cloneWithRows`.\n *\n * `sectionIdentities` is an array of identifiers for sections.\n * ie. ['s1', 's2', ...]. The identifiers should correspond to the keys or array indexes\n * of the data you wish to include. If not provided, it's assumed that the\n * keys of dataBlob are the section identities.\n *\n * Note: this returns a new object!\n *\n * ```\n * const dataSource = ds.cloneWithRowsAndSections({\n * addresses: ['row 1', 'row 2'],\n * phone_numbers: ['data 1', 'data 2'],\n * }, ['phone_numbers']);\n * ```\n */\n cloneWithRowsAndSections(\n dataBlob: any,\n sectionIdentities: ?Array,\n rowIdentities: ?Array>,\n ): ListViewDataSource {\n invariant(\n typeof this._sectionHeaderHasChanged === 'function',\n 'Must provide a sectionHeaderHasChanged function with section data.',\n );\n invariant(\n !sectionIdentities ||\n !rowIdentities ||\n sectionIdentities.length === rowIdentities.length,\n 'row and section ids lengths must be the same',\n );\n\n const newSource = new ListViewDataSource({\n getRowData: this._getRowData,\n getSectionHeaderData: this._getSectionHeaderData,\n rowHasChanged: this._rowHasChanged,\n sectionHeaderHasChanged: this._sectionHeaderHasChanged,\n });\n newSource._dataBlob = dataBlob;\n if (sectionIdentities) {\n newSource.sectionIdentities = sectionIdentities;\n } else {\n newSource.sectionIdentities = Object.keys(dataBlob);\n }\n if (rowIdentities) {\n newSource.rowIdentities = rowIdentities;\n } else {\n newSource.rowIdentities = [];\n newSource.sectionIdentities.forEach(sectionID => {\n newSource.rowIdentities.push(Object.keys(dataBlob[sectionID]));\n });\n }\n newSource._cachedRowCount = countRows(newSource.rowIdentities);\n\n newSource._calculateDirtyArrays(\n this._dataBlob,\n this.sectionIdentities,\n this.rowIdentities,\n );\n\n return newSource;\n }\n\n /**\n * Returns the total number of rows in the data source.\n *\n * If you are specifying the rowIdentities or sectionIdentities, then `getRowCount` will return the number of rows in the filtered data source.\n */\n getRowCount(): number {\n return this._cachedRowCount;\n }\n\n /**\n * Returns the total number of rows in the data source (see `getRowCount` for how this is calculated) plus the number of sections in the data.\n *\n * If you are specifying the rowIdentities or sectionIdentities, then `getRowAndSectionCount` will return the number of rows & sections in the filtered data source.\n */\n getRowAndSectionCount(): number {\n return this._cachedRowCount + this.sectionIdentities.length;\n }\n\n /**\n * Returns if the row is dirtied and needs to be rerendered\n */\n rowShouldUpdate(sectionIndex: number, rowIndex: number): boolean {\n const needsUpdate = this._dirtyRows[sectionIndex][rowIndex];\n warning(\n needsUpdate !== undefined,\n 'missing dirtyBit for section, row: ' + sectionIndex + ', ' + rowIndex,\n );\n return needsUpdate;\n }\n\n /**\n * Gets the data required to render the row.\n */\n getRowData(sectionIndex: number, rowIndex: number): any {\n const sectionID = this.sectionIdentities[sectionIndex];\n const rowID = this.rowIdentities[sectionIndex][rowIndex];\n warning(\n sectionID !== undefined && rowID !== undefined,\n 'rendering invalid section, row: ' + sectionIndex + ', ' + rowIndex,\n );\n return this._getRowData(this._dataBlob, sectionID, rowID);\n }\n\n /**\n * Gets the rowID at index provided if the dataSource arrays were flattened,\n * or null of out of range indexes.\n */\n getRowIDForFlatIndex(index: number): ?string {\n let accessIndex = index;\n for (let ii = 0; ii < this.sectionIdentities.length; ii++) {\n if (accessIndex >= this.rowIdentities[ii].length) {\n accessIndex -= this.rowIdentities[ii].length;\n } else {\n return this.rowIdentities[ii][accessIndex];\n }\n }\n return null;\n }\n\n /**\n * Gets the sectionID at index provided if the dataSource arrays were flattened,\n * or null for out of range indexes.\n */\n getSectionIDForFlatIndex(index: number): ?string {\n let accessIndex = index;\n for (let ii = 0; ii < this.sectionIdentities.length; ii++) {\n if (accessIndex >= this.rowIdentities[ii].length) {\n accessIndex -= this.rowIdentities[ii].length;\n } else {\n return this.sectionIdentities[ii];\n }\n }\n return null;\n }\n\n /**\n * Returns an array containing the number of rows in each section\n */\n getSectionLengths(): Array {\n const results = [];\n for (let ii = 0; ii < this.sectionIdentities.length; ii++) {\n results.push(this.rowIdentities[ii].length);\n }\n return results;\n }\n\n /**\n * Returns if the section header is dirtied and needs to be rerendered\n */\n sectionHeaderShouldUpdate(sectionIndex: number): boolean {\n const needsUpdate = this._dirtySections[sectionIndex];\n warning(\n needsUpdate !== undefined,\n 'missing dirtyBit for section: ' + sectionIndex,\n );\n return needsUpdate;\n }\n\n /**\n * Gets the data required to render the section header\n */\n getSectionHeaderData(sectionIndex: number): any {\n if (!this._getSectionHeaderData) {\n return null;\n }\n const sectionID = this.sectionIdentities[sectionIndex];\n warning(\n sectionID !== undefined,\n 'renderSection called on invalid section: ' + sectionIndex,\n );\n return this._getSectionHeaderData(this._dataBlob, sectionID);\n }\n\n /**\n * Private members and methods.\n */\n\n _getRowData: typeof defaultGetRowData;\n _getSectionHeaderData: typeof defaultGetSectionHeaderData;\n _rowHasChanged: differType;\n _sectionHeaderHasChanged: ?differType;\n\n _dataBlob: any;\n _dirtyRows: Array>;\n _dirtySections: Array;\n _cachedRowCount: number;\n\n // These two 'protected' variables are accessed by ListView to iterate over\n // the data in this class.\n rowIdentities: Array>;\n sectionIdentities: Array;\n\n _calculateDirtyArrays(\n prevDataBlob: any,\n prevSectionIDs: Array,\n prevRowIDs: Array>,\n ): void {\n // construct a hashmap of the existing (old) id arrays\n const prevSectionsHash = keyedDictionaryFromArray(prevSectionIDs);\n const prevRowsHash = {};\n for (let ii = 0; ii < prevRowIDs.length; ii++) {\n var sectionID = prevSectionIDs[ii];\n warning(\n !prevRowsHash[sectionID],\n 'SectionID appears more than once: ' + sectionID,\n );\n prevRowsHash[sectionID] = keyedDictionaryFromArray(prevRowIDs[ii]);\n }\n\n // compare the 2 identity array and get the dirtied rows\n this._dirtySections = [];\n this._dirtyRows = [];\n\n let dirty;\n for (let sIndex = 0; sIndex < this.sectionIdentities.length; sIndex++) {\n var sectionID = this.sectionIdentities[sIndex];\n // dirty if the sectionHeader is new or _sectionHasChanged is true\n dirty = !prevSectionsHash[sectionID];\n const sectionHeaderHasChanged = this._sectionHeaderHasChanged;\n if (!dirty && sectionHeaderHasChanged) {\n dirty = sectionHeaderHasChanged(\n this._getSectionHeaderData(prevDataBlob, sectionID),\n this._getSectionHeaderData(this._dataBlob, sectionID),\n );\n }\n this._dirtySections.push(!!dirty);\n\n this._dirtyRows[sIndex] = [];\n for (\n let rIndex = 0;\n rIndex < this.rowIdentities[sIndex].length;\n rIndex++\n ) {\n const rowID = this.rowIdentities[sIndex][rIndex];\n // dirty if the section is new, row is new or _rowHasChanged is true\n dirty =\n !prevSectionsHash[sectionID] ||\n !prevRowsHash[sectionID][rowID] ||\n this._rowHasChanged(\n this._getRowData(prevDataBlob, sectionID, rowID),\n this._getRowData(this._dataBlob, sectionID, rowID),\n );\n this._dirtyRows[sIndex].push(!!dirty);\n }\n }\n }\n}\n\nfunction countRows(allRowIDs) {\n let totalRows = 0;\n for (let sectionIdx = 0; sectionIdx < allRowIDs.length; sectionIdx++) {\n const rowIDs = allRowIDs[sectionIdx];\n totalRows += rowIDs.length;\n }\n return totalRows;\n}\n\nfunction keyedDictionaryFromArray(arr) {\n if (isEmpty(arr)) {\n return {};\n }\n const result = {};\n for (let ii = 0; ii < arr.length; ii++) {\n const key = arr[ii];\n warning(!result[key], 'Value appears more than once in array: ' + key);\n result[key] = true;\n }\n return result;\n}\n\nmodule.exports = ListViewDataSource;\n","/**\n * Copyright (c) 2015-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 * @flow strict\n * @format\n */\n\n'use strict';\n\n/**\n * Mimics empty from PHP.\n */\nfunction isEmpty(obj: mixed): boolean {\n if (Array.isArray(obj)) {\n return obj.length === 0;\n } else if (typeof obj === 'object') {\n for (const i in obj) {\n return false;\n }\n return true;\n } else {\n return !obj;\n }\n}\n\nmodule.exports = isEmpty;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst AnimatedImplementation = require('AnimatedImplementation');\nconst Platform = require('Platform');\nconst React = require('React');\nconst ReactNative = require('ReactNative');\nconst ScrollResponder = require('ScrollResponder');\nconst ScrollViewStickyHeader = require('ScrollViewStickyHeader');\nconst StyleSheet = require('StyleSheet');\nconst View = require('View');\nconst InternalScrollViewType = require('InternalScrollViewType');\n\nconst createReactClass = require('create-react-class');\nconst dismissKeyboard = require('dismissKeyboard');\nconst flattenStyle = require('flattenStyle');\nconst invariant = require('fbjs/lib/invariant');\nconst processDecelerationRate = require('processDecelerationRate');\nconst requireNativeComponent = require('requireNativeComponent');\nconst warning = require('fbjs/lib/warning');\nconst resolveAssetSource = require('resolveAssetSource');\n\nimport type {PressEvent} from 'CoreEventTypes';\nimport type {EdgeInsetsProp} from 'EdgeInsetsPropType';\nimport type {NativeMethodsMixinType} from 'ReactNativeTypes';\nimport type {ViewStyleProp} from 'StyleSheet';\nimport type {ViewProps} from 'ViewPropTypes';\nimport type {PointProp} from 'PointPropType';\n\nimport type {ColorValue} from 'StyleSheetTypes';\n\nlet AndroidScrollView;\nlet AndroidHorizontalScrollContentView;\nlet AndroidHorizontalScrollView;\nlet RCTScrollView;\nlet RCTScrollContentView;\n\nif (Platform.OS === 'android') {\n AndroidScrollView = requireNativeComponent('RCTScrollView');\n AndroidHorizontalScrollView = requireNativeComponent(\n 'AndroidHorizontalScrollView',\n );\n AndroidHorizontalScrollContentView = requireNativeComponent(\n 'AndroidHorizontalScrollContentView',\n );\n} else if (Platform.OS === 'ios') {\n RCTScrollView = requireNativeComponent('RCTScrollView');\n RCTScrollContentView = requireNativeComponent('RCTScrollContentView');\n} else {\n RCTScrollView = requireNativeComponent('RCTScrollView');\n RCTScrollContentView = requireNativeComponent('RCTScrollContentView');\n}\n\ntype TouchableProps = $ReadOnly<{|\n onTouchStart?: (event: PressEvent) => void,\n onTouchMove?: (event: PressEvent) => void,\n onTouchEnd?: (event: PressEvent) => void,\n onTouchCancel?: (event: PressEvent) => void,\n onTouchEndCapture?: (event: PressEvent) => void,\n|}>;\n\ntype IOSProps = $ReadOnly<{|\n /**\n * Controls whether iOS should automatically adjust the content inset\n * for scroll views that are placed behind a navigation bar or\n * tab bar/ toolbar. The default value is true.\n * @platform ios\n */\n automaticallyAdjustContentInsets?: ?boolean,\n /**\n * The amount by which the scroll view content is inset from the edges\n * of the scroll view. Defaults to `{top: 0, left: 0, bottom: 0, right: 0}`.\n * @platform ios\n */\n contentInset?: ?EdgeInsetsProp,\n /**\n * Used to manually set the starting scroll offset.\n * The default value is `{x: 0, y: 0}`.\n * @platform ios\n */\n contentOffset?: ?PointProp,\n /**\n * When true, the scroll view bounces when it reaches the end of the\n * content if the content is larger then the scroll view along the axis of\n * the scroll direction. When false, it disables all bouncing even if\n * the `alwaysBounce*` props are true. The default value is true.\n * @platform ios\n */\n bounces?: ?boolean,\n /**\n * When true, gestures can drive zoom past min/max and the zoom will animate\n * to the min/max value at gesture end, otherwise the zoom will not exceed\n * the limits.\n * @platform ios\n */\n bouncesZoom?: ?boolean,\n /**\n * When true, the scroll view bounces horizontally when it reaches the end\n * even if the content is smaller than the scroll view itself. The default\n * value is true when `horizontal={true}` and false otherwise.\n * @platform ios\n */\n alwaysBounceHorizontal?: ?boolean,\n /**\n * When true, the scroll view bounces vertically when it reaches the end\n * even if the content is smaller than the scroll view itself. The default\n * value is false when `horizontal={true}` and true otherwise.\n * @platform ios\n */\n alwaysBounceVertical?: ?boolean,\n /**\n * When true, the scroll view automatically centers the content when the\n * content is smaller than the scroll view bounds; when the content is\n * larger than the scroll view, this property has no effect. The default\n * value is false.\n * @platform ios\n */\n centerContent?: ?boolean,\n /**\n * The style of the scroll indicators.\n *\n * - `'default'` (the default), same as `black`.\n * - `'black'`, scroll indicator is black. This style is good against a light background.\n * - `'white'`, scroll indicator is white. This style is good against a dark background.\n *\n * @platform ios\n */\n indicatorStyle?: ?('default' | 'black' | 'white'),\n /**\n * When true, the ScrollView will try to lock to only vertical or horizontal\n * scrolling while dragging. The default value is false.\n * @platform ios\n */\n directionalLockEnabled?: ?boolean,\n /**\n * When false, once tracking starts, won't try to drag if the touch moves.\n * The default value is true.\n * @platform ios\n */\n canCancelContentTouches?: ?boolean,\n /**\n * When set, the scroll view will adjust the scroll position so that the first child that is\n * currently visible and at or beyond `minIndexForVisible` will not change position. This is\n * useful for lists that are loading content in both directions, e.g. a chat thread, where new\n * messages coming in might otherwise cause the scroll position to jump. A value of 0 is common,\n * but other values such as 1 can be used to skip loading spinners or other content that should\n * not maintain position.\n *\n * The optional `autoscrollToTopThreshold` can be used to make the content automatically scroll\n * to the top after making the adjustment if the user was within the threshold of the top before\n * the adjustment was made. This is also useful for chat-like applications where you want to see\n * new messages scroll into place, but not if the user has scrolled up a ways and it would be\n * disruptive to scroll a bunch.\n *\n * Caveat 1: Reordering elements in the scrollview with this enabled will probably cause\n * jumpiness and jank. It can be fixed, but there are currently no plans to do so. For now,\n * don't re-order the content of any ScrollViews or Lists that use this feature.\n *\n * Caveat 2: This simply uses `contentOffset` and `frame.origin` in native code to compute\n * visibility. Occlusion, transforms, and other complexity won't be taken into account as to\n * whether content is \"visible\" or not.\n *\n * @platform ios\n */\n maintainVisibleContentPosition?: ?$ReadOnly<{|\n minIndexForVisible: number,\n autoscrollToTopThreshold?: ?number,\n |}>,\n /**\n * The maximum allowed zoom scale. The default value is 1.0.\n * @platform ios\n */\n maximumZoomScale?: ?number,\n /**\n * The minimum allowed zoom scale. The default value is 1.0.\n * @platform ios\n */\n minimumZoomScale?: ?number,\n /**\n * When true, ScrollView allows use of pinch gestures to zoom in and out.\n * The default value is true.\n * @platform ios\n */\n pinchGestureEnabled?: ?boolean,\n /**\n * This controls how often the scroll event will be fired while scrolling\n * (as a time interval in ms). A lower number yields better accuracy for code\n * that is tracking the scroll position, but can lead to scroll performance\n * problems due to the volume of information being send over the bridge.\n * You will not notice a difference between values set between 1-16 as the\n * JS run loop is synced to the screen refresh rate. If you do not need precise\n * scroll position tracking, set this value higher to limit the information\n * being sent across the bridge. The default value is zero, which results in\n * the scroll event being sent only once each time the view is scrolled.\n * @platform ios\n */\n scrollEventThrottle?: ?number,\n /**\n * The amount by which the scroll view indicators are inset from the edges\n * of the scroll view. This should normally be set to the same value as\n * the `contentInset`. Defaults to `{0, 0, 0, 0}`.\n * @platform ios\n */\n scrollIndicatorInsets?: ?EdgeInsetsProp,\n /**\n * When true, the scroll view scrolls to top when the status bar is tapped.\n * The default value is true.\n * @platform ios\n */\n scrollsToTop?: ?boolean,\n /**\n * When true, shows a horizontal scroll indicator.\n * The default value is true.\n */\n showsHorizontalScrollIndicator?: ?boolean,\n /**\n * When `snapToInterval` is set, `snapToAlignment` will define the relationship\n * of the snapping to the scroll view.\n *\n * - `'start'` (the default) will align the snap at the left (horizontal) or top (vertical)\n * - `'center'` will align the snap in the center\n * - `'end'` will align the snap at the right (horizontal) or bottom (vertical)\n *\n * @platform ios\n */\n snapToAlignment?: ?('start' | 'center' | 'end'),\n /**\n * The current scale of the scroll view content. The default value is 1.0.\n * @platform ios\n */\n zoomScale?: ?number,\n /**\n * This property specifies how the safe area insets are used to modify the\n * content area of the scroll view. The default value of this property is\n * \"never\". Available on iOS 11 and later.\n * @platform ios\n */\n contentInsetAdjustmentBehavior?: ?(\n | 'automatic'\n | 'scrollableAxes'\n | 'never'\n | 'always'\n ),\n /**\n * When true, ScrollView will emit updateChildFrames data in scroll events,\n * otherwise will not compute or emit child frame data. This only exists\n * to support legacy issues, `onLayout` should be used instead to retrieve\n * frame data.\n * The default value is false.\n * @platform ios\n */\n DEPRECATED_sendUpdatedChildFrames?: ?boolean,\n|}>;\n\ntype AndroidProps = $ReadOnly<{|\n /**\n * Enables nested scrolling for Android API level 21+.\n * Nested scrolling is supported by default on iOS\n * @platform android\n */\n nestedScrollEnabled?: ?boolean,\n /**\n * Sometimes a scrollview takes up more space than its content fills. When this is\n * the case, this prop will fill the rest of the scrollview with a color to avoid setting\n * a background and creating unnecessary overdraw. This is an advanced optimization\n * that is not needed in the general case.\n * @platform android\n */\n endFillColor?: ?ColorValue,\n /**\n * Tag used to log scroll performance on this scroll view. Will force\n * momentum events to be turned on (see sendMomentumEvents). This doesn't do\n * anything out of the box and you need to implement a custom native\n * FpsListener for it to be useful.\n * @platform android\n */\n scrollPerfTag?: ?string,\n /**\n * Used to override default value of overScroll mode.\n *\n * Possible values:\n *\n * - `'auto'` - Default value, allow a user to over-scroll\n * this view only if the content is large enough to meaningfully scroll.\n * - `'always'` - Always allow a user to over-scroll this view.\n * - `'never'` - Never allow a user to over-scroll this view.\n *\n * @platform android\n */\n overScrollMode?: ?('auto' | 'always' | 'never'),\n|}>;\n\ntype VRProps = $ReadOnly<{|\n /**\n * Optionally an image can be used for the scroll bar thumb. This will\n * override the color. While the image is loading or the image fails to\n * load the color will be used instead. Use an alpha of 0 in the color\n * to avoid seeing it while the image is loading.\n *\n * - `uri` - a string representing the resource identifier for the image, which\n * should be either a local file path or the name of a static image resource\n * - `number` - Opaque type returned by something like\n * `import IMAGE from './image.jpg'`.\n * @platform vr\n */\n scrollBarThumbImage?: ?($ReadOnly<{||}> | number), // Opaque type returned by import IMAGE from './image.jpg'\n|}>;\n\nexport type Props = $ReadOnly<{|\n ...ViewProps,\n ...TouchableProps,\n ...IOSProps,\n ...AndroidProps,\n ...VRProps,\n\n /**\n * These styles will be applied to the scroll view content container which\n * wraps all of the child views. Example:\n *\n * ```\n * return (\n * \n * \n * );\n * ...\n * const styles = StyleSheet.create({\n * contentContainer: {\n * paddingVertical: 20\n * }\n * });\n * ```\n */\n contentContainerStyle?: ?ViewStyleProp,\n /**\n * A floating-point number that determines how quickly the scroll view\n * decelerates after the user lifts their finger. You may also use string\n * shortcuts `\"normal\"` and `\"fast\"` which match the underlying iOS settings\n * for `UIScrollViewDecelerationRateNormal` and\n * `UIScrollViewDecelerationRateFast` respectively.\n *\n * - `'normal'`: 0.998 on iOS, 0.985 on Android (the default)\n * - `'fast'`: 0.99 on iOS, 0.9 on Android\n */\n decelerationRate?: ?('fast' | 'normal' | number),\n /**\n * When true, the scroll view's children are arranged horizontally in a row\n * instead of vertically in a column. The default value is false.\n */\n horizontal?: ?boolean,\n /**\n * If sticky headers should stick at the bottom instead of the top of the\n * ScrollView. This is usually used with inverted ScrollViews.\n */\n invertStickyHeaders?: ?boolean,\n /**\n * Determines whether the keyboard gets dismissed in response to a drag.\n *\n * *Cross platform*\n *\n * - `'none'` (the default), drags do not dismiss the keyboard.\n * - `'on-drag'`, the keyboard is dismissed when a drag begins.\n *\n * *iOS Only*\n *\n * - `'interactive'`, the keyboard is dismissed interactively with the drag and moves in\n * synchrony with the touch; dragging upwards cancels the dismissal.\n * On android this is not supported and it will have the same behavior as 'none'.\n */\n keyboardDismissMode?: ?(\n | 'none' // default\n | 'on-drag' // cross-platform\n | 'interactive'\n ), // ios only\n /**\n * Determines when the keyboard should stay visible after a tap.\n *\n * - `'never'` (the default), tapping outside of the focused text input when the keyboard\n * is up dismisses the keyboard. When this happens, children won't receive the tap.\n * - `'always'`, the keyboard will not dismiss automatically, and the scroll view will not\n * catch taps, but children of the scroll view can catch taps.\n * - `'handled'`, the keyboard will not dismiss automatically when the tap was handled by\n * a children, (or captured by an ancestor).\n * - `false`, deprecated, use 'never' instead\n * - `true`, deprecated, use 'always' instead\n */\n // $FlowFixMe(site=react_native_fb) Issues found when typing ScrollView\n keyboardShouldPersistTaps?: ?('always' | 'never' | 'handled' | false | true),\n /**\n * Called when the momentum scroll starts (scroll which occurs as the ScrollView glides to a stop).\n */\n onMomentumScrollBegin?: ?Function,\n /**\n * Called when the momentum scroll ends (scroll which occurs as the ScrollView glides to a stop).\n */\n onMomentumScrollEnd?: ?Function,\n\n /**\n * Fires at most once per frame during scrolling. The frequency of the\n * events can be controlled using the `scrollEventThrottle` prop.\n */\n onScroll?: ?Function,\n /**\n * Called when the user begins to drag the scroll view.\n */\n onScrollBeginDrag?: ?Function,\n /**\n * Called when the user stops dragging the scroll view and it either stops\n * or begins to glide.\n */\n onScrollEndDrag?: ?Function,\n /**\n * Called when scrollable content view of the ScrollView changes.\n *\n * Handler function is passed the content width and content height as parameters:\n * `(contentWidth, contentHeight)`\n *\n * It's implemented using onLayout handler attached to the content container\n * which this ScrollView renders.\n */\n onContentSizeChange?: ?Function,\n onKeyboardDidShow?: (event: PressEvent) => void,\n /**\n * When true, the scroll view stops on multiples of the scroll view's size\n * when scrolling. This can be used for horizontal pagination. The default\n * value is false.\n *\n * Note: Vertical pagination is not supported on Android.\n */\n pagingEnabled?: ?boolean,\n /**\n * When false, the view cannot be scrolled via touch interaction.\n * The default value is true.\n *\n * Note that the view can always be scrolled by calling `scrollTo`.\n */\n scrollEnabled?: ?boolean,\n /**\n * When true, shows a vertical scroll indicator.\n * The default value is true.\n */\n showsVerticalScrollIndicator?: ?boolean,\n /**\n * An array of child indices determining which children get docked to the\n * top of the screen when scrolling. For example, passing\n * `stickyHeaderIndices={[0]}` will cause the first child to be fixed to the\n * top of the scroll view. This property is not supported in conjunction\n * with `horizontal={true}`.\n */\n stickyHeaderIndices?: ?$ReadOnlyArray,\n /**\n * When set, causes the scroll view to stop at multiples of the value of\n * `snapToInterval`. This can be used for paginating through children\n * that have lengths smaller than the scroll view. Typically used in\n * combination with `snapToAlignment` and `decelerationRate=\"fast\"`.\n *\n * Overrides less configurable `pagingEnabled` prop.\n */\n snapToInterval?: ?number,\n /**\n * When set, causes the scroll view to stop at the defined offsets.\n * This can be used for paginating through variously sized children\n * that have lengths smaller than the scroll view. Typically used in\n * combination with `decelerationRate=\"fast\"`.\n *\n * Overrides less configurable `pagingEnabled` and `snapToInterval` props.\n */\n snapToOffsets?: ?$ReadOnlyArray,\n /**\n * Experimental: When true, offscreen child views (whose `overflow` value is\n * `hidden`) are removed from their native backing superview when offscreen.\n * This can improve scrolling performance on long lists. The default value is\n * true.\n */\n removeClippedSubviews?: ?boolean,\n /**\n * A RefreshControl component, used to provide pull-to-refresh\n * functionality for the ScrollView. Only works for vertical ScrollViews\n * (`horizontal` prop must be `false`).\n *\n * See [RefreshControl](docs/refreshcontrol.html).\n */\n refreshControl?: ?React.Element,\n style?: ?ViewStyleProp,\n children?: React.Node,\n|}>;\n\n/**\n * Component that wraps platform ScrollView while providing\n * integration with touch locking \"responder\" system.\n *\n * Keep in mind that ScrollViews must have a bounded height in order to work,\n * since they contain unbounded-height children into a bounded container (via\n * a scroll interaction). In order to bound the height of a ScrollView, either\n * set the height of the view directly (discouraged) or make sure all parent\n * views have bounded height. Forgetting to transfer `{flex: 1}` down the\n * view stack can lead to errors here, which the element inspector makes\n * easy to debug.\n *\n * Doesn't yet support other contained responders from blocking this scroll\n * view from becoming the responder.\n *\n *\n * `` vs [``](/react-native/docs/flatlist.html) - which one to use?\n *\n * `ScrollView` simply renders all its react child components at once. That\n * makes it very easy to understand and use.\n *\n * On the other hand, this has a performance downside. Imagine you have a very\n * long list of items you want to display, maybe several screens worth of\n * content. Creating JS components and native views for everything all at once,\n * much of which may not even be shown, will contribute to slow rendering and\n * increased memory usage.\n *\n * This is where `FlatList` comes into play. `FlatList` renders items lazily,\n * just when they are about to appear, and removes items that scroll way off\n * screen to save memory and processing time.\n *\n * `FlatList` is also handy if you want to render separators between your items,\n * multiple columns, infinite scroll loading, or any number of other features it\n * supports out of the box.\n */\nconst ScrollView = createReactClass({\n displayName: 'ScrollView',\n mixins: [ScrollResponder.Mixin],\n\n _scrollAnimatedValue: (new AnimatedImplementation.Value(\n 0,\n ): AnimatedImplementation.Value),\n _scrollAnimatedValueAttachment: (null: ?{detach: () => void}),\n _stickyHeaderRefs: (new Map(): Map),\n _headerLayoutYs: (new Map(): Map),\n getInitialState: function() {\n return {\n ...this.scrollResponderMixinGetInitialState(),\n layoutHeight: null,\n };\n },\n\n UNSAFE_componentWillMount: function() {\n this._scrollAnimatedValue = new AnimatedImplementation.Value(\n this.props.contentOffset ? this.props.contentOffset.y : 0,\n );\n this._scrollAnimatedValue.setOffset(\n this.props.contentInset ? this.props.contentInset.top : 0,\n );\n this._stickyHeaderRefs = new Map();\n this._headerLayoutYs = new Map();\n },\n\n componentDidMount: function() {\n this._updateAnimatedNodeAttachment();\n },\n\n componentDidUpdate: function() {\n this._updateAnimatedNodeAttachment();\n },\n\n componentWillUnmount: function() {\n if (this._scrollAnimatedValueAttachment) {\n this._scrollAnimatedValueAttachment.detach();\n }\n },\n\n setNativeProps: function(props: Object) {\n this._scrollViewRef && this._scrollViewRef.setNativeProps(props);\n },\n\n /**\n * Returns a reference to the underlying scroll responder, which supports\n * operations like `scrollTo`. All ScrollView-like components should\n * implement this method so that they can be composed while providing access\n * to the underlying scroll responder's methods.\n */\n getScrollResponder: function(): ScrollView {\n return this;\n },\n\n getScrollableNode: function(): any {\n return ReactNative.findNodeHandle(this._scrollViewRef);\n },\n\n getInnerViewNode: function(): any {\n return ReactNative.findNodeHandle(this._innerViewRef);\n },\n\n /**\n * Scrolls to a given x, y offset, either immediately or with a smooth animation.\n *\n * Example:\n *\n * `scrollTo({x: 0, y: 0, animated: true})`\n *\n * Note: The weird function signature is due to the fact that, for historical reasons,\n * the function also accepts separate arguments as an alternative to the options object.\n * This is deprecated due to ambiguity (y before x), and SHOULD NOT BE USED.\n */\n scrollTo: function(\n y?: number | {x?: number, y?: number, animated?: boolean},\n x?: number,\n animated?: boolean,\n ) {\n if (typeof y === 'number') {\n console.warn(\n '`scrollTo(y, x, animated)` is deprecated. Use `scrollTo({x: 5, y: 5, ' +\n 'animated: true})` instead.',\n );\n } else {\n ({x, y, animated} = y || {});\n }\n this.getScrollResponder().scrollResponderScrollTo({\n x: x || 0,\n y: y || 0,\n animated: animated !== false,\n });\n },\n\n /**\n * If this is a vertical ScrollView scrolls to the bottom.\n * If this is a horizontal ScrollView scrolls to the right.\n *\n * Use `scrollToEnd({animated: true})` for smooth animated scrolling,\n * `scrollToEnd({animated: false})` for immediate scrolling.\n * If no options are passed, `animated` defaults to true.\n */\n scrollToEnd: function(options?: {animated?: boolean}) {\n // Default to true\n const animated = (options && options.animated) !== false;\n this.getScrollResponder().scrollResponderScrollToEnd({\n animated: animated,\n });\n },\n\n /**\n * Deprecated, use `scrollTo` instead.\n */\n scrollWithoutAnimationTo: function(y: number = 0, x: number = 0) {\n console.warn(\n '`scrollWithoutAnimationTo` is deprecated. Use `scrollTo` instead',\n );\n this.scrollTo({x, y, animated: false});\n },\n\n /**\n * Displays the scroll indicators momentarily.\n *\n * @platform ios\n */\n flashScrollIndicators: function() {\n this.getScrollResponder().scrollResponderFlashScrollIndicators();\n },\n\n _getKeyForIndex: function(index, childArray) {\n // $FlowFixMe Invalid prop usage\n const child = childArray[index];\n return child && child.key;\n },\n\n _updateAnimatedNodeAttachment: function() {\n if (this._scrollAnimatedValueAttachment) {\n this._scrollAnimatedValueAttachment.detach();\n }\n if (\n this.props.stickyHeaderIndices &&\n this.props.stickyHeaderIndices.length > 0\n ) {\n this._scrollAnimatedValueAttachment = AnimatedImplementation.attachNativeEvent(\n this._scrollViewRef,\n 'onScroll',\n [{nativeEvent: {contentOffset: {y: this._scrollAnimatedValue}}}],\n );\n }\n },\n\n _setStickyHeaderRef: function(key, ref) {\n if (ref) {\n this._stickyHeaderRefs.set(key, ref);\n } else {\n this._stickyHeaderRefs.delete(key);\n }\n },\n\n _onStickyHeaderLayout: function(index, event, key) {\n if (!this.props.stickyHeaderIndices) {\n return;\n }\n const childArray = React.Children.toArray(this.props.children);\n if (key !== this._getKeyForIndex(index, childArray)) {\n // ignore stale layout update\n return;\n }\n\n const layoutY = event.nativeEvent.layout.y;\n this._headerLayoutYs.set(key, layoutY);\n\n const indexOfIndex = this.props.stickyHeaderIndices.indexOf(index);\n const previousHeaderIndex = this.props.stickyHeaderIndices[\n indexOfIndex - 1\n ];\n if (previousHeaderIndex != null) {\n const previousHeader = this._stickyHeaderRefs.get(\n this._getKeyForIndex(previousHeaderIndex, childArray),\n );\n previousHeader && previousHeader.setNextHeaderY(layoutY);\n }\n },\n\n _handleScroll: function(e: Object) {\n if (__DEV__) {\n if (\n this.props.onScroll &&\n this.props.scrollEventThrottle == null &&\n Platform.OS === 'ios'\n ) {\n console.log(\n 'You specified `onScroll` on a but not ' +\n '`scrollEventThrottle`. You will only receive one event. ' +\n 'Using `16` you get all the events but be aware that it may ' +\n \"cause frame drops, use a bigger number if you don't need as \" +\n 'much precision.',\n );\n }\n }\n if (Platform.OS === 'android') {\n if (\n this.props.keyboardDismissMode === 'on-drag' &&\n this.state.isTouching\n ) {\n dismissKeyboard();\n }\n }\n this.scrollResponderHandleScroll(e);\n },\n\n _handleLayout: function(e: Object) {\n if (this.props.invertStickyHeaders) {\n this.setState({layoutHeight: e.nativeEvent.layout.height});\n }\n if (this.props.onLayout) {\n this.props.onLayout(e);\n }\n },\n\n _handleContentOnLayout: function(e: Object) {\n const {width, height} = e.nativeEvent.layout;\n this.props.onContentSizeChange &&\n this.props.onContentSizeChange(width, height);\n },\n\n _scrollViewRef: (null: ?ScrollView),\n _setScrollViewRef: function(ref: ?ScrollView) {\n this._scrollViewRef = ref;\n },\n\n _innerViewRef: (null: ?NativeMethodsMixinType),\n _setInnerViewRef: function(ref: ?NativeMethodsMixinType) {\n this._innerViewRef = ref;\n },\n\n render: function() {\n let ScrollViewClass;\n let ScrollContentContainerViewClass;\n if (Platform.OS === 'android') {\n if (this.props.horizontal) {\n ScrollViewClass = AndroidHorizontalScrollView;\n ScrollContentContainerViewClass = AndroidHorizontalScrollContentView;\n } else {\n ScrollViewClass = AndroidScrollView;\n ScrollContentContainerViewClass = View;\n }\n } else {\n ScrollViewClass = RCTScrollView;\n ScrollContentContainerViewClass = RCTScrollContentView;\n }\n\n invariant(\n ScrollViewClass !== undefined,\n 'ScrollViewClass must not be undefined',\n );\n\n invariant(\n ScrollContentContainerViewClass !== undefined,\n 'ScrollContentContainerViewClass must not be undefined',\n );\n\n const contentContainerStyle = [\n this.props.horizontal && styles.contentContainerHorizontal,\n this.props.contentContainerStyle,\n ];\n if (__DEV__ && this.props.style) {\n const style = flattenStyle(this.props.style);\n const childLayoutProps = ['alignItems', 'justifyContent'].filter(\n prop => style && style[prop] !== undefined,\n );\n invariant(\n childLayoutProps.length === 0,\n 'ScrollView child layout (' +\n JSON.stringify(childLayoutProps) +\n ') must be applied through the contentContainerStyle prop.',\n );\n }\n\n let contentSizeChangeProps = {};\n if (this.props.onContentSizeChange) {\n contentSizeChangeProps = {\n onLayout: this._handleContentOnLayout,\n };\n }\n\n const {stickyHeaderIndices} = this.props;\n const hasStickyHeaders =\n stickyHeaderIndices && stickyHeaderIndices.length > 0;\n const childArray =\n hasStickyHeaders && React.Children.toArray(this.props.children);\n const children = hasStickyHeaders\n ? // $FlowFixMe Invalid prop usage\n childArray.map((child, index) => {\n const indexOfIndex = child ? stickyHeaderIndices.indexOf(index) : -1;\n if (indexOfIndex > -1) {\n const key = child.key;\n const nextIndex = stickyHeaderIndices[indexOfIndex + 1];\n return (\n this._setStickyHeaderRef(key, ref)}\n nextHeaderLayoutY={this._headerLayoutYs.get(\n this._getKeyForIndex(nextIndex, childArray),\n )}\n onLayout={event =>\n this._onStickyHeaderLayout(index, event, key)\n }\n scrollAnimatedValue={this._scrollAnimatedValue}\n inverted={this.props.invertStickyHeaders}\n scrollViewHeight={this.state.layoutHeight}>\n {child}\n \n );\n } else {\n return child;\n }\n })\n : this.props.children;\n const contentContainer = (\n \n {children}\n \n );\n\n const alwaysBounceHorizontal =\n this.props.alwaysBounceHorizontal !== undefined\n ? this.props.alwaysBounceHorizontal\n : this.props.horizontal;\n\n const alwaysBounceVertical =\n this.props.alwaysBounceVertical !== undefined\n ? this.props.alwaysBounceVertical\n : !this.props.horizontal;\n\n const DEPRECATED_sendUpdatedChildFrames = !!this.props\n .DEPRECATED_sendUpdatedChildFrames;\n\n const baseStyle = this.props.horizontal\n ? styles.baseHorizontal\n : styles.baseVertical;\n const props = {\n ...this.props,\n alwaysBounceHorizontal,\n alwaysBounceVertical,\n style: ([baseStyle, this.props.style]: ?Array),\n // Override the onContentSizeChange from props, since this event can\n // bubble up from TextInputs\n onContentSizeChange: null,\n onLayout: this._handleLayout,\n onMomentumScrollBegin: this.scrollResponderHandleMomentumScrollBegin,\n onMomentumScrollEnd: this.scrollResponderHandleMomentumScrollEnd,\n onResponderGrant: this.scrollResponderHandleResponderGrant,\n onResponderReject: this.scrollResponderHandleResponderReject,\n onResponderRelease: this.scrollResponderHandleResponderRelease,\n // $FlowFixMe\n onResponderTerminate: this.scrollResponderHandleTerminate,\n onResponderTerminationRequest: this\n .scrollResponderHandleTerminationRequest,\n onScroll: this._handleScroll,\n onScrollBeginDrag: this.scrollResponderHandleScrollBeginDrag,\n onScrollEndDrag: this.scrollResponderHandleScrollEndDrag,\n onScrollShouldSetResponder: this\n .scrollResponderHandleScrollShouldSetResponder,\n onStartShouldSetResponder: this\n .scrollResponderHandleStartShouldSetResponder,\n onStartShouldSetResponderCapture: this\n .scrollResponderHandleStartShouldSetResponderCapture,\n onTouchEnd: this.scrollResponderHandleTouchEnd,\n onTouchMove: this.scrollResponderHandleTouchMove,\n onTouchStart: this.scrollResponderHandleTouchStart,\n onTouchCancel: this.scrollResponderHandleTouchCancel,\n scrollBarThumbImage: resolveAssetSource(this.props.scrollBarThumbImage),\n scrollEventThrottle: hasStickyHeaders\n ? 1\n : this.props.scrollEventThrottle,\n sendMomentumEvents:\n this.props.onMomentumScrollBegin || this.props.onMomentumScrollEnd\n ? true\n : false,\n DEPRECATED_sendUpdatedChildFrames,\n // pagingEnabled is overridden by snapToInterval / snapToOffsets\n pagingEnabled: Platform.select({\n // on iOS, pagingEnabled must be set to false to have snapToInterval / snapToOffsets work\n ios:\n this.props.pagingEnabled &&\n this.props.snapToInterval == null &&\n this.props.snapToOffsets == null,\n // on Android, pagingEnabled must be set to true to have snapToInterval / snapToOffsets work\n android:\n this.props.pagingEnabled ||\n this.props.snapToInterval != null ||\n this.props.snapToOffsets != null,\n }),\n };\n\n const {decelerationRate} = this.props;\n if (decelerationRate != null) {\n props.decelerationRate = processDecelerationRate(decelerationRate);\n }\n\n const refreshControl = this.props.refreshControl;\n\n if (refreshControl) {\n if (Platform.OS === 'ios') {\n // On iOS the RefreshControl is a child of the ScrollView.\n // tvOS lacks native support for RefreshControl, so don't include it in that case\n return (\n \n {Platform.isTV ? null : refreshControl}\n {contentContainer}\n \n );\n } else if (Platform.OS === 'android') {\n // On Android wrap the ScrollView with a AndroidSwipeRefreshLayout.\n // Since the ScrollView is wrapped add the style props to the\n // AndroidSwipeRefreshLayout and use flex: 1 for the ScrollView.\n // Note: we should only apply props.style on the wrapper\n // however, the ScrollView still needs the baseStyle to be scrollable\n\n return React.cloneElement(\n refreshControl,\n {style: props.style},\n \n {contentContainer}\n ,\n );\n }\n }\n return (\n \n {contentContainer}\n \n );\n },\n});\n\nconst TypedScrollView = ((ScrollView: any): Class<\n InternalScrollViewType,\n>);\n\nconst styles = StyleSheet.create({\n baseVertical: {\n flexGrow: 1,\n flexShrink: 1,\n flexDirection: 'column',\n overflow: 'scroll',\n },\n baseHorizontal: {\n flexGrow: 1,\n flexShrink: 1,\n flexDirection: 'row',\n overflow: 'scroll',\n },\n contentContainerHorizontal: {\n flexDirection: 'row',\n },\n});\n\nmodule.exports = TypedScrollView;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst Dimensions = require('Dimensions');\nconst FrameRateLogger = require('FrameRateLogger');\nconst Keyboard = require('Keyboard');\nconst ReactNative = require('ReactNative');\nconst Subscribable = require('Subscribable');\nconst TextInputState = require('TextInputState');\nconst UIManager = require('UIManager');\n\nconst invariant = require('fbjs/lib/invariant');\nconst nullthrows = require('fbjs/lib/nullthrows');\nconst performanceNow = require('fbjs/lib/performanceNow');\nconst warning = require('fbjs/lib/warning');\n\nconst {ScrollViewManager} = require('NativeModules');\n\n/**\n * Mixin that can be integrated in order to handle scrolling that plays well\n * with `ResponderEventPlugin`. Integrate with your platform specific scroll\n * views, or even your custom built (every-frame animating) scroll views so that\n * all of these systems play well with the `ResponderEventPlugin`.\n *\n * iOS scroll event timing nuances:\n * ===============================\n *\n *\n * Scrolling without bouncing, if you touch down:\n * -------------------------------\n *\n * 1. `onMomentumScrollBegin` (when animation begins after letting up)\n * ... physical touch starts ...\n * 2. `onTouchStartCapture` (when you press down to stop the scroll)\n * 3. `onTouchStart` (same, but bubble phase)\n * 4. `onResponderRelease` (when lifting up - you could pause forever before * lifting)\n * 5. `onMomentumScrollEnd`\n *\n *\n * Scrolling with bouncing, if you touch down:\n * -------------------------------\n *\n * 1. `onMomentumScrollBegin` (when animation begins after letting up)\n * ... bounce begins ...\n * ... some time elapses ...\n * ... physical touch during bounce ...\n * 2. `onMomentumScrollEnd` (Makes no sense why this occurs first during bounce)\n * 3. `onTouchStartCapture` (immediately after `onMomentumScrollEnd`)\n * 4. `onTouchStart` (same, but bubble phase)\n * 5. `onTouchEnd` (You could hold the touch start for a long time)\n * 6. `onMomentumScrollBegin` (When releasing the view starts bouncing back)\n *\n * So when we receive an `onTouchStart`, how can we tell if we are touching\n * *during* an animation (which then causes the animation to stop)? The only way\n * to tell is if the `touchStart` occurred immediately after the\n * `onMomentumScrollEnd`.\n *\n * This is abstracted out for you, so you can just call this.scrollResponderIsAnimating() if\n * necessary\n *\n * `ScrollResponder` also includes logic for blurring a currently focused input\n * if one is focused while scrolling. The `ScrollResponder` is a natural place\n * to put this logic since it can support not dismissing the keyboard while\n * scrolling, unless a recognized \"tap\"-like gesture has occurred.\n *\n * The public lifecycle API includes events for keyboard interaction, responder\n * interaction, and scrolling (among others). The keyboard callbacks\n * `onKeyboardWill/Did/*` are *global* events, but are invoked on scroll\n * responder's props so that you can guarantee that the scroll responder's\n * internal state has been updated accordingly (and deterministically) by\n * the time the props callbacks are invoke. Otherwise, you would always wonder\n * if the scroll responder is currently in a state where it recognizes new\n * keyboard positions etc. If coordinating scrolling with keyboard movement,\n * *always* use these hooks instead of listening to your own global keyboard\n * events.\n *\n * Public keyboard lifecycle API: (props callbacks)\n *\n * Standard Keyboard Appearance Sequence:\n *\n * this.props.onKeyboardWillShow\n * this.props.onKeyboardDidShow\n *\n * `onScrollResponderKeyboardDismissed` will be invoked if an appropriate\n * tap inside the scroll responder's scrollable region was responsible\n * for the dismissal of the keyboard. There are other reasons why the\n * keyboard could be dismissed.\n *\n * this.props.onScrollResponderKeyboardDismissed\n *\n * Standard Keyboard Hide Sequence:\n *\n * this.props.onKeyboardWillHide\n * this.props.onKeyboardDidHide\n */\n\nconst IS_ANIMATING_TOUCH_START_THRESHOLD_MS = 16;\n\ntype State = {\n isTouching: boolean,\n lastMomentumScrollBeginTime: number,\n lastMomentumScrollEndTime: number,\n observedScrollSinceBecomingResponder: boolean,\n becameResponderWhileAnimating: boolean,\n};\ntype Event = Object;\n\nconst ScrollResponderMixin = {\n mixins: [Subscribable.Mixin],\n scrollResponderMixinGetInitialState: function(): State {\n return {\n isTouching: false,\n lastMomentumScrollBeginTime: 0,\n lastMomentumScrollEndTime: 0,\n\n // Reset to false every time becomes responder. This is used to:\n // - Determine if the scroll view has been scrolled and therefore should\n // refuse to give up its responder lock.\n // - Determine if releasing should dismiss the keyboard when we are in\n // tap-to-dismiss mode (this.props.keyboardShouldPersistTaps !== 'always').\n observedScrollSinceBecomingResponder: false,\n becameResponderWhileAnimating: false,\n };\n },\n\n /**\n * Invoke this from an `onScroll` event.\n */\n scrollResponderHandleScrollShouldSetResponder: function(): boolean {\n return this.state.isTouching;\n },\n\n /**\n * Merely touch starting is not sufficient for a scroll view to become the\n * responder. Being the \"responder\" means that the very next touch move/end\n * event will result in an action/movement.\n *\n * Invoke this from an `onStartShouldSetResponder` event.\n *\n * `onStartShouldSetResponder` is used when the next move/end will trigger\n * some UI movement/action, but when you want to yield priority to views\n * nested inside of the view.\n *\n * There may be some cases where scroll views actually should return `true`\n * from `onStartShouldSetResponder`: Any time we are detecting a standard tap\n * that gives priority to nested views.\n *\n * - If a single tap on the scroll view triggers an action such as\n * recentering a map style view yet wants to give priority to interaction\n * views inside (such as dropped pins or labels), then we would return true\n * from this method when there is a single touch.\n *\n * - Similar to the previous case, if a two finger \"tap\" should trigger a\n * zoom, we would check the `touches` count, and if `>= 2`, we would return\n * true.\n *\n */\n scrollResponderHandleStartShouldSetResponder: function(e: Event): boolean {\n const currentlyFocusedTextInput = TextInputState.currentlyFocusedField();\n\n if (\n this.props.keyboardShouldPersistTaps === 'handled' &&\n currentlyFocusedTextInput != null &&\n e.target !== currentlyFocusedTextInput\n ) {\n return true;\n }\n return false;\n },\n\n /**\n * There are times when the scroll view wants to become the responder\n * (meaning respond to the next immediate `touchStart/touchEnd`), in a way\n * that *doesn't* give priority to nested views (hence the capture phase):\n *\n * - Currently animating.\n * - Tapping anywhere that is not a text input, while the keyboard is\n * up (which should dismiss the keyboard).\n *\n * Invoke this from an `onStartShouldSetResponderCapture` event.\n */\n scrollResponderHandleStartShouldSetResponderCapture: function(\n e: Event,\n ): boolean {\n // The scroll view should receive taps instead of its descendants if:\n // * it is already animating/decelerating\n if (this.scrollResponderIsAnimating()) {\n return true;\n }\n\n // * the keyboard is up, keyboardShouldPersistTaps is 'never' (the default),\n // and a new touch starts with a non-textinput target (in which case the\n // first tap should be sent to the scroll view and dismiss the keyboard,\n // then the second tap goes to the actual interior view)\n const currentlyFocusedTextInput = TextInputState.currentlyFocusedField();\n const {keyboardShouldPersistTaps} = this.props;\n const keyboardNeverPersistTaps =\n !keyboardShouldPersistTaps || keyboardShouldPersistTaps === 'never';\n if (\n keyboardNeverPersistTaps &&\n currentlyFocusedTextInput != null &&\n !TextInputState.isTextInput(e.target)\n ) {\n return true;\n }\n\n return false;\n },\n\n /**\n * Invoke this from an `onResponderReject` event.\n *\n * Some other element is not yielding its role as responder. Normally, we'd\n * just disable the `UIScrollView`, but a touch has already began on it, the\n * `UIScrollView` will not accept being disabled after that. The easiest\n * solution for now is to accept the limitation of disallowing this\n * altogether. To improve this, find a way to disable the `UIScrollView` after\n * a touch has already started.\n */\n scrollResponderHandleResponderReject: function() {},\n\n /**\n * We will allow the scroll view to give up its lock iff it acquired the lock\n * during an animation. This is a very useful default that happens to satisfy\n * many common user experiences.\n *\n * - Stop a scroll on the left edge, then turn that into an outer view's\n * backswipe.\n * - Stop a scroll mid-bounce at the top, continue pulling to have the outer\n * view dismiss.\n * - However, without catching the scroll view mid-bounce (while it is\n * motionless), if you drag far enough for the scroll view to become\n * responder (and therefore drag the scroll view a bit), any backswipe\n * navigation of a swipe gesture higher in the view hierarchy, should be\n * rejected.\n */\n scrollResponderHandleTerminationRequest: function(): boolean {\n return !this.state.observedScrollSinceBecomingResponder;\n },\n\n /**\n * Invoke this from an `onTouchEnd` event.\n *\n * @param {SyntheticEvent} e Event.\n */\n scrollResponderHandleTouchEnd: function(e: Event) {\n const nativeEvent = e.nativeEvent;\n this.state.isTouching = nativeEvent.touches.length !== 0;\n this.props.onTouchEnd && this.props.onTouchEnd(e);\n },\n\n /**\n * Invoke this from an `onTouchCancel` event.\n *\n * @param {SyntheticEvent} e Event.\n */\n scrollResponderHandleTouchCancel: function(e: Event) {\n this.state.isTouching = false;\n this.props.onTouchCancel && this.props.onTouchCancel(e);\n },\n\n /**\n * Invoke this from an `onResponderRelease` event.\n */\n scrollResponderHandleResponderRelease: function(e: Event) {\n this.props.onResponderRelease && this.props.onResponderRelease(e);\n\n // By default scroll views will unfocus a textField\n // if another touch occurs outside of it\n const currentlyFocusedTextInput = TextInputState.currentlyFocusedField();\n if (\n this.props.keyboardShouldPersistTaps !== true &&\n this.props.keyboardShouldPersistTaps !== 'always' &&\n currentlyFocusedTextInput != null &&\n e.target !== currentlyFocusedTextInput &&\n !this.state.observedScrollSinceBecomingResponder &&\n !this.state.becameResponderWhileAnimating\n ) {\n this.props.onScrollResponderKeyboardDismissed &&\n this.props.onScrollResponderKeyboardDismissed(e);\n TextInputState.blurTextInput(currentlyFocusedTextInput);\n }\n },\n\n scrollResponderHandleScroll: function(e: Event) {\n this.state.observedScrollSinceBecomingResponder = true;\n this.props.onScroll && this.props.onScroll(e);\n },\n\n /**\n * Invoke this from an `onResponderGrant` event.\n */\n scrollResponderHandleResponderGrant: function(e: Event) {\n this.state.observedScrollSinceBecomingResponder = false;\n this.props.onResponderGrant && this.props.onResponderGrant(e);\n this.state.becameResponderWhileAnimating = this.scrollResponderIsAnimating();\n },\n\n /**\n * Unfortunately, `onScrollBeginDrag` also fires when *stopping* the scroll\n * animation, and there's not an easy way to distinguish a drag vs. stopping\n * momentum.\n *\n * Invoke this from an `onScrollBeginDrag` event.\n */\n scrollResponderHandleScrollBeginDrag: function(e: Event) {\n FrameRateLogger.beginScroll(); // TODO: track all scrolls after implementing onScrollEndAnimation\n this.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e);\n },\n\n /**\n * Invoke this from an `onScrollEndDrag` event.\n */\n scrollResponderHandleScrollEndDrag: function(e: Event) {\n const {velocity} = e.nativeEvent;\n // - If we are animating, then this is a \"drag\" that is stopping the scrollview and momentum end\n // will fire.\n // - If velocity is non-zero, then the interaction will stop when momentum scroll ends or\n // another drag starts and ends.\n // - If we don't get velocity, better to stop the interaction twice than not stop it.\n if (\n !this.scrollResponderIsAnimating() &&\n (!velocity || (velocity.x === 0 && velocity.y === 0))\n ) {\n FrameRateLogger.endScroll();\n }\n this.props.onScrollEndDrag && this.props.onScrollEndDrag(e);\n },\n\n /**\n * Invoke this from an `onMomentumScrollBegin` event.\n */\n scrollResponderHandleMomentumScrollBegin: function(e: Event) {\n this.state.lastMomentumScrollBeginTime = performanceNow();\n this.props.onMomentumScrollBegin && this.props.onMomentumScrollBegin(e);\n },\n\n /**\n * Invoke this from an `onMomentumScrollEnd` event.\n */\n scrollResponderHandleMomentumScrollEnd: function(e: Event) {\n FrameRateLogger.endScroll();\n this.state.lastMomentumScrollEndTime = performanceNow();\n this.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e);\n },\n\n /**\n * Invoke this from an `onTouchStart` event.\n *\n * Since we know that the `SimpleEventPlugin` occurs later in the plugin\n * order, after `ResponderEventPlugin`, we can detect that we were *not*\n * permitted to be the responder (presumably because a contained view became\n * responder). The `onResponderReject` won't fire in that case - it only\n * fires when a *current* responder rejects our request.\n *\n * @param {SyntheticEvent} e Touch Start event.\n */\n scrollResponderHandleTouchStart: function(e: Event) {\n this.state.isTouching = true;\n this.props.onTouchStart && this.props.onTouchStart(e);\n },\n\n /**\n * Invoke this from an `onTouchMove` event.\n *\n * Since we know that the `SimpleEventPlugin` occurs later in the plugin\n * order, after `ResponderEventPlugin`, we can detect that we were *not*\n * permitted to be the responder (presumably because a contained view became\n * responder). The `onResponderReject` won't fire in that case - it only\n * fires when a *current* responder rejects our request.\n *\n * @param {SyntheticEvent} e Touch Start event.\n */\n scrollResponderHandleTouchMove: function(e: Event) {\n this.props.onTouchMove && this.props.onTouchMove(e);\n },\n\n /**\n * A helper function for this class that lets us quickly determine if the\n * view is currently animating. This is particularly useful to know when\n * a touch has just started or ended.\n */\n scrollResponderIsAnimating: function(): boolean {\n const now = performanceNow();\n const timeSinceLastMomentumScrollEnd =\n now - this.state.lastMomentumScrollEndTime;\n const isAnimating =\n timeSinceLastMomentumScrollEnd < IS_ANIMATING_TOUCH_START_THRESHOLD_MS ||\n this.state.lastMomentumScrollEndTime <\n this.state.lastMomentumScrollBeginTime;\n return isAnimating;\n },\n\n /**\n * Returns the node that represents native view that can be scrolled.\n * Components can pass what node to use by defining a `getScrollableNode`\n * function otherwise `this` is used.\n */\n scrollResponderGetScrollableNode: function(): any {\n return this.getScrollableNode\n ? this.getScrollableNode()\n : ReactNative.findNodeHandle(this);\n },\n\n /**\n * A helper function to scroll to a specific point in the ScrollView.\n * This is currently used to help focus child TextViews, but can also\n * be used to quickly scroll to any element we want to focus. Syntax:\n *\n * `scrollResponderScrollTo(options: {x: number = 0; y: number = 0; animated: boolean = true})`\n *\n * Note: The weird argument signature is due to the fact that, for historical reasons,\n * the function also accepts separate arguments as as alternative to the options object.\n * This is deprecated due to ambiguity (y before x), and SHOULD NOT BE USED.\n */\n scrollResponderScrollTo: function(\n x?: number | {x?: number, y?: number, animated?: boolean},\n y?: number,\n animated?: boolean,\n ) {\n if (typeof x === 'number') {\n console.warn(\n '`scrollResponderScrollTo(x, y, animated)` is deprecated. Use `scrollResponderScrollTo({x: 5, y: 5, animated: true})` instead.',\n );\n } else {\n ({x, y, animated} = x || {});\n }\n UIManager.dispatchViewManagerCommand(\n nullthrows(this.scrollResponderGetScrollableNode()),\n UIManager.RCTScrollView.Commands.scrollTo,\n [x || 0, y || 0, animated !== false],\n );\n },\n\n /**\n * Scrolls to the end of the ScrollView, either immediately or with a smooth\n * animation.\n *\n * Example:\n *\n * `scrollResponderScrollToEnd({animated: true})`\n */\n scrollResponderScrollToEnd: function(options?: {animated?: boolean}) {\n // Default to true\n const animated = (options && options.animated) !== false;\n UIManager.dispatchViewManagerCommand(\n this.scrollResponderGetScrollableNode(),\n UIManager.RCTScrollView.Commands.scrollToEnd,\n [animated],\n );\n },\n\n /**\n * Deprecated, do not use.\n */\n scrollResponderScrollWithoutAnimationTo: function(\n offsetX: number,\n offsetY: number,\n ) {\n console.warn(\n '`scrollResponderScrollWithoutAnimationTo` is deprecated. Use `scrollResponderScrollTo` instead',\n );\n this.scrollResponderScrollTo({x: offsetX, y: offsetY, animated: false});\n },\n\n /**\n * A helper function to zoom to a specific rect in the scrollview. The argument has the shape\n * {x: number; y: number; width: number; height: number; animated: boolean = true}\n *\n * @platform ios\n */\n scrollResponderZoomTo: function(\n rect: {|\n x: number,\n y: number,\n width: number,\n height: number,\n animated?: boolean,\n |},\n animated?: boolean, // deprecated, put this inside the rect argument instead\n ) {\n invariant(\n ScrollViewManager && ScrollViewManager.zoomToRect,\n 'zoomToRect is not implemented',\n );\n if ('animated' in rect) {\n animated = rect.animated;\n delete rect.animated;\n } else if (typeof animated !== 'undefined') {\n console.warn(\n '`scrollResponderZoomTo` `animated` argument is deprecated. Use `options.animated` instead',\n );\n }\n ScrollViewManager.zoomToRect(\n this.scrollResponderGetScrollableNode(),\n rect,\n animated !== false,\n );\n },\n\n /**\n * Displays the scroll indicators momentarily.\n */\n scrollResponderFlashScrollIndicators: function() {\n UIManager.dispatchViewManagerCommand(\n this.scrollResponderGetScrollableNode(),\n UIManager.RCTScrollView.Commands.flashScrollIndicators,\n [],\n );\n },\n\n /**\n * This method should be used as the callback to onFocus in a TextInputs'\n * parent view. Note that any module using this mixin needs to return\n * the parent view's ref in getScrollViewRef() in order to use this method.\n * @param {any} nodeHandle The TextInput node handle\n * @param {number} additionalOffset The scroll view's bottom \"contentInset\".\n * Default is 0.\n * @param {bool} preventNegativeScrolling Whether to allow pulling the content\n * down to make it meet the keyboard's top. Default is false.\n */\n scrollResponderScrollNativeHandleToKeyboard: function(\n nodeHandle: any,\n additionalOffset?: number,\n preventNegativeScrollOffset?: boolean,\n ) {\n this.additionalScrollOffset = additionalOffset || 0;\n this.preventNegativeScrollOffset = !!preventNegativeScrollOffset;\n UIManager.measureLayout(\n nodeHandle,\n ReactNative.findNodeHandle(this.getInnerViewNode()),\n this.scrollResponderTextInputFocusError,\n this.scrollResponderInputMeasureAndScrollToKeyboard,\n );\n },\n\n /**\n * The calculations performed here assume the scroll view takes up the entire\n * screen - even if has some content inset. We then measure the offsets of the\n * keyboard, and compensate both for the scroll view's \"contentInset\".\n *\n * @param {number} left Position of input w.r.t. table view.\n * @param {number} top Position of input w.r.t. table view.\n * @param {number} width Width of the text input.\n * @param {number} height Height of the text input.\n */\n scrollResponderInputMeasureAndScrollToKeyboard: function(\n left: number,\n top: number,\n width: number,\n height: number,\n ) {\n let keyboardScreenY = Dimensions.get('window').height;\n if (this.keyboardWillOpenTo) {\n keyboardScreenY = this.keyboardWillOpenTo.endCoordinates.screenY;\n }\n let scrollOffsetY =\n top - keyboardScreenY + height + this.additionalScrollOffset;\n\n // By default, this can scroll with negative offset, pulling the content\n // down so that the target component's bottom meets the keyboard's top.\n // If requested otherwise, cap the offset at 0 minimum to avoid content\n // shifting down.\n if (this.preventNegativeScrollOffset) {\n scrollOffsetY = Math.max(0, scrollOffsetY);\n }\n this.scrollResponderScrollTo({x: 0, y: scrollOffsetY, animated: true});\n\n this.additionalOffset = 0;\n this.preventNegativeScrollOffset = false;\n },\n\n scrollResponderTextInputFocusError: function(e: Event) {\n console.error('Error measuring text field: ', e);\n },\n\n /**\n * `componentWillMount` is the closest thing to a standard \"constructor\" for\n * React components.\n *\n * The `keyboardWillShow` is called before input focus.\n */\n UNSAFE_componentWillMount: function() {\n const {keyboardShouldPersistTaps} = this.props;\n warning(\n typeof keyboardShouldPersistTaps !== 'boolean',\n `'keyboardShouldPersistTaps={${keyboardShouldPersistTaps}}' is deprecated. ` +\n `Use 'keyboardShouldPersistTaps=\"${\n keyboardShouldPersistTaps ? 'always' : 'never'\n }\"' instead`,\n );\n\n this.keyboardWillOpenTo = null;\n this.additionalScrollOffset = 0;\n this.addListenerOn(\n Keyboard,\n 'keyboardWillShow',\n this.scrollResponderKeyboardWillShow,\n );\n this.addListenerOn(\n Keyboard,\n 'keyboardWillHide',\n this.scrollResponderKeyboardWillHide,\n );\n this.addListenerOn(\n Keyboard,\n 'keyboardDidShow',\n this.scrollResponderKeyboardDidShow,\n );\n this.addListenerOn(\n Keyboard,\n 'keyboardDidHide',\n this.scrollResponderKeyboardDidHide,\n );\n },\n\n /**\n * Warning, this may be called several times for a single keyboard opening.\n * It's best to store the information in this method and then take any action\n * at a later point (either in `keyboardDidShow` or other).\n *\n * Here's the order that events occur in:\n * - focus\n * - willShow {startCoordinates, endCoordinates} several times\n * - didShow several times\n * - blur\n * - willHide {startCoordinates, endCoordinates} several times\n * - didHide several times\n *\n * The `ScrollResponder` module callbacks for each of these events.\n * Even though any user could have easily listened to keyboard events\n * themselves, using these `props` callbacks ensures that ordering of events\n * is consistent - and not dependent on the order that the keyboard events are\n * subscribed to. This matters when telling the scroll view to scroll to where\n * the keyboard is headed - the scroll responder better have been notified of\n * the keyboard destination before being instructed to scroll to where the\n * keyboard will be. Stick to the `ScrollResponder` callbacks, and everything\n * will work.\n *\n * WARNING: These callbacks will fire even if a keyboard is displayed in a\n * different navigation pane. Filter out the events to determine if they are\n * relevant to you. (For example, only if you receive these callbacks after\n * you had explicitly focused a node etc).\n */\n scrollResponderKeyboardWillShow: function(e: Event) {\n this.keyboardWillOpenTo = e;\n this.props.onKeyboardWillShow && this.props.onKeyboardWillShow(e);\n },\n\n scrollResponderKeyboardWillHide: function(e: Event) {\n this.keyboardWillOpenTo = null;\n this.props.onKeyboardWillHide && this.props.onKeyboardWillHide(e);\n },\n\n scrollResponderKeyboardDidShow: function(e: Event) {\n // TODO(7693961): The event for DidShow is not available on iOS yet.\n // Use the one from WillShow and do not assign.\n if (e) {\n this.keyboardWillOpenTo = e;\n }\n this.props.onKeyboardDidShow && this.props.onKeyboardDidShow(e);\n },\n\n scrollResponderKeyboardDidHide: function(e: Event) {\n this.keyboardWillOpenTo = null;\n this.props.onKeyboardDidHide && this.props.onKeyboardDidHide(e);\n },\n};\n\nconst ScrollResponder = {\n Mixin: ScrollResponderMixin,\n};\n\nmodule.exports = ScrollResponder;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst NativeModules = require('NativeModules');\n\nconst invariant = require('fbjs/lib/invariant');\n\n/**\n * Flow API for native FrameRateLogger module. If the native module is not installed, function calls\n * are just no-ops.\n *\n * Typical behavior is that `setContext` is called when a new screen is loaded (e.g. via a\n * navigation integration), and then `beginScroll` is called by `ScrollResponder` at which point the\n * native module then begins tracking frame drops. When `ScrollResponder` calls `endScroll`, the\n * native module gathers up all it's frame drop data and reports it via an analytics pipeline for\n * analysis.\n *\n * Note that `beginScroll` may be called multiple times by `ScrollResponder` - unclear if that's a\n * bug, but the native module should be robust to that.\n *\n * In the future we may add support for tracking frame drops in other types of interactions beyond\n * scrolling.\n */\nconst FrameRateLogger = {\n /**\n * Enable `debug` to see local logs of what's going on. `reportStackTraces` will grab stack traces\n * during UI thread stalls and upload them if the native module supports it.\n */\n setGlobalOptions: function(options: {\n debug?: boolean,\n reportStackTraces?: boolean,\n }) {\n if (options.debug !== undefined) {\n invariant(\n NativeModules.FrameRateLogger,\n 'Trying to debug FrameRateLogger without the native module!',\n );\n }\n if (NativeModules.FrameRateLogger) {\n // Freeze the object to avoid the prepack warning (PP0017) about leaking\n // unfrozen objects.\n // Needs to clone the object first to avoid modifying the argument.\n const optionsClone = {\n debug: !!options.debug,\n reportStackTraces: !!options.reportStackTraces,\n };\n Object.freeze(optionsClone);\n Object.seal(optionsClone);\n NativeModules.FrameRateLogger.setGlobalOptions(optionsClone);\n }\n },\n\n /**\n * Must call `setContext` before any events can be properly tracked, which is done automatically\n * in `AppRegistry`, but navigation is also a common place to hook in.\n */\n setContext: function(context: string) {\n NativeModules.FrameRateLogger &&\n NativeModules.FrameRateLogger.setContext(context);\n },\n\n /**\n * Called in `ScrollResponder` so any component that uses that module will handle this\n * automatically.\n */\n beginScroll() {\n NativeModules.FrameRateLogger &&\n NativeModules.FrameRateLogger.beginScroll();\n },\n\n /**\n * Called in `ScrollResponder` so any component that uses that module will handle this\n * automatically.\n */\n endScroll() {\n NativeModules.FrameRateLogger && NativeModules.FrameRateLogger.endScroll();\n },\n};\n\nmodule.exports = FrameRateLogger;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst LayoutAnimation = require('LayoutAnimation');\nconst invariant = require('fbjs/lib/invariant');\nconst NativeEventEmitter = require('NativeEventEmitter');\nconst KeyboardObserver = require('NativeModules').KeyboardObserver;\nconst dismissKeyboard = require('dismissKeyboard');\nconst KeyboardEventEmitter = new NativeEventEmitter(KeyboardObserver);\n\ntype KeyboardEventName =\n | 'keyboardWillShow'\n | 'keyboardDidShow'\n | 'keyboardWillHide'\n | 'keyboardDidHide'\n | 'keyboardWillChangeFrame'\n | 'keyboardDidChangeFrame';\n\ntype ScreenRect = $ReadOnly<{|\n screenX: number,\n screenY: number,\n width: number,\n height: number,\n|}>;\n\nexport type KeyboardEvent = $ReadOnly<{|\n duration?: number,\n easing?: string,\n endCoordinates: ScreenRect,\n startCoordinates?: ScreenRect,\n|}>;\n\ntype KeyboardEventListener = (e: KeyboardEvent) => void;\n\n// The following object exists for documentation purposes\n// Actual work happens in\n// https://github.com/facebook/react-native/blob/master/Libraries/EventEmitter/NativeEventEmitter.js\n\n/**\n * `Keyboard` module to control keyboard events.\n *\n * ### Usage\n *\n * The Keyboard module allows you to listen for native events and react to them, as\n * well as make changes to the keyboard, like dismissing it.\n *\n *```\n * import React, { Component } from 'react';\n * import { Keyboard, TextInput } from 'react-native';\n *\n * class Example extends Component {\n * componentWillMount () {\n * this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this._keyboardDidShow);\n * this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', this._keyboardDidHide);\n * }\n *\n * componentWillUnmount () {\n * this.keyboardDidShowListener.remove();\n * this.keyboardDidHideListener.remove();\n * }\n *\n * _keyboardDidShow () {\n * alert('Keyboard Shown');\n * }\n *\n * _keyboardDidHide () {\n * alert('Keyboard Hidden');\n * }\n *\n * render() {\n * return (\n * \n * );\n * }\n * }\n *```\n */\n\nlet Keyboard = {\n /**\n * The `addListener` function connects a JavaScript function to an identified native\n * keyboard notification event.\n *\n * This function then returns the reference to the listener.\n *\n * @param {string} eventName The `nativeEvent` is the string that identifies the event you're listening for. This\n *can be any of the following:\n *\n * - `keyboardWillShow`\n * - `keyboardDidShow`\n * - `keyboardWillHide`\n * - `keyboardDidHide`\n * - `keyboardWillChangeFrame`\n * - `keyboardDidChangeFrame`\n *\n * Note that if you set `android:windowSoftInputMode` to `adjustResize` or `adjustNothing`,\n * only `keyboardDidShow` and `keyboardDidHide` events will be available on Android.\n * `keyboardWillShow` as well as `keyboardWillHide` are generally not available on Android\n * since there is no native corresponding event.\n *\n * @param {function} callback function to be called when the event fires.\n */\n addListener(eventName: KeyboardEventName, callback: KeyboardEventListener) {\n invariant(false, 'Dummy method used for documentation');\n },\n\n /**\n * Removes a specific listener.\n *\n * @param {string} eventName The `nativeEvent` is the string that identifies the event you're listening for.\n * @param {function} callback function to be called when the event fires.\n */\n removeListener(eventName: KeyboardEventName, callback: Function) {\n invariant(false, 'Dummy method used for documentation');\n },\n\n /**\n * Removes all listeners for a specific event type.\n *\n * @param {string} eventType The native event string listeners are watching which will be removed.\n */\n removeAllListeners(eventName: KeyboardEventName) {\n invariant(false, 'Dummy method used for documentation');\n },\n\n /**\n * Dismisses the active keyboard and removes focus.\n */\n dismiss() {\n invariant(false, 'Dummy method used for documentation');\n },\n\n /**\n * Useful for syncing TextInput (or other keyboard accessory view) size of\n * position changes with keyboard movements.\n */\n scheduleLayoutAnimation(event: KeyboardEvent) {\n invariant(false, 'Dummy method used for documentation');\n },\n};\n\n// Throw away the dummy object and reassign it to original module\nKeyboard = KeyboardEventEmitter;\nKeyboard.dismiss = dismissKeyboard;\nKeyboard.scheduleLayoutAnimation = function(event: KeyboardEvent) {\n const {duration, easing} = event;\n if (duration) {\n LayoutAnimation.configureNext({\n duration: duration,\n update: {\n duration: duration,\n type: (easing && LayoutAnimation.Types[easing]) || 'keyboard',\n },\n });\n }\n};\n\nmodule.exports = Keyboard;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst PropTypes = require('prop-types');\nconst UIManager = require('UIManager');\n\n/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error\n * found when Flow v0.54 was deployed. To see the error delete this comment and\n * run Flow. */\nconst keyMirror = require('fbjs/lib/keyMirror');\n\nconst {checkPropTypes} = PropTypes;\n\nconst TypesEnum = {\n spring: true,\n linear: true,\n easeInEaseOut: true,\n easeIn: true,\n easeOut: true,\n keyboard: true,\n};\nconst Types = keyMirror(TypesEnum);\n\nconst PropertiesEnum = {\n opacity: true,\n scaleX: true,\n scaleY: true,\n scaleXY: true,\n};\nconst Properties = keyMirror(PropertiesEnum);\n\nconst animType = PropTypes.shape({\n duration: PropTypes.number,\n delay: PropTypes.number,\n springDamping: PropTypes.number,\n initialVelocity: PropTypes.number,\n type: PropTypes.oneOf(Object.keys(Types)).isRequired,\n property: PropTypes.oneOf(\n // Only applies to create/delete\n Object.keys(Properties),\n ),\n});\n\ntype Anim = {\n duration?: number,\n delay?: number,\n springDamping?: number,\n initialVelocity?: number,\n type?: $Enum,\n property?: $Enum,\n};\n\nconst configType = PropTypes.shape({\n duration: PropTypes.number.isRequired,\n create: animType,\n update: animType,\n delete: animType,\n});\n\ntype Config = {\n duration: number,\n create?: Anim,\n update?: Anim,\n delete?: Anim,\n};\n\nfunction checkConfig(config: Config, location: string, name: string) {\n checkPropTypes({config: configType}, {config}, location, name);\n}\n\nfunction configureNext(config: Config, onAnimationDidEnd?: Function) {\n if (__DEV__) {\n checkConfig(config, 'config', 'LayoutAnimation.configureNext');\n }\n UIManager.configureNextLayoutAnimation(\n config,\n onAnimationDidEnd || function() {},\n function() {\n /* unused */\n },\n );\n}\n\nfunction create(duration: number, type, creationProp): Config {\n return {\n duration,\n create: {\n type,\n property: creationProp,\n },\n update: {\n type,\n },\n delete: {\n type,\n property: creationProp,\n },\n };\n}\n\nconst Presets = {\n easeInEaseOut: create(300, Types.easeInEaseOut, Properties.opacity),\n linear: create(500, Types.linear, Properties.opacity),\n spring: {\n duration: 700,\n create: {\n type: Types.linear,\n property: Properties.opacity,\n },\n update: {\n type: Types.spring,\n springDamping: 0.4,\n },\n delete: {\n type: Types.linear,\n property: Properties.opacity,\n },\n },\n};\n\n/**\n * Automatically animates views to their new positions when the\n * next layout happens.\n *\n * A common way to use this API is to call it before calling `setState`.\n *\n * Note that in order to get this to work on **Android** you need to set the following flags via `UIManager`:\n *\n * UIManager.setLayoutAnimationEnabledExperimental && UIManager.setLayoutAnimationEnabledExperimental(true);\n */\nconst LayoutAnimation = {\n /**\n * Schedules an animation to happen on the next layout.\n *\n * @param config Specifies animation properties:\n *\n * - `duration` in milliseconds\n * - `create`, config for animating in new views (see `Anim` type)\n * - `update`, config for animating views that have been updated\n * (see `Anim` type)\n *\n * @param onAnimationDidEnd Called when the animation finished.\n * Only supported on iOS.\n * @param onError Called on error. Only supported on iOS.\n */\n configureNext,\n /**\n * Helper for creating a config for `configureNext`.\n */\n create,\n Types,\n Properties,\n checkConfig,\n Presets,\n easeInEaseOut: configureNext.bind(null, Presets.easeInEaseOut),\n linear: configureNext.bind(null, Presets.linear),\n spring: configureNext.bind(null, Presets.spring),\n};\n\nmodule.exports = LayoutAnimation;\n","/**\n * Copyright (c) 2015-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 *\n * This function dismisses the currently-open keyboard, if any\n *\n * @flow strict-local\n * @format\n */\n\n'use strict';\n\nconst TextInputState = require('TextInputState');\n\nfunction dismissKeyboard() {\n TextInputState.blurTextInput(TextInputState.currentlyFocusedField());\n}\n\nmodule.exports = dismissKeyboard;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nimport type EventEmitter from 'EventEmitter';\n\n/**\n * Subscribable provides a mixin for safely subscribing a component to an\n * eventEmitter\n *\n * This will be replaced with the observe interface that will be coming soon to\n * React Core\n */\n\nconst Subscribable = {};\n\nSubscribable.Mixin = {\n UNSAFE_componentWillMount: function() {\n this._subscribableSubscriptions = [];\n },\n\n componentWillUnmount: function() {\n // This null check is a fix for a broken version of uglify-es. Should be deleted eventually\n // https://github.com/facebook/react-native/issues/17348\n this._subscribableSubscriptions &&\n this._subscribableSubscriptions.forEach(subscription =>\n subscription.remove(),\n );\n this._subscribableSubscriptions = null;\n },\n\n /**\n * Special form of calling `addListener` that *guarantees* that a\n * subscription *must* be tied to a component instance, and therefore will\n * be cleaned up when the component is unmounted. It is impossible to create\n * the subscription and pass it in - this method must be the one to create\n * the subscription and therefore can guarantee it is retained in a way that\n * will be cleaned up.\n *\n * @param {EventEmitter} eventEmitter emitter to subscribe to.\n * @param {string} eventType Type of event to listen to.\n * @param {function} listener Function to invoke when event occurs.\n * @param {object} context Object to use as listener context.\n */\n addListenerOn: function(\n eventEmitter: EventEmitter,\n eventType: string,\n listener: Function,\n context: Object,\n ) {\n this._subscribableSubscriptions.push(\n eventEmitter.addListener(eventType, listener, context),\n );\n },\n};\n\nmodule.exports = Subscribable;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst AnimatedImplementation = require('AnimatedImplementation');\nconst React = require('React');\nconst StyleSheet = require('StyleSheet');\nconst View = require('View');\n\nimport type {LayoutEvent} from 'CoreEventTypes';\n\nconst AnimatedView = AnimatedImplementation.createAnimatedComponent(View);\n\ntype Props = {\n children?: React.Element,\n nextHeaderLayoutY: ?number,\n onLayout: (event: LayoutEvent) => void,\n scrollAnimatedValue: AnimatedImplementation.Value,\n // Will cause sticky headers to stick at the bottom of the ScrollView instead\n // of the top.\n inverted: ?boolean,\n // The height of the parent ScrollView. Currently only set when inverted.\n scrollViewHeight: ?number,\n};\n\ntype State = {\n measured: boolean,\n layoutY: number,\n layoutHeight: number,\n nextHeaderLayoutY: ?number,\n};\n\nclass ScrollViewStickyHeader extends React.Component {\n state = {\n measured: false,\n layoutY: 0,\n layoutHeight: 0,\n nextHeaderLayoutY: this.props.nextHeaderLayoutY,\n };\n\n setNextHeaderY(y: number) {\n this.setState({nextHeaderLayoutY: y});\n }\n\n _onLayout = event => {\n this.setState({\n measured: true,\n layoutY: event.nativeEvent.layout.y,\n layoutHeight: event.nativeEvent.layout.height,\n });\n\n this.props.onLayout(event);\n const child = React.Children.only(this.props.children);\n if (child.props.onLayout) {\n child.props.onLayout(event);\n }\n };\n\n render() {\n const {inverted, scrollViewHeight} = this.props;\n const {measured, layoutHeight, layoutY, nextHeaderLayoutY} = this.state;\n const inputRange: Array = [-1, 0];\n const outputRange: Array = [0, 0];\n\n if (measured) {\n if (inverted) {\n // The interpolation looks like:\n // - Negative scroll: no translation\n // - `stickStartPoint` is the point at which the header will start sticking.\n // It is calculated using the ScrollView viewport height so it is a the bottom.\n // - Headers that are in the initial viewport will never stick, `stickStartPoint`\n // will be negative.\n // - From 0 to `stickStartPoint` no translation. This will cause the header\n // to scroll normally until it reaches the top of the scroll view.\n // - From `stickStartPoint` to when the next header y hits the bottom edge of the header: translate\n // equally to scroll. This will cause the header to stay at the top of the scroll view.\n // - Past the collision with the next header y: no more translation. This will cause the\n // header to continue scrolling up and make room for the next sticky header.\n // In the case that there is no next header just translate equally to\n // scroll indefinitely.\n if (scrollViewHeight != null) {\n const stickStartPoint = layoutY + layoutHeight - scrollViewHeight;\n if (stickStartPoint > 0) {\n inputRange.push(stickStartPoint);\n outputRange.push(0);\n inputRange.push(stickStartPoint + 1);\n outputRange.push(1);\n // If the next sticky header has not loaded yet (probably windowing) or is the last\n // we can just keep it sticked forever.\n const collisionPoint =\n (nextHeaderLayoutY || 0) - layoutHeight - scrollViewHeight;\n if (collisionPoint > stickStartPoint) {\n inputRange.push(collisionPoint, collisionPoint + 1);\n outputRange.push(\n collisionPoint - stickStartPoint,\n collisionPoint - stickStartPoint,\n );\n }\n }\n }\n } else {\n // The interpolation looks like:\n // - Negative scroll: no translation\n // - From 0 to the y of the header: no translation. This will cause the header\n // to scroll normally until it reaches the top of the scroll view.\n // - From header y to when the next header y hits the bottom edge of the header: translate\n // equally to scroll. This will cause the header to stay at the top of the scroll view.\n // - Past the collision with the next header y: no more translation. This will cause the\n // header to continue scrolling up and make room for the next sticky header.\n // In the case that there is no next header just translate equally to\n // scroll indefinitely.\n inputRange.push(layoutY);\n outputRange.push(0);\n // If the next sticky header has not loaded yet (probably windowing) or is the last\n // we can just keep it sticked forever.\n const collisionPoint = (nextHeaderLayoutY || 0) - layoutHeight;\n if (collisionPoint >= layoutY) {\n inputRange.push(collisionPoint, collisionPoint + 1);\n outputRange.push(collisionPoint - layoutY, collisionPoint - layoutY);\n } else {\n inputRange.push(layoutY + 1);\n outputRange.push(1);\n }\n }\n }\n\n const translateY = this.props.scrollAnimatedValue.interpolate({\n inputRange,\n outputRange,\n });\n const child = React.Children.only(this.props.children);\n\n return (\n \n {React.cloneElement(child, {\n style: styles.fill, // We transfer the child style to the wrapper.\n onLayout: undefined, // we call this manually through our this._onLayout\n })}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n header: {\n zIndex: 10,\n },\n fill: {\n flex: 1,\n },\n});\n\nmodule.exports = ScrollViewStickyHeader;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\nconst ReactNative = require('ReactNative');\n\n// This class is purely a facsimile of ScrollView so that we can\n// properly type it with Flow before migrating ScrollView off of\n// createReactClass. If there are things missing here that are in\n// ScrollView, that is unintentional.\nclass InternalScrollViewType extends ReactNative.NativeComponent {\n scrollTo(\n y?: number | {x?: number, y?: number, animated?: boolean},\n x?: number,\n animated?: boolean,\n ) {}\n\n flashScrollIndicators() {}\n propTypes: empty;\n scrollToEnd(options?: ?{animated?: boolean}) {}\n scrollWithoutAnimationTo(y: number = 0, x: number = 0) {}\n\n getScrollResponder(): any {}\n getScrollableNode(): any {}\n getInnerViewNode(): any {}\n\n scrollResponderScrollNativeHandleToKeyboard(\n nodeHandle: any,\n additionalOffset?: number,\n preventNegativeScrollOffset?: boolean,\n ) {}\n\n scrollResponderScrollTo(\n x?: number | {x?: number, y?: number, animated?: boolean},\n y?: number,\n animated?: boolean,\n ) {}\n}\n\nmodule.exports = InternalScrollViewType;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst Platform = require('Platform');\n\nfunction processDecelerationRate(\n decelerationRate: number | 'normal' | 'fast',\n): number {\n if (decelerationRate === 'normal') {\n return Platform.select({\n ios: 0.998,\n android: 0.985,\n });\n } else if (decelerationRate === 'fast') {\n return Platform.select({\n ios: 0.99,\n android: 0.9,\n });\n }\n return decelerationRate;\n}\n\nmodule.exports = processDecelerationRate;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst React = require('React');\n\nconst PropTypes = require('prop-types');\n\nclass StaticRenderer extends React.Component<{\n shouldUpdate: boolean,\n render: Function,\n}> {\n static propTypes = {\n shouldUpdate: PropTypes.bool.isRequired,\n render: PropTypes.func.isRequired,\n };\n\n shouldComponentUpdate(nextProps: {shouldUpdate: boolean}): boolean {\n return nextProps.shouldUpdate;\n }\n\n render(): React.Node {\n return this.props.render();\n }\n}\n\nmodule.exports = StaticRenderer;\n","'use strict';\n\nconst React = require('react');\n\nfunction cloneReferencedElement(element, config, ...children) {\n let cloneRef = config.ref;\n let originalRef = element.ref;\n if (originalRef == null || cloneRef == null) {\n return React.cloneElement(element, config, ...children);\n }\n\n if (typeof originalRef !== 'function') {\n if (__DEV__) {\n console.warn(\n 'Cloning an element with a ref that will be overwritten because it ' +\n 'is not a function. Use a composable callback-style ref instead. ' +\n 'Ignoring ref: ' + originalRef,\n );\n }\n return React.cloneElement(element, config, ...children);\n }\n\n return React.cloneElement(element, {\n ...config,\n ref(component) {\n cloneRef(component);\n originalRef(component);\n },\n }, ...children);\n}\n\nmodule.exports = cloneReferencedElement;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst Platform = require('Platform');\nconst React = require('React');\nconst {NativeComponent} = require('ReactNative');\n\nconst requireNativeComponent = require('requireNativeComponent');\nconst nullthrows = require('fbjs/lib/nullthrows');\n\nimport type {ColorValue} from 'StyleSheetTypes';\nimport type {ViewProps} from 'ViewPropTypes';\n\nif (Platform.OS === 'android') {\n const AndroidSwipeRefreshLayout = require('UIManager')\n .AndroidSwipeRefreshLayout;\n var RefreshLayoutConsts = AndroidSwipeRefreshLayout\n ? AndroidSwipeRefreshLayout.Constants\n : {SIZE: {}};\n} else {\n var RefreshLayoutConsts = {SIZE: {}};\n}\ntype NativeRefreshControlType = Class>;\n\nconst NativeRefreshControl: NativeRefreshControlType =\n Platform.OS === 'ios'\n ? (requireNativeComponent('RCTRefreshControl'): any)\n : (requireNativeComponent('AndroidSwipeRefreshLayout'): any);\n\ntype IOSProps = $ReadOnly<{|\n /**\n * The color of the refresh indicator.\n */\n tintColor?: ?ColorValue,\n /**\n * Title color.\n */\n titleColor?: ?ColorValue,\n /**\n * The title displayed under the refresh indicator.\n */\n title?: ?string,\n|}>;\n\ntype AndroidProps = $ReadOnly<{|\n /**\n * Whether the pull to refresh functionality is enabled.\n */\n enabled?: ?boolean,\n /**\n * The colors (at least one) that will be used to draw the refresh indicator.\n */\n colors?: ?$ReadOnlyArray,\n /**\n * The background color of the refresh indicator.\n */\n progressBackgroundColor?: ?ColorValue,\n /**\n * Size of the refresh indicator, see RefreshControl.SIZE.\n */\n size?: ?(\n | typeof RefreshLayoutConsts.SIZE.DEFAULT\n | typeof RefreshLayoutConsts.SIZE.LARGE\n ),\n /**\n * Progress view top offset\n */\n progressViewOffset?: ?number,\n|}>;\n\nexport type RefreshControlProps = $ReadOnly<{|\n ...ViewProps,\n ...IOSProps,\n ...AndroidProps,\n\n /**\n * Called when the view starts refreshing.\n */\n onRefresh?: ?Function,\n\n /**\n * Whether the view should be indicating an active refresh.\n */\n refreshing: boolean,\n|}>;\n\n/**\n * This component is used inside a ScrollView or ListView to add pull to refresh\n * functionality. When the ScrollView is at `scrollY: 0`, swiping down\n * triggers an `onRefresh` event.\n *\n * ### Usage example\n *\n * ``` js\n * class RefreshableList extends Component {\n * constructor(props) {\n * super(props);\n * this.state = {\n * refreshing: false,\n * };\n * }\n *\n * _onRefresh() {\n * this.setState({refreshing: true});\n * fetchData().then(() => {\n * this.setState({refreshing: false});\n * });\n * }\n *\n * render() {\n * return (\n * \n * }\n * ...\n * >\n * ...\n * \n * );\n * }\n * ...\n * }\n * ```\n *\n * __Note:__ `refreshing` is a controlled prop, this is why it needs to be set to true\n * in the `onRefresh` function otherwise the refresh indicator will stop immediately.\n */\nclass RefreshControl extends React.Component {\n static SIZE = RefreshLayoutConsts.SIZE;\n\n _nativeRef: ?React.ElementRef = null;\n _lastNativeRefreshing = false;\n\n componentDidMount() {\n this._lastNativeRefreshing = this.props.refreshing;\n }\n\n componentDidUpdate(prevProps: RefreshControlProps) {\n // RefreshControl is a controlled component so if the native refreshing\n // value doesn't match the current js refreshing prop update it to\n // the js value.\n if (this.props.refreshing !== prevProps.refreshing) {\n this._lastNativeRefreshing = this.props.refreshing;\n } else if (this.props.refreshing !== this._lastNativeRefreshing) {\n nullthrows(this._nativeRef).setNativeProps({\n refreshing: this.props.refreshing,\n });\n this._lastNativeRefreshing = this.props.refreshing;\n }\n }\n\n render() {\n return (\n {\n this._nativeRef = ref;\n }}\n onRefresh={this._onRefresh}\n />\n );\n }\n\n _onRefresh = () => {\n this._lastNativeRefreshing = true;\n\n this.props.onRefresh && this.props.onRefresh();\n\n // The native component will start refreshing so force an update to\n // make sure it stays in sync with the js component.\n this.forceUpdate();\n };\n}\n\nmodule.exports = RefreshControl;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst Batchinator = require('Batchinator');\nconst FillRateHelper = require('FillRateHelper');\nconst PropTypes = require('prop-types');\nconst React = require('React');\nconst ReactNative = require('ReactNative');\nconst RefreshControl = require('RefreshControl');\nconst ScrollView = require('ScrollView');\nconst StyleSheet = require('StyleSheet');\nconst UIManager = require('UIManager');\nconst View = require('View');\nconst ViewabilityHelper = require('ViewabilityHelper');\n\nconst flattenStyle = require('flattenStyle');\nconst infoLog = require('infoLog');\nconst invariant = require('fbjs/lib/invariant');\n/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error\n * found when Flow v0.54 was deployed. To see the error delete this comment and\n * run Flow. */\nconst warning = require('fbjs/lib/warning');\n\nconst {computeWindowedRenderLimits} = require('VirtualizeUtils');\n\nimport type {DangerouslyImpreciseStyleProp, ViewStyleProp} from 'StyleSheet';\nimport type {\n ViewabilityConfig,\n ViewToken,\n ViewabilityConfigCallbackPair,\n} from 'ViewabilityHelper';\n\ntype Item = any;\n\nexport type renderItemType = (info: any) => ?React.Element;\n\ntype ViewabilityHelperCallbackTuple = {\n viewabilityHelper: ViewabilityHelper,\n onViewableItemsChanged: (info: {\n viewableItems: Array,\n changed: Array,\n }) => void,\n};\n\ntype RequiredProps = {\n // TODO: Conflicts with the optional `renderItem` in\n // `VirtualizedSectionList`'s props.\n renderItem: $FlowFixMe,\n /**\n * The default accessor functions assume this is an Array<{key: string}> but you can override\n * getItem, getItemCount, and keyExtractor to handle any type of index-based data.\n */\n data?: any,\n /**\n * A generic accessor for extracting an item from any sort of data blob.\n */\n getItem: (data: any, index: number) => ?Item,\n /**\n * Determines how many items are in the data blob.\n */\n getItemCount: (data: any) => number,\n};\ntype OptionalProps = {\n /**\n * `debug` will turn on extra logging and visual overlays to aid with debugging both usage and\n * implementation, but with a significant perf hit.\n */\n debug?: ?boolean,\n /**\n * DEPRECATED: Virtualization provides significant performance and memory optimizations, but fully\n * unmounts react instances that are outside of the render window. You should only need to disable\n * this for debugging purposes.\n */\n disableVirtualization: boolean,\n /**\n * A marker property for telling the list to re-render (since it implements `PureComponent`). If\n * any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the\n * `data` prop, stick it here and treat it immutably.\n */\n extraData?: any,\n getItemLayout?: (\n data: any,\n index: number,\n ) => {length: number, offset: number, index: number}, // e.g. height, y\n horizontal?: ?boolean,\n /**\n * How many items to render in the initial batch. This should be enough to fill the screen but not\n * much more. Note these items will never be unmounted as part of the windowed rendering in order\n * to improve perceived performance of scroll-to-top actions.\n */\n initialNumToRender: number,\n /**\n * Instead of starting at the top with the first item, start at `initialScrollIndex`. This\n * disables the \"scroll to top\" optimization that keeps the first `initialNumToRender` items\n * always rendered and immediately renders the items starting at this initial index. Requires\n * `getItemLayout` to be implemented.\n */\n initialScrollIndex?: ?number,\n /**\n * Reverses the direction of scroll. Uses scale transforms of -1.\n */\n inverted?: ?boolean,\n keyExtractor: (item: Item, index: number) => string,\n /**\n * Each cell is rendered using this element. Can be a React Component Class,\n * or a render function. Defaults to using View.\n */\n CellRendererComponent?: ?React.ComponentType,\n /**\n * Rendered when the list is empty. Can be a React Component Class, a render function, or\n * a rendered element.\n */\n ListEmptyComponent?: ?(React.ComponentType | React.Element),\n /**\n * Rendered at the bottom of all the items. Can be a React Component Class, a render function, or\n * a rendered element.\n */\n ListFooterComponent?: ?(React.ComponentType | React.Element),\n /**\n * Styling for internal View for ListFooterComponent\n */\n ListFooterComponentStyle?: ViewStyleProp,\n /**\n * Rendered at the top of all the items. Can be a React Component Class, a render function, or\n * a rendered element.\n */\n ListHeaderComponent?: ?(React.ComponentType | React.Element),\n /**\n * Styling for internal View for ListHeaderComponent\n */\n ListHeaderComponentStyle?: ViewStyleProp,\n /**\n * A unique identifier for this list. If there are multiple VirtualizedLists at the same level of\n * nesting within another VirtualizedList, this key is necessary for virtualization to\n * work properly.\n */\n listKey?: string,\n /**\n * The maximum number of items to render in each incremental render batch. The more rendered at\n * once, the better the fill rate, but responsiveness my suffer because rendering content may\n * interfere with responding to button taps or other interactions.\n */\n maxToRenderPerBatch: number,\n onEndReached?: ?(info: {distanceFromEnd: number}) => void,\n onEndReachedThreshold?: ?number, // units of visible length\n onLayout?: ?Function,\n /**\n * If provided, a standard RefreshControl will be added for \"Pull to Refresh\" functionality. Make\n * sure to also set the `refreshing` prop correctly.\n */\n onRefresh?: ?Function,\n /**\n * Used to handle failures when scrolling to an index that has not been measured yet. Recommended\n * action is to either compute your own offset and `scrollTo` it, or scroll as far as possible and\n * then try again after more items have been rendered.\n */\n onScrollToIndexFailed?: ?(info: {\n index: number,\n highestMeasuredFrameIndex: number,\n averageItemLength: number,\n }) => void,\n /**\n * Called when the viewability of rows changes, as defined by the\n * `viewabilityConfig` prop.\n */\n onViewableItemsChanged?: ?(info: {\n viewableItems: Array,\n changed: Array,\n }) => void,\n /**\n * Set this when offset is needed for the loading indicator to show correctly.\n * @platform android\n */\n progressViewOffset?: number,\n /**\n * A custom refresh control element. When set, it overrides the default\n * component built internally. The onRefresh and refreshing\n * props are also ignored. Only works for vertical VirtualizedList.\n */\n refreshControl?: ?React.Element,\n /**\n * Set this true while waiting for new data from a refresh.\n */\n refreshing?: ?boolean,\n /**\n * Note: may have bugs (missing content) in some circumstances - use at your own risk.\n *\n * This may improve scroll performance for large lists.\n */\n removeClippedSubviews?: boolean,\n /**\n * Render a custom scroll component, e.g. with a differently styled `RefreshControl`.\n */\n renderScrollComponent?: (props: Object) => React.Element,\n /**\n * Amount of time between low-pri item render batches, e.g. for rendering items quite a ways off\n * screen. Similar fill rate/responsiveness tradeoff as `maxToRenderPerBatch`.\n */\n updateCellsBatchingPeriod: number,\n viewabilityConfig?: ViewabilityConfig,\n /**\n * List of ViewabilityConfig/onViewableItemsChanged pairs. A specific onViewableItemsChanged\n * will be called when its corresponding ViewabilityConfig's conditions are met.\n */\n viewabilityConfigCallbackPairs?: Array,\n /**\n * Determines the maximum number of items rendered outside of the visible area, in units of\n * visible lengths. So if your list fills the screen, then `windowSize={21}` (the default) will\n * render the visible screen area plus up to 10 screens above and 10 below the viewport. Reducing\n * this number will reduce memory consumption and may improve performance, but will increase the\n * chance that fast scrolling may reveal momentary blank areas of unrendered content.\n */\n windowSize: number,\n};\n/* $FlowFixMe - this Props seems to be missing a bunch of stuff. Remove this\n * comment to see the errors */\nexport type Props = RequiredProps & OptionalProps;\n\nlet _usedIndexForKey = false;\nlet _keylessItemComponentName: string = '';\n\ntype Frame = {\n offset: number,\n length: number,\n index: number,\n inLayout: boolean,\n};\n\ntype ChildListState = {\n first: number,\n last: number,\n frames: {[key: number]: Frame},\n};\n\ntype State = {first: number, last: number};\n\n/**\n * Base implementation for the more convenient [``](/react-native/docs/flatlist.html)\n * and [``](/react-native/docs/sectionlist.html) components, which are also better\n * documented. In general, this should only really be used if you need more flexibility than\n * `FlatList` provides, e.g. for use with immutable data instead of plain arrays.\n *\n * Virtualization massively improves memory consumption and performance of large lists by\n * maintaining a finite render window of active items and replacing all items outside of the render\n * window with appropriately sized blank space. The window adapts to scrolling behavior, and items\n * are rendered incrementally with low-pri (after any running interactions) if they are far from the\n * visible area, or with hi-pri otherwise to minimize the potential of seeing blank space.\n *\n * Some caveats:\n *\n * - Internal state is not preserved when content scrolls out of the render window. Make sure all\n * your data is captured in the item data or external stores like Flux, Redux, or Relay.\n * - This is a `PureComponent` which means that it will not re-render if `props` remain shallow-\n * equal. Make sure that everything your `renderItem` function depends on is passed as a prop\n * (e.g. `extraData`) that is not `===` after updates, otherwise your UI may not update on\n * changes. This includes the `data` prop and parent component state.\n * - In order to constrain memory and enable smooth scrolling, content is rendered asynchronously\n * offscreen. This means it's possible to scroll faster than the fill rate ands momentarily see\n * blank content. This is a tradeoff that can be adjusted to suit the needs of each application,\n * and we are working on improving it behind the scenes.\n * - By default, the list looks for a `key` prop on each item and uses that for the React key.\n * Alternatively, you can provide a custom `keyExtractor` prop.\n *\n */\nclass VirtualizedList extends React.PureComponent {\n props: Props;\n\n // scrollToEnd may be janky without getItemLayout prop\n scrollToEnd(params?: ?{animated?: ?boolean}) {\n const animated = params ? params.animated : true;\n const veryLast = this.props.getItemCount(this.props.data) - 1;\n const frame = this._getFrameMetricsApprox(veryLast);\n const offset = Math.max(\n 0,\n frame.offset +\n frame.length +\n this._footerLength -\n this._scrollMetrics.visibleLength,\n );\n /* $FlowFixMe(>=0.53.0 site=react_native_fb,react_native_oss) This comment\n * suppresses an error when upgrading Flow's support for React. To see the\n * error delete this comment and run Flow. */\n this._scrollRef.scrollTo(\n /* $FlowFixMe(>=0.53.0 site=react_native_fb,react_native_oss) This\n * comment suppresses an error when upgrading Flow's support for React.\n * To see the error delete this comment and run Flow. */\n this.props.horizontal ? {x: offset, animated} : {y: offset, animated},\n );\n }\n\n // scrollToIndex may be janky without getItemLayout prop\n scrollToIndex(params: {\n animated?: ?boolean,\n index: number,\n viewOffset?: number,\n viewPosition?: number,\n }) {\n const {\n data,\n horizontal,\n getItemCount,\n getItemLayout,\n onScrollToIndexFailed,\n } = this.props;\n const {animated, index, viewOffset, viewPosition} = params;\n invariant(\n index >= 0 && index < getItemCount(data),\n `scrollToIndex out of range: ${index} vs ${getItemCount(data) - 1}`,\n );\n if (!getItemLayout && index > this._highestMeasuredFrameIndex) {\n invariant(\n !!onScrollToIndexFailed,\n 'scrollToIndex should be used in conjunction with getItemLayout or onScrollToIndexFailed, ' +\n 'otherwise there is no way to know the location of offscreen indices or handle failures.',\n );\n onScrollToIndexFailed({\n averageItemLength: this._averageCellLength,\n highestMeasuredFrameIndex: this._highestMeasuredFrameIndex,\n index,\n });\n return;\n }\n const frame = this._getFrameMetricsApprox(index);\n const offset =\n Math.max(\n 0,\n frame.offset -\n (viewPosition || 0) *\n (this._scrollMetrics.visibleLength - frame.length),\n ) - (viewOffset || 0);\n /* $FlowFixMe(>=0.53.0 site=react_native_fb,react_native_oss) This comment\n * suppresses an error when upgrading Flow's support for React. To see the\n * error delete this comment and run Flow. */\n this._scrollRef.scrollTo(\n /* $FlowFixMe(>=0.53.0 site=react_native_fb,react_native_oss) This\n * comment suppresses an error when upgrading Flow's support for React.\n * To see the error delete this comment and run Flow. */\n horizontal ? {x: offset, animated} : {y: offset, animated},\n );\n }\n\n // scrollToItem may be janky without getItemLayout prop. Required linear scan through items -\n // use scrollToIndex instead if possible.\n scrollToItem(params: {\n animated?: ?boolean,\n item: Item,\n viewPosition?: number,\n }) {\n const {item} = params;\n const {data, getItem, getItemCount} = this.props;\n const itemCount = getItemCount(data);\n for (let index = 0; index < itemCount; index++) {\n if (getItem(data, index) === item) {\n this.scrollToIndex({...params, index});\n break;\n }\n }\n }\n\n /**\n * Scroll to a specific content pixel offset in the list.\n *\n * Param `offset` expects the offset to scroll to.\n * In case of `horizontal` is true, the offset is the x-value,\n * in any other case the offset is the y-value.\n *\n * Param `animated` (`true` by default) defines whether the list\n * should do an animation while scrolling.\n */\n scrollToOffset(params: {animated?: ?boolean, offset: number}) {\n const {animated, offset} = params;\n /* $FlowFixMe(>=0.53.0 site=react_native_fb,react_native_oss) This comment\n * suppresses an error when upgrading Flow's support for React. To see the\n * error delete this comment and run Flow. */\n this._scrollRef.scrollTo(\n /* $FlowFixMe(>=0.53.0 site=react_native_fb,react_native_oss) This\n * comment suppresses an error when upgrading Flow's support for React.\n * To see the error delete this comment and run Flow. */\n this.props.horizontal ? {x: offset, animated} : {y: offset, animated},\n );\n }\n\n recordInteraction() {\n this._nestedChildLists.forEach(childList => {\n childList.ref && childList.ref.recordInteraction();\n });\n this._viewabilityTuples.forEach(t => {\n t.viewabilityHelper.recordInteraction();\n });\n this._updateViewableItems(this.props.data);\n }\n\n flashScrollIndicators() {\n /* $FlowFixMe(>=0.53.0 site=react_native_fb,react_native_oss) This comment\n * suppresses an error when upgrading Flow's support for React. To see the\n * error delete this comment and run Flow. */\n this._scrollRef.flashScrollIndicators();\n }\n\n /**\n * Provides a handle to the underlying scroll responder.\n * Note that `this._scrollRef` might not be a `ScrollView`, so we\n * need to check that it responds to `getScrollResponder` before calling it.\n */\n getScrollResponder() {\n if (this._scrollRef && this._scrollRef.getScrollResponder) {\n return this._scrollRef.getScrollResponder();\n }\n }\n\n getScrollableNode() {\n if (this._scrollRef && this._scrollRef.getScrollableNode) {\n return this._scrollRef.getScrollableNode();\n } else {\n return ReactNative.findNodeHandle(this._scrollRef);\n }\n }\n\n setNativeProps(props: Object) {\n if (this._scrollRef) {\n this._scrollRef.setNativeProps(props);\n }\n }\n\n static defaultProps = {\n disableVirtualization: false,\n horizontal: false,\n initialNumToRender: 10,\n keyExtractor: (item: Item, index: number) => {\n if (item.key != null) {\n return item.key;\n }\n _usedIndexForKey = true;\n if (item.type && item.type.displayName) {\n _keylessItemComponentName = item.type.displayName;\n }\n return String(index);\n },\n maxToRenderPerBatch: 10,\n onEndReachedThreshold: 2, // multiples of length\n scrollEventThrottle: 50,\n updateCellsBatchingPeriod: 50,\n windowSize: 21, // multiples of length\n };\n\n static contextTypes = {\n virtualizedCell: PropTypes.shape({\n cellKey: PropTypes.string,\n }),\n virtualizedList: PropTypes.shape({\n getScrollMetrics: PropTypes.func,\n horizontal: PropTypes.bool,\n getOutermostParentListRef: PropTypes.func,\n getNestedChildState: PropTypes.func,\n registerAsNestedChild: PropTypes.func,\n unregisterAsNestedChild: PropTypes.func,\n }),\n };\n\n static childContextTypes = {\n virtualizedList: PropTypes.shape({\n getScrollMetrics: PropTypes.func,\n horizontal: PropTypes.bool,\n getOutermostParentListRef: PropTypes.func,\n getNestedChildState: PropTypes.func,\n registerAsNestedChild: PropTypes.func,\n unregisterAsNestedChild: PropTypes.func,\n }),\n };\n\n getChildContext() {\n return {\n virtualizedList: {\n getScrollMetrics: this._getScrollMetrics,\n horizontal: this.props.horizontal,\n getOutermostParentListRef: this._getOutermostParentListRef,\n getNestedChildState: this._getNestedChildState,\n registerAsNestedChild: this._registerAsNestedChild,\n unregisterAsNestedChild: this._unregisterAsNestedChild,\n },\n };\n }\n\n _getCellKey(): string {\n return (\n (this.context.virtualizedCell && this.context.virtualizedCell.cellKey) ||\n 'rootList'\n );\n }\n\n _getScrollMetrics = () => {\n return this._scrollMetrics;\n };\n\n hasMore(): boolean {\n return this._hasMore;\n }\n\n _getOutermostParentListRef = () => {\n if (this._isNestedWithSameOrientation()) {\n return this.context.virtualizedList.getOutermostParentListRef();\n } else {\n return this;\n }\n };\n\n _getNestedChildState = (key: string): ?ChildListState => {\n const existingChildData = this._nestedChildLists.get(key);\n return existingChildData && existingChildData.state;\n };\n\n _registerAsNestedChild = (childList: {\n cellKey: string,\n key: string,\n ref: VirtualizedList,\n }): ?ChildListState => {\n // Register the mapping between this child key and the cellKey for its cell\n const childListsInCell =\n this._cellKeysToChildListKeys.get(childList.cellKey) || new Set();\n childListsInCell.add(childList.key);\n this._cellKeysToChildListKeys.set(childList.cellKey, childListsInCell);\n\n const existingChildData = this._nestedChildLists.get(childList.key);\n invariant(\n !(existingChildData && existingChildData.ref !== null),\n 'A VirtualizedList contains a cell which itself contains ' +\n 'more than one VirtualizedList of the same orientation as the parent ' +\n 'list. You must pass a unique listKey prop to each sibling list.',\n );\n this._nestedChildLists.set(childList.key, {\n ref: childList.ref,\n state: null,\n });\n\n if (this._hasInteracted) {\n childList.ref.recordInteraction();\n }\n };\n\n _unregisterAsNestedChild = (childList: {\n key: string,\n state: ChildListState,\n }): void => {\n this._nestedChildLists.set(childList.key, {\n ref: null,\n state: childList.state,\n });\n };\n\n state: State;\n\n constructor(props: Props, context: Object) {\n super(props, context);\n invariant(\n !props.onScroll || !props.onScroll.__isNative,\n 'Components based on VirtualizedList must be wrapped with Animated.createAnimatedComponent ' +\n 'to support native onScroll events with useNativeDriver',\n );\n\n invariant(\n props.windowSize > 0,\n 'VirtualizedList: The windowSize prop must be present and set to a value greater than 0.',\n );\n\n this._fillRateHelper = new FillRateHelper(this._getFrameMetrics);\n this._updateCellsToRenderBatcher = new Batchinator(\n this._updateCellsToRender,\n this.props.updateCellsBatchingPeriod,\n );\n\n if (this.props.viewabilityConfigCallbackPairs) {\n this._viewabilityTuples = this.props.viewabilityConfigCallbackPairs.map(\n pair => ({\n viewabilityHelper: new ViewabilityHelper(pair.viewabilityConfig),\n onViewableItemsChanged: pair.onViewableItemsChanged,\n }),\n );\n } else if (this.props.onViewableItemsChanged) {\n this._viewabilityTuples.push({\n viewabilityHelper: new ViewabilityHelper(this.props.viewabilityConfig),\n onViewableItemsChanged: this.props.onViewableItemsChanged,\n });\n }\n\n let initialState = {\n first: this.props.initialScrollIndex || 0,\n last:\n Math.min(\n this.props.getItemCount(this.props.data),\n (this.props.initialScrollIndex || 0) + this.props.initialNumToRender,\n ) - 1,\n };\n\n if (this._isNestedWithSameOrientation()) {\n const storedState = this.context.virtualizedList.getNestedChildState(\n this.props.listKey || this._getCellKey(),\n );\n if (storedState) {\n initialState = storedState;\n this.state = storedState;\n this._frames = storedState.frames;\n }\n }\n\n this.state = initialState;\n }\n\n componentDidMount() {\n if (this._isNestedWithSameOrientation()) {\n this.context.virtualizedList.registerAsNestedChild({\n cellKey: this._getCellKey(),\n key: this.props.listKey || this._getCellKey(),\n ref: this,\n });\n }\n }\n\n componentWillUnmount() {\n if (this._isNestedWithSameOrientation()) {\n this.context.virtualizedList.unregisterAsNestedChild({\n key: this.props.listKey || this._getCellKey(),\n state: {\n first: this.state.first,\n last: this.state.last,\n frames: this._frames,\n },\n });\n }\n this._updateViewableItems(null);\n this._updateCellsToRenderBatcher.dispose({abort: true});\n this._viewabilityTuples.forEach(tuple => {\n tuple.viewabilityHelper.dispose();\n });\n this._fillRateHelper.deactivateAndFlush();\n }\n\n static getDerivedStateFromProps(newProps: Props, prevState: State) {\n const {data, extraData, getItemCount, maxToRenderPerBatch} = newProps;\n // first and last could be stale (e.g. if a new, shorter items props is passed in), so we make\n // sure we're rendering a reasonable range here.\n return {\n first: Math.max(\n 0,\n Math.min(prevState.first, getItemCount(data) - 1 - maxToRenderPerBatch),\n ),\n last: Math.max(0, Math.min(prevState.last, getItemCount(data) - 1)),\n };\n }\n\n _pushCells(\n cells: Array,\n stickyHeaderIndices: Array,\n stickyIndicesFromProps: Set,\n first: number,\n last: number,\n inversionStyle: ?DangerouslyImpreciseStyleProp,\n ) {\n const {\n CellRendererComponent,\n ItemSeparatorComponent,\n data,\n getItem,\n getItemCount,\n horizontal,\n keyExtractor,\n } = this.props;\n const stickyOffset = this.props.ListHeaderComponent ? 1 : 0;\n const end = getItemCount(data) - 1;\n let prevCellKey;\n last = Math.min(end, last);\n for (let ii = first; ii <= last; ii++) {\n const item = getItem(data, ii);\n const key = keyExtractor(item, ii);\n this._indicesToKeys.set(ii, key);\n if (stickyIndicesFromProps.has(ii + stickyOffset)) {\n stickyHeaderIndices.push(cells.length);\n }\n cells.push(\n this._onCellLayout(e, key, ii)}\n onUnmount={this._onCellUnmount}\n parentProps={this.props}\n ref={ref => {\n this._cellRefs[key] = ref;\n }}\n />,\n );\n prevCellKey = key;\n }\n }\n\n _onUpdateSeparators = (keys: Array, newProps: Object) => {\n keys.forEach(key => {\n const ref = key != null && this._cellRefs[key];\n ref && ref.updateSeparatorProps(newProps);\n });\n };\n\n _isVirtualizationDisabled(): boolean {\n return this.props.disableVirtualization;\n }\n\n _isNestedWithSameOrientation(): boolean {\n const nestedContext = this.context.virtualizedList;\n return !!(\n nestedContext && !!nestedContext.horizontal === !!this.props.horizontal\n );\n }\n\n render() {\n if (__DEV__) {\n const flatStyles = flattenStyle(this.props.contentContainerStyle);\n warning(\n flatStyles == null || flatStyles.flexWrap !== 'wrap',\n '`flexWrap: `wrap`` is not supported with the `VirtualizedList` components.' +\n 'Consider using `numColumns` with `FlatList` instead.',\n );\n }\n const {\n ListEmptyComponent,\n ListFooterComponent,\n ListHeaderComponent,\n } = this.props;\n const {data, horizontal} = this.props;\n const isVirtualizationDisabled = this._isVirtualizationDisabled();\n const inversionStyle = this.props.inverted\n ? this.props.horizontal\n ? styles.horizontallyInverted\n : styles.verticallyInverted\n : null;\n const cells = [];\n const stickyIndicesFromProps = new Set(this.props.stickyHeaderIndices);\n const stickyHeaderIndices = [];\n if (ListHeaderComponent) {\n if (stickyIndicesFromProps.has(0)) {\n stickyHeaderIndices.push(0);\n }\n const element = React.isValidElement(ListHeaderComponent) ? (\n ListHeaderComponent\n ) : (\n // $FlowFixMe\n \n );\n cells.push(\n \n \n {\n // $FlowFixMe - Typing ReactNativeComponent revealed errors\n element\n }\n \n ,\n );\n }\n const itemCount = this.props.getItemCount(data);\n if (itemCount > 0) {\n _usedIndexForKey = false;\n _keylessItemComponentName = '';\n const spacerKey = !horizontal ? 'height' : 'width';\n const lastInitialIndex = this.props.initialScrollIndex\n ? -1\n : this.props.initialNumToRender - 1;\n const {first, last} = this.state;\n this._pushCells(\n cells,\n stickyHeaderIndices,\n stickyIndicesFromProps,\n 0,\n lastInitialIndex,\n inversionStyle,\n );\n const firstAfterInitial = Math.max(lastInitialIndex + 1, first);\n if (!isVirtualizationDisabled && first > lastInitialIndex + 1) {\n let insertedStickySpacer = false;\n if (stickyIndicesFromProps.size > 0) {\n const stickyOffset = ListHeaderComponent ? 1 : 0;\n // See if there are any sticky headers in the virtualized space that we need to render.\n for (let ii = firstAfterInitial - 1; ii > lastInitialIndex; ii--) {\n if (stickyIndicesFromProps.has(ii + stickyOffset)) {\n const initBlock = this._getFrameMetricsApprox(lastInitialIndex);\n const stickyBlock = this._getFrameMetricsApprox(ii);\n const leadSpace = stickyBlock.offset - initBlock.offset;\n cells.push(\n ,\n );\n this._pushCells(\n cells,\n stickyHeaderIndices,\n stickyIndicesFromProps,\n ii,\n ii,\n inversionStyle,\n );\n const trailSpace =\n this._getFrameMetricsApprox(first).offset -\n (stickyBlock.offset + stickyBlock.length);\n cells.push(\n ,\n );\n insertedStickySpacer = true;\n break;\n }\n }\n }\n if (!insertedStickySpacer) {\n const initBlock = this._getFrameMetricsApprox(lastInitialIndex);\n const firstSpace =\n this._getFrameMetricsApprox(first).offset -\n (initBlock.offset + initBlock.length);\n cells.push(\n ,\n );\n }\n }\n this._pushCells(\n cells,\n stickyHeaderIndices,\n stickyIndicesFromProps,\n firstAfterInitial,\n last,\n inversionStyle,\n );\n if (!this._hasWarned.keys && _usedIndexForKey) {\n console.warn(\n 'VirtualizedList: missing keys for items, make sure to specify a key property on each ' +\n 'item or provide a custom keyExtractor.',\n _keylessItemComponentName,\n );\n this._hasWarned.keys = true;\n }\n if (!isVirtualizationDisabled && last < itemCount - 1) {\n const lastFrame = this._getFrameMetricsApprox(last);\n // Without getItemLayout, we limit our tail spacer to the _highestMeasuredFrameIndex to\n // prevent the user for hyperscrolling into un-measured area because otherwise content will\n // likely jump around as it renders in above the viewport.\n const end = this.props.getItemLayout\n ? itemCount - 1\n : Math.min(itemCount - 1, this._highestMeasuredFrameIndex);\n const endFrame = this._getFrameMetricsApprox(end);\n const tailSpacerLength =\n endFrame.offset +\n endFrame.length -\n (lastFrame.offset + lastFrame.length);\n cells.push(\n ,\n );\n }\n } else if (ListEmptyComponent) {\n const element: React.Element = ((React.isValidElement(\n ListEmptyComponent,\n ) ? (\n ListEmptyComponent\n ) : (\n // $FlowFixMe\n \n )): any);\n cells.push(\n React.cloneElement(element, {\n key: '$empty',\n onLayout: event => {\n this._onLayoutEmpty(event);\n if (element.props.onLayout) {\n element.props.onLayout(event);\n }\n },\n style: [element.props.style, inversionStyle],\n }),\n );\n }\n if (ListFooterComponent) {\n const element = React.isValidElement(ListFooterComponent) ? (\n ListFooterComponent\n ) : (\n // $FlowFixMe\n \n );\n cells.push(\n \n \n {\n // $FlowFixMe - Typing ReactNativeComponent revealed errors\n element\n }\n \n ,\n );\n }\n const scrollProps = {\n ...this.props,\n onContentSizeChange: this._onContentSizeChange,\n onLayout: this._onLayout,\n onScroll: this._onScroll,\n onScrollBeginDrag: this._onScrollBeginDrag,\n onScrollEndDrag: this._onScrollEndDrag,\n onMomentumScrollEnd: this._onMomentumScrollEnd,\n scrollEventThrottle: this.props.scrollEventThrottle, // TODO: Android support\n invertStickyHeaders:\n this.props.invertStickyHeaders !== undefined\n ? this.props.invertStickyHeaders\n : this.props.inverted,\n stickyHeaderIndices,\n };\n if (inversionStyle && itemCount !== 0) {\n /* $FlowFixMe(>=0.70.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.70 was deployed. To see the error delete\n * this comment and run Flow. */\n scrollProps.style = [inversionStyle, this.props.style];\n }\n\n this._hasMore =\n this.state.last < this.props.getItemCount(this.props.data) - 1;\n\n const ret = React.cloneElement(\n (this.props.renderScrollComponent || this._defaultRenderScrollComponent)(\n scrollProps,\n ),\n // $FlowFixMe Invalid prop usage\n {\n ref: this._captureScrollRef,\n },\n cells,\n );\n if (this.props.debug) {\n return (\n \n {ret}\n {this._renderDebugOverlay()}\n \n );\n } else {\n return ret;\n }\n }\n\n componentDidUpdate(prevProps: Props) {\n const {data, extraData} = this.props;\n if (data !== prevProps.data || extraData !== prevProps.extraData) {\n this._hasDataChangedSinceEndReached = true;\n\n // clear the viewableIndices cache to also trigger\n // the onViewableItemsChanged callback with the new data\n this._viewabilityTuples.forEach(tuple => {\n tuple.viewabilityHelper.resetViewableIndices();\n });\n }\n this._scheduleCellsToRenderUpdate();\n }\n\n _averageCellLength = 0;\n // Maps a cell key to the set of keys for all outermost child lists within that cell\n _cellKeysToChildListKeys: Map> = new Map();\n _cellRefs = {};\n _fillRateHelper: FillRateHelper;\n _frames = {};\n _footerLength = 0;\n _hasDataChangedSinceEndReached = true;\n _hasInteracted = false;\n _hasMore = false;\n _hasWarned = {};\n _highestMeasuredFrameIndex = 0;\n _headerLength = 0;\n _indicesToKeys: Map = new Map();\n _hasDoneInitialScroll = false;\n _nestedChildLists: Map<\n string,\n {ref: ?VirtualizedList, state: ?ChildListState},\n > = new Map();\n _offsetFromParentVirtualizedList: number = 0;\n _prevParentOffset: number = 0;\n _scrollMetrics = {\n contentLength: 0,\n dOffset: 0,\n dt: 10,\n offset: 0,\n timestamp: 0,\n velocity: 0,\n visibleLength: 0,\n };\n _scrollRef: ?React.ElementRef = null;\n _sentEndForContentLength = 0;\n _totalCellLength = 0;\n _totalCellsMeasured = 0;\n _updateCellsToRenderBatcher: Batchinator;\n _viewabilityTuples: Array = [];\n\n _captureScrollRef = ref => {\n this._scrollRef = ref;\n };\n\n _computeBlankness() {\n this._fillRateHelper.computeBlankness(\n this.props,\n this.state,\n this._scrollMetrics,\n );\n }\n\n _defaultRenderScrollComponent = props => {\n const onRefresh = props.onRefresh;\n if (this._isNestedWithSameOrientation()) {\n // $FlowFixMe - Typing ReactNativeComponent revealed errors\n return ;\n } else if (onRefresh) {\n invariant(\n typeof props.refreshing === 'boolean',\n '`refreshing` prop must be set as a boolean in order to use `onRefresh`, but got `' +\n JSON.stringify(props.refreshing) +\n '`',\n );\n return (\n // $FlowFixMe Invalid prop usage\n \n ) : (\n props.refreshControl\n )\n }\n />\n );\n } else {\n // $FlowFixMe Invalid prop usage\n return ;\n }\n };\n\n _onCellLayout(e, cellKey, index) {\n const layout = e.nativeEvent.layout;\n const next = {\n offset: this._selectOffset(layout),\n length: this._selectLength(layout),\n index,\n inLayout: true,\n };\n const curr = this._frames[cellKey];\n if (\n !curr ||\n next.offset !== curr.offset ||\n next.length !== curr.length ||\n index !== curr.index\n ) {\n this._totalCellLength += next.length - (curr ? curr.length : 0);\n this._totalCellsMeasured += curr ? 0 : 1;\n this._averageCellLength =\n this._totalCellLength / this._totalCellsMeasured;\n this._frames[cellKey] = next;\n this._highestMeasuredFrameIndex = Math.max(\n this._highestMeasuredFrameIndex,\n index,\n );\n this._scheduleCellsToRenderUpdate();\n } else {\n this._frames[cellKey].inLayout = true;\n }\n\n const childListKeys = this._cellKeysToChildListKeys.get(cellKey);\n if (childListKeys) {\n for (let childKey of childListKeys) {\n const childList = this._nestedChildLists.get(childKey);\n childList &&\n childList.ref &&\n childList.ref.measureLayoutRelativeToContainingList();\n }\n }\n\n this._computeBlankness();\n }\n\n _onCellUnmount = (cellKey: string) => {\n const curr = this._frames[cellKey];\n if (curr) {\n this._frames[cellKey] = {...curr, inLayout: false};\n }\n };\n\n measureLayoutRelativeToContainingList(): void {\n // TODO (T35574538): findNodeHandle sometimes crashes with \"Unable to find\n // node on an unmounted component\" during scrolling\n try {\n UIManager.measureLayout(\n ReactNative.findNodeHandle(this),\n ReactNative.findNodeHandle(\n this.context.virtualizedList.getOutermostParentListRef(),\n ),\n error => {\n console.warn(\n \"VirtualizedList: Encountered an error while measuring a list's\" +\n ' offset from its containing VirtualizedList.',\n );\n },\n (x, y, width, height) => {\n this._offsetFromParentVirtualizedList = this._selectOffset({x, y});\n this._scrollMetrics.contentLength = this._selectLength({\n width,\n height,\n });\n\n const scrollMetrics = this._convertParentScrollMetrics(\n this.context.virtualizedList.getScrollMetrics(),\n );\n this._scrollMetrics.visibleLength = scrollMetrics.visibleLength;\n this._scrollMetrics.offset = scrollMetrics.offset;\n },\n );\n } catch (error) {\n console.warn(\n 'measureLayoutRelativeToContainingList threw an error',\n error.stack,\n );\n }\n }\n\n _onLayout = (e: Object) => {\n if (this._isNestedWithSameOrientation()) {\n // Need to adjust our scroll metrics to be relative to our containing\n // VirtualizedList before we can make claims about list item viewability\n this.measureLayoutRelativeToContainingList();\n } else {\n this._scrollMetrics.visibleLength = this._selectLength(\n e.nativeEvent.layout,\n );\n }\n this.props.onLayout && this.props.onLayout(e);\n this._scheduleCellsToRenderUpdate();\n this._maybeCallOnEndReached();\n };\n\n _onLayoutEmpty = e => {\n this.props.onLayout && this.props.onLayout(e);\n };\n\n _onLayoutFooter = e => {\n this._footerLength = this._selectLength(e.nativeEvent.layout);\n };\n\n _onLayoutHeader = e => {\n this._headerLength = this._selectLength(e.nativeEvent.layout);\n };\n\n _renderDebugOverlay() {\n const normalize =\n this._scrollMetrics.visibleLength / this._scrollMetrics.contentLength;\n const framesInLayout = [];\n const itemCount = this.props.getItemCount(this.props.data);\n for (let ii = 0; ii < itemCount; ii++) {\n const frame = this._getFrameMetricsApprox(ii);\n /* $FlowFixMe(>=0.68.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.68 was deployed. To see the error delete this\n * comment and run Flow. */\n if (frame.inLayout) {\n framesInLayout.push(frame);\n }\n }\n const windowTop = this._getFrameMetricsApprox(this.state.first).offset;\n const frameLast = this._getFrameMetricsApprox(this.state.last);\n const windowLen = frameLast.offset + frameLast.length - windowTop;\n const visTop = this._scrollMetrics.offset;\n const visLen = this._scrollMetrics.visibleLength;\n const baseStyle = {position: 'absolute', top: 0, right: 0};\n return (\n \n {framesInLayout.map((f, ii) => (\n \n ))}\n \n \n \n );\n }\n\n _selectLength(metrics: $ReadOnly<{height: number, width: number}>): number {\n return !this.props.horizontal ? metrics.height : metrics.width;\n }\n\n _selectOffset(metrics: $ReadOnly<{x: number, y: number}>): number {\n return !this.props.horizontal ? metrics.y : metrics.x;\n }\n\n _maybeCallOnEndReached() {\n const {\n data,\n getItemCount,\n onEndReached,\n onEndReachedThreshold,\n } = this.props;\n const {contentLength, visibleLength, offset} = this._scrollMetrics;\n const distanceFromEnd = contentLength - visibleLength - offset;\n if (\n onEndReached &&\n this.state.last === getItemCount(data) - 1 &&\n /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.63 was deployed. To see the error delete this\n * comment and run Flow. */\n distanceFromEnd < onEndReachedThreshold * visibleLength &&\n (this._hasDataChangedSinceEndReached ||\n this._scrollMetrics.contentLength !== this._sentEndForContentLength)\n ) {\n // Only call onEndReached once for a given dataset + content length.\n this._hasDataChangedSinceEndReached = false;\n this._sentEndForContentLength = this._scrollMetrics.contentLength;\n onEndReached({distanceFromEnd});\n }\n }\n\n _onContentSizeChange = (width: number, height: number) => {\n if (\n width > 0 &&\n height > 0 &&\n this.props.initialScrollIndex != null &&\n this.props.initialScrollIndex > 0 &&\n !this._hasDoneInitialScroll\n ) {\n this.scrollToIndex({\n animated: false,\n index: this.props.initialScrollIndex,\n });\n this._hasDoneInitialScroll = true;\n }\n if (this.props.onContentSizeChange) {\n this.props.onContentSizeChange(width, height);\n }\n this._scrollMetrics.contentLength = this._selectLength({height, width});\n this._scheduleCellsToRenderUpdate();\n this._maybeCallOnEndReached();\n };\n\n /* Translates metrics from a scroll event in a parent VirtualizedList into\n * coordinates relative to the child list.\n */\n _convertParentScrollMetrics = (metrics: {\n visibleLength: number,\n offset: number,\n }) => {\n // Offset of the top of the nested list relative to the top of its parent's viewport\n const offset = metrics.offset - this._offsetFromParentVirtualizedList;\n // Child's visible length is the same as its parent's\n const visibleLength = metrics.visibleLength;\n const dOffset = offset - this._scrollMetrics.offset;\n const contentLength = this._scrollMetrics.contentLength;\n\n return {\n visibleLength,\n contentLength,\n offset,\n dOffset,\n };\n };\n\n _onScroll = (e: Object) => {\n this._nestedChildLists.forEach(childList => {\n childList.ref && childList.ref._onScroll(e);\n });\n if (this.props.onScroll) {\n this.props.onScroll(e);\n }\n const timestamp = e.timeStamp;\n let visibleLength = this._selectLength(e.nativeEvent.layoutMeasurement);\n let contentLength = this._selectLength(e.nativeEvent.contentSize);\n let offset = this._selectOffset(e.nativeEvent.contentOffset);\n let dOffset = offset - this._scrollMetrics.offset;\n\n if (this._isNestedWithSameOrientation()) {\n if (this._scrollMetrics.contentLength === 0) {\n // Ignore scroll events until onLayout has been called and we\n // know our offset from our offset from our parent\n return;\n }\n ({\n visibleLength,\n contentLength,\n offset,\n dOffset,\n } = this._convertParentScrollMetrics({\n visibleLength,\n offset,\n }));\n }\n\n const dt = this._scrollMetrics.timestamp\n ? Math.max(1, timestamp - this._scrollMetrics.timestamp)\n : 1;\n const velocity = dOffset / dt;\n\n if (\n dt > 500 &&\n this._scrollMetrics.dt > 500 &&\n contentLength > 5 * visibleLength &&\n !this._hasWarned.perf\n ) {\n infoLog(\n 'VirtualizedList: You have a large list that is slow to update - make sure your ' +\n 'renderItem function renders components that follow React performance best practices ' +\n 'like PureComponent, shouldComponentUpdate, etc.',\n {dt, prevDt: this._scrollMetrics.dt, contentLength},\n );\n this._hasWarned.perf = true;\n }\n this._scrollMetrics = {\n contentLength,\n dt,\n dOffset,\n offset,\n timestamp,\n velocity,\n visibleLength,\n };\n this._updateViewableItems(this.props.data);\n if (!this.props) {\n return;\n }\n this._maybeCallOnEndReached();\n if (velocity !== 0) {\n this._fillRateHelper.activate();\n }\n this._computeBlankness();\n this._scheduleCellsToRenderUpdate();\n };\n\n _scheduleCellsToRenderUpdate() {\n const {first, last} = this.state;\n const {offset, visibleLength, velocity} = this._scrollMetrics;\n const itemCount = this.props.getItemCount(this.props.data);\n let hiPri = false;\n const scrollingThreshold =\n /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.63 was deployed. To see the error delete\n * this comment and run Flow. */\n (this.props.onEndReachedThreshold * visibleLength) / 2;\n // Mark as high priority if we're close to the start of the first item\n // But only if there are items before the first rendered item\n if (first > 0) {\n const distTop = offset - this._getFrameMetricsApprox(first).offset;\n hiPri =\n hiPri || distTop < 0 || (velocity < -2 && distTop < scrollingThreshold);\n }\n // Mark as high priority if we're close to the end of the last item\n // But only if there are items after the last rendered item\n if (last < itemCount - 1) {\n const distBottom =\n this._getFrameMetricsApprox(last).offset - (offset + visibleLength);\n hiPri =\n hiPri ||\n distBottom < 0 ||\n (velocity > 2 && distBottom < scrollingThreshold);\n }\n // Only trigger high-priority updates if we've actually rendered cells,\n // and with that size estimate, accurately compute how many cells we should render.\n // Otherwise, it would just render as many cells as it can (of zero dimension),\n // each time through attempting to render more (limited by maxToRenderPerBatch),\n // starving the renderer from actually laying out the objects and computing _averageCellLength.\n if (hiPri && this._averageCellLength) {\n // Don't worry about interactions when scrolling quickly; focus on filling content as fast\n // as possible.\n this._updateCellsToRenderBatcher.dispose({abort: true});\n this._updateCellsToRender();\n return;\n } else {\n this._updateCellsToRenderBatcher.schedule();\n }\n }\n\n _onScrollBeginDrag = (e): void => {\n this._nestedChildLists.forEach(childList => {\n childList.ref && childList.ref._onScrollBeginDrag(e);\n });\n this._viewabilityTuples.forEach(tuple => {\n tuple.viewabilityHelper.recordInteraction();\n });\n this._hasInteracted = true;\n this.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e);\n };\n\n _onScrollEndDrag = (e): void => {\n const {velocity} = e.nativeEvent;\n if (velocity) {\n this._scrollMetrics.velocity = this._selectOffset(velocity);\n }\n this._computeBlankness();\n this.props.onScrollEndDrag && this.props.onScrollEndDrag(e);\n };\n\n _onMomentumScrollEnd = (e): void => {\n this._scrollMetrics.velocity = 0;\n this._computeBlankness();\n this.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e);\n };\n\n _updateCellsToRender = () => {\n const {data, getItemCount, onEndReachedThreshold} = this.props;\n const isVirtualizationDisabled = this._isVirtualizationDisabled();\n this._updateViewableItems(data);\n if (!data) {\n return;\n }\n this.setState(state => {\n let newState;\n if (!isVirtualizationDisabled) {\n // If we run this with bogus data, we'll force-render window {first: 0, last: 0},\n // and wipe out the initialNumToRender rendered elements.\n // So let's wait until the scroll view metrics have been set up. And until then,\n // we will trust the initialNumToRender suggestion\n if (this._scrollMetrics.visibleLength) {\n // If we have a non-zero initialScrollIndex and run this before we've scrolled,\n // we'll wipe out the initialNumToRender rendered elements starting at initialScrollIndex.\n // So let's wait until we've scrolled the view to the right place. And until then,\n // we will trust the initialScrollIndex suggestion.\n if (!this.props.initialScrollIndex || this._scrollMetrics.offset) {\n newState = computeWindowedRenderLimits(\n this.props,\n state,\n this._getFrameMetricsApprox,\n this._scrollMetrics,\n );\n }\n }\n } else {\n const {contentLength, offset, visibleLength} = this._scrollMetrics;\n const distanceFromEnd = contentLength - visibleLength - offset;\n const renderAhead =\n /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses\n * an error found when Flow v0.63 was deployed. To see the error\n * delete this comment and run Flow. */\n distanceFromEnd < onEndReachedThreshold * visibleLength\n ? this.props.maxToRenderPerBatch\n : 0;\n newState = {\n first: 0,\n last: Math.min(state.last + renderAhead, getItemCount(data) - 1),\n };\n }\n if (newState && this._nestedChildLists.size > 0) {\n const newFirst = newState.first;\n const newLast = newState.last;\n // If some cell in the new state has a child list in it, we should only render\n // up through that item, so that we give that list a chance to render.\n // Otherwise there's churn from multiple child lists mounting and un-mounting\n // their items.\n for (let ii = newFirst; ii <= newLast; ii++) {\n const cellKeyForIndex = this._indicesToKeys.get(ii);\n const childListKeys =\n cellKeyForIndex &&\n this._cellKeysToChildListKeys.get(cellKeyForIndex);\n if (!childListKeys) {\n continue;\n }\n let someChildHasMore = false;\n // For each cell, need to check whether any child list in it has more elements to render\n for (let childKey of childListKeys) {\n const childList = this._nestedChildLists.get(childKey);\n if (childList && childList.ref && childList.ref.hasMore()) {\n someChildHasMore = true;\n break;\n }\n }\n if (someChildHasMore) {\n newState.last = ii;\n break;\n }\n }\n }\n return newState;\n });\n };\n\n _createViewToken = (index: number, isViewable: boolean) => {\n const {data, getItem, keyExtractor} = this.props;\n const item = getItem(data, index);\n return {index, item, key: keyExtractor(item, index), isViewable};\n };\n\n _getFrameMetricsApprox = (\n index: number,\n ): {length: number, offset: number} => {\n const frame = this._getFrameMetrics(index);\n if (frame && frame.index === index) {\n // check for invalid frames due to row re-ordering\n return frame;\n } else {\n const {getItemLayout} = this.props;\n invariant(\n !getItemLayout,\n 'Should not have to estimate frames when a measurement metrics function is provided',\n );\n return {\n length: this._averageCellLength,\n offset: this._averageCellLength * index,\n };\n }\n };\n\n _getFrameMetrics = (\n index: number,\n ): ?{\n length: number,\n offset: number,\n index: number,\n inLayout?: boolean,\n } => {\n const {\n data,\n getItem,\n getItemCount,\n getItemLayout,\n keyExtractor,\n } = this.props;\n invariant(\n getItemCount(data) > index,\n 'Tried to get frame for out of range index ' + index,\n );\n const item = getItem(data, index);\n let frame = item && this._frames[keyExtractor(item, index)];\n if (!frame || frame.index !== index) {\n if (getItemLayout) {\n frame = getItemLayout(data, index);\n if (__DEV__) {\n const frameType = PropTypes.shape({\n length: PropTypes.number.isRequired,\n offset: PropTypes.number.isRequired,\n index: PropTypes.number.isRequired,\n }).isRequired;\n PropTypes.checkPropTypes(\n {frame: frameType},\n {frame},\n 'frame',\n 'VirtualizedList.getItemLayout',\n );\n }\n }\n }\n /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.63 was deployed. To see the error delete this\n * comment and run Flow. */\n return frame;\n };\n\n _updateViewableItems(data: any) {\n const {getItemCount} = this.props;\n\n this._viewabilityTuples.forEach(tuple => {\n tuple.viewabilityHelper.onUpdate(\n getItemCount(data),\n this._scrollMetrics.offset,\n this._scrollMetrics.visibleLength,\n this._getFrameMetrics,\n this._createViewToken,\n tuple.onViewableItemsChanged,\n this.state,\n );\n });\n }\n}\n\nclass CellRenderer extends React.Component<\n {\n CellRendererComponent?: ?React.ComponentType,\n ItemSeparatorComponent: ?React.ComponentType<*>,\n cellKey: string,\n fillRateHelper: FillRateHelper,\n horizontal: ?boolean,\n index: number,\n inversionStyle: ?DangerouslyImpreciseStyleProp,\n item: Item,\n onLayout: (event: Object) => void, // This is extracted by ScrollViewStickyHeader\n onUnmount: (cellKey: string) => void,\n onUpdateSeparators: (cellKeys: Array, props: Object) => void,\n parentProps: {\n getItemLayout?: ?Function,\n renderItem: renderItemType,\n },\n prevCellKey: ?string,\n },\n $FlowFixMeState,\n> {\n state = {\n separatorProps: {\n highlighted: false,\n leadingItem: this.props.item,\n },\n };\n\n static childContextTypes = {\n virtualizedCell: PropTypes.shape({\n cellKey: PropTypes.string,\n }),\n };\n\n getChildContext() {\n return {\n virtualizedCell: {\n cellKey: this.props.cellKey,\n },\n };\n }\n\n // TODO: consider factoring separator stuff out of VirtualizedList into FlatList since it's not\n // reused by SectionList and we can keep VirtualizedList simpler.\n _separators = {\n highlight: () => {\n const {cellKey, prevCellKey} = this.props;\n this.props.onUpdateSeparators([cellKey, prevCellKey], {\n highlighted: true,\n });\n },\n unhighlight: () => {\n const {cellKey, prevCellKey} = this.props;\n this.props.onUpdateSeparators([cellKey, prevCellKey], {\n highlighted: false,\n });\n },\n updateProps: (select: 'leading' | 'trailing', newProps: Object) => {\n const {cellKey, prevCellKey} = this.props;\n this.props.onUpdateSeparators(\n [select === 'leading' ? prevCellKey : cellKey],\n newProps,\n );\n },\n };\n\n updateSeparatorProps(newProps: Object) {\n this.setState(state => ({\n separatorProps: {...state.separatorProps, ...newProps},\n }));\n }\n\n componentWillUnmount() {\n this.props.onUnmount(this.props.cellKey);\n }\n\n render() {\n const {\n CellRendererComponent,\n ItemSeparatorComponent,\n fillRateHelper,\n horizontal,\n item,\n index,\n inversionStyle,\n parentProps,\n } = this.props;\n const {renderItem, getItemLayout} = parentProps;\n invariant(renderItem, 'no renderItem!');\n const element = renderItem({\n item,\n index,\n separators: this._separators,\n });\n const onLayout =\n /* $FlowFixMe(>=0.68.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.68 was deployed. To see the error delete this\n * comment and run Flow. */\n getItemLayout && !parentProps.debug && !fillRateHelper.enabled()\n ? undefined\n : this.props.onLayout;\n // NOTE: that when this is a sticky header, `onLayout` will get automatically extracted and\n // called explicitly by `ScrollViewStickyHeader`.\n const itemSeparator = ItemSeparatorComponent && (\n \n );\n const cellStyle = inversionStyle\n ? horizontal\n ? [{flexDirection: 'row-reverse'}, inversionStyle]\n : [{flexDirection: 'column-reverse'}, inversionStyle]\n : horizontal\n ? [{flexDirection: 'row'}, inversionStyle]\n : inversionStyle;\n if (!CellRendererComponent) {\n return (\n \n {element}\n {itemSeparator}\n \n );\n }\n return (\n \n {element}\n {itemSeparator}\n \n );\n }\n}\n\nclass VirtualizedCellWrapper extends React.Component<{\n cellKey: string,\n children: React.Node,\n}> {\n static childContextTypes = {\n virtualizedCell: PropTypes.shape({\n cellKey: PropTypes.string,\n }),\n };\n\n getChildContext() {\n return {\n virtualizedCell: {\n cellKey: this.props.cellKey,\n },\n };\n }\n\n render() {\n return this.props.children;\n }\n}\n\nconst styles = StyleSheet.create({\n verticallyInverted: {\n transform: [{scaleY: -1}],\n },\n horizontallyInverted: {\n transform: [{scaleX: -1}],\n },\n});\n\nmodule.exports = VirtualizedList;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst InteractionManager = require('InteractionManager');\n\n/**\n * A simple class for batching up invocations of a low-pri callback. A timeout is set to run the\n * callback once after a delay, no matter how many times it's scheduled. Once the delay is reached,\n * InteractionManager.runAfterInteractions is used to invoke the callback after any hi-pri\n * interactions are done running.\n *\n * Make sure to cleanup with dispose(). Example:\n *\n * class Widget extends React.Component {\n * _batchedSave: new Batchinator(() => this._saveState, 1000);\n * _saveSate() {\n * // save this.state to disk\n * }\n * componentDidUpdate() {\n * this._batchedSave.schedule();\n * }\n * componentWillUnmount() {\n * this._batchedSave.dispose();\n * }\n * ...\n * }\n */\nclass Batchinator {\n _callback: () => void;\n _delay: number;\n _taskHandle: ?{cancel: () => void};\n constructor(callback: () => void, delayMS: number) {\n this._delay = delayMS;\n this._callback = callback;\n }\n /*\n * Cleanup any pending tasks.\n *\n * By default, if there is a pending task the callback is run immediately. Set the option abort to\n * true to not call the callback if it was pending.\n */\n dispose(options: {abort: boolean} = {abort: false}) {\n if (this._taskHandle) {\n this._taskHandle.cancel();\n if (!options.abort) {\n this._callback();\n }\n this._taskHandle = null;\n }\n }\n schedule() {\n if (this._taskHandle) {\n return;\n }\n const timeoutHandle = setTimeout(() => {\n this._taskHandle = InteractionManager.runAfterInteractions(() => {\n // Note that we clear the handle before invoking the callback so that if the callback calls\n // schedule again, it will actually schedule another task.\n this._taskHandle = null;\n this._callback();\n });\n }, this._delay);\n this._taskHandle = {cancel: () => clearTimeout(timeoutHandle)};\n }\n}\n\nmodule.exports = Batchinator;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n\n'use strict';\n\n/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error\n * found when Flow v0.54 was deployed. To see the error delete this comment and\n * run Flow. */\nconst performanceNow = require('fbjs/lib/performanceNow');\n/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error\n * found when Flow v0.54 was deployed. To see the error delete this comment and\n * run Flow. */\nconst warning = require('fbjs/lib/warning');\n\nexport type FillRateInfo = Info;\n\nclass Info {\n any_blank_count = 0;\n any_blank_ms = 0;\n any_blank_speed_sum = 0;\n mostly_blank_count = 0;\n mostly_blank_ms = 0;\n pixels_blank = 0;\n pixels_sampled = 0;\n pixels_scrolled = 0;\n total_time_spent = 0;\n sample_count = 0;\n}\n\ntype FrameMetrics = {inLayout?: boolean, length: number, offset: number};\n\nconst DEBUG = false;\n\nlet _listeners: Array<(Info) => void> = [];\nlet _minSampleCount = 10;\nlet _sampleRate = DEBUG ? 1 : null;\n\n/**\n * A helper class for detecting when the maximem fill rate of `VirtualizedList` is exceeded.\n * By default the sampling rate is set to zero and this will do nothing. If you want to collect\n * samples (e.g. to log them), make sure to call `FillRateHelper.setSampleRate(0.0-1.0)`.\n *\n * Listeners and sample rate are global for all `VirtualizedList`s - typical usage will combine with\n * `SceneTracker.getActiveScene` to determine the context of the events.\n */\nclass FillRateHelper {\n _anyBlankStartTime = (null: ?number);\n _enabled = false;\n _getFrameMetrics: (index: number) => ?FrameMetrics;\n _info = new Info();\n _mostlyBlankStartTime = (null: ?number);\n _samplesStartTime = (null: ?number);\n\n static addListener(callback: FillRateInfo => void): {remove: () => void} {\n warning(\n _sampleRate !== null,\n 'Call `FillRateHelper.setSampleRate` before `addListener`.',\n );\n _listeners.push(callback);\n return {\n remove: () => {\n _listeners = _listeners.filter(listener => callback !== listener);\n },\n };\n }\n\n static setSampleRate(sampleRate: number) {\n _sampleRate = sampleRate;\n }\n\n static setMinSampleCount(minSampleCount: number) {\n _minSampleCount = minSampleCount;\n }\n\n constructor(getFrameMetrics: (index: number) => ?FrameMetrics) {\n this._getFrameMetrics = getFrameMetrics;\n this._enabled = (_sampleRate || 0) > Math.random();\n this._resetData();\n }\n\n activate() {\n if (this._enabled && this._samplesStartTime == null) {\n DEBUG && console.debug('FillRateHelper: activate');\n this._samplesStartTime = performanceNow();\n }\n }\n\n deactivateAndFlush() {\n if (!this._enabled) {\n return;\n }\n const start = this._samplesStartTime; // const for flow\n if (start == null) {\n DEBUG &&\n console.debug('FillRateHelper: bail on deactivate with no start time');\n return;\n }\n if (this._info.sample_count < _minSampleCount) {\n // Don't bother with under-sampled events.\n this._resetData();\n return;\n }\n const total_time_spent = performanceNow() - start;\n const info: any = {\n ...this._info,\n total_time_spent,\n };\n if (DEBUG) {\n const derived = {\n avg_blankness: this._info.pixels_blank / this._info.pixels_sampled,\n avg_speed: this._info.pixels_scrolled / (total_time_spent / 1000),\n avg_speed_when_any_blank:\n this._info.any_blank_speed_sum / this._info.any_blank_count,\n any_blank_per_min:\n this._info.any_blank_count / (total_time_spent / 1000 / 60),\n any_blank_time_frac: this._info.any_blank_ms / total_time_spent,\n mostly_blank_per_min:\n this._info.mostly_blank_count / (total_time_spent / 1000 / 60),\n mostly_blank_time_frac: this._info.mostly_blank_ms / total_time_spent,\n };\n for (const key in derived) {\n derived[key] = Math.round(1000 * derived[key]) / 1000;\n }\n console.debug('FillRateHelper deactivateAndFlush: ', {derived, info});\n }\n _listeners.forEach(listener => listener(info));\n this._resetData();\n }\n\n computeBlankness(\n props: {\n data: Array,\n getItemCount: (data: Array) => number,\n initialNumToRender: number,\n },\n state: {\n first: number,\n last: number,\n },\n scrollMetrics: {\n dOffset: number,\n offset: number,\n velocity: number,\n visibleLength: number,\n },\n ): number {\n if (\n !this._enabled ||\n props.getItemCount(props.data) === 0 ||\n this._samplesStartTime == null\n ) {\n return 0;\n }\n const {dOffset, offset, velocity, visibleLength} = scrollMetrics;\n\n // Denominator metrics that we track for all events - most of the time there is no blankness and\n // we want to capture that.\n this._info.sample_count++;\n this._info.pixels_sampled += Math.round(visibleLength);\n this._info.pixels_scrolled += Math.round(Math.abs(dOffset));\n const scrollSpeed = Math.round(Math.abs(velocity) * 1000); // px / sec\n\n // Whether blank now or not, record the elapsed time blank if we were blank last time.\n const now = performanceNow();\n if (this._anyBlankStartTime != null) {\n this._info.any_blank_ms += now - this._anyBlankStartTime;\n }\n this._anyBlankStartTime = null;\n if (this._mostlyBlankStartTime != null) {\n this._info.mostly_blank_ms += now - this._mostlyBlankStartTime;\n }\n this._mostlyBlankStartTime = null;\n\n let blankTop = 0;\n let first = state.first;\n let firstFrame = this._getFrameMetrics(first);\n while (first <= state.last && (!firstFrame || !firstFrame.inLayout)) {\n firstFrame = this._getFrameMetrics(first);\n first++;\n }\n // Only count blankTop if we aren't rendering the first item, otherwise we will count the header\n // as blank.\n if (firstFrame && first > 0) {\n blankTop = Math.min(\n visibleLength,\n Math.max(0, firstFrame.offset - offset),\n );\n }\n let blankBottom = 0;\n let last = state.last;\n let lastFrame = this._getFrameMetrics(last);\n while (last >= state.first && (!lastFrame || !lastFrame.inLayout)) {\n lastFrame = this._getFrameMetrics(last);\n last--;\n }\n // Only count blankBottom if we aren't rendering the last item, otherwise we will count the\n // footer as blank.\n if (lastFrame && last < props.getItemCount(props.data) - 1) {\n const bottomEdge = lastFrame.offset + lastFrame.length;\n blankBottom = Math.min(\n visibleLength,\n Math.max(0, offset + visibleLength - bottomEdge),\n );\n }\n const pixels_blank = Math.round(blankTop + blankBottom);\n const blankness = pixels_blank / visibleLength;\n if (blankness > 0) {\n this._anyBlankStartTime = now;\n this._info.any_blank_speed_sum += scrollSpeed;\n this._info.any_blank_count++;\n this._info.pixels_blank += pixels_blank;\n if (blankness > 0.5) {\n this._mostlyBlankStartTime = now;\n this._info.mostly_blank_count++;\n }\n } else if (scrollSpeed < 0.01 || Math.abs(dOffset) < 1) {\n this.deactivateAndFlush();\n }\n return blankness;\n }\n\n enabled(): boolean {\n return this._enabled;\n }\n\n _resetData() {\n this._anyBlankStartTime = null;\n this._info = new Info();\n this._mostlyBlankStartTime = null;\n this._samplesStartTime = null;\n }\n}\n\nmodule.exports = FillRateHelper;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst invariant = require('fbjs/lib/invariant');\n\nexport type ViewToken = {\n item: any,\n key: string,\n index: ?number,\n isViewable: boolean,\n section?: any,\n};\n\nexport type ViewabilityConfigCallbackPair = {\n viewabilityConfig: ViewabilityConfig,\n onViewableItemsChanged: (info: {\n viewableItems: Array,\n changed: Array,\n }) => void,\n};\n\nexport type ViewabilityConfig = {|\n /**\n * Minimum amount of time (in milliseconds) that an item must be physically viewable before the\n * viewability callback will be fired. A high number means that scrolling through content without\n * stopping will not mark the content as viewable.\n */\n minimumViewTime?: number,\n\n /**\n * Percent of viewport that must be covered for a partially occluded item to count as\n * \"viewable\", 0-100. Fully visible items are always considered viewable. A value of 0 means\n * that a single pixel in the viewport makes the item viewable, and a value of 100 means that\n * an item must be either entirely visible or cover the entire viewport to count as viewable.\n */\n viewAreaCoveragePercentThreshold?: number,\n\n /**\n * Similar to `viewAreaPercentThreshold`, but considers the percent of the item that is visible,\n * rather than the fraction of the viewable area it covers.\n */\n itemVisiblePercentThreshold?: number,\n\n /**\n * Nothing is considered viewable until the user scrolls or `recordInteraction` is called after\n * render.\n */\n waitForInteraction?: boolean,\n|};\n\n/**\n * A Utility class for calculating viewable items based on current metrics like scroll position and\n * layout.\n *\n * An item is said to be in a \"viewable\" state when any of the following\n * is true for longer than `minimumViewTime` milliseconds (after an interaction if `waitForInteraction`\n * is true):\n *\n * - Occupying >= `viewAreaCoveragePercentThreshold` of the view area XOR fraction of the item\n * visible in the view area >= `itemVisiblePercentThreshold`.\n * - Entirely visible on screen\n */\nclass ViewabilityHelper {\n _config: ViewabilityConfig;\n _hasInteracted: boolean = false;\n /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an error\n * found when Flow v0.63 was deployed. To see the error delete this comment\n * and run Flow. */\n _timers: Set = new Set();\n _viewableIndices: Array = [];\n _viewableItems: Map = new Map();\n\n constructor(\n config: ViewabilityConfig = {viewAreaCoveragePercentThreshold: 0},\n ) {\n this._config = config;\n }\n\n /**\n * Cleanup, e.g. on unmount. Clears any pending timers.\n */\n dispose() {\n this._timers.forEach(clearTimeout);\n }\n\n /**\n * Determines which items are viewable based on the current metrics and config.\n */\n computeViewableItems(\n itemCount: number,\n scrollOffset: number,\n viewportHeight: number,\n getFrameMetrics: (index: number) => ?{length: number, offset: number},\n renderRange?: {first: number, last: number}, // Optional optimization to reduce the scan size\n ): Array {\n const {\n itemVisiblePercentThreshold,\n viewAreaCoveragePercentThreshold,\n } = this._config;\n const viewAreaMode = viewAreaCoveragePercentThreshold != null;\n const viewablePercentThreshold = viewAreaMode\n ? viewAreaCoveragePercentThreshold\n : itemVisiblePercentThreshold;\n invariant(\n viewablePercentThreshold != null &&\n (itemVisiblePercentThreshold != null) !==\n (viewAreaCoveragePercentThreshold != null),\n 'Must set exactly one of itemVisiblePercentThreshold or viewAreaCoveragePercentThreshold',\n );\n const viewableIndices = [];\n if (itemCount === 0) {\n return viewableIndices;\n }\n let firstVisible = -1;\n const {first, last} = renderRange || {first: 0, last: itemCount - 1};\n invariant(\n last < itemCount,\n 'Invalid render range ' + JSON.stringify({renderRange, itemCount}),\n );\n for (let idx = first; idx <= last; idx++) {\n const metrics = getFrameMetrics(idx);\n if (!metrics) {\n continue;\n }\n const top = metrics.offset - scrollOffset;\n const bottom = top + metrics.length;\n if (top < viewportHeight && bottom > 0) {\n firstVisible = idx;\n if (\n _isViewable(\n viewAreaMode,\n viewablePercentThreshold,\n top,\n bottom,\n viewportHeight,\n metrics.length,\n )\n ) {\n viewableIndices.push(idx);\n }\n } else if (firstVisible >= 0) {\n break;\n }\n }\n return viewableIndices;\n }\n\n /**\n * Figures out which items are viewable and how that has changed from before and calls\n * `onViewableItemsChanged` as appropriate.\n */\n onUpdate(\n itemCount: number,\n scrollOffset: number,\n viewportHeight: number,\n getFrameMetrics: (index: number) => ?{length: number, offset: number},\n createViewToken: (index: number, isViewable: boolean) => ViewToken,\n onViewableItemsChanged: ({\n viewableItems: Array,\n changed: Array,\n }) => void,\n renderRange?: {first: number, last: number}, // Optional optimization to reduce the scan size\n ): void {\n if (\n (this._config.waitForInteraction && !this._hasInteracted) ||\n itemCount === 0 ||\n !getFrameMetrics(0)\n ) {\n return;\n }\n let viewableIndices = [];\n if (itemCount) {\n viewableIndices = this.computeViewableItems(\n itemCount,\n scrollOffset,\n viewportHeight,\n getFrameMetrics,\n renderRange,\n );\n }\n if (\n this._viewableIndices.length === viewableIndices.length &&\n this._viewableIndices.every((v, ii) => v === viewableIndices[ii])\n ) {\n // We might get a lot of scroll events where visibility doesn't change and we don't want to do\n // extra work in those cases.\n return;\n }\n this._viewableIndices = viewableIndices;\n if (this._config.minimumViewTime) {\n const handle = setTimeout(() => {\n this._timers.delete(handle);\n this._onUpdateSync(\n viewableIndices,\n onViewableItemsChanged,\n createViewToken,\n );\n }, this._config.minimumViewTime);\n this._timers.add(handle);\n } else {\n this._onUpdateSync(\n viewableIndices,\n onViewableItemsChanged,\n createViewToken,\n );\n }\n }\n\n /**\n * clean-up cached _viewableIndices to evaluate changed items on next update\n */\n resetViewableIndices() {\n this._viewableIndices = [];\n }\n\n /**\n * Records that an interaction has happened even if there has been no scroll.\n */\n recordInteraction() {\n this._hasInteracted = true;\n }\n\n _onUpdateSync(\n viewableIndicesToCheck,\n onViewableItemsChanged,\n createViewToken,\n ) {\n // Filter out indices that have gone out of view since this call was scheduled.\n viewableIndicesToCheck = viewableIndicesToCheck.filter(ii =>\n this._viewableIndices.includes(ii),\n );\n const prevItems = this._viewableItems;\n const nextItems = new Map(\n viewableIndicesToCheck.map(ii => {\n const viewable = createViewToken(ii, true);\n return [viewable.key, viewable];\n }),\n );\n\n const changed = [];\n for (const [key, viewable] of nextItems) {\n if (!prevItems.has(key)) {\n changed.push(viewable);\n }\n }\n for (const [key, viewable] of prevItems) {\n if (!nextItems.has(key)) {\n changed.push({...viewable, isViewable: false});\n }\n }\n if (changed.length > 0) {\n this._viewableItems = nextItems;\n onViewableItemsChanged({\n viewableItems: Array.from(nextItems.values()),\n changed,\n viewabilityConfig: this._config,\n });\n }\n }\n}\n\nfunction _isViewable(\n viewAreaMode: boolean,\n viewablePercentThreshold: number,\n top: number,\n bottom: number,\n viewportHeight: number,\n itemLength: number,\n): boolean {\n if (_isEntirelyVisible(top, bottom, viewportHeight)) {\n return true;\n } else {\n const pixels = _getPixelsVisible(top, bottom, viewportHeight);\n const percent =\n 100 * (viewAreaMode ? pixels / viewportHeight : pixels / itemLength);\n return percent >= viewablePercentThreshold;\n }\n}\n\nfunction _getPixelsVisible(\n top: number,\n bottom: number,\n viewportHeight: number,\n): number {\n const visibleHeight = Math.min(bottom, viewportHeight) - Math.max(top, 0);\n return Math.max(0, visibleHeight);\n}\n\nfunction _isEntirelyVisible(\n top: number,\n bottom: number,\n viewportHeight: number,\n): boolean {\n return top >= 0 && bottom <= viewportHeight && bottom > top;\n}\n\nmodule.exports = ViewabilityHelper;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst invariant = require('fbjs/lib/invariant');\n\n/**\n * Used to find the indices of the frames that overlap the given offsets. Useful for finding the\n * items that bound different windows of content, such as the visible area or the buffered overscan\n * area.\n */\nfunction elementsThatOverlapOffsets(\n offsets: Array,\n itemCount: number,\n getFrameMetrics: (index: number) => {length: number, offset: number},\n): Array {\n const out = [];\n let outLength = 0;\n for (let ii = 0; ii < itemCount; ii++) {\n const frame = getFrameMetrics(ii);\n const trailingOffset = frame.offset + frame.length;\n for (let kk = 0; kk < offsets.length; kk++) {\n if (out[kk] == null && trailingOffset >= offsets[kk]) {\n out[kk] = ii;\n outLength++;\n if (kk === offsets.length - 1) {\n invariant(\n outLength === offsets.length,\n 'bad offsets input, should be in increasing order: %s',\n JSON.stringify(offsets),\n );\n return out;\n }\n }\n }\n }\n return out;\n}\n\n/**\n * Computes the number of elements in the `next` range that are new compared to the `prev` range.\n * Handy for calculating how many new items will be rendered when the render window changes so we\n * can restrict the number of new items render at once so that content can appear on the screen\n * faster.\n */\nfunction newRangeCount(\n prev: {first: number, last: number},\n next: {first: number, last: number},\n): number {\n return (\n next.last -\n next.first +\n 1 -\n Math.max(\n 0,\n 1 + Math.min(next.last, prev.last) - Math.max(next.first, prev.first),\n )\n );\n}\n\n/**\n * Custom logic for determining which items should be rendered given the current frame and scroll\n * metrics, as well as the previous render state. The algorithm may evolve over time, but generally\n * prioritizes the visible area first, then expands that with overscan regions ahead and behind,\n * biased in the direction of scroll.\n */\nfunction computeWindowedRenderLimits(\n props: {\n data: any,\n getItemCount: (data: any) => number,\n maxToRenderPerBatch: number,\n windowSize: number,\n },\n prev: {first: number, last: number},\n getFrameMetricsApprox: (index: number) => {length: number, offset: number},\n scrollMetrics: {\n dt: number,\n offset: number,\n velocity: number,\n visibleLength: number,\n },\n): {first: number, last: number} {\n const {data, getItemCount, maxToRenderPerBatch, windowSize} = props;\n const itemCount = getItemCount(data);\n if (itemCount === 0) {\n return prev;\n }\n const {offset, velocity, visibleLength} = scrollMetrics;\n\n // Start with visible area, then compute maximum overscan region by expanding from there, biased\n // in the direction of scroll. Total overscan area is capped, which should cap memory consumption\n // too.\n const visibleBegin = Math.max(0, offset);\n const visibleEnd = visibleBegin + visibleLength;\n const overscanLength = (windowSize - 1) * visibleLength;\n\n // Considering velocity seems to introduce more churn than it's worth.\n const leadFactor = 0.5; // Math.max(0, Math.min(1, velocity / 25 + 0.5));\n\n const fillPreference =\n velocity > 1 ? 'after' : velocity < -1 ? 'before' : 'none';\n\n const overscanBegin = Math.max(\n 0,\n visibleBegin - (1 - leadFactor) * overscanLength,\n );\n const overscanEnd = Math.max(0, visibleEnd + leadFactor * overscanLength);\n\n const lastItemOffset = getFrameMetricsApprox(itemCount - 1).offset;\n if (lastItemOffset < overscanBegin) {\n // Entire list is before our overscan window\n return {\n first: Math.max(0, itemCount - 1 - maxToRenderPerBatch),\n last: itemCount - 1,\n };\n }\n\n // Find the indices that correspond to the items at the render boundaries we're targeting.\n let [overscanFirst, first, last, overscanLast] = elementsThatOverlapOffsets(\n [overscanBegin, visibleBegin, visibleEnd, overscanEnd],\n props.getItemCount(props.data),\n getFrameMetricsApprox,\n );\n overscanFirst = overscanFirst == null ? 0 : overscanFirst;\n first = first == null ? Math.max(0, overscanFirst) : first;\n overscanLast = overscanLast == null ? itemCount - 1 : overscanLast;\n last =\n last == null\n ? Math.min(overscanLast, first + maxToRenderPerBatch - 1)\n : last;\n const visible = {first, last};\n\n // We want to limit the number of new cells we're rendering per batch so that we can fill the\n // content on the screen quickly. If we rendered the entire overscan window at once, the user\n // could be staring at white space for a long time waiting for a bunch of offscreen content to\n // render.\n let newCellCount = newRangeCount(prev, visible);\n\n while (true) {\n if (first <= overscanFirst && last >= overscanLast) {\n // If we fill the entire overscan range, we're done.\n break;\n }\n const maxNewCells = newCellCount >= maxToRenderPerBatch;\n const firstWillAddMore = first <= prev.first || first > prev.last;\n const firstShouldIncrement =\n first > overscanFirst && (!maxNewCells || !firstWillAddMore);\n const lastWillAddMore = last >= prev.last || last < prev.first;\n const lastShouldIncrement =\n last < overscanLast && (!maxNewCells || !lastWillAddMore);\n if (maxNewCells && !firstShouldIncrement && !lastShouldIncrement) {\n // We only want to stop if we've hit maxNewCells AND we cannot increment first or last\n // without rendering new items. This let's us preserve as many already rendered items as\n // possible, reducing render churn and keeping the rendered overscan range as large as\n // possible.\n break;\n }\n if (\n firstShouldIncrement &&\n !(fillPreference === 'after' && lastShouldIncrement && lastWillAddMore)\n ) {\n if (firstWillAddMore) {\n newCellCount++;\n }\n first--;\n }\n if (\n lastShouldIncrement &&\n !(fillPreference === 'before' && firstShouldIncrement && firstWillAddMore)\n ) {\n if (lastWillAddMore) {\n newCellCount++;\n }\n last++;\n }\n }\n if (\n !(\n last >= first &&\n first >= 0 &&\n last < itemCount &&\n first >= overscanFirst &&\n last <= overscanLast &&\n first <= visible.first &&\n last >= visible.last\n )\n ) {\n throw new Error(\n 'Bad window calculation ' +\n JSON.stringify({\n first,\n last,\n itemCount,\n overscanFirst,\n overscanLast,\n visible,\n }),\n );\n }\n return {first, last};\n}\n\nconst VirtualizeUtils = {\n computeWindowedRenderLimits,\n elementsThatOverlapOffsets,\n newRangeCount,\n};\n\nmodule.exports = VirtualizeUtils;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n\n'use strict';\n\nconst ImageStylePropTypes = require('ImageStylePropTypes');\nconst NativeModules = require('NativeModules');\nconst React = require('React');\nconst ReactNative = require('ReactNative');\nconst PropTypes = require('prop-types');\nconst StyleSheet = require('StyleSheet');\nconst StyleSheetPropType = require('StyleSheetPropType');\nconst TextAncestor = require('TextAncestor');\nconst ViewPropTypes = require('ViewPropTypes');\n\nconst flattenStyle = require('flattenStyle');\nconst merge = require('merge');\nconst requireNativeComponent = require('requireNativeComponent');\nconst resolveAssetSource = require('resolveAssetSource');\n\nconst {ImageLoader} = NativeModules;\n\nconst RKImage = requireNativeComponent('RCTImageView');\nconst RCTTextInlineImage = requireNativeComponent('RCTTextInlineImage');\n\nimport type {ImageProps as ImagePropsType} from 'ImageProps';\n\nlet _requestId = 1;\nfunction generateRequestId() {\n return _requestId++;\n}\n\nconst ImageProps = {\n ...ViewPropTypes,\n style: StyleSheetPropType(ImageStylePropTypes),\n /**\n * See https://facebook.github.io/react-native/docs/image.html#source\n */\n source: PropTypes.oneOfType([\n PropTypes.shape({\n uri: PropTypes.string,\n headers: PropTypes.objectOf(PropTypes.string),\n }),\n // Opaque type returned by require('./image.jpg')\n PropTypes.number,\n // Multiple sources\n PropTypes.arrayOf(\n PropTypes.shape({\n uri: PropTypes.string,\n width: PropTypes.number,\n height: PropTypes.number,\n headers: PropTypes.objectOf(PropTypes.string),\n }),\n ),\n ]),\n /**\n * blurRadius: the blur radius of the blur filter added to the image\n *\n * See https://facebook.github.io/react-native/docs/image.html#blurradius\n */\n blurRadius: PropTypes.number,\n /**\n * See https://facebook.github.io/react-native/docs/image.html#defaultsource\n */\n defaultSource: PropTypes.number,\n /**\n * See https://facebook.github.io/react-native/docs/image.html#loadingindicatorsource\n */\n loadingIndicatorSource: PropTypes.oneOfType([\n PropTypes.shape({\n uri: PropTypes.string,\n }),\n // Opaque type returned by require('./image.jpg')\n PropTypes.number,\n ]),\n progressiveRenderingEnabled: PropTypes.bool,\n fadeDuration: PropTypes.number,\n /**\n * Invoked on load start\n */\n onLoadStart: PropTypes.func,\n /**\n * Invoked on load error\n */\n onError: PropTypes.func,\n /**\n * Invoked when load completes successfully\n */\n onLoad: PropTypes.func,\n /**\n * Invoked when load either succeeds or fails\n */\n onLoadEnd: PropTypes.func,\n /**\n * Used to locate this view in end-to-end tests.\n */\n testID: PropTypes.string,\n /**\n * The mechanism that should be used to resize the image when the image's dimensions\n * differ from the image view's dimensions. Defaults to `auto`.\n *\n * See https://facebook.github.io/react-native/docs/image.html#resizemethod\n */\n resizeMethod: PropTypes.oneOf(['auto', 'resize', 'scale']),\n /**\n * Determines how to resize the image when the frame doesn't match the raw\n * image dimensions.\n *\n * See https://facebook.github.io/react-native/docs/image.html#resizemode\n */\n resizeMode: PropTypes.oneOf([\n 'cover',\n 'contain',\n 'stretch',\n 'repeat',\n 'center',\n ]),\n};\n\nfunction getSize(\n url: string,\n success: (width: number, height: number) => void,\n failure?: (error: any) => void,\n) {\n return ImageLoader.getSize(url)\n .then(function(sizes) {\n success(sizes.width, sizes.height);\n })\n .catch(\n failure ||\n function() {\n console.warn('Failed to get size for image: ' + url);\n },\n );\n}\n\nfunction prefetch(url: string, callback: ?Function) {\n const requestId = generateRequestId();\n callback && callback(requestId);\n return ImageLoader.prefetchImage(url, requestId);\n}\n\nfunction abortPrefetch(requestId: number) {\n ImageLoader.abortRequest(requestId);\n}\n\n/**\n * Perform cache interrogation.\n *\n * See https://facebook.github.io/react-native/docs/image.html#querycache\n */\nasync function queryCache(\n urls: Array,\n): Promise> {\n return await ImageLoader.queryCache(urls);\n}\n\ndeclare class ImageComponentType extends ReactNative.NativeComponent<\n ImagePropsType,\n> {\n static getSize: typeof getSize;\n static prefetch: typeof prefetch;\n static abortPrefetch: typeof abortPrefetch;\n static queryCache: typeof queryCache;\n static resolveAssetSource: typeof resolveAssetSource;\n static propTypes: typeof ImageProps;\n}\n\n/**\n * A React component for displaying different types of images,\n * including network images, static resources, temporary local images, and\n * images from local disk, such as the camera roll.\n *\n * See https://facebook.github.io/react-native/docs/image.html\n */\nlet Image = (\n props: ImagePropsType,\n forwardedRef: ?React.Ref<'RCTTextInlineImage' | 'RKImage'>,\n) => {\n let source = resolveAssetSource(props.source);\n const defaultSource = resolveAssetSource(props.defaultSource);\n const loadingIndicatorSource = resolveAssetSource(\n props.loadingIndicatorSource,\n );\n\n if (source && source.uri === '') {\n console.warn('source.uri should not be an empty string');\n }\n\n if (props.src) {\n console.warn(\n 'The component requires a `source` property rather than `src`.',\n );\n }\n\n if (props.children) {\n throw new Error(\n 'The component cannot contain children. If you want to render content on top of the image, consider using the component or absolute positioning.',\n );\n }\n\n if (props.defaultSource && props.loadingIndicatorSource) {\n throw new Error(\n 'The component cannot have defaultSource and loadingIndicatorSource at the same time. Please use either defaultSource or loadingIndicatorSource.',\n );\n }\n\n if (source && !source.uri && !Array.isArray(source)) {\n source = null;\n }\n\n let style;\n let sources;\n if (source?.uri != null) {\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n const {width, height} = source;\n style = flattenStyle([{width, height}, styles.base, props.style]);\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n sources = [{uri: source.uri}];\n } else {\n style = flattenStyle([styles.base, props.style]);\n sources = source;\n }\n\n const {onLoadStart, onLoad, onLoadEnd, onError} = props;\n const nativeProps = merge(props, {\n style,\n shouldNotifyLoadEvents: !!(onLoadStart || onLoad || onLoadEnd || onError),\n src: sources,\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n headers: source?.headers,\n defaultSrc: defaultSource ? defaultSource.uri : null,\n loadingIndicatorSrc: loadingIndicatorSource\n ? loadingIndicatorSource.uri\n : null,\n ref: forwardedRef,\n });\n\n return (\n \n {hasTextAncestor =>\n hasTextAncestor ? (\n \n ) : (\n \n )\n }\n \n );\n};\n\n// $FlowFixMe - TODO T29156721 `React.forwardRef` is not defined in Flow, yet.\nImage = React.forwardRef(Image);\n\n/**\n * Prefetches a remote image for later use by downloading it to the disk\n * cache\n *\n * See https://facebook.github.io/react-native/docs/image.html#prefetch\n */\nImage.getSize = getSize;\n\n/**\n * Prefetches a remote image for later use by downloading it to the disk\n * cache\n *\n * See https://facebook.github.io/react-native/docs/image.html#prefetch\n */\nImage.prefetch = prefetch;\n\n/**\n * Abort prefetch request.\n *\n * See https://facebook.github.io/react-native/docs/image.html#abortprefetch\n */\nImage.abortPrefetch = abortPrefetch;\n\n/**\n * Perform cache interrogation.\n *\n * See https://facebook.github.io/react-native/docs/image.html#querycache\n */\nImage.queryCache = queryCache;\n\n/**\n * Resolves an asset reference into an object.\n *\n * See https://facebook.github.io/react-native/docs/image.html#resolveassetsource\n */\nImage.resolveAssetSource = resolveAssetSource;\n\nImage.propTypes = ImageProps;\n\nconst styles = StyleSheet.create({\n base: {\n overflow: 'hidden',\n },\n});\n\nmodule.exports = (Image: Class);\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst React = require('React');\nconst EdgeInsetsPropType = require('EdgeInsetsPropType');\nconst PlatformViewPropTypes = require('PlatformViewPropTypes');\nconst PropTypes = require('prop-types');\nconst StyleSheetPropType = require('StyleSheetPropType');\nconst ViewStylePropTypes = require('ViewStylePropTypes');\n\nconst {\n AccessibilityComponentTypes,\n AccessibilityTraits,\n AccessibilityRoles,\n AccessibilityStates,\n} = require('ViewAccessibility');\n\nimport type {\n AccessibilityComponentType,\n AccessibilityTrait,\n AccessibilityRole,\n AccessibilityState,\n} from 'ViewAccessibility';\nimport type {EdgeInsetsProp} from 'EdgeInsetsPropType';\nimport type {TVViewProps} from 'TVViewPropTypes';\nimport type {Layout, LayoutEvent} from 'CoreEventTypes';\n\nconst stylePropType = StyleSheetPropType(ViewStylePropTypes);\n\nexport type ViewLayout = Layout;\nexport type ViewLayoutEvent = LayoutEvent;\n\ntype DirectEventProps = $ReadOnly<{|\n onAccessibilityAction?: Function,\n onAccessibilityTap?: Function,\n onLayout?: ?(event: LayoutEvent) => void,\n onMagicTap?: Function,\n|}>;\n\ntype TouchEventProps = $ReadOnly<{|\n onTouchCancel?: ?Function,\n onTouchCancelCapture?: ?Function,\n onTouchEnd?: ?Function,\n onTouchEndCapture?: ?Function,\n onTouchMove?: ?Function,\n onTouchMoveCapture?: ?Function,\n onTouchStart?: ?Function,\n onTouchStartCapture?: ?Function,\n|}>;\n\ntype GestureResponderEventProps = $ReadOnly<{|\n onMoveShouldSetResponder?: ?Function,\n onMoveShouldSetResponderCapture?: ?Function,\n onResponderGrant?: ?Function,\n onResponderMove?: ?Function,\n onResponderReject?: ?Function,\n onResponderRelease?: ?Function,\n onResponderStart?: ?Function,\n onResponderTerminate?: ?Function,\n onResponderTerminationRequest?: ?Function,\n onStartShouldSetResponder?: ?Function,\n onStartShouldSetResponderCapture?: ?Function,\n|}>;\n\ntype AndroidViewProps = $ReadOnly<{|\n nativeBackgroundAndroid?: ?Object,\n nativeForegroundAndroid?: ?Object,\n\n /* Deprecated transform prop. Use the transform style prop instead */\n rotation?: empty,\n /* Deprecated transform prop. Use the transform style prop instead */\n scaleX?: empty,\n /* Deprecated transform prop. Use the transform style prop instead */\n scaleY?: empty,\n /* Deprecated transform prop. Use the transform style prop instead */\n translateX?: empty,\n /* Deprecated transform prop. Use the transform style prop instead */\n translateY?: empty,\n|}>;\n\nexport type ViewProps = $ReadOnly<{|\n ...DirectEventProps,\n ...GestureResponderEventProps,\n ...TouchEventProps,\n ...AndroidViewProps,\n\n // There's no easy way to create a different type if (Platform.isTV):\n // so we must include TVViewProps\n ...TVViewProps,\n\n accessible?: boolean,\n accessibilityLabel?:\n | null\n | React$PropType$Primitive\n | string\n | Array\n | any,\n accessibilityHint?: string,\n accessibilityActions?: Array,\n accessibilityComponentType?: AccessibilityComponentType,\n accessibilityLiveRegion?: 'none' | 'polite' | 'assertive',\n importantForAccessibility?: 'auto' | 'yes' | 'no' | 'no-hide-descendants',\n accessibilityIgnoresInvertColors?: boolean,\n accessibilityTraits?: AccessibilityTrait | Array,\n accessibilityRole?: AccessibilityRole,\n accessibilityStates?: Array,\n accessibilityViewIsModal?: boolean,\n accessibilityElementsHidden?: boolean,\n children?: ?React.Node,\n testID?: ?string,\n nativeID?: string,\n hitSlop?: ?EdgeInsetsProp,\n pointerEvents?: null | 'box-none' | 'none' | 'box-only' | 'auto',\n style?: stylePropType,\n removeClippedSubviews?: boolean,\n renderToHardwareTextureAndroid?: boolean,\n shouldRasterizeIOS?: boolean,\n collapsable?: boolean,\n needsOffscreenAlphaCompositing?: boolean,\n|}>;\n\nmodule.exports = {\n /**\n * When `true`, indicates that the view is an accessibility element.\n * By default, all the touchable elements are accessible.\n *\n * See http://facebook.github.io/react-native/docs/view.html#accessible\n */\n accessible: PropTypes.bool,\n\n /**\n * Overrides the text that's read by the screen reader when the user interacts\n * with the element. By default, the label is constructed by traversing all\n * the children and accumulating all the `Text` nodes separated by space.\n *\n * See http://facebook.github.io/react-native/docs/view.html#accessibilitylabel\n */\n accessibilityLabel: PropTypes.node,\n\n /**\n * An accessibility hint helps users understand what will happen when they perform\n * an action on the accessibility element when that result is not obvious from the\n * accessibility label.\n *\n *\n * See http://facebook.github.io/react-native/docs/view.html#accessibilityHint\n */\n accessibilityHint: PropTypes.string,\n\n /**\n * Provides an array of custom actions available for accessibility.\n *\n * @platform ios\n */\n accessibilityActions: PropTypes.arrayOf(PropTypes.string),\n\n /**\n * Prevents view from being inverted if set to true and color inversion is turned on.\n *\n * @platform ios\n */\n accessibilityIgnoresInvertColors: PropTypes.bool,\n\n /**\n * Indicates to accessibility services to treat UI component like a\n * native one. Works for Android only.\n *\n * @platform android\n *\n * See http://facebook.github.io/react-native/docs/view.html#accessibilitycomponenttype\n */\n accessibilityComponentType: PropTypes.oneOf(AccessibilityComponentTypes),\n\n /**\n * Indicates to accessibility services to treat UI component like a specific role.\n */\n accessibilityRole: PropTypes.oneOf(AccessibilityRoles),\n\n /**\n * Indicates to accessibility services that UI Component is in a specific State.\n */\n accessibilityStates: PropTypes.arrayOf(PropTypes.oneOf(AccessibilityStates)),\n /**\n * Indicates to accessibility services whether the user should be notified\n * when this view changes. Works for Android API >= 19 only.\n *\n * @platform android\n *\n * See http://facebook.github.io/react-native/docs/view.html#accessibilityliveregion\n */\n accessibilityLiveRegion: PropTypes.oneOf(['none', 'polite', 'assertive']),\n\n /**\n * Controls how view is important for accessibility which is if it\n * fires accessibility events and if it is reported to accessibility services\n * that query the screen. Works for Android only.\n *\n * @platform android\n *\n * See http://facebook.github.io/react-native/docs/view.html#importantforaccessibility\n */\n importantForAccessibility: PropTypes.oneOf([\n 'auto',\n 'yes',\n 'no',\n 'no-hide-descendants',\n ]),\n\n /**\n * Provides additional traits to screen reader. By default no traits are\n * provided unless specified otherwise in element.\n *\n * You can provide one trait or an array of many traits.\n *\n * @platform ios\n *\n * See http://facebook.github.io/react-native/docs/view.html#accessibilitytraits\n */\n accessibilityTraits: PropTypes.oneOfType([\n PropTypes.oneOf(AccessibilityTraits),\n PropTypes.arrayOf(PropTypes.oneOf(AccessibilityTraits)),\n ]),\n\n /**\n * A value indicating whether VoiceOver should ignore the elements\n * within views that are siblings of the receiver.\n * Default is `false`.\n *\n * @platform ios\n *\n * See http://facebook.github.io/react-native/docs/view.html#accessibilityviewismodal\n */\n accessibilityViewIsModal: PropTypes.bool,\n\n /**\n * A value indicating whether the accessibility elements contained within\n * this accessibility element are hidden.\n *\n * @platform ios\n *\n * See http://facebook.github.io/react-native/docs/view.html#accessibilityElementsHidden\n */\n accessibilityElementsHidden: PropTypes.bool,\n\n /**\n * When `accessible` is true, the system will try to invoke this function\n * when the user performs an accessibility custom action.\n *\n * @platform ios\n */\n onAccessibilityAction: PropTypes.func,\n\n /**\n * When `accessible` is true, the system will try to invoke this function\n * when the user performs accessibility tap gesture.\n *\n * See http://facebook.github.io/react-native/docs/view.html#onaccessibilitytap\n */\n onAccessibilityTap: PropTypes.func,\n\n /**\n * When `accessible` is `true`, the system will invoke this function when the\n * user performs the magic tap gesture.\n *\n * See http://facebook.github.io/react-native/docs/view.html#onmagictap\n */\n onMagicTap: PropTypes.func,\n\n /**\n * Used to locate this view in end-to-end tests.\n *\n * > This disables the 'layout-only view removal' optimization for this view!\n *\n * See http://facebook.github.io/react-native/docs/view.html#testid\n */\n testID: PropTypes.string,\n\n /**\n * Used to locate this view from native classes.\n *\n * > This disables the 'layout-only view removal' optimization for this view!\n *\n * See http://facebook.github.io/react-native/docs/view.html#nativeid\n */\n nativeID: PropTypes.string,\n\n /**\n * For most touch interactions, you'll simply want to wrap your component in\n * `TouchableHighlight` or `TouchableOpacity`. Check out `Touchable.js`,\n * `ScrollResponder.js` and `ResponderEventPlugin.js` for more discussion.\n */\n\n /**\n * The View is now responding for touch events. This is the time to highlight\n * and show the user what is happening.\n *\n * `View.props.onResponderGrant: (event) => {}`, where `event` is a synthetic\n * touch event as described above.\n *\n * See http://facebook.github.io/react-native/docs/view.html#onrespondergrant\n */\n onResponderGrant: PropTypes.func,\n\n /**\n * The user is moving their finger.\n *\n * `View.props.onResponderMove: (event) => {}`, where `event` is a synthetic\n * touch event as described above.\n *\n * See http://facebook.github.io/react-native/docs/view.html#onrespondermove\n */\n onResponderMove: PropTypes.func,\n\n /**\n * Another responder is already active and will not release it to that `View`\n * asking to be the responder.\n *\n * `View.props.onResponderReject: (event) => {}`, where `event` is a\n * synthetic touch event as described above.\n *\n * See http://facebook.github.io/react-native/docs/view.html#onresponderreject\n */\n onResponderReject: PropTypes.func,\n\n /**\n * Fired at the end of the touch.\n *\n * `View.props.onResponderRelease: (event) => {}`, where `event` is a\n * synthetic touch event as described above.\n *\n * See http://facebook.github.io/react-native/docs/view.html#onresponderrelease\n */\n onResponderRelease: PropTypes.func,\n\n /**\n * The responder has been taken from the `View`. Might be taken by other\n * views after a call to `onResponderTerminationRequest`, or might be taken\n * by the OS without asking (e.g., happens with control center/ notification\n * center on iOS)\n *\n * `View.props.onResponderTerminate: (event) => {}`, where `event` is a\n * synthetic touch event as described above.\n *\n * See http://facebook.github.io/react-native/docs/view.html#onresponderterminate\n */\n onResponderTerminate: PropTypes.func,\n\n /**\n * Some other `View` wants to become responder and is asking this `View` to\n * release its responder. Returning `true` allows its release.\n *\n * `View.props.onResponderTerminationRequest: (event) => {}`, where `event`\n * is a synthetic touch event as described above.\n *\n * See http://facebook.github.io/react-native/docs/view.html#onresponderterminationrequest\n */\n onResponderTerminationRequest: PropTypes.func,\n\n /**\n * Does this view want to become responder on the start of a touch?\n *\n * `View.props.onStartShouldSetResponder: (event) => [true | false]`, where\n * `event` is a synthetic touch event as described above.\n *\n * See http://facebook.github.io/react-native/docs/view.html#onstartshouldsetresponder\n */\n onStartShouldSetResponder: PropTypes.func,\n\n /**\n * If a parent `View` wants to prevent a child `View` from becoming responder\n * on a touch start, it should have this handler which returns `true`.\n *\n * `View.props.onStartShouldSetResponderCapture: (event) => [true | false]`,\n * where `event` is a synthetic touch event as described above.\n *\n * See http://facebook.github.io/react-native/docs/view.html#onstartshouldsetrespondercapture\n */\n onStartShouldSetResponderCapture: PropTypes.func,\n\n /**\n * Does this view want to \"claim\" touch responsiveness? This is called for\n * every touch move on the `View` when it is not the responder.\n *\n * `View.props.onMoveShouldSetResponder: (event) => [true | false]`, where\n * `event` is a synthetic touch event as described above.\n *\n * See http://facebook.github.io/react-native/docs/view.html#onmoveshouldsetresponder\n */\n onMoveShouldSetResponder: PropTypes.func,\n\n /**\n * If a parent `View` wants to prevent a child `View` from becoming responder\n * on a move, it should have this handler which returns `true`.\n *\n * `View.props.onMoveShouldSetResponderCapture: (event) => [true | false]`,\n * where `event` is a synthetic touch event as described above.\n *\n * See http://facebook.github.io/react-native/docs/view.html#onMoveShouldsetrespondercapture\n */\n onMoveShouldSetResponderCapture: PropTypes.func,\n\n /**\n * This defines how far a touch event can start away from the view.\n * Typical interface guidelines recommend touch targets that are at least\n * 30 - 40 points/density-independent pixels.\n *\n * > The touch area never extends past the parent view bounds and the Z-index\n * > of sibling views always takes precedence if a touch hits two overlapping\n * > views.\n *\n * See http://facebook.github.io/react-native/docs/view.html#hitslop\n */\n hitSlop: EdgeInsetsPropType,\n\n /**\n * Invoked on mount and layout changes with:\n *\n * `{nativeEvent: { layout: {x, y, width, height}}}`\n *\n * This event is fired immediately once the layout has been calculated, but\n * the new layout may not yet be reflected on the screen at the time the\n * event is received, especially if a layout animation is in progress.\n *\n * See http://facebook.github.io/react-native/docs/view.html#onlayout\n */\n onLayout: PropTypes.func,\n\n /**\n * Controls whether the `View` can be the target of touch events.\n *\n * See http://facebook.github.io/react-native/docs/view.html#pointerevents\n */\n pointerEvents: PropTypes.oneOf(['box-none', 'none', 'box-only', 'auto']),\n\n /**\n * See http://facebook.github.io/react-native/docs/style.html\n */\n style: stylePropType,\n\n /**\n * This is a special performance property exposed by `RCTView` and is useful\n * for scrolling content when there are many subviews, most of which are\n * offscreen. For this property to be effective, it must be applied to a\n * view that contains many subviews that extend outside its bound. The\n * subviews must also have `overflow: hidden`, as should the containing view\n * (or one of its superviews).\n *\n * See http://facebook.github.io/react-native/docs/view.html#removeclippedsubviews\n */\n removeClippedSubviews: PropTypes.bool,\n\n /**\n * Whether this `View` should render itself (and all of its children) into a\n * single hardware texture on the GPU.\n *\n * @platform android\n *\n * See http://facebook.github.io/react-native/docs/view.html#rendertohardwaretextureandroid\n */\n renderToHardwareTextureAndroid: PropTypes.bool,\n\n /**\n * Whether this `View` should be rendered as a bitmap before compositing.\n *\n * @platform ios\n *\n * See http://facebook.github.io/react-native/docs/view.html#shouldrasterizeios\n */\n shouldRasterizeIOS: PropTypes.bool,\n\n /**\n * Views that are only used to layout their children or otherwise don't draw\n * anything may be automatically removed from the native hierarchy as an\n * optimization. Set this property to `false` to disable this optimization and\n * ensure that this `View` exists in the native view hierarchy.\n *\n * @platform android\n *\n * See http://facebook.github.io/react-native/docs/view.html#collapsable\n */\n collapsable: PropTypes.bool,\n\n /**\n * Whether this `View` needs to rendered offscreen and composited with an\n * alpha in order to preserve 100% correct colors and blending behavior.\n *\n * @platform android\n *\n * See http://facebook.github.io/react-native/docs/view.html#needsoffscreenalphacompositing\n */\n needsOffscreenAlphaCompositing: PropTypes.bool,\n\n /**\n * Any additional platform-specific view prop types, or prop type overrides.\n */\n ...PlatformViewPropTypes,\n};\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict-local\n */\n\nconst Platform = require('Platform');\n\nlet TVViewPropTypes = {};\n// We need to always include TVViewPropTypes on Android\n// as unlike on iOS we can't detect TV devices at build time\n// and hence make view manager export a different list of native properties.\nif (Platform.isTV || Platform.OS === 'android') {\n TVViewPropTypes = require('TVViewPropTypes');\n}\n\nmodule.exports = TVViewPropTypes;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\nconst PropTypes = require('prop-types');\n\n/**\n * Additional View properties for Apple TV\n */\nconst TVViewPropTypes = {\n /**\n * When set to true, this view will be focusable\n * and navigable using the TV remote.\n */\n isTVSelectable: PropTypes.bool,\n\n /**\n * May be set to true to force the TV focus engine to move focus to this view.\n */\n hasTVPreferredFocus: PropTypes.bool,\n\n /**\n * *(Apple TV only)* Object with properties to control Apple TV parallax effects.\n *\n * enabled: If true, parallax effects are enabled. Defaults to true.\n * shiftDistanceX: Defaults to 2.0.\n * shiftDistanceY: Defaults to 2.0.\n * tiltAngle: Defaults to 0.05.\n * magnification: Defaults to 1.0.\n * pressMagnification: Defaults to 1.0.\n * pressDuration: Defaults to 0.3.\n * pressDelay: Defaults to 0.0.\n *\n * @platform ios\n */\n tvParallaxProperties: PropTypes.object,\n\n /**\n * *(Apple TV only)* May be used to change the appearance of the Apple TV parallax effect when this view goes in or out of focus. Defaults to 2.0.\n *\n * @platform ios\n */\n tvParallaxShiftDistanceX: PropTypes.number,\n\n /**\n * *(Apple TV only)* May be used to change the appearance of the Apple TV parallax effect when this view goes in or out of focus. Defaults to 2.0.\n *\n * @platform ios\n */\n tvParallaxShiftDistanceY: PropTypes.number,\n\n /**\n * *(Apple TV only)* May be used to change the appearance of the Apple TV parallax effect when this view goes in or out of focus. Defaults to 0.05.\n *\n * @platform ios\n */\n tvParallaxTiltAngle: PropTypes.number,\n\n /**\n * *(Apple TV only)* May be used to change the appearance of the Apple TV parallax effect when this view goes in or out of focus. Defaults to 1.0.\n *\n * @platform ios\n */\n tvParallaxMagnification: PropTypes.number,\n};\n\nexport type TVViewProps = $ReadOnly<{|\n isTVSelectable?: boolean,\n hasTVPreferredFocus?: boolean,\n tvParallaxProperties?: Object,\n tvParallaxShiftDistanceX?: number,\n tvParallaxShiftDistanceY?: number,\n tvParallaxTiltAngle?: number,\n tvParallaxMagnification?: number,\n|}>;\n\nmodule.exports = TVViewPropTypes;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst MetroListView = require('MetroListView');\nconst Platform = require('Platform');\nconst React = require('React');\nconst ScrollView = require('ScrollView');\nconst VirtualizedSectionList = require('VirtualizedSectionList');\n\nimport type {ViewToken} from 'ViewabilityHelper';\nimport type {Props as VirtualizedSectionListProps} from 'VirtualizedSectionList';\n\ntype Item = any;\n\nexport type SectionBase = {\n /**\n * The data for rendering items in this section.\n */\n data: $ReadOnlyArray,\n /**\n * Optional key to keep track of section re-ordering. If you don't plan on re-ordering sections,\n * the array index will be used by default.\n */\n key?: string,\n\n // Optional props will override list-wide props just for this section.\n renderItem?: ?(info: {\n item: SectionItemT,\n index: number,\n section: SectionBase,\n separators: {\n highlight: () => void,\n unhighlight: () => void,\n updateProps: (select: 'leading' | 'trailing', newProps: Object) => void,\n },\n }) => ?React.Element,\n ItemSeparatorComponent?: ?React.ComponentType,\n keyExtractor?: (item: SectionItemT) => string,\n\n // TODO: support more optional/override props\n // onViewableItemsChanged?: ...\n};\n\ntype RequiredProps> = {\n /**\n * The actual data to render, akin to the `data` prop in [``](/react-native/docs/flatlist.html).\n *\n * General shape:\n *\n * sections: $ReadOnlyArray<{\n * data: $ReadOnlyArray,\n * renderItem?: ({item: SectionItem, ...}) => ?React.Element<*>,\n * ItemSeparatorComponent?: ?ReactClass<{highlighted: boolean, ...}>,\n * }>\n */\n sections: $ReadOnlyArray,\n};\n\ntype OptionalProps> = {\n /**\n * Default renderer for every item in every section. Can be over-ridden on a per-section basis.\n */\n renderItem?: (info: {\n item: Item,\n index: number,\n section: SectionT,\n separators: {\n highlight: () => void,\n unhighlight: () => void,\n updateProps: (select: 'leading' | 'trailing', newProps: Object) => void,\n },\n }) => ?React.Element,\n /**\n * Rendered in between each item, but not at the top or bottom. By default, `highlighted`,\n * `section`, and `[leading/trailing][Item/Separator]` props are provided. `renderItem` provides\n * `separators.highlight`/`unhighlight` which will update the `highlighted` prop, but you can also\n * add custom props with `separators.updateProps`.\n */\n ItemSeparatorComponent?: ?React.ComponentType,\n /**\n * Rendered at the very beginning of the list. Can be a React Component Class, a render function, or\n * a rendered element.\n */\n ListHeaderComponent?: ?(React.ComponentType | React.Element),\n /**\n * Rendered when the list is empty. Can be a React Component Class, a render function, or\n * a rendered element.\n */\n ListEmptyComponent?: ?(React.ComponentType | React.Element),\n /**\n * Rendered at the very end of the list. Can be a React Component Class, a render function, or\n * a rendered element.\n */\n ListFooterComponent?: ?(React.ComponentType | React.Element),\n /**\n * Rendered at the top and bottom of each section (note this is different from\n * `ItemSeparatorComponent` which is only rendered between items). These are intended to separate\n * sections from the headers above and below and typically have the same highlight response as\n * `ItemSeparatorComponent`. Also receives `highlighted`, `[leading/trailing][Item/Separator]`,\n * and any custom props from `separators.updateProps`.\n */\n SectionSeparatorComponent?: ?React.ComponentType,\n /**\n * A marker property for telling the list to re-render (since it implements `PureComponent`). If\n * any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the\n * `data` prop, stick it here and treat it immutably.\n */\n extraData?: any,\n /**\n * How many items to render in the initial batch. This should be enough to fill the screen but not\n * much more. Note these items will never be unmounted as part of the windowed rendering in order\n * to improve perceived performance of scroll-to-top actions.\n */\n initialNumToRender: number,\n /**\n * Reverses the direction of scroll. Uses scale transforms of -1.\n */\n inverted?: ?boolean,\n /**\n * Used to extract a unique key for a given item at the specified index. Key is used for caching\n * and as the react key to track item re-ordering. The default extractor checks item.key, then\n * falls back to using the index, like react does. Note that this sets keys for each item, but\n * each overall section still needs its own key.\n */\n keyExtractor: (item: Item, index: number) => string,\n /**\n * Called once when the scroll position gets within `onEndReachedThreshold` of the rendered\n * content.\n */\n onEndReached?: ?(info: {distanceFromEnd: number}) => void,\n /**\n * How far from the end (in units of visible length of the list) the bottom edge of the\n * list must be from the end of the content to trigger the `onEndReached` callback.\n * Thus a value of 0.5 will trigger `onEndReached` when the end of the content is\n * within half the visible length of the list.\n */\n onEndReachedThreshold?: ?number,\n /**\n * If provided, a standard RefreshControl will be added for \"Pull to Refresh\" functionality. Make\n * sure to also set the `refreshing` prop correctly.\n */\n onRefresh?: ?() => void,\n /**\n * Called when the viewability of rows changes, as defined by the\n * `viewabilityConfig` prop.\n */\n onViewableItemsChanged?: ?(info: {\n viewableItems: Array,\n changed: Array,\n }) => void,\n /**\n * Set this true while waiting for new data from a refresh.\n */\n refreshing?: ?boolean,\n /**\n * Note: may have bugs (missing content) in some circumstances - use at your own risk.\n *\n * This may improve scroll performance for large lists.\n */\n removeClippedSubviews?: boolean,\n /**\n * Rendered at the top of each section. These stick to the top of the `ScrollView` by default on\n * iOS. See `stickySectionHeadersEnabled`.\n */\n renderSectionHeader?: ?(info: {section: SectionT}) => ?React.Element,\n /**\n * Rendered at the bottom of each section.\n */\n renderSectionFooter?: ?(info: {section: SectionT}) => ?React.Element,\n /**\n * Makes section headers stick to the top of the screen until the next one pushes it off. Only\n * enabled by default on iOS because that is the platform standard there.\n */\n stickySectionHeadersEnabled?: boolean,\n\n legacyImplementation?: ?boolean,\n};\n\nexport type Props = RequiredProps &\n OptionalProps &\n VirtualizedSectionListProps;\n\nconst defaultProps = {\n ...VirtualizedSectionList.defaultProps,\n stickySectionHeadersEnabled: Platform.OS === 'ios',\n};\n\ntype DefaultProps = typeof defaultProps;\n\n/**\n * A performant interface for rendering sectioned lists, supporting the most handy features:\n *\n * - Fully cross-platform.\n * - Configurable viewability callbacks.\n * - List header support.\n * - List footer support.\n * - Item separator support.\n * - Section header support.\n * - Section separator support.\n * - Heterogeneous data and item rendering support.\n * - Pull to Refresh.\n * - Scroll loading.\n *\n * If you don't need section support and want a simpler interface, use\n * [``](/react-native/docs/flatlist.html).\n *\n * Simple Examples:\n *\n * }\n * renderSectionHeader={({section}) =>
}\n * sections={[ // homogeneous rendering between sections\n * {data: [...], title: ...},\n * {data: [...], title: ...},\n * {data: [...], title: ...},\n * ]}\n * />\n *\n * \n *\n * This is a convenience wrapper around [``](docs/virtualizedlist.html),\n * and thus inherits its props (as well as those of `ScrollView`) that aren't explicitly listed\n * here, along with the following caveats:\n *\n * - Internal state is not preserved when content scrolls out of the render window. Make sure all\n * your data is captured in the item data or external stores like Flux, Redux, or Relay.\n * - This is a `PureComponent` which means that it will not re-render if `props` remain shallow-\n * equal. Make sure that everything your `renderItem` function depends on is passed as a prop\n * (e.g. `extraData`) that is not `===` after updates, otherwise your UI may not update on\n * changes. This includes the `data` prop and parent component state.\n * - In order to constrain memory and enable smooth scrolling, content is rendered asynchronously\n * offscreen. This means it's possible to scroll faster than the fill rate and momentarily see\n * blank content. This is a tradeoff that can be adjusted to suit the needs of each application,\n * and we are working on improving it behind the scenes.\n * - By default, the list looks for a `key` prop on each item and uses that for the React key.\n * Alternatively, you can provide a custom `keyExtractor` prop.\n *\n */\nclass SectionList> extends React.PureComponent<\n Props,\n void,\n> {\n props: Props;\n static defaultProps: DefaultProps = defaultProps;\n\n /**\n * Scrolls to the item at the specified `sectionIndex` and `itemIndex` (within the section)\n * positioned in the viewable area such that `viewPosition` 0 places it at the top (and may be\n * covered by a sticky header), 1 at the bottom, and 0.5 centered in the middle. `viewOffset` is a\n * fixed number of pixels to offset the final target position, e.g. to compensate for sticky\n * headers.\n *\n * Note: cannot scroll to locations outside the render window without specifying the\n * `getItemLayout` prop.\n */\n scrollToLocation(params: {\n animated?: ?boolean,\n itemIndex: number,\n sectionIndex: number,\n viewOffset?: number,\n viewPosition?: number,\n }) {\n this._wrapperListRef.scrollToLocation(params);\n }\n\n /**\n * Tells the list an interaction has occurred, which should trigger viewability calculations, e.g.\n * if `waitForInteractions` is true and the user has not scrolled. This is typically called by\n * taps on items or by navigation actions.\n */\n recordInteraction() {\n const listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n // $FlowFixMe Found when typing ListView\n listRef && listRef.recordInteraction();\n }\n\n /**\n * Displays the scroll indicators momentarily.\n *\n * @platform ios\n */\n flashScrollIndicators() {\n const listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n listRef && listRef.flashScrollIndicators();\n }\n\n /**\n * Provides a handle to the underlying scroll responder.\n */\n getScrollResponder(): ?ScrollView {\n const listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n if (listRef) {\n return listRef.getScrollResponder();\n }\n }\n\n getScrollableNode() {\n const listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n if (listRef) {\n return listRef.getScrollableNode();\n }\n }\n\n setNativeProps(props: Object) {\n const listRef = this._wrapperListRef && this._wrapperListRef.getListRef();\n if (listRef) {\n listRef.setNativeProps(props);\n }\n }\n\n render() {\n const List = this.props.legacyImplementation\n ? MetroListView\n : VirtualizedSectionList;\n /* $FlowFixMe(>=0.66.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.66 was deployed. To see the error delete this\n * comment and run Flow. */\n return ;\n }\n\n _wrapperListRef: MetroListView | VirtualizedSectionList;\n _captureRef = ref => {\n /* $FlowFixMe(>=0.53.0 site=react_native_fb,react_native_oss) This comment\n * suppresses an error when upgrading Flow's support for React. To see the\n * error delete this comment and run Flow. */\n this._wrapperListRef = ref;\n };\n}\n\nmodule.exports = SectionList;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst React = require('React');\nconst View = require('View');\nconst VirtualizedList = require('VirtualizedList');\n\nconst invariant = require('fbjs/lib/invariant');\n\nimport type {ViewToken} from 'ViewabilityHelper';\nimport type {Props as VirtualizedListProps} from 'VirtualizedList';\n\ntype Item = any;\ntype SectionItem = any;\n\ntype SectionBase = {\n // Must be provided directly on each section.\n data: $ReadOnlyArray,\n key?: string,\n\n // Optional props will override list-wide props just for this section.\n renderItem?: ?({\n item: SectionItem,\n index: number,\n section: SectionBase,\n separators: {\n highlight: () => void,\n unhighlight: () => void,\n updateProps: (select: 'leading' | 'trailing', newProps: Object) => void,\n },\n }) => ?React.Element,\n ItemSeparatorComponent?: ?React.ComponentType,\n keyExtractor?: (item: SectionItem, index: ?number) => string,\n\n // TODO: support more optional/override props\n // FooterComponent?: ?ReactClass,\n // HeaderComponent?: ?ReactClass,\n // onViewableItemsChanged?: ({viewableItems: Array, changed: Array}) => void,\n};\n\ntype RequiredProps = {\n sections: $ReadOnlyArray,\n};\n\ntype OptionalProps = {\n /**\n * Rendered after the last item in the last section.\n */\n ListFooterComponent?: ?(React.ComponentType | React.Element),\n /**\n * Rendered at the very beginning of the list.\n */\n ListHeaderComponent?: ?(React.ComponentType | React.Element),\n /**\n * Default renderer for every item in every section.\n */\n renderItem?: (info: {\n item: Item,\n index: number,\n section: SectionT,\n separators: {\n highlight: () => void,\n unhighlight: () => void,\n updateProps: (select: 'leading' | 'trailing', newProps: Object) => void,\n },\n }) => ?React.Element,\n /**\n * Rendered at the top of each section.\n */\n renderSectionHeader?: ?({section: SectionT}) => ?React.Element,\n /**\n * Rendered at the bottom of each section.\n */\n renderSectionFooter?: ?({section: SectionT}) => ?React.Element,\n /**\n * Rendered at the bottom of every Section, except the very last one, in place of the normal\n * ItemSeparatorComponent.\n */\n SectionSeparatorComponent?: ?React.ComponentType,\n /**\n * Rendered at the bottom of every Item except the very last one in the last section.\n */\n ItemSeparatorComponent?: ?React.ComponentType,\n /**\n * Warning: Virtualization can drastically improve memory consumption for long lists, but trashes\n * the state of items when they scroll out of the render window, so make sure all relavent data is\n * stored outside of the recursive `renderItem` instance tree.\n */\n enableVirtualization?: ?boolean,\n keyExtractor: (item: Item, index: number) => string,\n onEndReached?: ?({distanceFromEnd: number}) => void,\n /**\n * If provided, a standard RefreshControl will be added for \"Pull to Refresh\" functionality. Make\n * sure to also set the `refreshing` prop correctly.\n */\n onRefresh?: ?() => void,\n /**\n * Called when the viewability of rows changes, as defined by the\n * `viewabilityConfig` prop.\n */\n onViewableItemsChanged?: ?({\n viewableItems: Array,\n changed: Array,\n }) => void,\n /**\n * Set this true while waiting for new data from a refresh.\n */\n refreshing?: ?boolean,\n};\n\nexport type Props = RequiredProps &\n OptionalProps &\n VirtualizedListProps;\n\ntype DefaultProps = typeof VirtualizedList.defaultProps & {\n data: $ReadOnlyArray,\n};\ntype State = {childProps: VirtualizedListProps};\n\n/**\n * Right now this just flattens everything into one list and uses VirtualizedList under the\n * hood. The only operation that might not scale well is concatting the data arrays of all the\n * sections when new props are received, which should be plenty fast for up to ~10,000 items.\n */\nclass VirtualizedSectionList extends React.PureComponent<\n Props,\n State,\n> {\n static defaultProps: DefaultProps = {\n ...VirtualizedList.defaultProps,\n data: [],\n };\n\n scrollToLocation(params: {\n animated?: ?boolean,\n itemIndex: number,\n sectionIndex: number,\n viewPosition?: number,\n }) {\n let index = params.itemIndex + 1;\n for (let ii = 0; ii < params.sectionIndex; ii++) {\n index += this.props.sections[ii].data.length + 2;\n }\n const toIndexParams = {\n ...params,\n index,\n };\n this._listRef.scrollToIndex(toIndexParams);\n }\n\n getListRef(): VirtualizedList {\n return this._listRef;\n }\n\n constructor(props: Props, context: Object) {\n super(props, context);\n this.state = this._computeState(props);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps: Props) {\n this.setState(this._computeState(nextProps));\n }\n\n _computeState(props: Props): State {\n const offset = props.ListHeaderComponent ? 1 : 0;\n const stickyHeaderIndices = [];\n const itemCount = props.sections.reduce((v, section) => {\n stickyHeaderIndices.push(v + offset);\n return v + section.data.length + 2; // Add two for the section header and footer.\n }, 0);\n\n return {\n childProps: {\n ...props,\n renderItem: this._renderItem,\n ItemSeparatorComponent: undefined, // Rendered with renderItem\n data: props.sections,\n getItemCount: () => itemCount,\n getItem,\n keyExtractor: this._keyExtractor,\n onViewableItemsChanged: props.onViewableItemsChanged\n ? this._onViewableItemsChanged\n : undefined,\n stickyHeaderIndices: props.stickySectionHeadersEnabled\n ? stickyHeaderIndices\n : undefined,\n },\n };\n }\n\n render() {\n return (\n \n );\n }\n\n _keyExtractor = (item: Item, index: number) => {\n const info = this._subExtractor(index);\n return (info && info.key) || String(index);\n };\n\n _subExtractor(\n index: number,\n ): ?{\n section: SectionT,\n key: string, // Key of the section or combined key for section + item\n index: ?number, // Relative index within the section\n header?: ?boolean, // True if this is the section header\n leadingItem?: ?Item,\n leadingSection?: ?SectionT,\n trailingItem?: ?Item,\n trailingSection?: ?SectionT,\n } {\n let itemIndex = index;\n const defaultKeyExtractor = this.props.keyExtractor;\n for (let ii = 0; ii < this.props.sections.length; ii++) {\n const section = this.props.sections[ii];\n const key = section.key || String(ii);\n itemIndex -= 1; // The section adds an item for the header\n if (itemIndex >= section.data.length + 1) {\n itemIndex -= section.data.length + 1; // The section adds an item for the footer.\n } else if (itemIndex === -1) {\n return {\n section,\n key: key + ':header',\n index: null,\n header: true,\n trailingSection: this.props.sections[ii + 1],\n };\n } else if (itemIndex === section.data.length) {\n return {\n section,\n key: key + ':footer',\n index: null,\n header: false,\n trailingSection: this.props.sections[ii + 1],\n };\n } else {\n const keyExtractor = section.keyExtractor || defaultKeyExtractor;\n return {\n section,\n key: key + ':' + keyExtractor(section.data[itemIndex], itemIndex),\n index: itemIndex,\n leadingItem: section.data[itemIndex - 1],\n leadingSection: this.props.sections[ii - 1],\n trailingItem: section.data[itemIndex + 1],\n trailingSection: this.props.sections[ii + 1],\n };\n }\n }\n }\n\n _convertViewable = (viewable: ViewToken): ?ViewToken => {\n invariant(viewable.index != null, 'Received a broken ViewToken');\n const info = this._subExtractor(viewable.index);\n if (!info) {\n return null;\n }\n const keyExtractor = info.section.keyExtractor || this.props.keyExtractor;\n return {\n ...viewable,\n index: info.index,\n /* $FlowFixMe(>=0.63.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.63 was deployed. To see the error delete this\n * comment and run Flow. */\n key: keyExtractor(viewable.item, info.index),\n section: info.section,\n };\n };\n\n _onViewableItemsChanged = ({\n viewableItems,\n changed,\n }: {\n viewableItems: Array,\n changed: Array,\n }) => {\n if (this.props.onViewableItemsChanged) {\n this.props.onViewableItemsChanged({\n viewableItems: viewableItems\n .map(this._convertViewable, this)\n .filter(Boolean),\n changed: changed.map(this._convertViewable, this).filter(Boolean),\n });\n }\n };\n\n _renderItem = ({item, index}: {item: Item, index: number}) => {\n const info = this._subExtractor(index);\n if (!info) {\n return null;\n }\n const infoIndex = info.index;\n if (infoIndex == null) {\n const {section} = info;\n if (info.header === true) {\n const {renderSectionHeader} = this.props;\n return renderSectionHeader ? renderSectionHeader({section}) : null;\n } else {\n const {renderSectionFooter} = this.props;\n return renderSectionFooter ? renderSectionFooter({section}) : null;\n }\n } else {\n const renderItem = info.section.renderItem || this.props.renderItem;\n const SeparatorComponent = this._getSeparatorComponent(index, info);\n invariant(renderItem, 'no renderItem!');\n return (\n {\n this._cellRefs[info.key] = ref;\n }}\n renderItem={renderItem}\n section={info.section}\n trailingItem={info.trailingItem}\n trailingSection={info.trailingSection}\n />\n );\n }\n };\n\n _onUpdateSeparator = (key: string, newProps: Object) => {\n const ref = this._cellRefs[key];\n ref && ref.updateSeparatorProps(newProps);\n };\n\n _getSeparatorComponent(\n index: number,\n info?: ?Object,\n ): ?React.ComponentType {\n info = info || this._subExtractor(index);\n if (!info) {\n return null;\n }\n const ItemSeparatorComponent =\n info.section.ItemSeparatorComponent || this.props.ItemSeparatorComponent;\n const {SectionSeparatorComponent} = this.props;\n const isLastItemInList = index === this.state.childProps.getItemCount() - 1;\n const isLastItemInSection = info.index === info.section.data.length - 1;\n if (SectionSeparatorComponent && isLastItemInSection) {\n return SectionSeparatorComponent;\n }\n if (ItemSeparatorComponent && !isLastItemInSection && !isLastItemInList) {\n return ItemSeparatorComponent;\n }\n return null;\n }\n\n _cellRefs = {};\n _listRef: VirtualizedList;\n _captureRef = ref => {\n /* $FlowFixMe(>=0.53.0 site=react_native_fb,react_native_oss) This comment\n * suppresses an error when upgrading Flow's support for React. To see the\n * error delete this comment and run Flow. */\n this._listRef = ref;\n };\n}\n\ntype ItemWithSeparatorCommonProps = $ReadOnly<{|\n leadingItem: ?Item,\n leadingSection: ?Object,\n section: Object,\n trailingItem: ?Item,\n trailingSection: ?Object,\n|}>;\n\ntype ItemWithSeparatorProps = $ReadOnly<{|\n ...ItemWithSeparatorCommonProps,\n LeadingSeparatorComponent: ?React.ComponentType,\n SeparatorComponent: ?React.ComponentType,\n cellKey: string,\n index: number,\n item: Item,\n onUpdateSeparator: (cellKey: string, newProps: Object) => void,\n prevCellKey?: ?string,\n renderItem: Function,\n|}>;\n\ntype ItemWithSeparatorState = {\n separatorProps: $ReadOnly<{|\n highlighted: false,\n ...ItemWithSeparatorCommonProps,\n |}>,\n leadingSeparatorProps: $ReadOnly<{|\n highlighted: false,\n ...ItemWithSeparatorCommonProps,\n |}>,\n};\n\nclass ItemWithSeparator extends React.Component<\n ItemWithSeparatorProps,\n ItemWithSeparatorState,\n> {\n state = {\n separatorProps: {\n highlighted: false,\n leadingItem: this.props.item,\n leadingSection: this.props.leadingSection,\n section: this.props.section,\n trailingItem: this.props.trailingItem,\n trailingSection: this.props.trailingSection,\n },\n leadingSeparatorProps: {\n highlighted: false,\n leadingItem: this.props.leadingItem,\n leadingSection: this.props.leadingSection,\n section: this.props.section,\n trailingItem: this.props.item,\n trailingSection: this.props.trailingSection,\n },\n };\n\n _separators = {\n highlight: () => {\n ['leading', 'trailing'].forEach(s =>\n this._separators.updateProps(s, {highlighted: true}),\n );\n },\n unhighlight: () => {\n ['leading', 'trailing'].forEach(s =>\n this._separators.updateProps(s, {highlighted: false}),\n );\n },\n updateProps: (select: 'leading' | 'trailing', newProps: Object) => {\n const {LeadingSeparatorComponent, cellKey, prevCellKey} = this.props;\n if (select === 'leading' && LeadingSeparatorComponent != null) {\n this.setState(state => ({\n leadingSeparatorProps: {...state.leadingSeparatorProps, ...newProps},\n }));\n } else {\n this.props.onUpdateSeparator(\n (select === 'leading' && prevCellKey) || cellKey,\n newProps,\n );\n }\n },\n };\n\n static getDerivedStateFromProps(\n props: ItemWithSeparatorProps,\n prevState: ItemWithSeparatorState,\n ): ?ItemWithSeparatorState {\n return {\n separatorProps: {\n ...prevState.separatorProps,\n leadingItem: props.item,\n leadingSection: props.leadingSection,\n section: props.section,\n trailingItem: props.trailingItem,\n trailingSection: props.trailingSection,\n },\n leadingSeparatorProps: {\n ...prevState.leadingSeparatorProps,\n leadingItem: props.leadingItem,\n leadingSection: props.leadingSection,\n section: props.section,\n trailingItem: props.item,\n trailingSection: props.trailingSection,\n },\n };\n }\n\n updateSeparatorProps(newProps: Object) {\n this.setState(state => ({\n separatorProps: {...state.separatorProps, ...newProps},\n }));\n }\n\n render() {\n const {\n LeadingSeparatorComponent,\n SeparatorComponent,\n item,\n index,\n section,\n } = this.props;\n const element = this.props.renderItem({\n item,\n index,\n section,\n separators: this._separators,\n });\n const leadingSeparator = LeadingSeparatorComponent && (\n \n );\n const separator = SeparatorComponent && (\n \n );\n return leadingSeparator || separator ? (\n \n {leadingSeparator}\n {element}\n {separator}\n \n ) : (\n element\n );\n }\n}\n\nfunction getItem(sections: ?$ReadOnlyArray, index: number): ?Item {\n if (!sections) {\n return null;\n }\n let itemIdx = index - 1;\n for (let ii = 0; ii < sections.length; ii++) {\n if (itemIdx === -1 || itemIdx === sections[ii].data.length) {\n // We intend for there to be overflow by one on both ends of the list.\n // This will be for headers and footers. When returning a header or footer\n // item the section itself is the item.\n return sections[ii];\n } else if (itemIdx < sections[ii].data.length) {\n // If we are in the bounds of the list's data then return the item.\n return sections[ii].data[itemIdx];\n } else {\n itemIdx -= sections[ii].data.length + 2; // Add two for the header and footer\n }\n }\n return null;\n}\n\nmodule.exports = VirtualizedSectionList;\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst {\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n} = require('ReactNative');\n\nimport type {NativeMethodsMixinType} from 'ReactNativeTypes';\n\nconst {NativeMethodsMixin} = __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nmodule.exports = ((NativeMethodsMixin: any): $Exact);\n","/**\n * Copyright (c) 2017-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 * @flow\n * @format\n */\n'use strict';\n\nconst NativeMethodsMixin = require('NativeMethodsMixin');\nconst PropTypes = require('prop-types');\nconst React = require('React');\nconst StyleSheet = require('StyleSheet');\nconst ViewPropTypes = require('ViewPropTypes');\n\nconst createReactClass = require('create-react-class');\nconst requireNativeComponent = require('requireNativeComponent');\n\nconst RCTCheckBox = requireNativeComponent('AndroidCheckBox');\n\ntype DefaultProps = {\n value: boolean,\n disabled: boolean,\n};\n\n/**\n * Renders a boolean input (Android only).\n *\n * This is a controlled component that requires an `onValueChange` callback that\n * updates the `value` prop in order for the component to reflect user actions.\n * If the `value` prop is not updated, the component will continue to render\n * the supplied `value` prop instead of the expected result of any user actions.\n *\n * ```\n * import React from 'react';\n * import { AppRegistry, StyleSheet, Text, View, CheckBox } from 'react-native';\n *\n * export default class App extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = {\n * checked: false\n * }\n * }\n *\n * toggle() {\n * this.setState(({checked}) => {\n * return {\n * checked: !checked\n * };\n * });\n * }\n *\n * render() {\n * const {checked} = this.state;\n * return (\n * \n * Checked\n * \n * \n * );\n * }\n * }\n *\n * const styles = StyleSheet.create({\n * container: {\n * flex: 1,\n * flexDirection: 'row',\n * alignItems: 'center',\n * justifyContent: 'center',\n * },\n * });\n *\n * // skip this line if using Create React Native App\n * AppRegistry.registerComponent('App', () => App);\n * ```\n *\n * @keyword checkbox\n * @keyword toggle\n */\nlet CheckBox = createReactClass({\n displayName: 'CheckBox',\n propTypes: {\n ...ViewPropTypes,\n /**\n * The value of the checkbox. If true the checkbox will be turned on.\n * Default value is false.\n */\n value: PropTypes.bool,\n /**\n * If true the user won't be able to toggle the checkbox.\n * Default value is false.\n */\n disabled: PropTypes.bool,\n /**\n * Used in case the props change removes the component.\n */\n onChange: PropTypes.func,\n /**\n * Invoked with the new value when the value changes.\n */\n onValueChange: PropTypes.func,\n /**\n * Used to locate this view in end-to-end tests.\n */\n testID: PropTypes.string,\n },\n\n getDefaultProps: function(): DefaultProps {\n return {\n value: false,\n disabled: false,\n };\n },\n\n mixins: [NativeMethodsMixin],\n\n _rctCheckBox: {},\n _onChange: function(event: Object) {\n this._rctCheckBox.setNativeProps({value: this.props.value});\n // Change the props after the native props are set in case the props\n // change removes the component\n this.props.onChange && this.props.onChange(event);\n this.props.onValueChange &&\n this.props.onValueChange(event.nativeEvent.value);\n },\n\n render: function() {\n let props = {...this.props};\n props.onStartShouldSetResponder = () => true;\n props.onResponderTerminationRequest = () => false;\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n props.enabled = !this.props.disabled;\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n props.on = this.props.value;\n props.style = [styles.rctCheckBox, this.props.style];\n\n return (\n {\n /* $FlowFixMe(>=0.53.0 site=react_native_fb,react_native_oss) This\n * comment suppresses an error when upgrading Flow's support for\n * React. To see the error delete this comment and run Flow. */\n this._rctCheckBox = ref;\n }}\n onChange={this._onChange}\n />\n );\n },\n});\n\nlet styles = StyleSheet.create({\n rctCheckBox: {\n height: 32,\n width: 32,\n },\n});\n\nmodule.exports = CheckBox;\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\nconst React = require('React');\nconst StyleSheet = require('StyleSheet');\nconst Text = require('Text');\nconst View = require('View');\n\nclass DummyDatePickerIOS extends React.Component {\n render() {\n return (\n \n \n DatePickerIOS is not supported on this platform!\n \n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n dummyDatePickerIOS: {\n height: 100,\n width: 300,\n backgroundColor: '#ffbcbc',\n borderWidth: 1,\n borderColor: 'red',\n alignItems: 'center',\n justifyContent: 'center',\n margin: 10,\n },\n datePickerText: {\n color: '#333333',\n margin: 20,\n },\n});\n\nmodule.exports = DummyDatePickerIOS;\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\nconst ColorPropType = require('ColorPropType');\nconst NativeMethodsMixin = require('NativeMethodsMixin');\nconst Platform = require('Platform');\nconst React = require('React');\nconst PropTypes = require('prop-types');\nconst ReactNative = require('ReactNative');\nconst StatusBar = require('StatusBar');\nconst StyleSheet = require('StyleSheet');\nconst UIManager = require('UIManager');\nconst View = require('View');\nconst ViewPropTypes = require('ViewPropTypes');\n\nconst DrawerConsts = UIManager.AndroidDrawerLayout.Constants;\n\nconst createReactClass = require('create-react-class');\nconst dismissKeyboard = require('dismissKeyboard');\nconst requireNativeComponent = require('requireNativeComponent');\n\nconst RK_DRAWER_REF = 'drawerlayout';\nconst INNERVIEW_REF = 'innerView';\n\nconst DRAWER_STATES = ['Idle', 'Dragging', 'Settling'];\n\n/**\n * React component that wraps the platform `DrawerLayout` (Android only). The\n * Drawer (typically used for navigation) is rendered with `renderNavigationView`\n * and direct children are the main view (where your content goes). The navigation\n * view is initially not visible on the screen, but can be pulled in from the\n * side of the window specified by the `drawerPosition` prop and its width can\n * be set by the `drawerWidth` prop.\n *\n * Example:\n *\n * ```\n * render: function() {\n * var navigationView = (\n * \n * I'm in the Drawer!\n * \n * );\n * return (\n * navigationView}>\n * \n * Hello\n * World!\n * \n * \n * );\n * },\n * ```\n */\nconst DrawerLayoutAndroid = createReactClass({\n displayName: 'DrawerLayoutAndroid',\n statics: {\n positions: DrawerConsts.DrawerPosition,\n },\n\n propTypes: {\n ...ViewPropTypes,\n /**\n * Determines whether the keyboard gets dismissed in response to a drag.\n * - 'none' (the default), drags do not dismiss the keyboard.\n * - 'on-drag', the keyboard is dismissed when a drag begins.\n */\n keyboardDismissMode: PropTypes.oneOf([\n 'none', // default\n 'on-drag',\n ]),\n /**\n * Specifies the background color of the drawer. The default value is white.\n * If you want to set the opacity of the drawer, use rgba. Example:\n *\n * ```\n * return (\n * \n * \n * );\n * ```\n */\n drawerBackgroundColor: ColorPropType,\n /**\n * Specifies the side of the screen from which the drawer will slide in.\n */\n drawerPosition: PropTypes.oneOf([\n DrawerConsts.DrawerPosition.Left,\n DrawerConsts.DrawerPosition.Right,\n ]),\n /**\n * Specifies the width of the drawer, more precisely the width of the view that be pulled in\n * from the edge of the window.\n */\n drawerWidth: PropTypes.number,\n /**\n * Specifies the lock mode of the drawer. The drawer can be locked in 3 states:\n * - unlocked (default), meaning that the drawer will respond (open/close) to touch gestures.\n * - locked-closed, meaning that the drawer will stay closed and not respond to gestures.\n * - locked-open, meaning that the drawer will stay opened and not respond to gestures.\n * The drawer may still be opened and closed programmatically (`openDrawer`/`closeDrawer`).\n */\n drawerLockMode: PropTypes.oneOf([\n 'unlocked',\n 'locked-closed',\n 'locked-open',\n ]),\n /**\n * Function called whenever there is an interaction with the navigation view.\n */\n onDrawerSlide: PropTypes.func,\n /**\n * Function called when the drawer state has changed. The drawer can be in 3 states:\n * - idle, meaning there is no interaction with the navigation view happening at the time\n * - dragging, meaning there is currently an interaction with the navigation view\n * - settling, meaning that there was an interaction with the navigation view, and the\n * navigation view is now finishing its closing or opening animation\n */\n onDrawerStateChanged: PropTypes.func,\n /**\n * Function called whenever the navigation view has been opened.\n */\n onDrawerOpen: PropTypes.func,\n /**\n * Function called whenever the navigation view has been closed.\n */\n onDrawerClose: PropTypes.func,\n /**\n * The navigation view that will be rendered to the side of the screen and can be pulled in.\n */\n renderNavigationView: PropTypes.func.isRequired,\n\n /**\n * Make the drawer take the entire screen and draw the background of the\n * status bar to allow it to open over the status bar. It will only have an\n * effect on API 21+.\n */\n statusBarBackgroundColor: ColorPropType,\n },\n\n mixins: [NativeMethodsMixin],\n\n getDefaultProps: function(): Object {\n return {\n drawerBackgroundColor: 'white',\n };\n },\n\n getInitialState: function() {\n return {statusBarBackgroundColor: undefined};\n },\n\n getInnerViewNode: function() {\n return this.refs[INNERVIEW_REF].getInnerViewNode();\n },\n\n render: function() {\n const drawStatusBar =\n Platform.Version >= 21 && this.props.statusBarBackgroundColor;\n const drawerViewWrapper = (\n \n {this.props.renderNavigationView()}\n {drawStatusBar && }\n \n );\n const childrenWrapper = (\n \n {drawStatusBar && (\n \n )}\n {drawStatusBar && (\n \n )}\n {this.props.children}\n \n );\n return (\n \n {childrenWrapper}\n {drawerViewWrapper}\n \n );\n },\n\n _onDrawerSlide: function(event) {\n if (this.props.onDrawerSlide) {\n this.props.onDrawerSlide(event);\n }\n if (this.props.keyboardDismissMode === 'on-drag') {\n dismissKeyboard();\n }\n },\n\n _onDrawerOpen: function() {\n if (this.props.onDrawerOpen) {\n this.props.onDrawerOpen();\n }\n },\n\n _onDrawerClose: function() {\n if (this.props.onDrawerClose) {\n this.props.onDrawerClose();\n }\n },\n\n _onDrawerStateChanged: function(event) {\n if (this.props.onDrawerStateChanged) {\n this.props.onDrawerStateChanged(\n DRAWER_STATES[event.nativeEvent.drawerState],\n );\n }\n },\n\n /**\n * Opens the drawer.\n */\n openDrawer: function() {\n UIManager.dispatchViewManagerCommand(\n this._getDrawerLayoutHandle(),\n UIManager.AndroidDrawerLayout.Commands.openDrawer,\n null,\n );\n },\n\n /**\n * Closes the drawer.\n */\n closeDrawer: function() {\n UIManager.dispatchViewManagerCommand(\n this._getDrawerLayoutHandle(),\n UIManager.AndroidDrawerLayout.Commands.closeDrawer,\n null,\n );\n },\n /**\n * Closing and opening example\n * Note: To access the drawer you have to give it a ref. Refs do not work on stateless components\n * render () {\n * this.openDrawer = () => {\n * this.refs.DRAWER.openDrawer()\n * }\n * this.closeDrawer = () => {\n * this.refs.DRAWER.closeDrawer()\n * }\n * return (\n * \n * \n * )\n * }\n */\n _getDrawerLayoutHandle: function() {\n return ReactNative.findNodeHandle(this.refs[RK_DRAWER_REF]);\n },\n});\n\nconst styles = StyleSheet.create({\n base: {\n flex: 1,\n elevation: 16,\n },\n mainSubview: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n drawerSubview: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n },\n statusBar: {\n height: StatusBar.currentHeight,\n },\n drawerStatusBar: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n height: StatusBar.currentHeight,\n backgroundColor: 'rgba(0, 0, 0, 0.251)',\n },\n});\n\n// The View that contains both the actual drawer and the main view\nconst AndroidDrawerLayout = requireNativeComponent('AndroidDrawerLayout');\n\nmodule.exports = DrawerLayoutAndroid;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst React = require('React');\nconst PropTypes = require('prop-types');\nconst ColorPropType = require('ColorPropType');\nconst Platform = require('Platform');\n\nconst processColor = require('processColor');\n\nconst StatusBarManager = require('NativeModules').StatusBarManager;\n\n/**\n * Status bar style\n */\nexport type StatusBarStyle = $Enum<{\n /**\n * Default status bar style (dark for iOS, light for Android)\n */\n default: string,\n /**\n * Dark background, white texts and icons\n */\n 'light-content': string,\n /**\n * Light background, dark texts and icons\n */\n 'dark-content': string,\n}>;\n\n/**\n * Status bar animation\n */\nexport type StatusBarAnimation = $Enum<{\n /**\n * No animation\n */\n none: string,\n /**\n * Fade animation\n */\n fade: string,\n /**\n * Slide animation\n */\n slide: string,\n}>;\n\ntype DefaultProps = {\n animated: boolean,\n};\n\n/**\n * Merges the prop stack with the default values.\n */\nfunction mergePropsStack(\n propsStack: Array,\n defaultValues: Object,\n): Object {\n return propsStack.reduce((prev, cur) => {\n for (const prop in cur) {\n if (cur[prop] != null) {\n prev[prop] = cur[prop];\n }\n }\n return prev;\n }, Object.assign({}, defaultValues));\n}\n\n/**\n * Returns an object to insert in the props stack from the props\n * and the transition/animation info.\n */\nfunction createStackEntry(props: any): any {\n return {\n backgroundColor:\n props.backgroundColor != null\n ? {\n value: props.backgroundColor,\n animated: props.animated,\n }\n : null,\n barStyle:\n props.barStyle != null\n ? {\n value: props.barStyle,\n animated: props.animated,\n }\n : null,\n translucent: props.translucent,\n hidden:\n props.hidden != null\n ? {\n value: props.hidden,\n animated: props.animated,\n transition: props.showHideTransition,\n }\n : null,\n networkActivityIndicatorVisible: props.networkActivityIndicatorVisible,\n };\n}\n\n/**\n * Component to control the app status bar.\n *\n * ### Usage with Navigator\n *\n * It is possible to have multiple `StatusBar` components mounted at the same\n * time. The props will be merged in the order the `StatusBar` components were\n * mounted. One use case is to specify status bar styles per route using `Navigator`.\n *\n * ```\n * \n * \n * \n * \n * \n * }\n * />\n * \n * ```\n *\n * ### Imperative API\n *\n * For cases where using a component is not ideal, there is also an imperative\n * API exposed as static functions on the component. It is however not recommended\n * to use the static API and the component for the same prop because any value\n * set by the static API will get overriden by the one set by the component in\n * the next render.\n *\n * ### Constants\n *\n * `currentHeight` (Android only) The height of the status bar.\n */\nclass StatusBar extends React.Component<{\n hidden?: boolean,\n animated?: boolean,\n backgroundColor?: string,\n translucent?: boolean,\n barStyle?: 'default' | 'light-content' | 'dark-content',\n networkActivityIndicatorVisible?: boolean,\n showHideTransition?: 'fade' | 'slide',\n}> {\n static _propsStack = [];\n\n static _defaultProps = createStackEntry({\n animated: false,\n showHideTransition: 'fade',\n backgroundColor: 'black',\n barStyle: 'default',\n translucent: false,\n hidden: false,\n networkActivityIndicatorVisible: false,\n });\n\n // Timer for updating the native module values at the end of the frame.\n static _updateImmediate = null;\n\n // The current merged values from the props stack.\n static _currentValues = null;\n\n // TODO(janic): Provide a real API to deal with status bar height. See the\n // discussion in #6195.\n /**\n * The current height of the status bar on the device.\n *\n * @platform android\n */\n static currentHeight = StatusBarManager.HEIGHT;\n\n // Provide an imperative API as static functions of the component.\n // See the corresponding prop for more detail.\n\n /**\n * Show or hide the status bar\n * @param hidden Hide the status bar.\n * @param animation Optional animation when\n * changing the status bar hidden property.\n */\n static setHidden(hidden: boolean, animation?: StatusBarAnimation) {\n animation = animation || 'none';\n StatusBar._defaultProps.hidden.value = hidden;\n if (Platform.OS === 'ios') {\n StatusBarManager.setHidden(hidden, animation);\n } else if (Platform.OS === 'android') {\n StatusBarManager.setHidden(hidden);\n }\n }\n\n /**\n * Set the status bar style\n * @param style Status bar style to set\n * @param animated Animate the style change.\n */\n static setBarStyle(style: StatusBarStyle, animated?: boolean) {\n animated = animated || false;\n StatusBar._defaultProps.barStyle.value = style;\n if (Platform.OS === 'ios') {\n StatusBarManager.setStyle(style, animated);\n } else if (Platform.OS === 'android') {\n StatusBarManager.setStyle(style);\n }\n }\n\n /**\n * Control the visibility of the network activity indicator\n * @param visible Show the indicator.\n */\n static setNetworkActivityIndicatorVisible(visible: boolean) {\n if (Platform.OS !== 'ios') {\n console.warn(\n '`setNetworkActivityIndicatorVisible` is only available on iOS',\n );\n return;\n }\n StatusBar._defaultProps.networkActivityIndicatorVisible = visible;\n StatusBarManager.setNetworkActivityIndicatorVisible(visible);\n }\n\n /**\n * Set the background color for the status bar\n * @param color Background color.\n * @param animated Animate the style change.\n */\n static setBackgroundColor(color: string, animated?: boolean) {\n if (Platform.OS !== 'android') {\n console.warn('`setBackgroundColor` is only available on Android');\n return;\n }\n animated = animated || false;\n StatusBar._defaultProps.backgroundColor.value = color;\n StatusBarManager.setColor(processColor(color), animated);\n }\n\n /**\n * Control the translucency of the status bar\n * @param translucent Set as translucent.\n */\n static setTranslucent(translucent: boolean) {\n if (Platform.OS !== 'android') {\n console.warn('`setTranslucent` is only available on Android');\n return;\n }\n StatusBar._defaultProps.translucent = translucent;\n StatusBarManager.setTranslucent(translucent);\n }\n\n static propTypes = {\n /**\n * If the status bar is hidden.\n */\n hidden: PropTypes.bool,\n /**\n * If the transition between status bar property changes should be animated.\n * Supported for backgroundColor, barStyle and hidden.\n */\n animated: PropTypes.bool,\n /**\n * The background color of the status bar.\n * @platform android\n */\n backgroundColor: ColorPropType,\n /**\n * If the status bar is translucent.\n * When translucent is set to true, the app will draw under the status bar.\n * This is useful when using a semi transparent status bar color.\n *\n * @platform android\n */\n translucent: PropTypes.bool,\n /**\n * Sets the color of the status bar text.\n */\n barStyle: PropTypes.oneOf(['default', 'light-content', 'dark-content']),\n /**\n * If the network activity indicator should be visible.\n *\n * @platform ios\n */\n networkActivityIndicatorVisible: PropTypes.bool,\n /**\n * The transition effect when showing and hiding the status bar using the `hidden`\n * prop. Defaults to 'fade'.\n *\n * @platform ios\n */\n showHideTransition: PropTypes.oneOf(['fade', 'slide']),\n };\n\n static defaultProps = {\n animated: false,\n showHideTransition: 'fade',\n };\n\n _stackEntry = null;\n\n componentDidMount() {\n // Every time a StatusBar component is mounted, we push it's prop to a stack\n // and always update the native status bar with the props from the top of then\n // stack. This allows having multiple StatusBar components and the one that is\n // added last or is deeper in the view hierarchy will have priority.\n this._stackEntry = createStackEntry(this.props);\n StatusBar._propsStack.push(this._stackEntry);\n this._updatePropsStack();\n }\n\n componentWillUnmount() {\n // When a StatusBar is unmounted, remove itself from the stack and update\n // the native bar with the next props.\n const index = StatusBar._propsStack.indexOf(this._stackEntry);\n StatusBar._propsStack.splice(index, 1);\n\n this._updatePropsStack();\n }\n\n componentDidUpdate() {\n const index = StatusBar._propsStack.indexOf(this._stackEntry);\n this._stackEntry = createStackEntry(this.props);\n StatusBar._propsStack[index] = this._stackEntry;\n\n this._updatePropsStack();\n }\n\n /**\n * Updates the native status bar with the props from the stack.\n */\n _updatePropsStack = () => {\n // Send the update to the native module only once at the end of the frame.\n clearImmediate(StatusBar._updateImmediate);\n StatusBar._updateImmediate = setImmediate(() => {\n const oldProps = StatusBar._currentValues;\n const mergedProps = mergePropsStack(\n StatusBar._propsStack,\n StatusBar._defaultProps,\n );\n\n // Update the props that have changed using the merged values from the props stack.\n if (Platform.OS === 'ios') {\n if (\n !oldProps ||\n oldProps.barStyle.value !== mergedProps.barStyle.value\n ) {\n StatusBarManager.setStyle(\n mergedProps.barStyle.value,\n mergedProps.barStyle.animated,\n );\n }\n if (!oldProps || oldProps.hidden.value !== mergedProps.hidden.value) {\n StatusBarManager.setHidden(\n mergedProps.hidden.value,\n mergedProps.hidden.animated\n ? mergedProps.hidden.transition\n : 'none',\n );\n }\n\n if (\n !oldProps ||\n oldProps.networkActivityIndicatorVisible !==\n mergedProps.networkActivityIndicatorVisible\n ) {\n StatusBarManager.setNetworkActivityIndicatorVisible(\n mergedProps.networkActivityIndicatorVisible,\n );\n }\n } else if (Platform.OS === 'android') {\n if (\n !oldProps ||\n oldProps.barStyle.value !== mergedProps.barStyle.value\n ) {\n StatusBarManager.setStyle(mergedProps.barStyle.value);\n }\n if (\n !oldProps ||\n oldProps.backgroundColor.value !== mergedProps.backgroundColor.value\n ) {\n StatusBarManager.setColor(\n processColor(mergedProps.backgroundColor.value),\n mergedProps.backgroundColor.animated,\n );\n }\n if (!oldProps || oldProps.hidden.value !== mergedProps.hidden.value) {\n StatusBarManager.setHidden(mergedProps.hidden.value);\n }\n if (!oldProps || oldProps.translucent !== mergedProps.translucent) {\n StatusBarManager.setTranslucent(mergedProps.translucent);\n }\n }\n // Update the current prop values.\n StatusBar._currentValues = mergedProps;\n });\n };\n\n render(): React.Node {\n return null;\n }\n}\n\nmodule.exports = StatusBar;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst Image = require('Image');\nconst React = require('React');\nconst StyleSheet = require('StyleSheet');\nconst View = require('View');\n\nconst ensureComponentIsNative = require('ensureComponentIsNative');\n\n/**\n * Very simple drop-in replacement for which supports nesting views.\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react';\n * import { AppRegistry, View, ImageBackground, Text } from 'react-native';\n *\n * class DisplayAnImageBackground extends Component {\n * render() {\n * return (\n * \n * React\n * \n * );\n * }\n * }\n *\n * // App registration and rendering\n * AppRegistry.registerComponent('DisplayAnImageBackground', () => DisplayAnImageBackground);\n * ```\n */\nclass ImageBackground extends React.Component<$FlowFixMeProps> {\n setNativeProps(props: Object) {\n // Work-around flow\n const viewRef = this._viewRef;\n if (viewRef) {\n ensureComponentIsNative(viewRef);\n viewRef.setNativeProps(props);\n }\n }\n\n _viewRef: ?React.ElementRef = null;\n\n _captureRef = ref => {\n this._viewRef = ref;\n };\n\n render() {\n const {children, style, imageStyle, imageRef, ...props} = this.props;\n\n return (\n \n overwrites width and height styles\n // (which is not quite correct), and these styles conflict with explicitly set styles\n // of and with our internal layout model here.\n // So, we have to proxy/reapply these styles explicitly for actual component.\n // This workaround should be removed after implementing proper support of\n // intrinsic content size of the .\n width: style.width,\n height: style.height,\n },\n imageStyle,\n ]}\n ref={imageRef}\n />\n {children}\n \n );\n }\n}\n\nmodule.exports = ImageBackground;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst invariant = require('fbjs/lib/invariant');\n\nconst ensureComponentIsNative = function(component: any) {\n invariant(\n component && typeof component.setNativeProps === 'function',\n 'Touchable child must either be native or forward setNativeProps to a ' +\n 'native component',\n );\n};\n\nmodule.exports = ensureComponentIsNative;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst RCTImageEditingManager = require('NativeModules').ImageEditingManager;\n\ntype ImageCropData = {\n /**\n * The top-left corner of the cropped image, specified in the original\n * image's coordinate space.\n */\n offset: {\n x: number,\n y: number,\n },\n /**\n * The size (dimensions) of the cropped image, specified in the original\n * image's coordinate space.\n */\n size: {\n width: number,\n height: number,\n },\n /**\n * (Optional) size to scale the cropped image to.\n */\n displaySize?: ?{\n width: number,\n height: number,\n },\n /**\n * (Optional) the resizing mode to use when scaling the image. If the\n * `displaySize` param is not specified, this has no effect.\n */\n resizeMode?: ?$Enum<{\n contain: string,\n cover: string,\n stretch: string,\n }>,\n};\n\nclass ImageEditor {\n /**\n * Crop the image specified by the URI param. If URI points to a remote\n * image, it will be downloaded automatically. If the image cannot be\n * loaded/downloaded, the failure callback will be called. On Android, a\n * downloaded image may be cached in external storage, a publicly accessible\n * location, if it has more available space than internal storage.\n *\n * If the cropping process is successful, the resultant cropped image\n * will be stored in the ImageStore, and the URI returned in the success\n * callback will point to the image in the store. Remember to delete the\n * cropped image from the ImageStore when you are done with it.\n */\n static cropImage(\n uri: string,\n cropData: ImageCropData,\n success: (uri: string) => void,\n failure: (error: Object) => void,\n ) {\n RCTImageEditingManager.cropImage(uri, cropData, success, failure);\n }\n}\n\nmodule.exports = ImageEditor;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst RCTImageStoreManager = require('NativeModules').ImageStoreManager;\n\nclass ImageStore {\n /**\n * Check if the ImageStore contains image data for the specified URI.\n * @platform ios\n */\n static hasImageForTag(uri: string, callback: (hasImage: boolean) => void) {\n if (RCTImageStoreManager.hasImageForTag) {\n RCTImageStoreManager.hasImageForTag(uri, callback);\n } else {\n console.warn('hasImageForTag() not implemented');\n }\n }\n\n /**\n * Delete an image from the ImageStore. Images are stored in memory and\n * must be manually removed when you are finished with them, otherwise they\n * will continue to use up RAM until the app is terminated. It is safe to\n * call `removeImageForTag()` without first calling `hasImageForTag()`, it\n * will simply fail silently.\n * @platform ios\n */\n static removeImageForTag(uri: string) {\n if (RCTImageStoreManager.removeImageForTag) {\n RCTImageStoreManager.removeImageForTag(uri);\n } else {\n console.warn('removeImageForTag() not implemented');\n }\n }\n\n /**\n * Stores a base64-encoded image in the ImageStore, and returns a URI that\n * can be used to access or display the image later. Images are stored in\n * memory only, and must be manually deleted when you are finished with\n * them by calling `removeImageForTag()`.\n *\n * Note that it is very inefficient to transfer large quantities of binary\n * data between JS and native code, so you should avoid calling this more\n * than necessary.\n * @platform ios\n */\n static addImageFromBase64(\n base64ImageData: string,\n success: (uri: string) => void,\n failure: (error: any) => void,\n ) {\n RCTImageStoreManager.addImageFromBase64(base64ImageData, success, failure);\n }\n\n /**\n * Retrieves the base64-encoded data for an image in the ImageStore. If the\n * specified URI does not match an image in the store, the failure callback\n * will be called.\n *\n * Note that it is very inefficient to transfer large quantities of binary\n * data between JS and native code, so you should avoid calling this more\n * than necessary. To display an image in the ImageStore, you can just pass\n * the URI to an `` component; there is no need to retrieve the\n * base64 data.\n */\n static getBase64ForTag(\n uri: string,\n success: (base64ImageData: string) => void,\n failure: (error: any) => void,\n ) {\n RCTImageStoreManager.getBase64ForTag(uri, success, failure);\n }\n}\n\nmodule.exports = ImageStore;\n","/**\n * Copyright (c) 2013-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 * @flow\n * @format\n */\n'use strict';\n\nconst ColorPropType = require('ColorPropType');\nconst React = require('React');\nconst StyleSheet = require('StyleSheet');\nconst ViewPropTypes = require('ViewPropTypes');\n\nconst requireNativeComponent = require('requireNativeComponent');\n\nconst RCTInputAccessoryView = requireNativeComponent('RCTInputAccessoryView');\n\n/**\n * Note: iOS only\n *\n * A component which enables customization of the keyboard input accessory view.\n * The input accessory view is displayed above the keyboard whenever a TextInput\n * has focus. This component can be used to create custom toolbars.\n *\n * To use this component wrap your custom toolbar with the\n * InputAccessoryView component, and set a nativeID. Then, pass that nativeID\n * as the inputAccessoryViewID of whatever TextInput you desire. A simple\n * example:\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react';\n * import { AppRegistry, TextInput, InputAccessoryView, Button } from 'react-native';\n *\n * export default class UselessTextInput extends Component {\n * constructor(props) {\n * super(props);\n * this.state = {text: 'Placeholder Text'};\n * }\n *\n * render() {\n * const inputAccessoryViewID = \"uniqueID\";\n * return (\n * \n * \n * this.setState({text})}\n * value={this.state.text}\n * />\n * \n * \n * this.setState({text: 'Placeholder Text'})}\n * title=\"Reset Text\"\n * />\n * \n * \n * );\n * }\n * }\n *\n * // skip this line if using Create React Native App\n * AppRegistry.registerComponent('AwesomeProject', () => UselessTextInput);\n * ```\n *\n * This component can also be used to create sticky text inputs (text inputs\n * which are anchored to the top of the keyboard). To do this, wrap a\n * TextInput with the InputAccessoryView component, and don't set a nativeID.\n * For an example, look at InputAccessoryViewExample.js in RNTester.\n */\n\ntype Props = {\n +children: React.Node,\n /**\n * An ID which is used to associate this `InputAccessoryView` to\n * specified TextInput(s).\n */\n nativeID?: string,\n style?: ViewPropTypes.style,\n backgroundColor?: ColorPropType,\n};\n\nclass InputAccessoryView extends React.Component {\n render(): React.Node {\n console.warn(' is not supported on Android yet.');\n\n if (React.Children.count(this.props.children) === 0) {\n return null;\n }\n\n return (\n \n {this.props.children}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n position: 'absolute',\n },\n});\n\nmodule.exports = InputAccessoryView;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst Keyboard = require('Keyboard');\nconst LayoutAnimation = require('LayoutAnimation');\nconst Platform = require('Platform');\nconst React = require('React');\nconst StyleSheet = require('StyleSheet');\nconst View = require('View');\n\nimport type EmitterSubscription from 'EmitterSubscription';\nimport type {ViewStyleProp} from 'StyleSheet';\nimport type {ViewProps, ViewLayout, ViewLayoutEvent} from 'ViewPropTypes';\nimport type {KeyboardEvent} from 'Keyboard';\n\ntype Props = $ReadOnly<{|\n ...ViewProps,\n\n /**\n * Specify how to react to the presence of the keyboard.\n */\n behavior?: ?('height' | 'position' | 'padding'),\n\n /**\n * Style of the content container when `behavior` is 'position'.\n */\n contentContainerStyle?: ?ViewStyleProp,\n\n /**\n * Controls whether this `KeyboardAvoidingView` instance should take effect.\n * This is useful when more than one is on the screen. Defaults to true.\n */\n enabled: ?boolean,\n\n /**\n * Distance between the top of the user screen and the React Native view. This\n * may be non-zero in some cases. Defaults to 0.\n */\n keyboardVerticalOffset: number,\n|}>;\n\ntype State = {|\n bottom: number,\n|};\n\nconst viewRef = 'VIEW';\n\n/**\n * View that moves out of the way when the keyboard appears by automatically\n * adjusting its height, position, or bottom padding.\n */\nclass KeyboardAvoidingView extends React.Component {\n static defaultProps = {\n enabled: true,\n keyboardVerticalOffset: 0,\n };\n\n _frame: ?ViewLayout = null;\n _subscriptions: Array = [];\n\n state = {\n bottom: 0,\n };\n\n _relativeKeyboardHeight(keyboardFrame): number {\n const frame = this._frame;\n if (!frame || !keyboardFrame) {\n return 0;\n }\n\n const keyboardY = keyboardFrame.screenY - this.props.keyboardVerticalOffset;\n\n // Calculate the displacement needed for the view such that it\n // no longer overlaps with the keyboard\n return Math.max(frame.y + frame.height - keyboardY, 0);\n }\n\n _onKeyboardChange = (event: ?KeyboardEvent) => {\n if (event == null) {\n this.setState({bottom: 0});\n return;\n }\n\n const {duration, easing, endCoordinates} = event;\n const height = this._relativeKeyboardHeight(endCoordinates);\n\n if (this.state.bottom === height) {\n return;\n }\n\n if (duration && easing) {\n LayoutAnimation.configureNext({\n // We have to pass the duration equal to minimal accepted duration defined here: RCTLayoutAnimation.m\n duration: duration > 10 ? duration : 10,\n update: {\n duration: duration > 10 ? duration : 10,\n type: LayoutAnimation.Types[easing] || 'keyboard',\n },\n });\n }\n this.setState({bottom: height});\n };\n\n _onLayout = (event: ViewLayoutEvent) => {\n this._frame = event.nativeEvent.layout;\n };\n\n UNSAFE_componentWillUpdate(nextProps: Props, nextState: State): void {\n if (\n nextState.bottom === this.state.bottom &&\n this.props.behavior === 'height' &&\n nextProps.behavior === 'height'\n ) {\n // If the component rerenders without an internal state change, e.g.\n // triggered by parent component re-rendering, no need for bottom to change.\n nextState.bottom = 0;\n }\n }\n\n componentDidMount(): void {\n if (Platform.OS === 'ios') {\n this._subscriptions = [\n Keyboard.addListener('keyboardWillChangeFrame', this._onKeyboardChange),\n ];\n } else {\n this._subscriptions = [\n Keyboard.addListener('keyboardDidHide', this._onKeyboardChange),\n Keyboard.addListener('keyboardDidShow', this._onKeyboardChange),\n ];\n }\n }\n\n componentWillUnmount(): void {\n this._subscriptions.forEach(subscription => {\n subscription.remove();\n });\n }\n\n render(): React.Node {\n const {\n behavior,\n children,\n contentContainerStyle,\n enabled,\n keyboardVerticalOffset, // eslint-disable-line no-unused-vars\n style,\n ...props\n } = this.props;\n const bottomHeight = enabled ? this.state.bottom : 0;\n switch (behavior) {\n case 'height':\n let heightStyle;\n if (this._frame != null) {\n // Note that we only apply a height change when there is keyboard present,\n // i.e. this.state.bottom is greater than 0. If we remove that condition,\n // this.frame.height will never go back to its original value.\n // When height changes, we need to disable flex.\n heightStyle = {\n height: this._frame.height - bottomHeight,\n flex: 0,\n };\n }\n return (\n \n {children}\n \n );\n\n case 'position':\n return (\n \n \n {children}\n \n \n );\n\n case 'padding':\n return (\n \n {children}\n \n );\n\n default:\n return (\n \n {children}\n \n );\n }\n }\n}\n\nmodule.exports = KeyboardAvoidingView;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nmodule.exports = require('UnimplementedView');\n","/**\n * Copyright (c) 2015-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 * @flow strict-local\n * @format\n */\n'use strict';\n\nconst React = require('React');\nconst StyleSheet = require('StyleSheet');\n\n/**\n * Common implementation for a simple stubbed view. Simply applies the view's styles to the inner\n * View component and renders its children.\n */\nclass UnimplementedView extends React.Component<$FlowFixMeProps> {\n setNativeProps() {\n // Do nothing.\n // This method is required in order to use this view as a Touchable* child.\n // See ensureComponentIsNative.js for more info\n }\n\n render() {\n // Workaround require cycle from requireNativeComponent\n const View = require('View');\n return (\n \n {this.props.children}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n unimplementedView: __DEV__\n ? {\n alignSelf: 'flex-start',\n borderColor: 'red',\n borderWidth: 1,\n }\n : {},\n});\n\nmodule.exports = UnimplementedView;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst AppContainer = require('AppContainer');\nconst I18nManager = require('I18nManager');\nconst NativeEventEmitter = require('NativeEventEmitter');\nconst NativeModules = require('NativeModules');\nconst Platform = require('Platform');\nconst React = require('React');\nconst PropTypes = require('prop-types');\nconst StyleSheet = require('StyleSheet');\nconst View = require('View');\n\nconst deprecatedPropType = require('deprecatedPropType');\nconst requireNativeComponent = require('requireNativeComponent');\n\nconst RCTModalHostView = requireNativeComponent('RCTModalHostView');\n\nconst ModalEventEmitter =\n Platform.OS === 'ios' && NativeModules.ModalManager\n ? new NativeEventEmitter(NativeModules.ModalManager)\n : null;\n\nimport type EmitterSubscription from 'EmitterSubscription';\n\n/**\n * The Modal component is a simple way to present content above an enclosing view.\n *\n * See https://facebook.github.io/react-native/docs/modal.html\n */\n\n// In order to route onDismiss callbacks, we need to uniquely identifier each\n// on screen. There can be different ones, either nested or as siblings.\n// We cannot pass the onDismiss callback to native as the view will be\n// destroyed before the callback is fired.\nlet uniqueModalIdentifier = 0;\n\nclass Modal extends React.Component {\n static propTypes = {\n /**\n * The `animationType` prop controls how the modal animates.\n *\n * See https://facebook.github.io/react-native/docs/modal.html#animationtype\n */\n animationType: PropTypes.oneOf(['none', 'slide', 'fade']),\n /**\n * The `presentationStyle` prop controls how the modal appears.\n *\n * See https://facebook.github.io/react-native/docs/modal.html#presentationstyle\n */\n presentationStyle: PropTypes.oneOf([\n 'fullScreen',\n 'pageSheet',\n 'formSheet',\n 'overFullScreen',\n ]),\n /**\n * The `transparent` prop determines whether your modal will fill the\n * entire view.\n *\n * See https://facebook.github.io/react-native/docs/modal.html#transparent\n */\n transparent: PropTypes.bool,\n /**\n * The `hardwareAccelerated` prop controls whether to force hardware\n * acceleration for the underlying window.\n *\n * See https://facebook.github.io/react-native/docs/modal.html#hardwareaccelerated\n */\n hardwareAccelerated: PropTypes.bool,\n /**\n * The `visible` prop determines whether your modal is visible.\n *\n * See https://facebook.github.io/react-native/docs/modal.html#visible\n */\n visible: PropTypes.bool,\n /**\n * The `onRequestClose` callback is called when the user taps the hardware\n * back button on Android or the menu button on Apple TV.\n *\n * See https://facebook.github.io/react-native/docs/modal.html#onrequestclose\n */\n onRequestClose:\n Platform.isTV || Platform.OS === 'android'\n ? PropTypes.func.isRequired\n : PropTypes.func,\n /**\n * The `onShow` prop allows passing a function that will be called once the\n * modal has been shown.\n *\n * See https://facebook.github.io/react-native/docs/modal.html#onshow\n */\n onShow: PropTypes.func,\n /**\n * The `onDismiss` prop allows passing a function that will be called once\n * the modal has been dismissed.\n *\n * See https://facebook.github.io/react-native/docs/modal.html#ondismiss\n */\n onDismiss: PropTypes.func,\n animated: deprecatedPropType(\n PropTypes.bool,\n 'Use the `animationType` prop instead.',\n ),\n /**\n * The `supportedOrientations` prop allows the modal to be rotated to any of the specified orientations.\n *\n * See https://facebook.github.io/react-native/docs/modal.html#supportedorientations\n */\n supportedOrientations: PropTypes.arrayOf(\n PropTypes.oneOf([\n 'portrait',\n 'portrait-upside-down',\n 'landscape',\n 'landscape-left',\n 'landscape-right',\n ]),\n ),\n /**\n * The `onOrientationChange` callback is called when the orientation changes while the modal is being displayed.\n *\n * See https://facebook.github.io/react-native/docs/modal.html#onorientationchange\n */\n onOrientationChange: PropTypes.func,\n };\n\n static defaultProps = {\n visible: true,\n hardwareAccelerated: false,\n };\n\n static contextTypes = {\n rootTag: PropTypes.number,\n };\n\n _identifier: number;\n _eventSubscription: ?EmitterSubscription;\n\n constructor(props: Object) {\n super(props);\n Modal._confirmProps(props);\n this._identifier = uniqueModalIdentifier++;\n }\n\n static childContextTypes = {\n virtualizedList: PropTypes.object,\n };\n\n getChildContext() {\n // Reset the context so VirtualizedList doesn't get confused by nesting\n // in the React tree that doesn't reflect the native component heirarchy.\n return {\n virtualizedList: null,\n };\n }\n\n componentDidMount() {\n if (ModalEventEmitter) {\n this._eventSubscription = ModalEventEmitter.addListener(\n 'modalDismissed',\n event => {\n if (event.modalID === this._identifier && this.props.onDismiss) {\n this.props.onDismiss();\n }\n },\n );\n }\n }\n\n componentWillUnmount() {\n if (this._eventSubscription) {\n this._eventSubscription.remove();\n }\n }\n\n UNSAFE_componentWillReceiveProps(nextProps: Object) {\n Modal._confirmProps(nextProps);\n }\n\n static _confirmProps(props: Object) {\n if (\n props.presentationStyle &&\n props.presentationStyle !== 'overFullScreen' &&\n props.transparent\n ) {\n console.warn(\n `Modal with '${\n props.presentationStyle\n }' presentation style and 'transparent' value is not supported.`,\n );\n }\n }\n\n render(): React.Node {\n if (this.props.visible !== true) {\n return null;\n }\n\n const containerStyles = {\n backgroundColor: this.props.transparent ? 'transparent' : 'white',\n };\n\n let animationType = this.props.animationType;\n if (!animationType) {\n // manually setting default prop here to keep support for the deprecated 'animated' prop\n animationType = 'none';\n if (this.props.animated) {\n animationType = 'slide';\n }\n }\n\n let presentationStyle = this.props.presentationStyle;\n if (!presentationStyle) {\n presentationStyle = 'fullScreen';\n if (this.props.transparent) {\n presentationStyle = 'overFullScreen';\n }\n }\n\n const innerChildren = __DEV__ ? (\n \n {this.props.children}\n \n ) : (\n this.props.children\n );\n\n return (\n \n {innerChildren}\n \n );\n }\n\n // We don't want any responder events bubbling out of the modal.\n _shouldSetResponder(): boolean {\n return true;\n }\n}\n\nconst side = I18nManager.isRTL ? 'right' : 'left';\nconst styles = StyleSheet.create({\n modal: {\n position: 'absolute',\n },\n container: {\n position: 'absolute',\n [side]: 0,\n top: 0,\n },\n});\n\nmodule.exports = Modal;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst EmitterSubscription = require('EmitterSubscription');\nconst PropTypes = require('prop-types');\nconst RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nconst React = require('React');\nconst ReactNative = require('ReactNative');\nconst StyleSheet = require('StyleSheet');\nconst View = require('View');\n\ntype Context = {\n rootTag: number,\n};\n\ntype Props = $ReadOnly<{|\n children?: React.Node,\n rootTag: number,\n WrapperComponent?: ?React.ComponentType,\n|}>;\n\ntype State = {|\n inspector: ?React.Node,\n mainKey: number,\n|};\n\nclass AppContainer extends React.Component {\n state: State = {\n inspector: null,\n mainKey: 1,\n };\n _mainRef: ?React.ElementRef;\n _subscription: ?EmitterSubscription = null;\n\n static childContextTypes = {\n rootTag: PropTypes.number,\n };\n\n getChildContext(): Context {\n return {\n rootTag: this.props.rootTag,\n };\n }\n\n componentDidMount(): void {\n if (__DEV__) {\n if (!global.__RCTProfileIsProfiling) {\n this._subscription = RCTDeviceEventEmitter.addListener(\n 'toggleElementInspector',\n () => {\n const Inspector = require('Inspector');\n const inspector = this.state.inspector ? null : (\n {\n this.setState(\n s => ({mainKey: s.mainKey + 1}),\n () =>\n updateInspectedViewTag(\n ReactNative.findNodeHandle(this._mainRef),\n ),\n );\n }}\n />\n );\n this.setState({inspector});\n },\n );\n }\n }\n }\n\n componentWillUnmount(): void {\n if (this._subscription != null) {\n this._subscription.remove();\n }\n }\n\n render(): React.Node {\n let yellowBox = null;\n if (__DEV__) {\n if (!global.__RCTProfileIsProfiling) {\n const YellowBox = require('YellowBox');\n yellowBox = ;\n }\n }\n\n let innerView = (\n {\n this._mainRef = ref;\n }}>\n {this.props.children}\n \n );\n\n const Wrapper = this.props.WrapperComponent;\n if (Wrapper != null) {\n innerView = {innerView};\n }\n return (\n \n {innerView}\n {yellowBox}\n {this.state.inspector}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n appContainer: {\n flex: 1,\n },\n});\n\nif (__DEV__) {\n if (!global.__RCTProfileIsProfiling) {\n const YellowBox = require('YellowBox');\n YellowBox.install();\n }\n}\n\nmodule.exports = AppContainer;\n","/**\n * Copyright (c) 2015-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 * @flow strict-local\n * @format\n */\n'use strict';\n\ntype I18nManagerStatus = {\n isRTL: boolean,\n doLeftAndRightSwapInRTL: boolean,\n allowRTL: (allowRTL: boolean) => {},\n forceRTL: (forceRTL: boolean) => {},\n swapLeftAndRightInRTL: (flipStyles: boolean) => {},\n};\n\nconst I18nManager: I18nManagerStatus = require('NativeModules').I18nManager || {\n isRTL: false,\n doLeftAndRightSwapInRTL: true,\n allowRTL: () => {},\n forceRTL: () => {},\n swapLeftAndRightInRTL: () => {},\n};\n\nmodule.exports = I18nManager;\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\nmodule.exports = require('UnimplementedView');\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst ColorPropType = require('ColorPropType');\nconst PickerIOS = require('PickerIOS');\nconst PickerAndroid = require('PickerAndroid');\nconst Platform = require('Platform');\nconst React = require('React');\nconst PropTypes = require('prop-types');\nconst StyleSheetPropType = require('StyleSheetPropType');\nconst TextStylePropTypes = require('TextStylePropTypes');\nconst UnimplementedView = require('UnimplementedView');\nconst ViewPropTypes = require('ViewPropTypes');\nconst ViewStylePropTypes = require('ViewStylePropTypes');\n\nconst itemStylePropType = StyleSheetPropType(TextStylePropTypes);\n\nconst pickerStyleType = StyleSheetPropType({\n ...ViewStylePropTypes,\n color: ColorPropType,\n});\n\nconst MODE_DIALOG = 'dialog';\nconst MODE_DROPDOWN = 'dropdown';\n\n/**\n * Individual selectable item in a Picker.\n */\nclass PickerItem extends React.Component<{\n label: string,\n value?: any,\n color?: ColorPropType,\n testID?: string,\n}> {\n static propTypes = {\n /**\n * Text to display for this item.\n */\n label: PropTypes.string.isRequired,\n /**\n * The value to be passed to picker's `onValueChange` callback when\n * this item is selected. Can be a string or an integer.\n */\n value: PropTypes.any,\n /**\n * Color of this item's text.\n * @platform android\n */\n color: ColorPropType,\n /**\n * Used to locate the item in end-to-end tests.\n */\n testID: PropTypes.string,\n };\n\n render() {\n // The items are not rendered directly\n throw null;\n }\n}\n\n/**\n * Renders the native picker component on iOS and Android. Example:\n *\n * this.setState({language: itemValue})}>\n * \n * \n * \n */\nclass Picker extends React.Component<{\n style?: $FlowFixMe,\n selectedValue?: any,\n onValueChange?: Function,\n enabled?: boolean,\n mode?: 'dialog' | 'dropdown',\n itemStyle?: $FlowFixMe,\n prompt?: string,\n testID?: string,\n}> {\n /**\n * On Android, display the options in a dialog.\n */\n static MODE_DIALOG = MODE_DIALOG;\n\n /**\n * On Android, display the options in a dropdown (this is the default).\n */\n static MODE_DROPDOWN = MODE_DROPDOWN;\n\n static Item = PickerItem;\n\n static defaultProps = {\n mode: MODE_DIALOG,\n };\n\n // $FlowFixMe(>=0.41.0)\n static propTypes = {\n ...ViewPropTypes,\n style: pickerStyleType,\n /**\n * Value matching value of one of the items. Can be a string or an integer.\n */\n selectedValue: PropTypes.any,\n /**\n * Callback for when an item is selected. This is called with the following parameters:\n * - `itemValue`: the `value` prop of the item that was selected\n * - `itemPosition`: the index of the selected item in this picker\n */\n onValueChange: PropTypes.func,\n /**\n * If set to false, the picker will be disabled, i.e. the user will not be able to make a\n * selection.\n * @platform android\n */\n enabled: PropTypes.bool,\n /**\n * On Android, specifies how to display the selection items when the user taps on the picker:\n *\n * - 'dialog': Show a modal dialog. This is the default.\n * - 'dropdown': Shows a dropdown anchored to the picker view\n *\n * @platform android\n */\n mode: PropTypes.oneOf(['dialog', 'dropdown']),\n /**\n * Style to apply to each of the item labels.\n * @platform ios\n */\n itemStyle: itemStylePropType,\n /**\n * Prompt string for this picker, used on Android in dialog mode as the title of the dialog.\n * @platform android\n */\n prompt: PropTypes.string,\n /**\n * Used to locate this view in end-to-end tests.\n */\n testID: PropTypes.string,\n };\n\n render() {\n if (Platform.OS === 'ios') {\n // $FlowFixMe found when converting React.createClass to ES6\n return {this.props.children};\n } else if (Platform.OS === 'android') {\n return (\n // $FlowFixMe found when converting React.createClass to ES6\n {this.props.children}\n );\n } else {\n return ;\n }\n }\n}\n\nmodule.exports = Picker;\n","/**\n * Copyright (c) 2015-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 *\n * This is a controlled component version of RCTPickerIOS\n *\n * @format\n */\n\n'use strict';\n\nmodule.exports = require('UnimplementedView');\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst ColorPropType = require('ColorPropType');\nconst React = require('React');\nconst ReactPropTypes = require('prop-types');\nconst StyleSheet = require('StyleSheet');\nconst StyleSheetPropType = require('StyleSheetPropType');\nconst ViewPropTypes = require('ViewPropTypes');\nconst ViewStylePropTypes = require('ViewStylePropTypes');\n\nconst processColor = require('processColor');\nconst requireNativeComponent = require('requireNativeComponent');\n\nconst DropdownPicker = requireNativeComponent('AndroidDropdownPicker');\nconst DialogPicker = requireNativeComponent('AndroidDialogPicker');\n\nconst REF_PICKER = 'picker';\nconst MODE_DROPDOWN = 'dropdown';\n\nconst pickerStyleType = StyleSheetPropType({\n ...ViewStylePropTypes,\n color: ColorPropType,\n});\n\ntype Event = Object;\n\n/**\n * Not exposed as a public API - use instead.\n */\nclass PickerAndroid extends React.Component<\n {\n style?: $FlowFixMe,\n selectedValue?: any,\n enabled?: boolean,\n mode?: 'dialog' | 'dropdown',\n onValueChange?: Function,\n prompt?: string,\n testID?: string,\n },\n *,\n> {\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n static propTypes = {\n ...ViewPropTypes,\n style: pickerStyleType,\n selectedValue: ReactPropTypes.any,\n enabled: ReactPropTypes.bool,\n mode: ReactPropTypes.oneOf(['dialog', 'dropdown']),\n onValueChange: ReactPropTypes.func,\n prompt: ReactPropTypes.string,\n testID: ReactPropTypes.string,\n };\n\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n constructor(props, context) {\n super(props, context);\n const state = this._stateFromProps(props);\n\n this.state = {\n ...state,\n initialSelectedIndex: state.selectedIndex,\n };\n }\n\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState(this._stateFromProps(nextProps));\n }\n\n // Translate prop and children into stuff that the native picker understands.\n _stateFromProps = props => {\n let selectedIndex = 0;\n const items = React.Children.map(props.children, (child, index) => {\n if (child.props.value === props.selectedValue) {\n selectedIndex = index;\n }\n const childProps = {\n value: child.props.value,\n label: child.props.label,\n };\n if (child.props.color) {\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was\n * found when making Flow check .android.js files. */\n childProps.color = processColor(child.props.color);\n }\n return childProps;\n });\n return {selectedIndex, items};\n };\n\n render() {\n const Picker =\n this.props.mode === MODE_DROPDOWN ? DropdownPicker : DialogPicker;\n\n const nativeProps = {\n enabled: this.props.enabled,\n items: this.state.items,\n mode: this.props.mode,\n onSelect: this._onChange,\n prompt: this.props.prompt,\n selected: this.state.initialSelectedIndex,\n testID: this.props.testID,\n style: [styles.pickerAndroid, this.props.style],\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n accessibilityLabel: this.props.accessibilityLabel,\n };\n\n return ;\n }\n\n _onChange = (event: Event) => {\n if (this.props.onValueChange) {\n const position = event.nativeEvent.position;\n if (position >= 0) {\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was\n * found when making Flow check .android.js files. */\n const children = React.Children.toArray(this.props.children);\n const value = children[position].props.value;\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was\n * found when making Flow check .android.js files. */\n this.props.onValueChange(value, position);\n } else {\n this.props.onValueChange(null, position);\n }\n }\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n this._lastNativePosition = event.nativeEvent.position;\n this.forceUpdate();\n };\n\n componentDidMount() {\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n this._lastNativePosition = this.state.initialSelectedIndex;\n }\n\n componentDidUpdate() {\n // The picker is a controlled component. This means we expect the\n // on*Change handlers to be in charge of updating our\n // `selectedValue` prop. That way they can also\n // disallow/undo/mutate the selection of certain values. In other\n // words, the embedder of this component should be the source of\n // truth, not the native component.\n if (\n this.refs[REF_PICKER] &&\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n this.state.selectedIndex !== this._lastNativePosition\n ) {\n this.refs[REF_PICKER].setNativeProps({\n selected: this.state.selectedIndex,\n });\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n this._lastNativePosition = this.state.selectedIndex;\n }\n }\n}\n\nconst styles = StyleSheet.create({\n pickerAndroid: {\n // The picker will conform to whatever width is given, but we do\n // have to set the component's height explicitly on the\n // surrounding view to ensure it gets rendered.\n // TODO would be better to export a native constant for this,\n // like in iOS the RCTDatePickerManager.m\n height: 50,\n },\n});\n\nmodule.exports = PickerAndroid;\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\nconst React = require('React');\nconst StyleSheet = require('StyleSheet');\nconst Text = require('Text');\nconst View = require('View');\n\nclass DummyProgressViewIOS extends React.Component {\n render() {\n return (\n \n \n ProgressViewIOS is not supported on this platform!\n \n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n dummy: {\n width: 120,\n height: 20,\n backgroundColor: '#ffbcbc',\n borderWidth: 1,\n borderColor: 'red',\n alignItems: 'center',\n justifyContent: 'center',\n },\n text: {\n color: '#333333',\n margin: 5,\n fontSize: 10,\n },\n});\n\nmodule.exports = DummyProgressViewIOS;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nmodule.exports = require('View');\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\nconst React = require('React');\nconst StyleSheet = require('StyleSheet');\nconst Text = require('Text');\nconst View = require('View');\n\nclass DummySegmentedControlIOS extends React.Component {\n render() {\n return (\n \n \n SegmentedControlIOS is not supported on this platform!\n \n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n dummy: {\n width: 120,\n height: 50,\n backgroundColor: '#ffbcbc',\n borderWidth: 1,\n borderColor: 'red',\n alignItems: 'center',\n justifyContent: 'center',\n },\n text: {\n color: '#333333',\n margin: 5,\n fontSize: 10,\n },\n});\n\nmodule.exports = DummySegmentedControlIOS;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst ReactNative = require('ReactNative');\nconst Platform = require('Platform');\nconst React = require('React');\nconst StyleSheet = require('StyleSheet');\n\nconst requireNativeComponent = require('requireNativeComponent');\n\nimport type {ImageSource} from 'ImageSource';\nimport type {ViewStyleProp} from 'StyleSheet';\nimport type {ColorValue} from 'StyleSheetTypes';\nimport type {ViewProps} from 'ViewPropTypes';\n\nconst RCTSlider = requireNativeComponent('RCTSlider');\n\ntype Event = Object;\n\ntype IOSProps = $ReadOnly<{|\n /**\n * Assigns a single image for the track. Only static images are supported.\n * The center pixel of the image will be stretched to fill the track.\n */\n trackImage?: ?ImageSource,\n\n /**\n * Assigns a minimum track image. Only static images are supported. The\n * rightmost pixel of the image will be stretched to fill the track.\n */\n minimumTrackImage?: ?ImageSource,\n\n /**\n * Assigns a maximum track image. Only static images are supported. The\n * leftmost pixel of the image will be stretched to fill the track.\n */\n maximumTrackImage?: ?ImageSource,\n\n /**\n * Sets an image for the thumb. Only static images are supported.\n */\n thumbImage?: ?ImageSource,\n|}>;\n\ntype AndroidProps = $ReadOnly<{|\n /**\n * Color of the foreground switch grip.\n * @platform android\n */\n thumbTintColor?: ?ColorValue,\n|}>;\n\ntype Props = $ReadOnly<{|\n ...ViewProps,\n ...IOSProps,\n ...AndroidProps,\n\n /**\n * Used to style and layout the `Slider`. See `StyleSheet.js` and\n * `ViewStylePropTypes.js` for more info.\n */\n style?: ?ViewStyleProp,\n\n /**\n * Initial value of the slider. The value should be between minimumValue\n * and maximumValue, which default to 0 and 1 respectively.\n * Default value is 0.\n *\n * *This is not a controlled component*, you don't need to update the\n * value during dragging.\n */\n value?: ?number,\n\n /**\n * Step value of the slider. The value should be\n * between 0 and (maximumValue - minimumValue).\n * Default value is 0.\n */\n step?: ?number,\n\n /**\n * Initial minimum value of the slider. Default value is 0.\n */\n minimumValue?: ?number,\n\n /**\n * Initial maximum value of the slider. Default value is 1.\n */\n maximumValue?: ?number,\n\n /**\n * The color used for the track to the left of the button.\n * Overrides the default blue gradient image on iOS.\n */\n minimumTrackTintColor?: ?ColorValue,\n\n /**\n * The color used for the track to the right of the button.\n * Overrides the default blue gradient image on iOS.\n */\n maximumTrackTintColor?: ?ColorValue,\n\n /**\n * If true the user won't be able to move the slider.\n * Default value is false.\n */\n disabled?: ?boolean,\n\n /**\n * Callback continuously called while the user is dragging the slider.\n */\n onValueChange?: ?Function,\n\n /**\n * Callback that is called when the user releases the slider,\n * regardless if the value has changed. The current value is passed\n * as an argument to the callback handler.\n */\n onSlidingComplete?: ?Function,\n\n /**\n * Used to locate this view in UI automation tests.\n */\n testID?: ?string,\n|}>;\n\n/**\n * A component used to select a single value from a range of values.\n *\n * ### Usage\n *\n * The example below shows how to use `Slider` to change\n * a value used by `Text`. The value is stored using\n * the state of the root component (`App`). The same component\n * subscribes to the `onValueChange` of `Slider` and changes\n * the value using `setState`.\n *\n *```\n * import React from 'react';\n * import { StyleSheet, Text, View, Slider } from 'react-native';\n *\n * export default class App extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = {\n * value: 50\n * }\n * }\n *\n * change(value) {\n * this.setState(() => {\n * return {\n * value: parseFloat(value)\n * };\n * });\n * }\n *\n * render() {\n * const {value} = this.state;\n * return (\n * \n * {String(value)}\n * \n * \n * );\n * }\n * }\n *\n * const styles = StyleSheet.create({\n * container: {\n * flex: 1,\n * flexDirection: 'column',\n * justifyContent: 'center'\n * },\n * text: {\n * fontSize: 50,\n * textAlign: 'center'\n * }\n * });\n *```\n *\n */\nconst Slider = (\n props: Props,\n forwardedRef?: ?React.Ref<'RCTActivityIndicatorView'>,\n) => {\n const style = StyleSheet.compose(\n styles.slider,\n props.style,\n );\n\n const onValueChange =\n props.onValueChange &&\n ((event: Event) => {\n let userEvent = true;\n if (Platform.OS === 'android') {\n // On Android there's a special flag telling us the user is\n // dragging the slider.\n userEvent = event.nativeEvent.fromUser;\n }\n props.onValueChange &&\n userEvent &&\n props.onValueChange(event.nativeEvent.value);\n });\n\n const onChange = onValueChange;\n\n const onSlidingComplete =\n props.onSlidingComplete &&\n ((event: Event) => {\n props.onSlidingComplete &&\n props.onSlidingComplete(event.nativeEvent.value);\n });\n\n return (\n true}\n onResponderTerminationRequest={() => false}\n />\n );\n};\n\n// $FlowFixMe - TODO T29156721 `React.forwardRef` is not defined in Flow, yet.\nconst SliderWithRef = React.forwardRef(Slider);\n\nSliderWithRef.defaultProps = {\n disabled: false,\n value: 0,\n minimumValue: 0,\n maximumValue: 1,\n step: 0,\n};\n\nlet styles;\nif (Platform.OS === 'ios') {\n styles = StyleSheet.create({\n slider: {\n height: 40,\n },\n });\n} else {\n styles = StyleSheet.create({\n slider: {},\n });\n}\n\nmodule.exports = (SliderWithRef: Class>);\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\nmodule.exports = require('UnimplementedView');\n","/**\n * Copyright (c) 2013-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 * @flow\n * @format\n */\n\n'use strict';\n\nconst SwitchNativeComponent = require('SwitchNativeComponent');\nconst Platform = require('Platform');\nconst React = require('React');\nconst StyleSheet = require('StyleSheet');\n\nimport type {SwitchChangeEvent} from 'CoreEventTypes';\nimport type {ColorValue} from 'StyleSheetTypes';\nimport type {ViewProps} from 'ViewPropTypes';\nimport type {NativeAndroidProps, NativeIOSProps} from 'SwitchNativeComponent';\n\nexport type Props = $ReadOnly<{|\n ...ViewProps,\n\n /**\n * Whether the switch is disabled. Defaults to false.\n */\n disabled?: ?boolean,\n\n /**\n * Boolean value of the switch. Defaults to false.\n */\n value?: ?boolean,\n\n /**\n * Custom color for the switch thumb.\n */\n thumbColor?: ?ColorValue,\n\n /**\n * Custom colors for the switch track.\n *\n * NOTE: On iOS when the switch value is false, the track shrinks into the\n * border. If you want to change the color of the background exposed by the\n * shrunken track, use `ios_backgroundColor`.\n */\n trackColor?: ?$ReadOnly<{|\n false?: ?ColorValue,\n true?: ?ColorValue,\n |}>,\n\n /**\n * On iOS, custom color for the background. This background color can be seen\n * either when the switch value is false or when the switch is disabled (and\n * the switch is translucent).\n */\n ios_backgroundColor?: ?ColorValue,\n\n /**\n * Called when the user tries to change the value of the switch.\n *\n * Receives the change event as an argument. If you want to only receive the\n * new value, use `onValueChange` instead.\n */\n onChange?: ?(event: SwitchChangeEvent) => Promise | void,\n\n /**\n * Called when the user tries to change the value of the switch.\n *\n * Receives the new value as an argument. If you want to instead receive an\n * event, use `onChange`.\n */\n onValueChange?: ?(value: boolean) => Promise | void,\n|}>;\n\n/**\n * A visual toggle between two mutually exclusive states.\n *\n * This is a controlled component that requires an `onValueChange` callback that\n * updates the `value` prop in order for the component to reflect user actions.\n * If the `value` prop is not updated, the component will continue to render the\n * supplied `value` prop instead of the expected result of any user actions.\n */\nclass Switch extends React.Component {\n _nativeSwitchRef: ?React.ElementRef;\n\n render() {\n const {\n disabled,\n ios_backgroundColor,\n onChange,\n onValueChange,\n style,\n thumbColor,\n trackColor,\n value,\n ...props\n } = this.props;\n\n // Support deprecated color props.\n let _thumbColor = thumbColor;\n let _trackColorForFalse = trackColor?.false;\n let _trackColorForTrue = trackColor?.true;\n\n // TODO: Remove support for these props after a couple releases.\n const {thumbTintColor, tintColor, onTintColor} = (props: $FlowFixMe);\n if (thumbTintColor != null) {\n _thumbColor = thumbTintColor;\n if (__DEV__) {\n console.warn(\n 'Switch: `thumbTintColor` is deprecated, use `thumbColor` instead.',\n );\n }\n }\n if (tintColor != null) {\n _trackColorForFalse = tintColor;\n if (__DEV__) {\n console.warn(\n 'Switch: `tintColor` is deprecated, use `trackColor` instead.',\n );\n }\n }\n if (onTintColor != null) {\n _trackColorForTrue = onTintColor;\n if (__DEV__) {\n console.warn(\n 'Switch: `onTintColor` is deprecated, use `trackColor` instead.',\n );\n }\n }\n\n const platformProps =\n Platform.OS === 'android'\n ? ({\n enabled: disabled !== true,\n on: value === true,\n style,\n thumbTintColor: _thumbColor,\n trackTintColor:\n value === true ? _trackColorForTrue : _trackColorForFalse,\n }: NativeAndroidProps)\n : ({\n disabled,\n onTintColor: _trackColorForTrue,\n style: StyleSheet.compose(\n {height: 31, width: 51},\n StyleSheet.compose(\n style,\n ios_backgroundColor == null\n ? null\n : {\n backgroundColor: ios_backgroundColor,\n borderRadius: 16,\n },\n ),\n ),\n thumbTintColor: _thumbColor,\n tintColor: _trackColorForFalse,\n value: value === true,\n }: NativeIOSProps);\n\n return (\n \n );\n }\n\n _handleChange = (event: SwitchChangeEvent) => {\n if (this._nativeSwitchRef == null) {\n return;\n }\n\n // Force value of native switch in order to control it.\n const value = this.props.value === true;\n if (Platform.OS === 'android') {\n this._nativeSwitchRef.setNativeProps({on: value});\n } else {\n this._nativeSwitchRef.setNativeProps({value});\n }\n\n if (this.props.onChange != null) {\n this.props.onChange(event);\n }\n\n if (this.props.onValueChange != null) {\n this.props.onValueChange(event.nativeEvent.value);\n }\n };\n\n _handleSwitchNativeComponentRef = (\n ref: ?React.ElementRef,\n ) => {\n this._nativeSwitchRef = ref;\n };\n}\n\nconst returnsFalse = () => false;\nconst returnsTrue = () => true;\n\nmodule.exports = Switch;\n","/**\n * Copyright (c) 2013-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 * @flow\n * @format\n */\n\n'use strict';\n\nconst Platform = require('Platform');\nconst ReactNative = require('ReactNative');\n\nconst requireNativeComponent = require('requireNativeComponent');\n\nimport type {SwitchChangeEvent} from 'CoreEventTypes';\nimport type {ViewProps} from 'ViewPropTypes';\n\n// @see ReactSwitchManager.java\nexport type NativeAndroidProps = $ReadOnly<{|\n ...ViewProps,\n enabled?: ?boolean,\n on?: ?boolean,\n onChange?: ?(event: SwitchChangeEvent) => mixed,\n thumbTintColor?: ?string,\n trackTintColor?: ?string,\n|}>;\n\n// @see RCTSwitchManager.m\nexport type NativeIOSProps = $ReadOnly<{|\n ...ViewProps,\n disabled?: ?boolean,\n onChange?: ?(event: SwitchChangeEvent) => mixed,\n onTintColor?: ?string,\n thumbTintColor?: ?string,\n tintColor?: ?string,\n value?: ?boolean,\n|}>;\n\ntype SwitchNativeComponentType = Class<\n ReactNative.NativeComponent<\n $ReadOnly<{|\n ...NativeAndroidProps,\n ...NativeIOSProps,\n |}>,\n >,\n>;\n\nconst SwitchNativeComponent: SwitchNativeComponentType =\n Platform.OS === 'android'\n ? (requireNativeComponent('AndroidSwitch'): any)\n : (requireNativeComponent('RCTSwitch'): any);\n\nmodule.exports = SwitchNativeComponent;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nimport type {Props as FlatListProps} from 'FlatList';\nimport type {renderItemType} from 'VirtualizedList';\n\nconst PropTypes = require('prop-types');\nconst React = require('React');\nconst SwipeableRow = require('SwipeableRow');\nconst FlatList = require('FlatList');\n\ntype SwipableListProps = {\n /**\n * To alert the user that swiping is possible, the first row can bounce\n * on component mount.\n */\n bounceFirstRowOnMount: boolean,\n // Maximum distance to open to after a swipe\n maxSwipeDistance: number | (Object => number),\n // Callback method to render the view that will be unveiled on swipe\n renderQuickActions: renderItemType,\n};\n\ntype Props = SwipableListProps & FlatListProps;\n\ntype State = {\n openRowKey: ?string,\n};\n\n/**\n * A container component that renders multiple SwipeableRow's in a FlatList\n * implementation. This is designed to be a drop-in replacement for the\n * standard React Native `FlatList`, so use it as if it were a FlatList, but\n * with extra props, i.e.\n *\n * \n *\n * SwipeableRow can be used independently of this component, but the main\n * benefit of using this component is\n *\n * - It ensures that at most 1 row is swiped open (auto closes others)\n * - It can bounce the 1st row of the list so users know it's swipeable\n * - Increase performance on iOS by locking list swiping when row swiping is occurring\n * - More to come\n */\n\nclass SwipeableFlatList extends React.Component, State> {\n props: Props;\n state: State;\n\n _flatListRef: ?FlatList = null;\n _shouldBounceFirstRowOnMount: boolean = false;\n\n static propTypes = {\n ...FlatList.propTypes,\n\n /**\n * To alert the user that swiping is possible, the first row can bounce\n * on component mount.\n */\n bounceFirstRowOnMount: PropTypes.bool.isRequired,\n\n // Maximum distance to open to after a swipe\n maxSwipeDistance: PropTypes.oneOfType([PropTypes.number, PropTypes.func])\n .isRequired,\n\n // Callback method to render the view that will be unveiled on swipe\n renderQuickActions: PropTypes.func.isRequired,\n };\n\n static defaultProps = {\n ...FlatList.defaultProps,\n bounceFirstRowOnMount: true,\n renderQuickActions: () => null,\n };\n\n constructor(props: Props, context: any): void {\n super(props, context);\n this.state = {\n openRowKey: null,\n };\n\n this._shouldBounceFirstRowOnMount = this.props.bounceFirstRowOnMount;\n }\n\n render(): React.Node {\n return (\n {\n this._flatListRef = ref;\n }}\n onScroll={this._onScroll}\n renderItem={this._renderItem}\n extraData={this.state}\n />\n );\n }\n\n _onScroll = (e): void => {\n // Close any opens rows on ListView scroll\n if (this.state.openRowKey) {\n this.setState({\n openRowKey: null,\n });\n }\n\n this.props.onScroll && this.props.onScroll(e);\n };\n\n _renderItem = (info: Object): ?React.Element => {\n const slideoutView = this.props.renderQuickActions(info);\n const key = this.props.keyExtractor(info.item, info.index);\n\n // If renderQuickActions is unspecified or returns falsey, don't allow swipe\n if (!slideoutView) {\n return this.props.renderItem(info);\n }\n\n let shouldBounceOnMount = false;\n if (this._shouldBounceFirstRowOnMount) {\n this._shouldBounceFirstRowOnMount = false;\n shouldBounceOnMount = true;\n }\n\n return (\n this._onOpen(key)}\n onClose={() => this._onClose(key)}\n shouldBounceOnMount={shouldBounceOnMount}\n onSwipeEnd={this._setListViewScrollable}\n onSwipeStart={this._setListViewNotScrollable}>\n {this.props.renderItem(info)}\n \n );\n };\n\n // This enables rows having variable width slideoutView.\n _getMaxSwipeDistance(info: Object): number {\n if (typeof this.props.maxSwipeDistance === 'function') {\n return this.props.maxSwipeDistance(info);\n }\n\n return this.props.maxSwipeDistance;\n }\n\n _setListViewScrollableTo(value: boolean) {\n if (this._flatListRef) {\n this._flatListRef.setNativeProps({\n scrollEnabled: value,\n });\n }\n }\n\n _setListViewScrollable = () => {\n this._setListViewScrollableTo(true);\n };\n\n _setListViewNotScrollable = () => {\n this._setListViewScrollableTo(false);\n };\n\n _onOpen(key: any): void {\n this.setState({\n openRowKey: key,\n });\n }\n\n _onClose(key: any): void {\n this.setState({\n openRowKey: null,\n });\n }\n}\n\nmodule.exports = SwipeableFlatList;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst Animated = require('Animated');\nconst I18nManager = require('I18nManager');\nconst PanResponder = require('PanResponder');\nconst React = require('React');\nconst PropTypes = require('prop-types');\nconst StyleSheet = require('StyleSheet');\n/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error\n * found when Flow v0.54 was deployed. To see the error delete this comment and\n * run Flow. */\nconst TimerMixin = require('react-timer-mixin');\nconst View = require('View');\n\nconst createReactClass = require('create-react-class');\nconst emptyFunction = require('fbjs/lib/emptyFunction');\n\nconst IS_RTL = I18nManager.isRTL;\n\n// NOTE: Eventually convert these consts to an input object of configurations\n\n// Position of the left of the swipable item when closed\nconst CLOSED_LEFT_POSITION = 0;\n// Minimum swipe distance before we recognize it as such\nconst HORIZONTAL_SWIPE_DISTANCE_THRESHOLD = 10;\n// Minimum swipe speed before we fully animate the user's action (open/close)\nconst HORIZONTAL_FULL_SWIPE_SPEED_THRESHOLD = 0.3;\n// Factor to divide by to get slow speed; i.e. 4 means 1/4 of full speed\nconst SLOW_SPEED_SWIPE_FACTOR = 4;\n// Time, in milliseconds, of how long the animated swipe should be\nconst SWIPE_DURATION = 300;\n\n/**\n * On SwipeableListView mount, the 1st item will bounce to show users it's\n * possible to swipe\n */\nconst ON_MOUNT_BOUNCE_DELAY = 700;\nconst ON_MOUNT_BOUNCE_DURATION = 400;\n\n// Distance left of closed position to bounce back when right-swiping from closed\nconst RIGHT_SWIPE_BOUNCE_BACK_DISTANCE = 30;\nconst RIGHT_SWIPE_BOUNCE_BACK_DURATION = 300;\n/**\n * Max distance of right swipe to allow (right swipes do functionally nothing).\n * Must be multiplied by SLOW_SPEED_SWIPE_FACTOR because gestureState.dx tracks\n * how far the finger swipes, and not the actual animation distance.\n */\nconst RIGHT_SWIPE_THRESHOLD = 30 * SLOW_SPEED_SWIPE_FACTOR;\n\ntype Props = $ReadOnly<{|\n children?: ?React.Node,\n isOpen?: ?boolean,\n maxSwipeDistance?: ?number,\n onClose?: ?Function,\n onOpen?: ?Function,\n onSwipeEnd?: ?Function,\n onSwipeStart?: ?Function,\n preventSwipeRight?: ?boolean,\n shouldBounceOnMount?: ?boolean,\n slideoutView?: ?React.Node,\n swipeThreshold?: ?number,\n|}>;\n\n/**\n * Creates a swipable row that allows taps on the main item and a custom View\n * on the item hidden behind the row. Typically this should be used in\n * conjunction with SwipeableListView for additional functionality, but can be\n * used in a normal ListView. See the renderRow for SwipeableListView to see how\n * to use this component separately.\n */\nconst SwipeableRow = createReactClass({\n displayName: 'SwipeableRow',\n _panResponder: {},\n _previousLeft: CLOSED_LEFT_POSITION,\n\n mixins: [TimerMixin],\n\n propTypes: {\n children: PropTypes.any,\n isOpen: PropTypes.bool,\n preventSwipeRight: PropTypes.bool,\n maxSwipeDistance: PropTypes.number.isRequired,\n onOpen: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n onSwipeEnd: PropTypes.func.isRequired,\n onSwipeStart: PropTypes.func.isRequired,\n // Should bounce the row on mount\n shouldBounceOnMount: PropTypes.bool,\n /**\n * A ReactElement that is unveiled when the user swipes\n */\n slideoutView: PropTypes.node.isRequired,\n /**\n * The minimum swipe distance required before fully animating the swipe. If\n * the user swipes less than this distance, the item will return to its\n * previous (open/close) position.\n */\n swipeThreshold: PropTypes.number.isRequired,\n },\n\n getInitialState(): Object {\n return {\n currentLeft: new Animated.Value(this._previousLeft),\n /**\n * In order to render component A beneath component B, A must be rendered\n * before B. However, this will cause \"flickering\", aka we see A briefly\n * then B. To counter this, _isSwipeableViewRendered flag is used to set\n * component A to be transparent until component B is loaded.\n */\n isSwipeableViewRendered: false,\n rowHeight: (null: ?number),\n };\n },\n\n getDefaultProps(): Object {\n return {\n isOpen: false,\n preventSwipeRight: false,\n maxSwipeDistance: 0,\n onOpen: emptyFunction,\n onClose: emptyFunction,\n onSwipeEnd: emptyFunction,\n onSwipeStart: emptyFunction,\n swipeThreshold: 30,\n };\n },\n\n UNSAFE_componentWillMount(): void {\n this._panResponder = PanResponder.create({\n onMoveShouldSetPanResponderCapture: this\n ._handleMoveShouldSetPanResponderCapture,\n onPanResponderGrant: this._handlePanResponderGrant,\n onPanResponderMove: this._handlePanResponderMove,\n onPanResponderRelease: this._handlePanResponderEnd,\n onPanResponderTerminationRequest: this._onPanResponderTerminationRequest,\n onPanResponderTerminate: this._handlePanResponderEnd,\n onShouldBlockNativeResponder: (event, gestureState) => false,\n });\n },\n\n componentDidMount(): void {\n if (this.props.shouldBounceOnMount) {\n /**\n * Do the on mount bounce after a delay because if we animate when other\n * components are loading, the animation will be laggy\n */\n this.setTimeout(() => {\n this._animateBounceBack(ON_MOUNT_BOUNCE_DURATION);\n }, ON_MOUNT_BOUNCE_DELAY);\n }\n },\n\n UNSAFE_componentWillReceiveProps(nextProps: Object): void {\n /**\n * We do not need an \"animateOpen(noCallback)\" because this animation is\n * handled internally by this component.\n */\n if (this.props.isOpen && !nextProps.isOpen) {\n this._animateToClosedPosition();\n }\n },\n\n render(): React.Element {\n // The view hidden behind the main view\n let slideOutView;\n if (this.state.isSwipeableViewRendered && this.state.rowHeight) {\n slideOutView = (\n \n {this.props.slideoutView}\n \n );\n }\n\n // The swipeable item\n const swipeableView = (\n \n {this.props.children}\n \n );\n\n return (\n \n {slideOutView}\n {swipeableView}\n \n );\n },\n\n close(): void {\n this.props.onClose();\n this._animateToClosedPosition();\n },\n\n _onSwipeableViewLayout(event: Object): void {\n this.setState({\n isSwipeableViewRendered: true,\n rowHeight: event.nativeEvent.layout.height,\n });\n },\n\n _handleMoveShouldSetPanResponderCapture(\n event: Object,\n gestureState: Object,\n ): boolean {\n // Decides whether a swipe is responded to by this component or its child\n return gestureState.dy < 10 && this._isValidSwipe(gestureState);\n },\n\n _handlePanResponderGrant(event: Object, gestureState: Object): void {},\n\n _handlePanResponderMove(event: Object, gestureState: Object): void {\n if (this._isSwipingExcessivelyRightFromClosedPosition(gestureState)) {\n return;\n }\n\n this.props.onSwipeStart();\n\n if (this._isSwipingRightFromClosed(gestureState)) {\n this._swipeSlowSpeed(gestureState);\n } else {\n this._swipeFullSpeed(gestureState);\n }\n },\n\n _isSwipingRightFromClosed(gestureState: Object): boolean {\n const gestureStateDx = IS_RTL ? -gestureState.dx : gestureState.dx;\n return this._previousLeft === CLOSED_LEFT_POSITION && gestureStateDx > 0;\n },\n\n _swipeFullSpeed(gestureState: Object): void {\n this.state.currentLeft.setValue(this._previousLeft + gestureState.dx);\n },\n\n _swipeSlowSpeed(gestureState: Object): void {\n this.state.currentLeft.setValue(\n this._previousLeft + gestureState.dx / SLOW_SPEED_SWIPE_FACTOR,\n );\n },\n\n _isSwipingExcessivelyRightFromClosedPosition(gestureState: Object): boolean {\n /**\n * We want to allow a BIT of right swipe, to allow users to know that\n * swiping is available, but swiping right does not do anything\n * functionally.\n */\n const gestureStateDx = IS_RTL ? -gestureState.dx : gestureState.dx;\n return (\n this._isSwipingRightFromClosed(gestureState) &&\n gestureStateDx > RIGHT_SWIPE_THRESHOLD\n );\n },\n\n _onPanResponderTerminationRequest(\n event: Object,\n gestureState: Object,\n ): boolean {\n return false;\n },\n\n _animateTo(\n toValue: number,\n duration: number = SWIPE_DURATION,\n callback: Function = emptyFunction,\n ): void {\n Animated.timing(this.state.currentLeft, {\n duration,\n toValue,\n useNativeDriver: true,\n }).start(() => {\n this._previousLeft = toValue;\n callback();\n });\n },\n\n _animateToOpenPosition(): void {\n const maxSwipeDistance = IS_RTL\n ? -this.props.maxSwipeDistance\n : this.props.maxSwipeDistance;\n this._animateTo(-maxSwipeDistance);\n },\n\n _animateToOpenPositionWith(speed: number, distMoved: number): void {\n /**\n * Ensure the speed is at least the set speed threshold to prevent a slow\n * swiping animation\n */\n speed =\n speed > HORIZONTAL_FULL_SWIPE_SPEED_THRESHOLD\n ? speed\n : HORIZONTAL_FULL_SWIPE_SPEED_THRESHOLD;\n /**\n * Calculate the duration the row should take to swipe the remaining distance\n * at the same speed the user swiped (or the speed threshold)\n */\n const duration = Math.abs(\n (this.props.maxSwipeDistance - Math.abs(distMoved)) / speed,\n );\n const maxSwipeDistance = IS_RTL\n ? -this.props.maxSwipeDistance\n : this.props.maxSwipeDistance;\n this._animateTo(-maxSwipeDistance, duration);\n },\n\n _animateToClosedPosition(duration: number = SWIPE_DURATION): void {\n this._animateTo(CLOSED_LEFT_POSITION, duration);\n },\n\n _animateToClosedPositionDuringBounce(): void {\n this._animateToClosedPosition(RIGHT_SWIPE_BOUNCE_BACK_DURATION);\n },\n\n _animateBounceBack(duration: number): void {\n /**\n * When swiping right, we want to bounce back past closed position on release\n * so users know they should swipe right to get content.\n */\n const swipeBounceBackDistance = IS_RTL\n ? -RIGHT_SWIPE_BOUNCE_BACK_DISTANCE\n : RIGHT_SWIPE_BOUNCE_BACK_DISTANCE;\n this._animateTo(\n -swipeBounceBackDistance,\n duration,\n this._animateToClosedPositionDuringBounce,\n );\n },\n\n // Ignore swipes due to user's finger moving slightly when tapping\n _isValidSwipe(gestureState: Object): boolean {\n if (\n this.props.preventSwipeRight &&\n this._previousLeft === CLOSED_LEFT_POSITION &&\n gestureState.dx > 0\n ) {\n return false;\n }\n\n return Math.abs(gestureState.dx) > HORIZONTAL_SWIPE_DISTANCE_THRESHOLD;\n },\n\n _shouldAnimateRemainder(gestureState: Object): boolean {\n /**\n * If user has swiped past a certain distance, animate the rest of the way\n * if they let go\n */\n return (\n Math.abs(gestureState.dx) > this.props.swipeThreshold ||\n gestureState.vx > HORIZONTAL_FULL_SWIPE_SPEED_THRESHOLD\n );\n },\n\n _handlePanResponderEnd(event: Object, gestureState: Object): void {\n const horizontalDistance = IS_RTL ? -gestureState.dx : gestureState.dx;\n if (this._isSwipingRightFromClosed(gestureState)) {\n this.props.onOpen();\n this._animateBounceBack(RIGHT_SWIPE_BOUNCE_BACK_DURATION);\n } else if (this._shouldAnimateRemainder(gestureState)) {\n if (horizontalDistance < 0) {\n // Swiped left\n this.props.onOpen();\n this._animateToOpenPositionWith(gestureState.vx, horizontalDistance);\n } else {\n // Swiped right\n this.props.onClose();\n this._animateToClosedPosition();\n }\n } else {\n if (this._previousLeft === CLOSED_LEFT_POSITION) {\n this._animateToClosedPosition();\n } else {\n this._animateToOpenPosition();\n }\n }\n\n this.props.onSwipeEnd();\n },\n});\n\n// TODO: Delete this when `SwipeableRow` uses class syntax.\nclass TypedSwipeableRow extends React.Component {\n close() {}\n}\n\nconst styles = StyleSheet.create({\n slideOutContainer: {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n },\n});\n\nmodule.exports = ((SwipeableRow: any): Class);\n","/**\n * Copyright (c) 2013-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 * @format\n */\n\n'use strict';\n\nconst InteractionManager = require('./InteractionManager');\nconst TouchHistoryMath = require('./TouchHistoryMath');\n\nconst currentCentroidXOfTouchesChangedAfter =\n TouchHistoryMath.currentCentroidXOfTouchesChangedAfter;\nconst currentCentroidYOfTouchesChangedAfter =\n TouchHistoryMath.currentCentroidYOfTouchesChangedAfter;\nconst previousCentroidXOfTouchesChangedAfter =\n TouchHistoryMath.previousCentroidXOfTouchesChangedAfter;\nconst previousCentroidYOfTouchesChangedAfter =\n TouchHistoryMath.previousCentroidYOfTouchesChangedAfter;\nconst currentCentroidX = TouchHistoryMath.currentCentroidX;\nconst currentCentroidY = TouchHistoryMath.currentCentroidY;\n\n/**\n * `PanResponder` reconciles several touches into a single gesture. It makes\n * single-touch gestures resilient to extra touches, and can be used to\n * recognize simple multi-touch gestures.\n *\n * By default, `PanResponder` holds an `InteractionManager` handle to block\n * long-running JS events from interrupting active gestures.\n *\n * It provides a predictable wrapper of the responder handlers provided by the\n * [gesture responder system](docs/gesture-responder-system.html).\n * For each handler, it provides a new `gestureState` object alongside the\n * native event object:\n *\n * ```\n * onPanResponderMove: (event, gestureState) => {}\n * ```\n *\n * A native event is a synthetic touch event with the following form:\n *\n * - `nativeEvent`\n * + `changedTouches` - Array of all touch events that have changed since the last event\n * + `identifier` - The ID of the touch\n * + `locationX` - The X position of the touch, relative to the element\n * + `locationY` - The Y position of the touch, relative to the element\n * + `pageX` - The X position of the touch, relative to the root element\n * + `pageY` - The Y position of the touch, relative to the root element\n * + `target` - The node id of the element receiving the touch event\n * + `timestamp` - A time identifier for the touch, useful for velocity calculation\n * + `touches` - Array of all current touches on the screen\n *\n * A `gestureState` object has the following:\n *\n * - `stateID` - ID of the gestureState- persisted as long as there at least\n * one touch on screen\n * - `moveX` - the latest screen coordinates of the recently-moved touch\n * - `moveY` - the latest screen coordinates of the recently-moved touch\n * - `x0` - the screen coordinates of the responder grant\n * - `y0` - the screen coordinates of the responder grant\n * - `dx` - accumulated distance of the gesture since the touch started\n * - `dy` - accumulated distance of the gesture since the touch started\n * - `vx` - current velocity of the gesture\n * - `vy` - current velocity of the gesture\n * - `numberActiveTouches` - Number of touches currently on screen\n *\n * ### Basic Usage\n *\n * ```\n * componentWillMount: function() {\n * this._panResponder = PanResponder.create({\n * // Ask to be the responder:\n * onStartShouldSetPanResponder: (evt, gestureState) => true,\n * onStartShouldSetPanResponderCapture: (evt, gestureState) => true,\n * onMoveShouldSetPanResponder: (evt, gestureState) => true,\n * onMoveShouldSetPanResponderCapture: (evt, gestureState) => true,\n *\n * onPanResponderGrant: (evt, gestureState) => {\n * // The gesture has started. Show visual feedback so the user knows\n * // what is happening!\n *\n * // gestureState.d{x,y} will be set to zero now\n * },\n * onPanResponderMove: (evt, gestureState) => {\n * // The most recent move distance is gestureState.move{X,Y}\n *\n * // The accumulated gesture distance since becoming responder is\n * // gestureState.d{x,y}\n * },\n * onPanResponderTerminationRequest: (evt, gestureState) => true,\n * onPanResponderRelease: (evt, gestureState) => {\n * // The user has released all touches while this view is the\n * // responder. This typically means a gesture has succeeded\n * },\n * onPanResponderTerminate: (evt, gestureState) => {\n * // Another component has become the responder, so this gesture\n * // should be cancelled\n * },\n * onShouldBlockNativeResponder: (evt, gestureState) => {\n * // Returns whether this component should block native components from becoming the JS\n * // responder. Returns true by default. Is currently only supported on android.\n * return true;\n * },\n * });\n * },\n *\n * render: function() {\n * return (\n * \n * );\n * },\n *\n * ```\n *\n * ### Working Example\n *\n * To see it in action, try the\n * [PanResponder example in RNTester](https://github.com/facebook/react-native/blob/master/RNTester/js/PanResponderExample.js)\n */\n\nconst PanResponder = {\n /**\n *\n * A graphical explanation of the touch data flow:\n *\n * +----------------------------+ +--------------------------------+\n * | ResponderTouchHistoryStore | |TouchHistoryMath |\n * +----------------------------+ +----------+---------------------+\n * |Global store of touchHistory| |Allocation-less math util |\n * |including activeness, start | |on touch history (centroids |\n * |position, prev/cur position.| |and multitouch movement etc) |\n * | | | |\n * +----^-----------------------+ +----^---------------------------+\n * | |\n * | (records relevant history |\n * | of touches relevant for |\n * | implementing higher level |\n * | gestures) |\n * | |\n * +----+-----------------------+ +----|---------------------------+\n * | ResponderEventPlugin | | | Your App/Component |\n * +----------------------------+ +----|---------------------------+\n * |Negotiates which view gets | Low level | | High level |\n * |onResponderMove events. | events w/ | +-+-------+ events w/ |\n * |Also records history into | touchHistory| | Pan | multitouch + |\n * |ResponderTouchHistoryStore. +---------------->Responder+-----> accumulative|\n * +----------------------------+ attached to | | | distance and |\n * each event | +---------+ velocity. |\n * | |\n * | |\n * +--------------------------------+\n *\n *\n *\n * Gesture that calculates cumulative movement over time in a way that just\n * \"does the right thing\" for multiple touches. The \"right thing\" is very\n * nuanced. When moving two touches in opposite directions, the cumulative\n * distance is zero in each dimension. When two touches move in parallel five\n * pixels in the same direction, the cumulative distance is five, not ten. If\n * two touches start, one moves five in a direction, then stops and the other\n * touch moves fives in the same direction, the cumulative distance is ten.\n *\n * This logic requires a kind of processing of time \"clusters\" of touch events\n * so that two touch moves that essentially occur in parallel but move every\n * other frame respectively, are considered part of the same movement.\n *\n * Explanation of some of the non-obvious fields:\n *\n * - moveX/moveY: If no move event has been observed, then `(moveX, moveY)` is\n * invalid. If a move event has been observed, `(moveX, moveY)` is the\n * centroid of the most recently moved \"cluster\" of active touches.\n * (Currently all move have the same timeStamp, but later we should add some\n * threshold for what is considered to be \"moving\"). If a palm is\n * accidentally counted as a touch, but a finger is moving greatly, the palm\n * will move slightly, but we only want to count the single moving touch.\n * - x0/y0: Centroid location (non-cumulative) at the time of becoming\n * responder.\n * - dx/dy: Cumulative touch distance - not the same thing as sum of each touch\n * distance. Accounts for touch moves that are clustered together in time,\n * moving the same direction. Only valid when currently responder (otherwise,\n * it only represents the drag distance below the threshold).\n * - vx/vy: Velocity.\n */\n\n _initializeGestureState: function(gestureState) {\n gestureState.moveX = 0;\n gestureState.moveY = 0;\n gestureState.x0 = 0;\n gestureState.y0 = 0;\n gestureState.dx = 0;\n gestureState.dy = 0;\n gestureState.vx = 0;\n gestureState.vy = 0;\n gestureState.numberActiveTouches = 0;\n // All `gestureState` accounts for timeStamps up until:\n gestureState._accountsForMovesUpTo = 0;\n },\n\n /**\n * This is nuanced and is necessary. It is incorrect to continuously take all\n * active *and* recently moved touches, find the centroid, and track how that\n * result changes over time. Instead, we must take all recently moved\n * touches, and calculate how the centroid has changed just for those\n * recently moved touches, and append that change to an accumulator. This is\n * to (at least) handle the case where the user is moving three fingers, and\n * then one of the fingers stops but the other two continue.\n *\n * This is very different than taking all of the recently moved touches and\n * storing their centroid as `dx/dy`. For correctness, we must *accumulate\n * changes* in the centroid of recently moved touches.\n *\n * There is also some nuance with how we handle multiple moved touches in a\n * single event. With the way `ReactNativeEventEmitter` dispatches touches as\n * individual events, multiple touches generate two 'move' events, each of\n * them triggering `onResponderMove`. But with the way `PanResponder` works,\n * all of the gesture inference is performed on the first dispatch, since it\n * looks at all of the touches (even the ones for which there hasn't been a\n * native dispatch yet). Therefore, `PanResponder` does not call\n * `onResponderMove` passed the first dispatch. This diverges from the\n * typical responder callback pattern (without using `PanResponder`), but\n * avoids more dispatches than necessary.\n */\n _updateGestureStateOnMove: function(gestureState, touchHistory) {\n gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n gestureState.moveX = currentCentroidXOfTouchesChangedAfter(\n touchHistory,\n gestureState._accountsForMovesUpTo,\n );\n gestureState.moveY = currentCentroidYOfTouchesChangedAfter(\n touchHistory,\n gestureState._accountsForMovesUpTo,\n );\n const movedAfter = gestureState._accountsForMovesUpTo;\n const prevX = previousCentroidXOfTouchesChangedAfter(\n touchHistory,\n movedAfter,\n );\n const x = currentCentroidXOfTouchesChangedAfter(touchHistory, movedAfter);\n const prevY = previousCentroidYOfTouchesChangedAfter(\n touchHistory,\n movedAfter,\n );\n const y = currentCentroidYOfTouchesChangedAfter(touchHistory, movedAfter);\n const nextDX = gestureState.dx + (x - prevX);\n const nextDY = gestureState.dy + (y - prevY);\n\n // TODO: This must be filtered intelligently.\n const dt =\n touchHistory.mostRecentTimeStamp - gestureState._accountsForMovesUpTo;\n gestureState.vx = (nextDX - gestureState.dx) / dt;\n gestureState.vy = (nextDY - gestureState.dy) / dt;\n\n gestureState.dx = nextDX;\n gestureState.dy = nextDY;\n gestureState._accountsForMovesUpTo = touchHistory.mostRecentTimeStamp;\n },\n\n /**\n * @param {object} config Enhanced versions of all of the responder callbacks\n * that provide not only the typical `ResponderSyntheticEvent`, but also the\n * `PanResponder` gesture state. Simply replace the word `Responder` with\n * `PanResponder` in each of the typical `onResponder*` callbacks. For\n * example, the `config` object would look like:\n *\n * - `onMoveShouldSetPanResponder: (e, gestureState) => {...}`\n * - `onMoveShouldSetPanResponderCapture: (e, gestureState) => {...}`\n * - `onStartShouldSetPanResponder: (e, gestureState) => {...}`\n * - `onStartShouldSetPanResponderCapture: (e, gestureState) => {...}`\n * - `onPanResponderReject: (e, gestureState) => {...}`\n * - `onPanResponderGrant: (e, gestureState) => {...}`\n * - `onPanResponderStart: (e, gestureState) => {...}`\n * - `onPanResponderEnd: (e, gestureState) => {...}`\n * - `onPanResponderRelease: (e, gestureState) => {...}`\n * - `onPanResponderMove: (e, gestureState) => {...}`\n * - `onPanResponderTerminate: (e, gestureState) => {...}`\n * - `onPanResponderTerminationRequest: (e, gestureState) => {...}`\n * - `onShouldBlockNativeResponder: (e, gestureState) => {...}`\n *\n * In general, for events that have capture equivalents, we update the\n * gestureState once in the capture phase and can use it in the bubble phase\n * as well.\n *\n * Be careful with onStartShould* callbacks. They only reflect updated\n * `gestureState` for start/end events that bubble/capture to the Node.\n * Once the node is the responder, you can rely on every start/end event\n * being processed by the gesture and `gestureState` being updated\n * accordingly. (numberActiveTouches) may not be totally accurate unless you\n * are the responder.\n */\n create: function(config) {\n const interactionState = {\n handle: (null: ?number),\n };\n const gestureState = {\n // Useful for debugging\n stateID: Math.random(),\n };\n PanResponder._initializeGestureState(gestureState);\n const panHandlers = {\n onStartShouldSetResponder: function(e) {\n return config.onStartShouldSetPanResponder === undefined\n ? false\n : config.onStartShouldSetPanResponder(e, gestureState);\n },\n onMoveShouldSetResponder: function(e) {\n return config.onMoveShouldSetPanResponder === undefined\n ? false\n : config.onMoveShouldSetPanResponder(e, gestureState);\n },\n onStartShouldSetResponderCapture: function(e) {\n // TODO: Actually, we should reinitialize the state any time\n // touches.length increases from 0 active to > 0 active.\n if (e.nativeEvent.touches.length === 1) {\n PanResponder._initializeGestureState(gestureState);\n }\n gestureState.numberActiveTouches = e.touchHistory.numberActiveTouches;\n return config.onStartShouldSetPanResponderCapture !== undefined\n ? config.onStartShouldSetPanResponderCapture(e, gestureState)\n : false;\n },\n\n onMoveShouldSetResponderCapture: function(e) {\n const touchHistory = e.touchHistory;\n // Responder system incorrectly dispatches should* to current responder\n // Filter out any touch moves past the first one - we would have\n // already processed multi-touch geometry during the first event.\n if (\n gestureState._accountsForMovesUpTo ===\n touchHistory.mostRecentTimeStamp\n ) {\n return false;\n }\n PanResponder._updateGestureStateOnMove(gestureState, touchHistory);\n return config.onMoveShouldSetPanResponderCapture\n ? config.onMoveShouldSetPanResponderCapture(e, gestureState)\n : false;\n },\n\n onResponderGrant: function(e) {\n if (!interactionState.handle) {\n interactionState.handle = InteractionManager.createInteractionHandle();\n }\n gestureState.x0 = currentCentroidX(e.touchHistory);\n gestureState.y0 = currentCentroidY(e.touchHistory);\n gestureState.dx = 0;\n gestureState.dy = 0;\n if (config.onPanResponderGrant) {\n config.onPanResponderGrant(e, gestureState);\n }\n // TODO: t7467124 investigate if this can be removed\n return config.onShouldBlockNativeResponder === undefined\n ? true\n : config.onShouldBlockNativeResponder();\n },\n\n onResponderReject: function(e) {\n clearInteractionHandle(\n interactionState,\n config.onPanResponderReject,\n e,\n gestureState,\n );\n },\n\n onResponderRelease: function(e) {\n clearInteractionHandle(\n interactionState,\n config.onPanResponderRelease,\n e,\n gestureState,\n );\n PanResponder._initializeGestureState(gestureState);\n },\n\n onResponderStart: function(e) {\n const touchHistory = e.touchHistory;\n gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n if (config.onPanResponderStart) {\n config.onPanResponderStart(e, gestureState);\n }\n },\n\n onResponderMove: function(e) {\n const touchHistory = e.touchHistory;\n // Guard against the dispatch of two touch moves when there are two\n // simultaneously changed touches.\n if (\n gestureState._accountsForMovesUpTo ===\n touchHistory.mostRecentTimeStamp\n ) {\n return;\n }\n // Filter out any touch moves past the first one - we would have\n // already processed multi-touch geometry during the first event.\n PanResponder._updateGestureStateOnMove(gestureState, touchHistory);\n if (config.onPanResponderMove) {\n config.onPanResponderMove(e, gestureState);\n }\n },\n\n onResponderEnd: function(e) {\n const touchHistory = e.touchHistory;\n gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n clearInteractionHandle(\n interactionState,\n config.onPanResponderEnd,\n e,\n gestureState,\n );\n },\n\n onResponderTerminate: function(e) {\n clearInteractionHandle(\n interactionState,\n config.onPanResponderTerminate,\n e,\n gestureState,\n );\n PanResponder._initializeGestureState(gestureState);\n },\n\n onResponderTerminationRequest: function(e) {\n return config.onPanResponderTerminationRequest === undefined\n ? true\n : config.onPanResponderTerminationRequest(e, gestureState);\n },\n };\n return {\n panHandlers,\n getInteractionHandle(): ?number {\n return interactionState.handle;\n },\n };\n },\n};\n\nfunction clearInteractionHandle(\n interactionState: {handle: ?number},\n callback: Function,\n event: Object,\n gestureState: Object,\n) {\n if (interactionState.handle) {\n InteractionManager.clearInteractionHandle(interactionState.handle);\n interactionState.handle = null;\n }\n if (callback) {\n callback(event, gestureState);\n }\n}\n\nmodule.exports = PanResponder;\n","/**\n * Copyright (c) 2016-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 * @format\n */\n\nconst TouchHistoryMath = {\n /**\n * This code is optimized and not intended to look beautiful. This allows\n * computing of touch centroids that have moved after `touchesChangedAfter`\n * timeStamp. You can compute the current centroid involving all touches\n * moves after `touchesChangedAfter`, or you can compute the previous\n * centroid of all touches that were moved after `touchesChangedAfter`.\n *\n * @param {TouchHistoryMath} touchHistory Standard Responder touch track\n * data.\n * @param {number} touchesChangedAfter timeStamp after which moved touches\n * are considered \"actively moving\" - not just \"active\".\n * @param {boolean} isXAxis Consider `x` dimension vs. `y` dimension.\n * @param {boolean} ofCurrent Compute current centroid for actively moving\n * touches vs. previous centroid of now actively moving touches.\n * @return {number} value of centroid in specified dimension.\n */\n centroidDimension: function(\n touchHistory,\n touchesChangedAfter,\n isXAxis,\n ofCurrent,\n ) {\n const touchBank = touchHistory.touchBank;\n let total = 0;\n let count = 0;\n\n const oneTouchData =\n touchHistory.numberActiveTouches === 1\n ? touchHistory.touchBank[touchHistory.indexOfSingleActiveTouch]\n : null;\n\n if (oneTouchData !== null) {\n if (\n oneTouchData.touchActive &&\n oneTouchData.currentTimeStamp > touchesChangedAfter\n ) {\n total +=\n ofCurrent && isXAxis\n ? oneTouchData.currentPageX\n : ofCurrent && !isXAxis\n ? oneTouchData.currentPageY\n : !ofCurrent && isXAxis\n ? oneTouchData.previousPageX\n : oneTouchData.previousPageY;\n count = 1;\n }\n } else {\n for (let i = 0; i < touchBank.length; i++) {\n const touchTrack = touchBank[i];\n if (\n touchTrack !== null &&\n touchTrack !== undefined &&\n touchTrack.touchActive &&\n touchTrack.currentTimeStamp >= touchesChangedAfter\n ) {\n let toAdd; // Yuck, program temporarily in invalid state.\n if (ofCurrent && isXAxis) {\n toAdd = touchTrack.currentPageX;\n } else if (ofCurrent && !isXAxis) {\n toAdd = touchTrack.currentPageY;\n } else if (!ofCurrent && isXAxis) {\n toAdd = touchTrack.previousPageX;\n } else {\n toAdd = touchTrack.previousPageY;\n }\n total += toAdd;\n count++;\n }\n }\n }\n return count > 0 ? total / count : TouchHistoryMath.noCentroid;\n },\n\n currentCentroidXOfTouchesChangedAfter: function(\n touchHistory,\n touchesChangedAfter,\n ) {\n return TouchHistoryMath.centroidDimension(\n touchHistory,\n touchesChangedAfter,\n true, // isXAxis\n true, // ofCurrent\n );\n },\n\n currentCentroidYOfTouchesChangedAfter: function(\n touchHistory,\n touchesChangedAfter,\n ) {\n return TouchHistoryMath.centroidDimension(\n touchHistory,\n touchesChangedAfter,\n false, // isXAxis\n true, // ofCurrent\n );\n },\n\n previousCentroidXOfTouchesChangedAfter: function(\n touchHistory,\n touchesChangedAfter,\n ) {\n return TouchHistoryMath.centroidDimension(\n touchHistory,\n touchesChangedAfter,\n true, // isXAxis\n false, // ofCurrent\n );\n },\n\n previousCentroidYOfTouchesChangedAfter: function(\n touchHistory,\n touchesChangedAfter,\n ) {\n return TouchHistoryMath.centroidDimension(\n touchHistory,\n touchesChangedAfter,\n false, // isXAxis\n false, // ofCurrent\n );\n },\n\n currentCentroidX: function(touchHistory) {\n return TouchHistoryMath.centroidDimension(\n touchHistory,\n 0, // touchesChangedAfter\n true, // isXAxis\n true, // ofCurrent\n );\n },\n\n currentCentroidY: function(touchHistory) {\n return TouchHistoryMath.centroidDimension(\n touchHistory,\n 0, // touchesChangedAfter\n false, // isXAxis\n true, // ofCurrent\n );\n },\n\n noCentroid: -1,\n};\n\nmodule.exports = TouchHistoryMath;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst ListView = require('ListView');\nconst PropTypes = require('prop-types');\nconst React = require('React');\nconst SwipeableListViewDataSource = require('SwipeableListViewDataSource');\nconst SwipeableRow = require('SwipeableRow');\n\ntype DefaultProps = {\n bounceFirstRowOnMount: boolean,\n renderQuickActions: Function,\n};\n\ntype Props = {\n bounceFirstRowOnMount: boolean,\n dataSource: SwipeableListViewDataSource,\n maxSwipeDistance:\n | number\n | ((rowData: any, sectionID: string, rowID: string) => number),\n onScroll?: ?Function,\n renderRow: Function,\n renderQuickActions: Function,\n};\n\ntype State = {\n dataSource: Object,\n};\n\n/**\n * A container component that renders multiple SwipeableRow's in a ListView\n * implementation. This is designed to be a drop-in replacement for the\n * standard React Native `ListView`, so use it as if it were a ListView, but\n * with extra props, i.e.\n *\n * let ds = SwipeableListView.getNewDataSource();\n * ds.cloneWithRowsAndSections(dataBlob, ?sectionIDs, ?rowIDs);\n * // ..\n * \n *\n * SwipeableRow can be used independently of this component, but the main\n * benefit of using this component is\n *\n * - It ensures that at most 1 row is swiped open (auto closes others)\n * - It can bounce the 1st row of the list so users know it's swipeable\n * - More to come\n */\nclass SwipeableListView extends React.Component {\n props: Props;\n state: State;\n\n _listViewRef: ?React.Element = null;\n _shouldBounceFirstRowOnMount: boolean = false;\n\n static getNewDataSource(): Object {\n return new SwipeableListViewDataSource({\n getRowData: (data, sectionID, rowID) => data[sectionID][rowID],\n getSectionHeaderData: (data, sectionID) => data[sectionID],\n rowHasChanged: (row1, row2) => row1 !== row2,\n sectionHeaderHasChanged: (s1, s2) => s1 !== s2,\n });\n }\n\n static propTypes = {\n /**\n * To alert the user that swiping is possible, the first row can bounce\n * on component mount.\n */\n bounceFirstRowOnMount: PropTypes.bool.isRequired,\n /**\n * Use `SwipeableListView.getNewDataSource()` to get a data source to use,\n * then use it just like you would a normal ListView data source\n */\n dataSource: PropTypes.instanceOf(SwipeableListViewDataSource).isRequired,\n // Maximum distance to open to after a swipe\n maxSwipeDistance: PropTypes.oneOfType([PropTypes.number, PropTypes.func])\n .isRequired,\n // Callback method to render the swipeable view\n renderRow: PropTypes.func.isRequired,\n // Callback method to render the view that will be unveiled on swipe\n renderQuickActions: PropTypes.func.isRequired,\n };\n\n static defaultProps = {\n bounceFirstRowOnMount: false,\n renderQuickActions: () => null,\n };\n\n constructor(props: Props, context: any): void {\n super(props, context);\n\n this._shouldBounceFirstRowOnMount = this.props.bounceFirstRowOnMount;\n this.state = {\n dataSource: this.props.dataSource,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps: Props): void {\n if (\n this.state.dataSource.getDataSource() !==\n nextProps.dataSource.getDataSource()\n ) {\n this.setState({\n dataSource: nextProps.dataSource,\n });\n }\n }\n\n render(): React.Node {\n return (\n // $FlowFixMe Found when typing ListView\n {\n // $FlowFixMe Found when typing ListView\n this._listViewRef = ref;\n }}\n dataSource={this.state.dataSource.getDataSource()}\n onScroll={this._onScroll}\n renderRow={this._renderRow}\n />\n );\n }\n\n _onScroll = (e): void => {\n // Close any opens rows on ListView scroll\n if (this.props.dataSource.getOpenRowID()) {\n this.setState({\n dataSource: this.state.dataSource.setOpenRowID(null),\n });\n }\n this.props.onScroll && this.props.onScroll(e);\n };\n\n /**\n * This is a work-around to lock vertical `ListView` scrolling on iOS and\n * mimic Android behaviour. Locking vertical scrolling when horizontal\n * scrolling is active allows us to significantly improve framerates\n * (from high 20s to almost consistently 60 fps)\n */\n _setListViewScrollable(value: boolean): void {\n if (\n this._listViewRef &&\n /* $FlowFixMe(>=0.68.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.68 was deployed. To see the error delete this\n * comment and run Flow. */\n typeof this._listViewRef.setNativeProps === 'function'\n ) {\n this._listViewRef.setNativeProps({\n scrollEnabled: value,\n });\n }\n }\n\n // Passing through ListView's getScrollResponder() function\n getScrollResponder(): ?Object {\n if (\n this._listViewRef &&\n /* $FlowFixMe(>=0.68.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.68 was deployed. To see the error delete this\n * comment and run Flow. */\n typeof this._listViewRef.getScrollResponder === 'function'\n ) {\n return this._listViewRef.getScrollResponder();\n }\n }\n\n // This enables rows having variable width slideoutView.\n _getMaxSwipeDistance(\n rowData: Object,\n sectionID: string,\n rowID: string,\n ): number {\n if (typeof this.props.maxSwipeDistance === 'function') {\n return this.props.maxSwipeDistance(rowData, sectionID, rowID);\n }\n\n return this.props.maxSwipeDistance;\n }\n\n _renderRow = (\n rowData: Object,\n sectionID: string,\n rowID: string,\n ): React.Element => {\n const slideoutView = this.props.renderQuickActions(\n rowData,\n sectionID,\n rowID,\n );\n\n // If renderQuickActions is unspecified or returns falsey, don't allow swipe\n if (!slideoutView) {\n return this.props.renderRow(rowData, sectionID, rowID);\n }\n\n let shouldBounceOnMount = false;\n if (this._shouldBounceFirstRowOnMount) {\n this._shouldBounceFirstRowOnMount = false;\n shouldBounceOnMount = rowID === this.props.dataSource.getFirstRowID();\n }\n\n return (\n this._onOpen(rowData.id)}\n onClose={() => this._onClose(rowData.id)}\n onSwipeEnd={() => this._setListViewScrollable(true)}\n onSwipeStart={() => this._setListViewScrollable(false)}\n shouldBounceOnMount={shouldBounceOnMount}>\n {this.props.renderRow(rowData, sectionID, rowID)}\n \n );\n };\n\n _onOpen(rowID: string): void {\n this.setState({\n dataSource: this.state.dataSource.setOpenRowID(rowID),\n });\n }\n\n _onClose(rowID: string): void {\n this.setState({\n dataSource: this.state.dataSource.setOpenRowID(null),\n });\n }\n}\n\nmodule.exports = SwipeableListView;\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\nconst ListViewDataSource = require('ListViewDataSource');\n\n/**\n * Data source wrapper around ListViewDataSource to allow for tracking of\n * which row is swiped open and close opened row(s) when another row is swiped\n * open.\n *\n * See https://github.com/facebook/react-native/pull/5602 for why\n * ListViewDataSource is not subclassed.\n */\nclass SwipeableListViewDataSource {\n _previousOpenRowID: string;\n _openRowID: string;\n\n _dataBlob: any;\n _dataSource: ListViewDataSource;\n\n rowIdentities: Array>;\n sectionIdentities: Array;\n\n constructor(params: Object) {\n this._dataSource = new ListViewDataSource({\n getRowData: params.getRowData,\n getSectionHeaderData: params.getSectionHeaderData,\n rowHasChanged: (row1, row2) => {\n /**\n * Row needs to be re-rendered if its swiped open/close status is\n * changed, or its data blob changed.\n */\n return (\n (row1.id !== this._previousOpenRowID &&\n row2.id === this._openRowID) ||\n (row1.id === this._previousOpenRowID &&\n row2.id !== this._openRowID) ||\n params.rowHasChanged(row1, row2)\n );\n },\n sectionHeaderHasChanged: params.sectionHeaderHasChanged,\n });\n }\n\n cloneWithRowsAndSections(\n dataBlob: any,\n sectionIdentities: ?Array,\n rowIdentities: ?Array>,\n ): SwipeableListViewDataSource {\n this._dataSource = this._dataSource.cloneWithRowsAndSections(\n dataBlob,\n sectionIdentities,\n rowIdentities,\n );\n\n this._dataBlob = dataBlob;\n this.rowIdentities = this._dataSource.rowIdentities;\n this.sectionIdentities = this._dataSource.sectionIdentities;\n\n return this;\n }\n\n // For the actual ListView to use\n getDataSource(): ListViewDataSource {\n return this._dataSource;\n }\n\n getOpenRowID(): ?string {\n return this._openRowID;\n }\n\n getFirstRowID(): ?string {\n /**\n * If rowIdentities is specified, find the first data row from there since\n * we don't want to attempt to bounce section headers. If unspecified, find\n * the first data row from _dataBlob.\n */\n if (this.rowIdentities) {\n return this.rowIdentities[0] && this.rowIdentities[0][0];\n }\n return Object.keys(this._dataBlob)[0];\n }\n\n getLastRowID(): ?string {\n if (this.rowIdentities && this.rowIdentities.length) {\n const lastSection = this.rowIdentities[this.rowIdentities.length - 1];\n if (lastSection && lastSection.length) {\n return lastSection[lastSection.length - 1];\n }\n }\n return Object.keys(this._dataBlob)[this._dataBlob.length - 1];\n }\n\n setOpenRowID(rowID: string): SwipeableListViewDataSource {\n this._previousOpenRowID = this._openRowID;\n this._openRowID = rowID;\n\n this._dataSource = this._dataSource.cloneWithRowsAndSections(\n this._dataBlob,\n this.sectionIdentities,\n this.rowIdentities,\n );\n\n return this;\n }\n}\n\nmodule.exports = SwipeableListViewDataSource;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst React = require('React');\nconst StyleSheet = require('StyleSheet');\nconst TabBarItemIOS = require('TabBarItemIOS');\nconst View = require('View');\n\nclass DummyTabBarIOS extends React.Component<$FlowFixMeProps> {\n static Item = TabBarItemIOS;\n\n render() {\n return (\n \n {this.props.children}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n tabGroup: {\n flex: 1,\n },\n});\n\nmodule.exports = DummyTabBarIOS;\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\nconst React = require('React');\nconst View = require('View');\nconst StyleSheet = require('StyleSheet');\n\nclass DummyTab extends React.Component {\n render() {\n if (!this.props.selected) {\n return ;\n }\n return (\n {this.props.children}\n );\n }\n}\n\nconst styles = StyleSheet.create({\n tab: {\n // TODO(5405356): Implement overflow: visible so position: absolute isn't useless\n // position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderColor: 'red',\n borderWidth: 1,\n },\n});\n\nmodule.exports = DummyTab;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst ColorPropType = require('ColorPropType');\nconst DocumentSelectionState = require('DocumentSelectionState');\nconst EventEmitter = require('EventEmitter');\nconst NativeMethodsMixin = require('NativeMethodsMixin');\nconst Platform = require('Platform');\nconst React = require('React');\nconst createReactClass = require('create-react-class');\nconst PropTypes = require('prop-types');\nconst ReactNative = require('ReactNative');\nconst StyleSheet = require('StyleSheet');\nconst Text = require('Text');\nconst TextAncestor = require('TextAncestor');\nconst TextInputState = require('TextInputState');\nconst TimerMixin = require('react-timer-mixin');\nconst TouchableWithoutFeedback = require('TouchableWithoutFeedback');\nconst UIManager = require('UIManager');\nconst ViewPropTypes = require('ViewPropTypes');\n\nconst emptyFunction = require('fbjs/lib/emptyFunction');\nconst invariant = require('fbjs/lib/invariant');\nconst requireNativeComponent = require('requireNativeComponent');\nconst warning = require('fbjs/lib/warning');\n\nimport type {ColorValue} from 'StyleSheetTypes';\nimport type {TextStyleProp} from 'StyleSheet';\nimport type {ViewProps} from 'ViewPropTypes';\n\nlet AndroidTextInput;\nlet RCTMultilineTextInputView;\nlet RCTSinglelineTextInputView;\n\nif (Platform.OS === 'android') {\n AndroidTextInput = requireNativeComponent('AndroidTextInput');\n} else if (Platform.OS === 'ios') {\n RCTMultilineTextInputView = requireNativeComponent(\n 'RCTMultilineTextInputView',\n );\n RCTSinglelineTextInputView = requireNativeComponent(\n 'RCTSinglelineTextInputView',\n );\n}\n\nconst onlyMultiline = {\n onTextInput: true,\n children: true,\n};\n\ntype Event = Object;\ntype Selection = {\n start: number,\n end?: number,\n};\n\nconst DataDetectorTypes = [\n 'phoneNumber',\n 'link',\n 'address',\n 'calendarEvent',\n 'none',\n 'all',\n];\n\ntype DataDetectorTypesType =\n | 'phoneNumber'\n | 'link'\n | 'address'\n | 'calendarEvent'\n | 'none'\n | 'all';\n\nexport type KeyboardType =\n // Cross Platform\n | 'default'\n | 'email-address'\n | 'numeric'\n | 'phone-pad'\n | 'number-pad'\n | 'decimal-pad'\n // iOS-only\n | 'ascii-capable'\n | 'numbers-and-punctuation'\n | 'url'\n | 'name-phone-pad'\n | 'twitter'\n | 'web-search'\n // Android-only\n | 'visible-password';\n\nexport type ReturnKeyType =\n // Cross Platform\n | 'done'\n | 'go'\n | 'next'\n | 'search'\n | 'send'\n // Android-only\n | 'none'\n | 'previous'\n // iOS-only\n | 'default'\n | 'emergency-call'\n | 'google'\n | 'join'\n | 'route'\n | 'yahoo';\n\nexport type AutoCapitalize = 'none' | 'sentences' | 'words' | 'characters';\n\ntype IOSProps = $ReadOnly<{|\n spellCheck?: ?boolean,\n keyboardAppearance?: ?('default' | 'light' | 'dark'),\n enablesReturnKeyAutomatically?: ?boolean,\n selectionState?: ?DocumentSelectionState,\n clearButtonMode?: ?('never' | 'while-editing' | 'unless-editing' | 'always'),\n clearTextOnFocus?: ?boolean,\n dataDetectorTypes?:\n | ?DataDetectorTypesType\n | $ReadOnlyArray,\n inputAccessoryViewID?: ?string,\n textContentType?: ?(\n | 'none'\n | 'URL'\n | 'addressCity'\n | 'addressCityAndState'\n | 'addressState'\n | 'countryName'\n | 'creditCardNumber'\n | 'emailAddress'\n | 'familyName'\n | 'fullStreetAddress'\n | 'givenName'\n | 'jobTitle'\n | 'location'\n | 'middleName'\n | 'name'\n | 'namePrefix'\n | 'nameSuffix'\n | 'nickname'\n | 'organizationName'\n | 'postalCode'\n | 'streetAddressLine1'\n | 'streetAddressLine2'\n | 'sublocality'\n | 'telephoneNumber'\n | 'username'\n | 'password'\n | 'newPassword'\n | 'oneTimeCode'\n ),\n scrollEnabled?: ?boolean,\n|}>;\n\ntype AndroidProps = $ReadOnly<{|\n returnKeyLabel?: ?string,\n numberOfLines?: ?number,\n disableFullscreenUI?: ?boolean,\n textBreakStrategy?: ?('simple' | 'highQuality' | 'balanced'),\n underlineColorAndroid?: ?ColorValue,\n inlineImageLeft?: ?string,\n inlineImagePadding?: ?number,\n|}>;\n\ntype Props = $ReadOnly<{|\n ...ViewProps,\n ...IOSProps,\n ...AndroidProps,\n autoCapitalize?: ?AutoCapitalize,\n autoCorrect?: ?boolean,\n autoFocus?: ?boolean,\n allowFontScaling?: ?boolean,\n editable?: ?boolean,\n keyboardType?: ?KeyboardType,\n returnKeyType?: ?ReturnKeyType,\n maxLength?: ?number,\n multiline?: ?boolean,\n onBlur?: ?Function,\n onFocus?: ?Function,\n onChange?: ?Function,\n onChangeText?: ?Function,\n onContentSizeChange?: ?Function,\n onTextInput?: ?Function,\n onEndEditing?: ?Function,\n onSelectionChange?: ?Function,\n onSubmitEditing?: ?Function,\n onKeyPress?: ?Function,\n onScroll?: ?Function,\n placeholder?: ?Stringish,\n placeholderTextColor?: ?ColorValue,\n secureTextEntry?: ?boolean,\n selectionColor?: ?ColorValue,\n selection?: ?$ReadOnly<{|\n start: number,\n end?: ?number,\n |}>,\n value?: ?Stringish,\n defaultValue?: ?Stringish,\n selectTextOnFocus?: ?boolean,\n blurOnSubmit?: ?boolean,\n style?: ?TextStyleProp,\n caretHidden?: ?boolean,\n contextMenuHidden?: ?boolean,\n|}>;\n\n/**\n * A foundational component for inputting text into the app via a\n * keyboard. Props provide configurability for several features, such as\n * auto-correction, auto-capitalization, placeholder text, and different keyboard\n * types, such as a numeric keypad.\n *\n * The simplest use case is to plop down a `TextInput` and subscribe to the\n * `onChangeText` events to read the user input. There are also other events,\n * such as `onSubmitEditing` and `onFocus` that can be subscribed to. A simple\n * example:\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react';\n * import { AppRegistry, TextInput } from 'react-native';\n *\n * export default class UselessTextInput extends Component {\n * constructor(props) {\n * super(props);\n * this.state = { text: 'Useless Placeholder' };\n * }\n *\n * render() {\n * return (\n * this.setState({text})}\n * value={this.state.text}\n * />\n * );\n * }\n * }\n *\n * // skip this line if using Create React Native App\n * AppRegistry.registerComponent('AwesomeProject', () => UselessTextInput);\n * ```\n *\n * Two methods exposed via the native element are .focus() and .blur() that\n * will focus or blur the TextInput programmatically.\n *\n * Note that some props are only available with `multiline={true/false}`.\n * Additionally, border styles that apply to only one side of the element\n * (e.g., `borderBottomColor`, `borderLeftWidth`, etc.) will not be applied if\n * `multiline=false`. To achieve the same effect, you can wrap your `TextInput`\n * in a `View`:\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react';\n * import { AppRegistry, View, TextInput } from 'react-native';\n *\n * class UselessTextInput extends Component {\n * render() {\n * return (\n * \n * );\n * }\n * }\n *\n * export default class UselessTextInputMultiline extends Component {\n * constructor(props) {\n * super(props);\n * this.state = {\n * text: 'Useless Multiline Placeholder',\n * };\n * }\n *\n * // If you type something in the text box that is a color, the background will change to that\n * // color.\n * render() {\n * return (\n * \n * this.setState({text})}\n * value={this.state.text}\n * />\n * \n * );\n * }\n * }\n *\n * // skip these lines if using Create React Native App\n * AppRegistry.registerComponent(\n * 'AwesomeProject',\n * () => UselessTextInputMultiline\n * );\n * ```\n *\n * `TextInput` has by default a border at the bottom of its view. This border\n * has its padding set by the background image provided by the system, and it\n * cannot be changed. Solutions to avoid this is to either not set height\n * explicitly, case in which the system will take care of displaying the border\n * in the correct position, or to not display the border by setting\n * `underlineColorAndroid` to transparent.\n *\n * Note that on Android performing text selection in input can change\n * app's activity `windowSoftInputMode` param to `adjustResize`.\n * This may cause issues with components that have position: 'absolute'\n * while keyboard is active. To avoid this behavior either specify `windowSoftInputMode`\n * in AndroidManifest.xml ( https://developer.android.com/guide/topics/manifest/activity-element.html )\n * or control this param programmatically with native code.\n *\n */\n\nconst TextInput = createReactClass({\n displayName: 'TextInput',\n statics: {\n State: {\n currentlyFocusedField: TextInputState.currentlyFocusedField,\n focusTextInput: TextInputState.focusTextInput,\n blurTextInput: TextInputState.blurTextInput,\n },\n },\n propTypes: {\n ...ViewPropTypes,\n /**\n * Can tell `TextInput` to automatically capitalize certain characters.\n *\n * - `characters`: all characters.\n * - `words`: first letter of each word.\n * - `sentences`: first letter of each sentence (*default*).\n * - `none`: don't auto capitalize anything.\n */\n autoCapitalize: PropTypes.oneOf([\n 'none',\n 'sentences',\n 'words',\n 'characters',\n ]),\n /**\n * If `false`, disables auto-correct. The default value is `true`.\n */\n autoCorrect: PropTypes.bool,\n /**\n * If `false`, disables spell-check style (i.e. red underlines).\n * The default value is inherited from `autoCorrect`.\n * @platform ios\n */\n spellCheck: PropTypes.bool,\n /**\n * If `true`, focuses the input on `componentDidMount`.\n * The default value is `false`.\n */\n autoFocus: PropTypes.bool,\n /**\n * Specifies whether fonts should scale to respect Text Size accessibility settings. The\n * default is `true`.\n */\n allowFontScaling: PropTypes.bool,\n /**\n * If `false`, text is not editable. The default value is `true`.\n */\n editable: PropTypes.bool,\n /**\n * Determines which keyboard to open, e.g.`numeric`.\n *\n * The following values work across platforms:\n *\n * - `default`\n * - `numeric`\n * - `number-pad`\n * - `decimal-pad`\n * - `email-address`\n * - `phone-pad`\n *\n * *iOS Only*\n *\n * The following values work on iOS only:\n *\n * - `ascii-capable`\n * - `numbers-and-punctuation`\n * - `url`\n * - `name-phone-pad`\n * - `twitter`\n * - `web-search`\n *\n * *Android Only*\n *\n * The following values work on Android only:\n *\n * - `visible-password`\n */\n keyboardType: PropTypes.oneOf([\n // Cross-platform\n 'default',\n 'email-address',\n 'numeric',\n 'phone-pad',\n 'number-pad',\n // iOS-only\n 'ascii-capable',\n 'numbers-and-punctuation',\n 'url',\n 'name-phone-pad',\n 'decimal-pad',\n 'twitter',\n 'web-search',\n // Android-only\n 'visible-password',\n ]),\n /**\n * Determines the color of the keyboard.\n * @platform ios\n */\n keyboardAppearance: PropTypes.oneOf(['default', 'light', 'dark']),\n /**\n * Determines how the return key should look. On Android you can also use\n * `returnKeyLabel`.\n *\n * *Cross platform*\n *\n * The following values work across platforms:\n *\n * - `done`\n * - `go`\n * - `next`\n * - `search`\n * - `send`\n *\n * *Android Only*\n *\n * The following values work on Android only:\n *\n * - `none`\n * - `previous`\n *\n * *iOS Only*\n *\n * The following values work on iOS only:\n *\n * - `default`\n * - `emergency-call`\n * - `google`\n * - `join`\n * - `route`\n * - `yahoo`\n */\n returnKeyType: PropTypes.oneOf([\n // Cross-platform\n 'done',\n 'go',\n 'next',\n 'search',\n 'send',\n // Android-only\n 'none',\n 'previous',\n // iOS-only\n 'default',\n 'emergency-call',\n 'google',\n 'join',\n 'route',\n 'yahoo',\n ]),\n /**\n * Sets the return key to the label. Use it instead of `returnKeyType`.\n * @platform android\n */\n returnKeyLabel: PropTypes.string,\n /**\n * Limits the maximum number of characters that can be entered. Use this\n * instead of implementing the logic in JS to avoid flicker.\n */\n maxLength: PropTypes.number,\n /**\n * Sets the number of lines for a `TextInput`. Use it with multiline set to\n * `true` to be able to fill the lines.\n * @platform android\n */\n numberOfLines: PropTypes.number,\n /**\n * When `false`, if there is a small amount of space available around a text input\n * (e.g. landscape orientation on a phone), the OS may choose to have the user edit\n * the text inside of a full screen text input mode. When `true`, this feature is\n * disabled and users will always edit the text directly inside of the text input.\n * Defaults to `false`.\n * @platform android\n */\n disableFullscreenUI: PropTypes.bool,\n /**\n * If `true`, the keyboard disables the return key when there is no text and\n * automatically enables it when there is text. The default value is `false`.\n * @platform ios\n */\n enablesReturnKeyAutomatically: PropTypes.bool,\n /**\n * If `true`, the text input can be multiple lines.\n * The default value is `false`.\n */\n multiline: PropTypes.bool,\n /**\n * Set text break strategy on Android API Level 23+, possible values are `simple`, `highQuality`, `balanced`\n * The default value is `simple`.\n * @platform android\n */\n textBreakStrategy: PropTypes.oneOf(['simple', 'highQuality', 'balanced']),\n /**\n * Callback that is called when the text input is blurred.\n */\n onBlur: PropTypes.func,\n /**\n * Callback that is called when the text input is focused.\n */\n onFocus: PropTypes.func,\n /**\n * Callback that is called when the text input's text changes.\n */\n onChange: PropTypes.func,\n /**\n * Callback that is called when the text input's text changes.\n * Changed text is passed as an argument to the callback handler.\n */\n onChangeText: PropTypes.func,\n /**\n * Callback that is called when the text input's content size changes.\n * This will be called with\n * `{ nativeEvent: { contentSize: { width, height } } }`.\n *\n * Only called for multiline text inputs.\n */\n onContentSizeChange: PropTypes.func,\n onTextInput: PropTypes.func,\n /**\n * Callback that is called when text input ends.\n */\n onEndEditing: PropTypes.func,\n /**\n * Callback that is called when the text input selection is changed.\n * This will be called with\n * `{ nativeEvent: { selection: { start, end } } }`.\n */\n onSelectionChange: PropTypes.func,\n /**\n * Callback that is called when the text input's submit button is pressed.\n * Invalid if `multiline={true}` is specified.\n */\n onSubmitEditing: PropTypes.func,\n /**\n * Callback that is called when a key is pressed.\n * This will be called with `{ nativeEvent: { key: keyValue } }`\n * where `keyValue` is `'Enter'` or `'Backspace'` for respective keys and\n * the typed-in character otherwise including `' '` for space.\n * Fires before `onChange` callbacks.\n */\n onKeyPress: PropTypes.func,\n /**\n * Invoked on mount and layout changes with `{x, y, width, height}`.\n */\n onLayout: PropTypes.func,\n /**\n * Invoked on content scroll with `{ nativeEvent: { contentOffset: { x, y } } }`.\n * May also contain other properties from ScrollEvent but on Android contentSize\n * is not provided for performance reasons.\n */\n onScroll: PropTypes.func,\n /**\n * The string that will be rendered before text input has been entered.\n */\n placeholder: PropTypes.string,\n /**\n * The text color of the placeholder string.\n */\n placeholderTextColor: ColorPropType,\n /**\n * If `false`, scrolling of the text view will be disabled.\n * The default value is `true`. Does only work with 'multiline={true}'.\n * @platform ios\n */\n scrollEnabled: PropTypes.bool,\n /**\n * If `true`, the text input obscures the text entered so that sensitive text\n * like passwords stay secure. The default value is `false`. Does not work with 'multiline={true}'.\n */\n secureTextEntry: PropTypes.bool,\n /**\n * The highlight and cursor color of the text input.\n */\n selectionColor: ColorPropType,\n /**\n * An instance of `DocumentSelectionState`, this is some state that is responsible for\n * maintaining selection information for a document.\n *\n * Some functionality that can be performed with this instance is:\n *\n * - `blur()`\n * - `focus()`\n * - `update()`\n *\n * > You can reference `DocumentSelectionState` in\n * > [`vendor/document/selection/DocumentSelectionState.js`](https://github.com/facebook/react-native/blob/master/Libraries/vendor/document/selection/DocumentSelectionState.js)\n *\n * @platform ios\n */\n selectionState: PropTypes.instanceOf(DocumentSelectionState),\n /**\n * The start and end of the text input's selection. Set start and end to\n * the same value to position the cursor.\n */\n selection: PropTypes.shape({\n start: PropTypes.number.isRequired,\n end: PropTypes.number,\n }),\n /**\n * The value to show for the text input. `TextInput` is a controlled\n * component, which means the native value will be forced to match this\n * value prop if provided. For most uses, this works great, but in some\n * cases this may cause flickering - one common cause is preventing edits\n * by keeping value the same. In addition to simply setting the same value,\n * either set `editable={false}`, or set/update `maxLength` to prevent\n * unwanted edits without flicker.\n */\n value: PropTypes.string,\n /**\n * Provides an initial value that will change when the user starts typing.\n * Useful for simple use-cases where you do not want to deal with listening\n * to events and updating the value prop to keep the controlled state in sync.\n */\n defaultValue: PropTypes.string,\n /**\n * When the clear button should appear on the right side of the text view.\n * This property is supported only for single-line TextInput component.\n * @platform ios\n */\n clearButtonMode: PropTypes.oneOf([\n 'never',\n 'while-editing',\n 'unless-editing',\n 'always',\n ]),\n /**\n * If `true`, clears the text field automatically when editing begins.\n * @platform ios\n */\n clearTextOnFocus: PropTypes.bool,\n /**\n * If `true`, all text will automatically be selected on focus.\n */\n selectTextOnFocus: PropTypes.bool,\n /**\n * If `true`, the text field will blur when submitted.\n * The default value is true for single-line fields and false for\n * multiline fields. Note that for multiline fields, setting `blurOnSubmit`\n * to `true` means that pressing return will blur the field and trigger the\n * `onSubmitEditing` event instead of inserting a newline into the field.\n */\n blurOnSubmit: PropTypes.bool,\n /**\n * Note that not all Text styles are supported, an incomplete list of what is not supported includes:\n *\n * - `borderLeftWidth`\n * - `borderTopWidth`\n * - `borderRightWidth`\n * - `borderBottomWidth`\n * - `borderTopLeftRadius`\n * - `borderTopRightRadius`\n * - `borderBottomRightRadius`\n * - `borderBottomLeftRadius`\n *\n * see [Issue#7070](https://github.com/facebook/react-native/issues/7070)\n * for more detail.\n *\n * [Styles](docs/style.html)\n */\n style: Text.propTypes.style,\n /**\n * The color of the `TextInput` underline.\n * @platform android\n */\n underlineColorAndroid: ColorPropType,\n\n /**\n * If defined, the provided image resource will be rendered on the left.\n * The image resource must be inside `/android/app/src/main/res/drawable` and referenced\n * like\n * ```\n * \n * ```\n * @platform android\n */\n inlineImageLeft: PropTypes.string,\n\n /**\n * Padding between the inline image, if any, and the text input itself.\n * @platform android\n */\n inlineImagePadding: PropTypes.number,\n\n /**\n * Determines the types of data converted to clickable URLs in the text input.\n * Only valid if `multiline={true}` and `editable={false}`.\n * By default no data types are detected.\n *\n * You can provide one type or an array of many types.\n *\n * Possible values for `dataDetectorTypes` are:\n *\n * - `'phoneNumber'`\n * - `'link'`\n * - `'address'`\n * - `'calendarEvent'`\n * - `'none'`\n * - `'all'`\n *\n * @platform ios\n */\n dataDetectorTypes: PropTypes.oneOfType([\n PropTypes.oneOf(DataDetectorTypes),\n PropTypes.arrayOf(PropTypes.oneOf(DataDetectorTypes)),\n ]),\n /**\n * If `true`, caret is hidden. The default value is `false`.\n * This property is supported only for single-line TextInput component on iOS.\n */\n caretHidden: PropTypes.bool,\n /*\n * If `true`, contextMenuHidden is hidden. The default value is `false`.\n */\n contextMenuHidden: PropTypes.bool,\n /**\n * An optional identifier which links a custom InputAccessoryView to\n * this text input. The InputAccessoryView is rendered above the\n * keyboard when this text input is focused.\n * @platform ios\n */\n inputAccessoryViewID: PropTypes.string,\n /**\n * Give the keyboard and the system information about the\n * expected semantic meaning for the content that users enter.\n * @platform ios\n */\n textContentType: PropTypes.oneOf([\n 'none',\n 'URL',\n 'addressCity',\n 'addressCityAndState',\n 'addressState',\n 'countryName',\n 'creditCardNumber',\n 'emailAddress',\n 'familyName',\n 'fullStreetAddress',\n 'givenName',\n 'jobTitle',\n 'location',\n 'middleName',\n 'name',\n 'namePrefix',\n 'nameSuffix',\n 'nickname',\n 'organizationName',\n 'postalCode',\n 'streetAddressLine1',\n 'streetAddressLine2',\n 'sublocality',\n 'telephoneNumber',\n 'username',\n 'password',\n 'newPassword',\n 'oneTimeCode',\n ]),\n },\n getDefaultProps(): Object {\n return {\n allowFontScaling: true,\n underlineColorAndroid: 'transparent',\n };\n },\n /**\n * `NativeMethodsMixin` will look for this when invoking `setNativeProps`. We\n * make `this` look like an actual native component class.\n */\n mixins: [NativeMethodsMixin, TimerMixin],\n\n /**\n * Returns `true` if the input is currently focused; `false` otherwise.\n */\n isFocused: function(): boolean {\n return (\n TextInputState.currentlyFocusedField() ===\n ReactNative.findNodeHandle(this._inputRef)\n );\n },\n\n _inputRef: (undefined: any),\n _focusSubscription: (undefined: ?Function),\n _lastNativeText: (undefined: ?string),\n _lastNativeSelection: (undefined: ?Selection),\n\n componentDidMount: function() {\n this._lastNativeText = this.props.value;\n const tag = ReactNative.findNodeHandle(this._inputRef);\n if (tag != null) {\n // tag is null only in unit tests\n TextInputState.registerInput(tag);\n }\n\n if (this.context.focusEmitter) {\n this._focusSubscription = this.context.focusEmitter.addListener(\n 'focus',\n el => {\n if (this === el) {\n this.requestAnimationFrame(this.focus);\n } else if (this.isFocused()) {\n this.blur();\n }\n },\n );\n if (this.props.autoFocus) {\n this.context.onFocusRequested(this);\n }\n } else {\n if (this.props.autoFocus) {\n this.requestAnimationFrame(this.focus);\n }\n }\n },\n\n componentWillUnmount: function() {\n this._focusSubscription && this._focusSubscription.remove();\n if (this.isFocused()) {\n this.blur();\n }\n const tag = ReactNative.findNodeHandle(this._inputRef);\n if (tag != null) {\n TextInputState.unregisterInput(tag);\n }\n },\n\n contextTypes: {\n onFocusRequested: PropTypes.func,\n focusEmitter: PropTypes.instanceOf(EventEmitter),\n },\n\n /**\n * Removes all text from the `TextInput`.\n */\n clear: function() {\n this.setNativeProps({text: ''});\n },\n\n render: function() {\n let textInput;\n if (Platform.OS === 'ios') {\n textInput = UIManager.RCTVirtualText\n ? this._renderIOS()\n : this._renderIOSLegacy();\n } else if (Platform.OS === 'android') {\n textInput = this._renderAndroid();\n }\n return (\n {textInput}\n );\n },\n\n _getText: function(): ?string {\n return typeof this.props.value === 'string'\n ? this.props.value\n : typeof this.props.defaultValue === 'string'\n ? this.props.defaultValue\n : '';\n },\n\n _setNativeRef: function(ref: any) {\n this._inputRef = ref;\n },\n\n _renderIOSLegacy: function() {\n let textContainer;\n\n const props = Object.assign({}, this.props);\n props.style = [this.props.style];\n\n if (props.selection && props.selection.end == null) {\n props.selection = {\n start: props.selection.start,\n end: props.selection.start,\n };\n }\n\n if (!props.multiline) {\n if (__DEV__) {\n for (const propKey in onlyMultiline) {\n if (props[propKey]) {\n const error = new Error(\n 'TextInput prop `' +\n propKey +\n '` is only supported with multiline.',\n );\n warning(false, '%s', error.stack);\n }\n }\n }\n textContainer = (\n \n );\n } else {\n let children = props.children;\n let childCount = 0;\n React.Children.forEach(children, () => ++childCount);\n invariant(\n !(props.value && childCount),\n 'Cannot specify both value and children.',\n );\n if (childCount >= 1) {\n children = (\n \n {children}\n \n );\n }\n if (props.inputView) {\n children = [children, props.inputView];\n }\n props.style.unshift(styles.multilineInput);\n textContainer = (\n \n );\n }\n\n return (\n \n {textContainer}\n \n );\n },\n\n _renderIOS: function() {\n const props = Object.assign({}, this.props);\n props.style = [this.props.style];\n\n if (props.selection && props.selection.end == null) {\n props.selection = {\n start: props.selection.start,\n end: props.selection.start,\n };\n }\n\n const RCTTextInputView = props.multiline\n ? RCTMultilineTextInputView\n : RCTSinglelineTextInputView;\n\n if (props.multiline) {\n props.style.unshift(styles.multilineInput);\n }\n\n const textContainer = (\n \n );\n\n return (\n \n {textContainer}\n \n );\n },\n\n _renderAndroid: function() {\n const props = Object.assign({}, this.props);\n props.style = [this.props.style];\n props.autoCapitalize =\n UIManager.AndroidTextInput.Constants.AutoCapitalizationType[\n props.autoCapitalize || 'sentences'\n ];\n /* $FlowFixMe(>=0.53.0 site=react_native_fb,react_native_oss) This comment\n * suppresses an error when upgrading Flow's support for React. To see the\n * error delete this comment and run Flow. */\n let children = this.props.children;\n let childCount = 0;\n React.Children.forEach(children, () => ++childCount);\n invariant(\n !(this.props.value && childCount),\n 'Cannot specify both value and children.',\n );\n if (childCount > 1) {\n children = {children};\n }\n\n if (props.selection && props.selection.end == null) {\n props.selection = {\n start: props.selection.start,\n end: props.selection.start,\n };\n }\n\n const textContainer = (\n \n );\n\n return (\n \n {textContainer}\n \n );\n },\n\n _onFocus: function(event: Event) {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n\n if (this.props.selectionState) {\n this.props.selectionState.focus();\n }\n },\n\n _onPress: function(event: Event) {\n if (this.props.editable || this.props.editable === undefined) {\n this.focus();\n }\n },\n\n _onChange: function(event: Event) {\n // Make sure to fire the mostRecentEventCount first so it is already set on\n // native when the text value is set.\n if (this._inputRef) {\n this._inputRef.setNativeProps({\n mostRecentEventCount: event.nativeEvent.eventCount,\n });\n }\n\n const text = event.nativeEvent.text;\n this.props.onChange && this.props.onChange(event);\n this.props.onChangeText && this.props.onChangeText(text);\n\n if (!this._inputRef) {\n // calling `this.props.onChange` or `this.props.onChangeText`\n // may clean up the input itself. Exits here.\n return;\n }\n\n this._lastNativeText = text;\n this.forceUpdate();\n },\n\n _onSelectionChange: function(event: Event) {\n this.props.onSelectionChange && this.props.onSelectionChange(event);\n\n if (!this._inputRef) {\n // calling `this.props.onSelectionChange`\n // may clean up the input itself. Exits here.\n return;\n }\n\n this._lastNativeSelection = event.nativeEvent.selection;\n\n if (this.props.selection || this.props.selectionState) {\n this.forceUpdate();\n }\n },\n\n componentDidUpdate: function() {\n // This is necessary in case native updates the text and JS decides\n // that the update should be ignored and we should stick with the value\n // that we have in JS.\n const nativeProps = {};\n\n if (\n this._lastNativeText !== this.props.value &&\n typeof this.props.value === 'string'\n ) {\n nativeProps.text = this.props.value;\n }\n\n // Selection is also a controlled prop, if the native value doesn't match\n // JS, update to the JS value.\n const {selection} = this.props;\n if (\n this._lastNativeSelection &&\n selection &&\n (this._lastNativeSelection.start !== selection.start ||\n this._lastNativeSelection.end !== selection.end)\n ) {\n nativeProps.selection = this.props.selection;\n }\n\n if (Object.keys(nativeProps).length > 0 && this._inputRef) {\n this._inputRef.setNativeProps(nativeProps);\n }\n\n if (this.props.selectionState && selection) {\n this.props.selectionState.update(selection.start, selection.end);\n }\n },\n\n _onBlur: function(event: Event) {\n this.blur();\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n\n if (this.props.selectionState) {\n this.props.selectionState.blur();\n }\n },\n\n _onTextInput: function(event: Event) {\n this.props.onTextInput && this.props.onTextInput(event);\n },\n\n _onScroll: function(event: Event) {\n this.props.onScroll && this.props.onScroll(event);\n },\n});\n\nclass InternalTextInputType extends ReactNative.NativeComponent {\n clear() {}\n\n // $FlowFixMe\n isFocused(): boolean {}\n}\n\nconst TypedTextInput = ((TextInput: any): Class);\n\nconst styles = StyleSheet.create({\n multilineInput: {\n // This default top inset makes RCTMultilineTextInputView seem as close as possible\n // to single-line RCTSinglelineTextInputView defaults, using the system defaults\n // of font size 17 and a height of 31 points.\n paddingTop: 5,\n },\n});\n\nmodule.exports = TypedTextInput;\n","/**\n * Copyright (c) 2015-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 * @format\n * @typechecks\n */\n\n'use strict';\n\nconst mixInEventEmitter = require('mixInEventEmitter');\n\n/**\n * DocumentSelectionState is responsible for maintaining selection information\n * for a document.\n *\n * It is intended for use by AbstractTextEditor-based components for\n * identifying the appropriate start/end positions to modify the\n * DocumentContent, and for programmatically setting browser selection when\n * components re-render.\n */\nclass DocumentSelectionState {\n /**\n * @param {number} anchor\n * @param {number} focus\n */\n constructor(anchor, focus) {\n this._anchorOffset = anchor;\n this._focusOffset = focus;\n this._hasFocus = false;\n }\n\n /**\n * Apply an update to the state. If either offset value has changed,\n * set the values and emit the `change` event. Otherwise no-op.\n *\n * @param {number} anchor\n * @param {number} focus\n */\n update(anchor, focus) {\n if (this._anchorOffset !== anchor || this._focusOffset !== focus) {\n this._anchorOffset = anchor;\n this._focusOffset = focus;\n this.emit('update');\n }\n }\n\n /**\n * Given a max text length, constrain our selection offsets to ensure\n * that the selection remains strictly within the text range.\n *\n * @param {number} maxLength\n */\n constrainLength(maxLength) {\n this.update(\n Math.min(this._anchorOffset, maxLength),\n Math.min(this._focusOffset, maxLength),\n );\n }\n\n focus() {\n if (!this._hasFocus) {\n this._hasFocus = true;\n this.emit('focus');\n }\n }\n\n blur() {\n if (this._hasFocus) {\n this._hasFocus = false;\n this.emit('blur');\n }\n }\n\n /**\n * @return {boolean}\n */\n hasFocus() {\n return this._hasFocus;\n }\n\n /**\n * @return {boolean}\n */\n isCollapsed() {\n return this._anchorOffset === this._focusOffset;\n }\n\n /**\n * @return {boolean}\n */\n isBackward() {\n return this._anchorOffset > this._focusOffset;\n }\n\n /**\n * @return {?number}\n */\n getAnchorOffset() {\n return this._hasFocus ? this._anchorOffset : null;\n }\n\n /**\n * @return {?number}\n */\n getFocusOffset() {\n return this._hasFocus ? this._focusOffset : null;\n }\n\n /**\n * @return {?number}\n */\n getStartOffset() {\n return this._hasFocus\n ? Math.min(this._anchorOffset, this._focusOffset)\n : null;\n }\n\n /**\n * @return {?number}\n */\n getEndOffset() {\n return this._hasFocus\n ? Math.max(this._anchorOffset, this._focusOffset)\n : null;\n }\n\n /**\n * @param {number} start\n * @param {number} end\n * @return {boolean}\n */\n overlaps(start, end) {\n return (\n this.hasFocus() &&\n this.getStartOffset() <= end &&\n start <= this.getEndOffset()\n );\n }\n}\n\nmixInEventEmitter(DocumentSelectionState, {\n blur: true,\n focus: true,\n update: true,\n});\n\nmodule.exports = DocumentSelectionState;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst EventEmitter = require('EventEmitter');\nconst EventEmitterWithHolding = require('EventEmitterWithHolding');\nconst EventHolder = require('EventHolder');\n\nconst invariant = require('fbjs/lib/invariant');\n/* $FlowFixMe(>=0.54.0 site=react_native_oss) This comment suppresses an error\n * found when Flow v0.54 was deployed. To see the error delete this comment and\n * run Flow. */\nconst keyOf = require('fbjs/lib/keyOf');\n\nimport type EmitterSubscription from 'EmitterSubscription';\n\nconst TYPES_KEY = keyOf({__types: true});\n\n/**\n * API to setup an object or constructor to be able to emit data events.\n *\n * @example\n * function Dog() { ...dog stuff... }\n * mixInEventEmitter(Dog, {bark: true});\n *\n * var puppy = new Dog();\n * puppy.addListener('bark', function (volume) {\n * console.log('Puppy', this, 'barked at volume:', volume);\n * });\n * puppy.emit('bark', 'quiet');\n * // Puppy barked at volume: quiet\n *\n *\n * // A \"singleton\" object may also be commissioned:\n *\n * var Singleton = {};\n * mixInEventEmitter(Singleton, {lonely: true});\n * Singleton.emit('lonely', true);\n */\nfunction mixInEventEmitter(cls: Function | Object, types: Object) {\n invariant(types, 'Must supply set of valid event types');\n\n // If this is a constructor, write to the prototype, otherwise write to the\n // singleton object.\n const target = cls.prototype || cls;\n\n invariant(!target.__eventEmitter, 'An active emitter is already mixed in');\n\n const ctor = cls.constructor;\n if (ctor) {\n invariant(\n ctor === Object || ctor === Function,\n 'Mix EventEmitter into a class, not an instance',\n );\n }\n\n // Keep track of the provided types, union the types if they already exist,\n // which allows for prototype subclasses to provide more types.\n if (target.hasOwnProperty(TYPES_KEY)) {\n Object.assign(target.__types, types);\n } else if (target.__types) {\n target.__types = Object.assign({}, target.__types, types);\n } else {\n target.__types = types;\n }\n Object.assign(target, EventEmitterMixin);\n}\n\nconst EventEmitterMixin = {\n emit: function(eventType, a, b, c, d, e, _) {\n return this.__getEventEmitter().emit(eventType, a, b, c, d, e, _);\n },\n\n emitAndHold: function(eventType, a, b, c, d, e, _) {\n return this.__getEventEmitter().emitAndHold(eventType, a, b, c, d, e, _);\n },\n\n addListener: function(eventType, listener, context): EmitterSubscription {\n return this.__getEventEmitter().addListener(eventType, listener, context);\n },\n\n once: function(eventType, listener, context) {\n return this.__getEventEmitter().once(eventType, listener, context);\n },\n\n addRetroactiveListener: function(eventType, listener, context) {\n return this.__getEventEmitter().addRetroactiveListener(\n eventType,\n listener,\n context,\n );\n },\n\n addListenerMap: function(listenerMap, context) {\n return this.__getEventEmitter().addListenerMap(listenerMap, context);\n },\n\n addRetroactiveListenerMap: function(listenerMap, context) {\n return this.__getEventEmitter().addListenerMap(listenerMap, context);\n },\n\n removeAllListeners: function() {\n this.__getEventEmitter().removeAllListeners();\n },\n\n removeCurrentListener: function() {\n this.__getEventEmitter().removeCurrentListener();\n },\n\n releaseHeldEventType: function(eventType) {\n this.__getEventEmitter().releaseHeldEventType(eventType);\n },\n\n __getEventEmitter: function() {\n if (!this.__eventEmitter) {\n let emitter = new EventEmitter();\n if (__DEV__) {\n const EventValidator = require('EventValidator');\n emitter = EventValidator.addValidation(emitter, this.__types);\n }\n\n const holder = new EventHolder();\n this.__eventEmitter = new EventEmitterWithHolding(emitter, holder);\n }\n return this.__eventEmitter;\n },\n};\n\nmodule.exports = mixInEventEmitter;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nimport type EmitterSubscription from 'EmitterSubscription';\nimport type EventEmitter from 'EventEmitter';\nimport type EventHolder from 'EventHolder';\n\n/**\n * @class EventEmitterWithHolding\n * @description\n * An EventEmitterWithHolding decorates an event emitter and enables one to\n * \"hold\" or cache events and then have a handler register later to actually\n * handle them.\n *\n * This is separated into its own decorator so that only those who want to use\n * the holding functionality have to and others can just use an emitter. Since\n * it implements the emitter interface it can also be combined with anything\n * that uses an emitter.\n */\nclass EventEmitterWithHolding {\n _emitter: EventEmitter;\n _eventHolder: EventHolder;\n _currentEventToken: ?Object;\n _emittingHeldEvents: boolean;\n\n /**\n * @constructor\n * @param {object} emitter - The object responsible for emitting the actual\n * events.\n * @param {object} holder - The event holder that is responsible for holding\n * and then emitting held events.\n */\n constructor(emitter: EventEmitter, holder: EventHolder) {\n this._emitter = emitter;\n this._eventHolder = holder;\n this._currentEventToken = null;\n this._emittingHeldEvents = false;\n }\n\n /**\n * @see EventEmitter#addListener\n */\n addListener(eventType: string, listener: Function, context: ?Object) {\n return this._emitter.addListener(eventType, listener, context);\n }\n\n /**\n * @see EventEmitter#once\n */\n once(eventType: string, listener: Function, context: ?Object) {\n return this._emitter.once(eventType, listener, context);\n }\n\n /**\n * Adds a listener to be invoked when events of the specified type are\n * emitted. An optional calling context may be provided. The data arguments\n * emitted will be passed to the listener function. In addition to subscribing\n * to all subsequent events, this method will also handle any events that have\n * already been emitted, held, and not released.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n *\n * @example\n * emitter.emitAndHold('someEvent', 'abc');\n *\n * emitter.addRetroactiveListener('someEvent', function(message) {\n * console.log(message);\n * }); // logs 'abc'\n */\n addRetroactiveListener(\n eventType: string,\n listener: Function,\n context: ?Object,\n ): EmitterSubscription {\n const subscription = this._emitter.addListener(\n eventType,\n listener,\n context,\n );\n\n this._emittingHeldEvents = true;\n this._eventHolder.emitToListener(eventType, listener, context);\n this._emittingHeldEvents = false;\n\n return subscription;\n }\n\n /**\n * @see EventEmitter#removeAllListeners\n */\n removeAllListeners(eventType: string) {\n this._emitter.removeAllListeners(eventType);\n }\n\n /**\n * @see EventEmitter#removeCurrentListener\n */\n removeCurrentListener() {\n this._emitter.removeCurrentListener();\n }\n\n /**\n * @see EventEmitter#listeners\n */\n listeners(eventType: string) /* TODO: Annotate return type here */ {\n return this._emitter.listeners(eventType);\n }\n\n /**\n * @see EventEmitter#emit\n */\n emit(eventType: string, ...args: any) {\n this._emitter.emit(eventType, ...args);\n }\n\n /**\n * Emits an event of the given type with the given data, and holds that event\n * in order to be able to dispatch it to a later subscriber when they say they\n * want to handle held events.\n *\n * @param {string} eventType - Name of the event to emit\n * @param {...*} Arbitrary arguments to be passed to each registered listener\n *\n * @example\n * emitter.emitAndHold('someEvent', 'abc');\n *\n * emitter.addRetroactiveListener('someEvent', function(message) {\n * console.log(message);\n * }); // logs 'abc'\n */\n emitAndHold(eventType: string, ...args: any) {\n this._currentEventToken = this._eventHolder.holdEvent(eventType, ...args);\n this._emitter.emit(eventType, ...args);\n this._currentEventToken = null;\n }\n\n /**\n * @see EventHolder#releaseCurrentEvent\n */\n releaseCurrentEvent() {\n if (this._currentEventToken) {\n this._eventHolder.releaseEvent(this._currentEventToken);\n } else if (this._emittingHeldEvents) {\n this._eventHolder.releaseCurrentEvent();\n }\n }\n\n /**\n * @see EventHolder#releaseEventType\n * @param {string} eventType\n */\n releaseHeldEventType(eventType: string) {\n this._eventHolder.releaseEventType(eventType);\n }\n}\n\nmodule.exports = EventEmitterWithHolding;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst invariant = require('fbjs/lib/invariant');\n\nclass EventHolder {\n _heldEvents: Object;\n _currentEventKey: ?Object;\n\n constructor() {\n this._heldEvents = {};\n this._currentEventKey = null;\n }\n\n /**\n * Holds a given event for processing later.\n *\n * TODO: Annotate return type better. The structural type of the return here\n * is pretty obvious.\n *\n * @param {string} eventType - Name of the event to hold and later emit\n * @param {...*} Arbitrary arguments to be passed to each registered listener\n * @return {object} Token that can be used to release the held event\n *\n * @example\n *\n * holder.holdEvent({someEvent: 'abc'});\n *\n * holder.emitToHandler({\n * someEvent: function(data, event) {\n * console.log(data);\n * }\n * }); //logs 'abc'\n *\n */\n holdEvent(eventType: string, ...args: any) {\n this._heldEvents[eventType] = this._heldEvents[eventType] || [];\n const eventsOfType = this._heldEvents[eventType];\n const key = {\n eventType: eventType,\n index: eventsOfType.length,\n };\n eventsOfType.push(args);\n return key;\n }\n\n /**\n * Emits the held events of the specified type to the given listener.\n *\n * @param {?string} eventType - Optional name of the events to replay\n * @param {function} listener - The listener to which to dispatch the event\n * @param {?object} context - Optional context object to use when invoking\n * the listener\n */\n emitToListener(eventType: ?string, listener: Function, context: ?Object) {\n const eventsOfType = this._heldEvents[eventType];\n if (!eventsOfType) {\n return;\n }\n const origEventKey = this._currentEventKey;\n eventsOfType.forEach((/*?array*/ eventHeld, /*number*/ index) => {\n if (!eventHeld) {\n return;\n }\n this._currentEventKey = {\n eventType: eventType,\n index: index,\n };\n listener.apply(context, eventHeld);\n });\n this._currentEventKey = origEventKey;\n }\n\n /**\n * Provides an API that can be called during an eventing cycle to release\n * the last event that was invoked, so that it is no longer \"held\".\n *\n * If it is called when not inside of an emitting cycle it will throw.\n *\n * @throws {Error} When called not during an eventing cycle\n */\n releaseCurrentEvent() {\n invariant(\n this._currentEventKey !== null,\n 'Not in an emitting cycle; there is no current event',\n );\n this._currentEventKey && this.releaseEvent(this._currentEventKey);\n }\n\n /**\n * Releases the event corresponding to the handle that was returned when the\n * event was first held.\n *\n * @param {object} token - The token returned from holdEvent\n */\n releaseEvent(token: Object) {\n delete this._heldEvents[token.eventType][token.index];\n }\n\n /**\n * Releases all events of a certain type.\n *\n * @param {string} type\n */\n releaseEventType(type: string) {\n this._heldEvents[type] = [];\n }\n}\n\nmodule.exports = EventHolder;\n","\"use strict\";\n\n/**\n * Copyright (c) 2013-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 */\n\n/**\n * Allows extraction of a minified key. Let's the build system minify keys\n * without losing the ability to dynamically use key strings as values\n * themselves. Pass in an object with a single key/val pair and it will return\n * you the string key of that single record. Suppose you want to grab the\n * value for a key 'className' inside of an object. Key/val minification may\n * have aliased that key to be 'xa12'. keyOf({className: null}) will return\n * 'xa12' in that case. Resolve keys you want to use once at startup time, then\n * reuse those resolutions.\n */\nvar keyOf = function keyOf(oneKeyObj) {\n var key;\n\n for (key in oneKeyObj) {\n if (!oneKeyObj.hasOwnProperty(key)) {\n continue;\n }\n\n return key;\n }\n\n return null;\n};\n\nmodule.exports = keyOf;","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst RCTToastAndroid = require('NativeModules').ToastAndroid;\n\n/**\n * This exposes the native ToastAndroid module as a JS module. This has a function 'show'\n * which takes the following parameters:\n *\n * 1. String message: A string with the text to toast\n * 2. int duration: The duration of the toast. May be ToastAndroid.SHORT or ToastAndroid.LONG\n *\n * There is also a function `showWithGravity` to specify the layout gravity. May be\n * ToastAndroid.TOP, ToastAndroid.BOTTOM, ToastAndroid.CENTER.\n *\n * The 'showWithGravityAndOffset' function adds on the ability to specify offset\n * These offset values will translate to pixels.\n *\n * Basic usage:\n * ```javascript\n * ToastAndroid.show('A pikachu appeared nearby !', ToastAndroid.SHORT);\n * ToastAndroid.showWithGravity('All Your Base Are Belong To Us', ToastAndroid.SHORT, ToastAndroid.CENTER);\n * ToastAndroid.showWithGravityAndOffset('A wild toast appeared!', ToastAndroid.LONG, ToastAndroid.BOTTOM, 25, 50);\n * ```\n */\n\nconst ToastAndroid = {\n // Toast duration constants\n SHORT: RCTToastAndroid.SHORT,\n LONG: RCTToastAndroid.LONG,\n\n // Toast gravity constants\n TOP: RCTToastAndroid.TOP,\n BOTTOM: RCTToastAndroid.BOTTOM,\n CENTER: RCTToastAndroid.CENTER,\n\n show: function(message: string, duration: number): void {\n RCTToastAndroid.show(message, duration);\n },\n\n showWithGravity: function(\n message: string,\n duration: number,\n gravity: number,\n ): void {\n RCTToastAndroid.showWithGravity(message, duration, gravity);\n },\n\n showWithGravityAndOffset: function(\n message: string,\n duration: number,\n gravity: number,\n xOffset: number,\n yOffset: number,\n ): void {\n RCTToastAndroid.showWithGravityAndOffset(\n message,\n duration,\n gravity,\n xOffset,\n yOffset,\n );\n },\n};\n\nmodule.exports = ToastAndroid;\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\nconst Image = require('Image');\nconst NativeMethodsMixin = require('NativeMethodsMixin');\nconst React = require('React');\nconst PropTypes = require('prop-types');\nconst UIManager = require('UIManager');\nconst ViewPropTypes = require('ViewPropTypes');\nconst ColorPropType = require('ColorPropType');\n\nconst createReactClass = require('create-react-class');\nconst requireNativeComponent = require('requireNativeComponent');\nconst resolveAssetSource = require('resolveAssetSource');\n\nconst optionalImageSource = PropTypes.oneOfType([\n Image.propTypes.source,\n // Image.propTypes.source is required but we want it to be optional, so we OR\n // it with a nullable propType.\n PropTypes.oneOf([]),\n]);\n\n/**\n * React component that wraps the Android-only [`Toolbar` widget][0]. A Toolbar can display a logo,\n * navigation icon (e.g. hamburger menu), a title & subtitle and a list of actions. The title and\n * subtitle are expanded so the logo and navigation icons are displayed on the left, title and\n * subtitle in the middle and the actions on the right.\n *\n * If the toolbar has an only child, it will be displayed between the title and actions.\n *\n * Although the Toolbar supports remote images for the logo, navigation and action icons, this\n * should only be used in DEV mode where `require('./some_icon.png')` translates into a packager\n * URL. In release mode you should always use a drawable resource for these icons. Using\n * `require('./some_icon.png')` will do this automatically for you, so as long as you don't\n * explicitly use e.g. `{uri: 'http://...'}`, you will be good.\n *\n * Example:\n *\n * ```\n * render: function() {\n * return (\n * \n * )\n * },\n * onActionSelected: function(position) {\n * if (position === 0) { // index of 'Settings'\n * showSettings();\n * }\n * }\n * ```\n *\n * [0]: https://developer.android.com/reference/android/support/v7/widget/Toolbar.html\n */\nconst ToolbarAndroid = createReactClass({\n displayName: 'ToolbarAndroid',\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n ...ViewPropTypes,\n /**\n * Sets possible actions on the toolbar as part of the action menu. These are displayed as icons\n * or text on the right side of the widget. If they don't fit they are placed in an 'overflow'\n * menu.\n *\n * This property takes an array of objects, where each object has the following keys:\n *\n * * `title`: **required**, the title of this action\n * * `icon`: the icon for this action, e.g. `require('./some_icon.png')`\n * * `show`: when to show this action as an icon or hide it in the overflow menu: `always`,\n * `ifRoom` or `never`\n * * `showWithText`: boolean, whether to show text alongside the icon or not\n */\n actions: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string.isRequired,\n icon: optionalImageSource,\n show: PropTypes.oneOf(['always', 'ifRoom', 'never']),\n showWithText: PropTypes.bool,\n }),\n ),\n /**\n * Sets the toolbar logo.\n */\n logo: optionalImageSource,\n /**\n * Sets the navigation icon.\n */\n navIcon: optionalImageSource,\n /**\n * Callback that is called when an action is selected. The only argument that is passed to the\n * callback is the position of the action in the actions array.\n */\n onActionSelected: PropTypes.func,\n /**\n * Callback called when the icon is selected.\n */\n onIconClicked: PropTypes.func,\n /**\n * Sets the overflow icon.\n */\n overflowIcon: optionalImageSource,\n /**\n * Sets the toolbar subtitle.\n */\n subtitle: PropTypes.string,\n /**\n * Sets the toolbar subtitle color.\n */\n subtitleColor: ColorPropType,\n /**\n * Sets the toolbar title.\n */\n title: PropTypes.string,\n /**\n * Sets the toolbar title color.\n */\n titleColor: ColorPropType,\n /**\n * Sets the content inset for the toolbar starting edge.\n *\n * The content inset affects the valid area for Toolbar content other than\n * the navigation button and menu. Insets define the minimum margin for\n * these components and can be used to effectively align Toolbar content\n * along well-known gridlines.\n */\n contentInsetStart: PropTypes.number,\n /**\n * Sets the content inset for the toolbar ending edge.\n *\n * The content inset affects the valid area for Toolbar content other than\n * the navigation button and menu. Insets define the minimum margin for\n * these components and can be used to effectively align Toolbar content\n * along well-known gridlines.\n */\n contentInsetEnd: PropTypes.number,\n /**\n * Used to set the toolbar direction to RTL.\n * In addition to this property you need to add\n *\n * android:supportsRtl=\"true\"\n *\n * to your application AndroidManifest.xml and then call\n * `setLayoutDirection(LayoutDirection.RTL)` in your MainActivity\n * `onCreate` method.\n */\n rtl: PropTypes.bool,\n /**\n * Used to locate this view in end-to-end tests.\n */\n testID: PropTypes.string,\n },\n\n render: function() {\n const nativeProps = {\n ...this.props,\n };\n if (this.props.logo) {\n nativeProps.logo = resolveAssetSource(this.props.logo);\n }\n if (this.props.navIcon) {\n nativeProps.navIcon = resolveAssetSource(this.props.navIcon);\n }\n if (this.props.overflowIcon) {\n nativeProps.overflowIcon = resolveAssetSource(this.props.overflowIcon);\n }\n if (this.props.actions) {\n const nativeActions = [];\n for (let i = 0; i < this.props.actions.length; i++) {\n const action = {\n ...this.props.actions[i],\n };\n if (action.icon) {\n action.icon = resolveAssetSource(action.icon);\n }\n if (action.show) {\n action.show =\n UIManager.ToolbarAndroid.Constants.ShowAsAction[action.show];\n }\n nativeActions.push(action);\n }\n nativeProps.nativeActions = nativeActions;\n }\n\n return ;\n },\n\n _onSelect: function(event) {\n const position = event.nativeEvent.position;\n if (position === -1) {\n this.props.onIconClicked && this.props.onIconClicked();\n } else {\n this.props.onActionSelected && this.props.onActionSelected(position);\n }\n },\n});\n\nconst NativeToolbar = requireNativeComponent('ToolbarAndroid');\n\nmodule.exports = ToolbarAndroid;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst ColorPropType = require('ColorPropType');\nconst NativeMethodsMixin = require('NativeMethodsMixin');\nconst PropTypes = require('prop-types');\nconst Platform = require('Platform');\nconst React = require('React');\nconst ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nconst StyleSheet = require('StyleSheet');\nconst Touchable = require('Touchable');\nconst TouchableWithoutFeedback = require('TouchableWithoutFeedback');\nconst View = require('View');\nconst ViewPropTypes = require('ViewPropTypes');\n\nconst createReactClass = require('create-react-class');\nconst ensurePositiveDelayProps = require('ensurePositiveDelayProps');\n\nimport type {PressEvent} from 'CoreEventTypes';\nimport type {Props as TouchableWithoutFeedbackProps} from 'TouchableWithoutFeedback';\nimport type {ViewStyleProp} from 'StyleSheet';\nimport type {ColorValue} from 'StyleSheetTypes';\n\nconst DEFAULT_PROPS = {\n activeOpacity: 0.85,\n delayPressOut: 100,\n underlayColor: 'black',\n};\n\nconst PRESS_RETENTION_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\n\ntype IOSProps = $ReadOnly<{|\n hasTVPreferredFocus?: ?boolean,\n tvParallaxProperties?: ?Object,\n|}>;\n\ntype Props = $ReadOnly<{|\n ...TouchableWithoutFeedbackProps,\n ...IOSProps,\n\n activeOpacity?: ?number,\n underlayColor?: ?ColorValue,\n style?: ?ViewStyleProp,\n onShowUnderlay?: ?Function,\n onHideUnderlay?: ?Function,\n testOnly_pressed?: ?boolean,\n|}>;\n\n/**\n * A wrapper for making views respond properly to touches.\n * On press down, the opacity of the wrapped view is decreased, which allows\n * the underlay color to show through, darkening or tinting the view.\n *\n * The underlay comes from wrapping the child in a new View, which can affect\n * layout, and sometimes cause unwanted visual artifacts if not used correctly,\n * for example if the backgroundColor of the wrapped view isn't explicitly set\n * to an opaque color.\n *\n * TouchableHighlight must have one child (not zero or more than one).\n * If you wish to have several child components, wrap them in a View.\n *\n * Example:\n *\n * ```\n * renderButton: function() {\n * return (\n * \n * \n * \n * );\n * },\n * ```\n *\n *\n * ### Example\n *\n * ```ReactNativeWebPlayer\n * import React, { Component } from 'react'\n * import {\n * AppRegistry,\n * StyleSheet,\n * TouchableHighlight,\n * Text,\n * View,\n * } from 'react-native'\n *\n * class App extends Component {\n * constructor(props) {\n * super(props)\n * this.state = { count: 0 }\n * }\n *\n * onPress = () => {\n * this.setState({\n * count: this.state.count+1\n * })\n * }\n *\n * render() {\n * return (\n * \n * \n * Touch Here \n * \n * \n * \n * { this.state.count !== 0 ? this.state.count: null}\n * \n * \n * \n * )\n * }\n * }\n *\n * const styles = StyleSheet.create({\n * container: {\n * flex: 1,\n * justifyContent: 'center',\n * paddingHorizontal: 10\n * },\n * button: {\n * alignItems: 'center',\n * backgroundColor: '#DDDDDD',\n * padding: 10\n * },\n * countContainer: {\n * alignItems: 'center',\n * padding: 10\n * },\n * countText: {\n * color: '#FF00FF'\n * }\n * })\n *\n * AppRegistry.registerComponent('App', () => App)\n * ```\n *\n */\n\nconst TouchableHighlight = ((createReactClass({\n displayName: 'TouchableHighlight',\n propTypes: {\n ...TouchableWithoutFeedback.propTypes,\n /**\n * Determines what the opacity of the wrapped view should be when touch is\n * active.\n */\n activeOpacity: PropTypes.number,\n /**\n * The color of the underlay that will show through when the touch is\n * active.\n */\n underlayColor: ColorPropType,\n /**\n * Style to apply to the container/underlay. Most commonly used to make sure\n * rounded corners match the wrapped component.\n */\n style: ViewPropTypes.style,\n /**\n * Called immediately after the underlay is shown\n */\n onShowUnderlay: PropTypes.func,\n /**\n * Called immediately after the underlay is hidden\n */\n onHideUnderlay: PropTypes.func,\n /**\n * *(Apple TV only)* TV preferred focus (see documentation for the View component).\n *\n * @platform ios\n */\n hasTVPreferredFocus: PropTypes.bool,\n /**\n * *(Apple TV only)* Object with properties to control Apple TV parallax effects.\n *\n * enabled: If true, parallax effects are enabled. Defaults to true.\n * shiftDistanceX: Defaults to 2.0.\n * shiftDistanceY: Defaults to 2.0.\n * tiltAngle: Defaults to 0.05.\n * magnification: Defaults to 1.0.\n * pressMagnification: Defaults to 1.0.\n * pressDuration: Defaults to 0.3.\n * pressDelay: Defaults to 0.0.\n *\n * @platform ios\n */\n tvParallaxProperties: PropTypes.object,\n /**\n * Handy for snapshot tests.\n */\n testOnly_pressed: PropTypes.bool,\n },\n\n mixins: [NativeMethodsMixin, Touchable.Mixin],\n\n getDefaultProps: () => DEFAULT_PROPS,\n\n getInitialState: function() {\n this._isMounted = false;\n if (this.props.testOnly_pressed) {\n return {\n ...this.touchableGetInitialState(),\n extraChildStyle: {\n opacity: this.props.activeOpacity,\n },\n extraUnderlayStyle: {\n backgroundColor: this.props.underlayColor,\n },\n };\n } else {\n return {\n ...this.touchableGetInitialState(),\n extraChildStyle: null,\n extraUnderlayStyle: null,\n };\n }\n },\n\n componentDidMount: function() {\n this._isMounted = true;\n ensurePositiveDelayProps(this.props);\n },\n\n componentWillUnmount: function() {\n this._isMounted = false;\n clearTimeout(this._hideTimeout);\n },\n\n UNSAFE_componentWillReceiveProps: function(nextProps) {\n ensurePositiveDelayProps(nextProps);\n },\n\n viewConfig: {\n uiViewClassName: 'RCTView',\n validAttributes: ReactNativeViewAttributes.RCTView,\n },\n\n /**\n * `Touchable.Mixin` self callbacks. The mixin will invoke these if they are\n * defined on your component.\n */\n touchableHandleActivePressIn: function(e: PressEvent) {\n clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n this._showUnderlay();\n this.props.onPressIn && this.props.onPressIn(e);\n },\n\n touchableHandleActivePressOut: function(e: PressEvent) {\n if (!this._hideTimeout) {\n this._hideUnderlay();\n }\n this.props.onPressOut && this.props.onPressOut(e);\n },\n\n touchableHandlePress: function(e: PressEvent) {\n clearTimeout(this._hideTimeout);\n if (!Platform.isTV) {\n this._showUnderlay();\n this._hideTimeout = setTimeout(\n this._hideUnderlay,\n this.props.delayPressOut,\n );\n }\n this.props.onPress && this.props.onPress(e);\n },\n\n touchableHandleLongPress: function(e: PressEvent) {\n this.props.onLongPress && this.props.onLongPress(e);\n },\n\n touchableGetPressRectOffset: function() {\n return this.props.pressRetentionOffset || PRESS_RETENTION_OFFSET;\n },\n\n touchableGetHitSlop: function() {\n return this.props.hitSlop;\n },\n\n touchableGetHighlightDelayMS: function() {\n return this.props.delayPressIn;\n },\n\n touchableGetLongPressDelayMS: function() {\n return this.props.delayLongPress;\n },\n\n touchableGetPressOutDelayMS: function() {\n return this.props.delayPressOut;\n },\n\n _showUnderlay: function() {\n if (!this._isMounted || !this._hasPressHandler()) {\n return;\n }\n this.setState({\n extraChildStyle: {\n opacity: this.props.activeOpacity,\n },\n extraUnderlayStyle: {\n backgroundColor: this.props.underlayColor,\n },\n });\n this.props.onShowUnderlay && this.props.onShowUnderlay();\n },\n\n _hideUnderlay: function() {\n clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n if (this.props.testOnly_pressed) {\n return;\n }\n if (this._hasPressHandler()) {\n this.setState({\n extraChildStyle: null,\n extraUnderlayStyle: null,\n });\n this.props.onHideUnderlay && this.props.onHideUnderlay();\n }\n },\n\n _hasPressHandler: function() {\n return !!(\n this.props.onPress ||\n this.props.onPressIn ||\n this.props.onPressOut ||\n this.props.onLongPress\n );\n },\n\n render: function() {\n const child = React.Children.only(this.props.children);\n return (\n \n {React.cloneElement(child, {\n style: StyleSheet.compose(\n child.props.style,\n this.state.extraChildStyle,\n ),\n })}\n {Touchable.renderDebugView({\n color: 'green',\n hitSlop: this.props.hitSlop,\n })}\n \n );\n },\n}): any): React.ComponentType);\n\nmodule.exports = TouchableHighlight;\n","/**\n * Copyright (c) 2013-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst React = require('React');\nconst PropTypes = require('prop-types');\nconst ReactNative = require('ReactNative');\nconst UIManager = require('UIManager');\nconst ViewPropTypes = require('ViewPropTypes');\n\nconst dismissKeyboard = require('dismissKeyboard');\nconst requireNativeComponent = require('requireNativeComponent');\n\nconst NativeAndroidViewPager = requireNativeComponent('AndroidViewPager');\n\nconst VIEWPAGER_REF = 'viewPager';\n\ntype Event = Object;\n\nexport type ViewPagerScrollState = $Enum<{\n idle: string,\n dragging: string,\n settling: string,\n}>;\n\n/**\n * Container that allows to flip left and right between child views. Each\n * child view of the `ViewPagerAndroid` will be treated as a separate page\n * and will be stretched to fill the `ViewPagerAndroid`.\n *\n * It is important all children are ``s and not composite components.\n * You can set style properties like `padding` or `backgroundColor` for each\n * child. It is also important that each child have a `key` prop.\n *\n * Example:\n *\n * ```\n * render: function() {\n * return (\n * \n * \n * First page\n * \n * \n * Second page\n * \n * \n * );\n * }\n *\n * ...\n *\n * var styles = {\n * ...\n * viewPager: {\n * flex: 1\n * },\n * pageStyle: {\n * alignItems: 'center',\n * padding: 20,\n * }\n * }\n * ```\n */\nclass ViewPagerAndroid extends React.Component<{\n initialPage?: number,\n onPageScroll?: Function,\n onPageScrollStateChanged?: Function,\n onPageSelected?: Function,\n pageMargin?: number,\n peekEnabled?: boolean,\n keyboardDismissMode?: 'none' | 'on-drag',\n scrollEnabled?: boolean,\n}> {\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n static propTypes = {\n ...ViewPropTypes,\n /**\n * Index of initial page that should be selected. Use `setPage` method to\n * update the page, and `onPageSelected` to monitor page changes\n */\n initialPage: PropTypes.number,\n\n /**\n * Executed when transitioning between pages (ether because of animation for\n * the requested page change or when user is swiping/dragging between pages)\n * The `event.nativeEvent` object for this callback will carry following data:\n * - position - index of first page from the left that is currently visible\n * - offset - value from range [0,1) describing stage between page transitions.\n * Value x means that (1 - x) fraction of the page at \"position\" index is\n * visible, and x fraction of the next page is visible.\n */\n onPageScroll: PropTypes.func,\n\n /**\n * Function called when the page scrolling state has changed.\n * The page scrolling state can be in 3 states:\n * - idle, meaning there is no interaction with the page scroller happening at the time\n * - dragging, meaning there is currently an interaction with the page scroller\n * - settling, meaning that there was an interaction with the page scroller, and the\n * page scroller is now finishing it's closing or opening animation\n */\n onPageScrollStateChanged: PropTypes.func,\n\n /**\n * This callback will be called once ViewPager finish navigating to selected page\n * (when user swipes between pages). The `event.nativeEvent` object passed to this\n * callback will have following fields:\n * - position - index of page that has been selected\n */\n onPageSelected: PropTypes.func,\n\n /**\n * Blank space to show between pages. This is only visible while scrolling, pages are still\n * edge-to-edge.\n */\n pageMargin: PropTypes.number,\n\n /**\n * Determines whether the keyboard gets dismissed in response to a drag.\n * - 'none' (the default), drags do not dismiss the keyboard.\n * - 'on-drag', the keyboard is dismissed when a drag begins.\n */\n keyboardDismissMode: PropTypes.oneOf([\n 'none', // default\n 'on-drag',\n ]),\n\n /**\n * When false, the content does not scroll.\n * The default value is true.\n */\n scrollEnabled: PropTypes.bool,\n\n /**\n * Whether enable showing peekFraction or not. If this is true, the preview of\n * last and next page will show in current screen. Defaults to false.\n */\n peekEnabled: PropTypes.bool,\n };\n\n componentDidMount() {\n if (this.props.initialPage != null) {\n this.setPageWithoutAnimation(this.props.initialPage);\n }\n }\n\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n getInnerViewNode = (): ReactComponent => {\n return this.refs[VIEWPAGER_REF].getInnerViewNode();\n };\n\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n _childrenWithOverridenStyle = (): Array => {\n // Override styles so that each page will fill the parent. Native component\n // will handle positioning of elements, so it's not important to offset\n // them correctly.\n /* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found\n * when making Flow check .android.js files. */\n return React.Children.map(this.props.children, function(child) {\n if (!child) {\n return null;\n }\n const newProps = {\n ...child.props,\n style: [\n child.props.style,\n {\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n width: undefined,\n height: undefined,\n },\n ],\n collapsable: false,\n };\n if (\n child.type &&\n child.type.displayName &&\n child.type.displayName !== 'RCTView' &&\n child.type.displayName !== 'View'\n ) {\n console.warn(\n 'Each ViewPager child must be a . Was ' +\n child.type.displayName,\n );\n }\n return React.createElement(child.type, newProps);\n });\n };\n\n _onPageScroll = (e: Event) => {\n if (this.props.onPageScroll) {\n this.props.onPageScroll(e);\n }\n if (this.props.keyboardDismissMode === 'on-drag') {\n dismissKeyboard();\n }\n };\n\n _onPageScrollStateChanged = (e: Event) => {\n if (this.props.onPageScrollStateChanged) {\n this.props.onPageScrollStateChanged(e.nativeEvent.pageScrollState);\n }\n };\n\n _onPageSelected = (e: Event) => {\n if (this.props.onPageSelected) {\n this.props.onPageSelected(e);\n }\n };\n\n /**\n * A helper function to scroll to a specific page in the ViewPager.\n * The transition between pages will be animated.\n */\n setPage = (selectedPage: number) => {\n UIManager.dispatchViewManagerCommand(\n ReactNative.findNodeHandle(this),\n UIManager.AndroidViewPager.Commands.setPage,\n [selectedPage],\n );\n };\n\n /**\n * A helper function to scroll to a specific page in the ViewPager.\n * The transition between pages will *not* be animated.\n */\n setPageWithoutAnimation = (selectedPage: number) => {\n UIManager.dispatchViewManagerCommand(\n ReactNative.findNodeHandle(this),\n UIManager.AndroidViewPager.Commands.setPageWithoutAnimation,\n [selectedPage],\n );\n };\n\n render() {\n return (\n =0.78.0 site=react_native_android_fb) This issue was\n * found when making Flow check .android.js files. */\n style={this.props.style}\n onPageScroll={this._onPageScroll}\n onPageScrollStateChanged={this._onPageScrollStateChanged}\n onPageSelected={this._onPageSelected}\n children={this._childrenWithOverridenStyle()}\n />\n );\n }\n}\n\nmodule.exports = ViewPagerAndroid;\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\nconst EdgeInsetsPropType = require('EdgeInsetsPropType');\nconst ActivityIndicator = require('ActivityIndicator');\nconst React = require('React');\nconst PropTypes = require('prop-types');\nconst ReactNative = require('ReactNative');\nconst StyleSheet = require('StyleSheet');\nconst UIManager = require('UIManager');\nconst View = require('View');\nconst ViewPropTypes = require('ViewPropTypes');\nconst WebViewShared = require('WebViewShared');\n\nconst deprecatedPropType = require('deprecatedPropType');\nconst keyMirror = require('fbjs/lib/keyMirror');\nconst requireNativeComponent = require('requireNativeComponent');\nconst resolveAssetSource = require('resolveAssetSource');\n\nconst RCT_WEBVIEW_REF = 'webview';\n\nconst WebViewState = keyMirror({\n IDLE: null,\n LOADING: null,\n ERROR: null,\n});\n\nconst defaultRenderLoading = () => (\n \n \n \n);\n\n/**\n * Renders a native WebView.\n */\nclass WebView extends React.Component {\n static propTypes = {\n ...ViewPropTypes,\n renderError: PropTypes.func,\n renderLoading: PropTypes.func,\n onLoad: PropTypes.func,\n onLoadEnd: PropTypes.func,\n onLoadStart: PropTypes.func,\n onError: PropTypes.func,\n automaticallyAdjustContentInsets: PropTypes.bool,\n contentInset: EdgeInsetsPropType,\n onNavigationStateChange: PropTypes.func,\n onMessage: PropTypes.func,\n onContentSizeChange: PropTypes.func,\n startInLoadingState: PropTypes.bool, // force WebView to show loadingView on first load\n style: ViewPropTypes.style,\n\n html: deprecatedPropType(\n PropTypes.string,\n 'Use the `source` prop instead.',\n ),\n\n url: deprecatedPropType(PropTypes.string, 'Use the `source` prop instead.'),\n\n /**\n * Loads static html or a uri (with optional headers) in the WebView.\n */\n source: PropTypes.oneOfType([\n PropTypes.shape({\n /*\n * The URI to load in the WebView. Can be a local or remote file.\n */\n uri: PropTypes.string,\n /*\n * The HTTP Method to use. Defaults to GET if not specified.\n * NOTE: On Android, only GET and POST are supported.\n */\n method: PropTypes.oneOf(['GET', 'POST']),\n /*\n * Additional HTTP headers to send with the request.\n * NOTE: On Android, this can only be used with GET requests.\n */\n headers: PropTypes.object,\n /*\n * The HTTP body to send with the request. This must be a valid\n * UTF-8 string, and will be sent exactly as specified, with no\n * additional encoding (e.g. URL-escaping or base64) applied.\n * NOTE: On Android, this can only be used with POST requests.\n */\n body: PropTypes.string,\n }),\n PropTypes.shape({\n /*\n * A static HTML page to display in the WebView.\n */\n html: PropTypes.string,\n /*\n * The base URL to be used for any relative links in the HTML.\n */\n baseUrl: PropTypes.string,\n }),\n /*\n * Used internally by packager.\n */\n PropTypes.number,\n ]),\n\n /**\n * If true, use WKWebView instead of UIWebView.\n * @platform ios\n */\n useWebKit: PropTypes.bool,\n\n /**\n * Used on Android only, JS is enabled by default for WebView on iOS\n * @platform android\n */\n javaScriptEnabled: PropTypes.bool,\n\n /**\n * Used on Android Lollipop and above only, third party cookies are enabled\n * by default for WebView on Android Kitkat and below and on iOS\n * @platform android\n */\n thirdPartyCookiesEnabled: PropTypes.bool,\n\n /**\n * Used on Android only, controls whether DOM Storage is enabled or not\n * @platform android\n */\n domStorageEnabled: PropTypes.bool,\n\n /**\n * Sets whether Geolocation is enabled. The default is false.\n * @platform android\n */\n geolocationEnabled: PropTypes.bool,\n\n /**\n * Sets the JS to be injected when the webpage loads.\n */\n injectedJavaScript: PropTypes.string,\n\n /**\n * Sets whether the webpage scales to fit the view and the user can change the scale.\n */\n scalesPageToFit: PropTypes.bool,\n\n /**\n * Sets whether the webview allow access to file system.\n * @platform android\n */\n allowFileAccess: PropTypes.bool,\n\n /**\n * Sets the user-agent for this WebView. The user-agent can also be set in native using\n * WebViewConfig. This prop will overwrite that config.\n */\n userAgent: PropTypes.string,\n\n /**\n * Used to locate this view in end-to-end tests.\n */\n testID: PropTypes.string,\n\n /**\n * Determines whether HTML5 audio & videos require the user to tap before they can\n * start playing. The default value is `false`.\n */\n mediaPlaybackRequiresUserAction: PropTypes.bool,\n\n /**\n * Boolean that sets whether JavaScript running in the context of a file\n * scheme URL should be allowed to access content from any origin.\n * Including accessing content from other file scheme URLs\n * @platform android\n */\n allowUniversalAccessFromFileURLs: PropTypes.bool,\n\n /**\n * List of origin strings to allow being navigated to. The strings allow\n * wildcards and get matched against *just* the origin (not the full URL).\n * If the user taps to navigate to a new page but the new page is not in\n * this whitelist, the URL will be opened by the Android OS.\n * The default whitelisted origins are \"http://*\" and \"https://*\".\n */\n originWhitelist: PropTypes.arrayOf(PropTypes.string),\n\n /**\n * Function that accepts a string that will be passed to the WebView and\n * executed immediately as JavaScript.\n */\n injectJavaScript: PropTypes.func,\n\n /**\n * Specifies the mixed content mode. i.e WebView will allow a secure origin to load content from any other origin.\n *\n * Possible values for `mixedContentMode` are:\n *\n * - `'never'` (default) - WebView will not allow a secure origin to load content from an insecure origin.\n * - `'always'` - WebView will allow a secure origin to load content from any other origin, even if that origin is insecure.\n * - `'compatibility'` - WebView will attempt to be compatible with the approach of a modern web browser with regard to mixed content.\n * @platform android\n */\n mixedContentMode: PropTypes.oneOf(['never', 'always', 'compatibility']),\n\n /**\n * Used on Android only, controls whether form autocomplete data should be saved\n * @platform android\n */\n saveFormDataDisabled: PropTypes.bool,\n\n /**\n * Override the native component used to render the WebView. Enables a custom native\n * WebView which uses the same JavaScript as the original WebView.\n */\n nativeConfig: PropTypes.shape({\n /*\n * The native component used to render the WebView.\n */\n component: PropTypes.any,\n /*\n * Set props directly on the native component WebView. Enables custom props which the\n * original WebView doesn't pass through.\n */\n props: PropTypes.object,\n /*\n * Set the ViewManager to use for communication with the native side.\n * @platform ios\n */\n viewManager: PropTypes.object,\n }),\n /*\n * Used on Android only, controls whether the given list of URL prefixes should\n * make {@link com.facebook.react.views.webview.ReactWebViewClient} to launch a\n * default activity intent for those URL instead of loading it within the webview.\n * Use this to list URLs that WebView cannot handle, e.g. a PDF url.\n * @platform android\n */\n urlPrefixesForDefaultIntent: PropTypes.arrayOf(PropTypes.string),\n };\n\n static defaultProps = {\n javaScriptEnabled: true,\n thirdPartyCookiesEnabled: true,\n scalesPageToFit: true,\n saveFormDataDisabled: false,\n originWhitelist: WebViewShared.defaultOriginWhitelist,\n };\n\n state = {\n viewState: WebViewState.IDLE,\n lastErrorEvent: null,\n startInLoadingState: true,\n };\n\n UNSAFE_componentWillMount() {\n if (this.props.startInLoadingState) {\n this.setState({viewState: WebViewState.LOADING});\n }\n }\n\n render() {\n let otherView = null;\n\n if (this.state.viewState === WebViewState.LOADING) {\n otherView = (this.props.renderLoading || defaultRenderLoading)();\n } else if (this.state.viewState === WebViewState.ERROR) {\n const errorEvent = this.state.lastErrorEvent;\n otherView =\n this.props.renderError &&\n this.props.renderError(\n errorEvent.domain,\n errorEvent.code,\n errorEvent.description,\n );\n } else if (this.state.viewState !== WebViewState.IDLE) {\n console.error(\n 'RCTWebView invalid state encountered: ' + this.state.loading,\n );\n }\n\n const webViewStyles = [styles.container, this.props.style];\n if (\n this.state.viewState === WebViewState.LOADING ||\n this.state.viewState === WebViewState.ERROR\n ) {\n // if we're in either LOADING or ERROR states, don't show the webView\n webViewStyles.push(styles.hidden);\n }\n\n const source = this.props.source || {};\n if (this.props.html) {\n source.html = this.props.html;\n } else if (this.props.url) {\n source.uri = this.props.url;\n }\n\n if (source.method === 'POST' && source.headers) {\n console.warn(\n 'WebView: `source.headers` is not supported when using POST.',\n );\n } else if (source.method === 'GET' && source.body) {\n console.warn('WebView: `source.body` is not supported when using GET.');\n }\n\n const nativeConfig = this.props.nativeConfig || {};\n\n const originWhitelist = (this.props.originWhitelist || []).map(\n WebViewShared.originWhitelistToRegex,\n );\n\n let NativeWebView = nativeConfig.component || RCTWebView;\n\n const webView = (\n \n );\n\n return (\n \n {webView}\n {otherView}\n \n );\n }\n\n goForward = () => {\n UIManager.dispatchViewManagerCommand(\n this.getWebViewHandle(),\n UIManager.RCTWebView.Commands.goForward,\n null,\n );\n };\n\n goBack = () => {\n UIManager.dispatchViewManagerCommand(\n this.getWebViewHandle(),\n UIManager.RCTWebView.Commands.goBack,\n null,\n );\n };\n\n reload = () => {\n this.setState({\n viewState: WebViewState.LOADING,\n });\n UIManager.dispatchViewManagerCommand(\n this.getWebViewHandle(),\n UIManager.RCTWebView.Commands.reload,\n null,\n );\n };\n\n stopLoading = () => {\n UIManager.dispatchViewManagerCommand(\n this.getWebViewHandle(),\n UIManager.RCTWebView.Commands.stopLoading,\n null,\n );\n };\n\n postMessage = data => {\n UIManager.dispatchViewManagerCommand(\n this.getWebViewHandle(),\n UIManager.RCTWebView.Commands.postMessage,\n [String(data)],\n );\n };\n\n /**\n * Injects a javascript string into the referenced WebView. Deliberately does not\n * return a response because using eval() to return a response breaks this method\n * on pages with a Content Security Policy that disallows eval(). If you need that\n * functionality, look into postMessage/onMessage.\n */\n injectJavaScript = data => {\n UIManager.dispatchViewManagerCommand(\n this.getWebViewHandle(),\n UIManager.RCTWebView.Commands.injectJavaScript,\n [data],\n );\n };\n\n /**\n * We return an event with a bunch of fields including:\n * url, title, loading, canGoBack, canGoForward\n */\n updateNavigationState = event => {\n if (this.props.onNavigationStateChange) {\n this.props.onNavigationStateChange(event.nativeEvent);\n }\n };\n\n getWebViewHandle = () => {\n return ReactNative.findNodeHandle(this.refs[RCT_WEBVIEW_REF]);\n };\n\n onLoadingStart = event => {\n const onLoadStart = this.props.onLoadStart;\n onLoadStart && onLoadStart(event);\n this.updateNavigationState(event);\n };\n\n onLoadingError = event => {\n event.persist(); // persist this event because we need to store it\n const {onError, onLoadEnd} = this.props;\n onError && onError(event);\n onLoadEnd && onLoadEnd(event);\n console.warn('Encountered an error loading page', event.nativeEvent);\n\n this.setState({\n lastErrorEvent: event.nativeEvent,\n viewState: WebViewState.ERROR,\n });\n };\n\n onLoadingFinish = event => {\n const {onLoad, onLoadEnd} = this.props;\n onLoad && onLoad(event);\n onLoadEnd && onLoadEnd(event);\n this.setState({\n viewState: WebViewState.IDLE,\n });\n this.updateNavigationState(event);\n };\n\n onMessage = (event: Event) => {\n const {onMessage} = this.props;\n onMessage && onMessage(event);\n };\n}\n\nconst RCTWebView = requireNativeComponent('RCTWebView');\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n hidden: {\n height: 0,\n flex: 0, // disable 'flex:1' when hiding a View\n },\n loadingView: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n loadingProgressBar: {\n height: 20,\n },\n});\n\nmodule.exports = WebView;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst escapeStringRegexp = require('escape-string-regexp');\n\nconst WebViewShared = {\n defaultOriginWhitelist: ['http://*', 'https://*'],\n extractOrigin: (url: string): ?string => {\n const result = /^[A-Za-z0-9]+:(\\/\\/)?[^/]*/.exec(url);\n return result === null ? null : result[0];\n },\n originWhitelistToRegex: (originWhitelist: string): string => {\n return escapeStringRegexp(originWhitelist).replace(/\\\\\\*/g, '.*');\n },\n};\n\nmodule.exports = WebViewShared;\n","'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn str.replace(matchOperatorsRe, '\\\\$&');\n};\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst RCTActionSheetManager = require('NativeModules').ActionSheetManager;\n\nconst invariant = require('fbjs/lib/invariant');\nconst processColor = require('processColor');\n\n/**\n * Display action sheets and share sheets on iOS.\n *\n * See http://facebook.github.io/react-native/docs/actionsheetios.html\n */\nconst ActionSheetIOS = {\n /**\n * Display an iOS action sheet.\n *\n * The `options` object must contain one or more of:\n *\n * - `options` (array of strings) - a list of button titles (required)\n * - `cancelButtonIndex` (int) - index of cancel button in `options`\n * - `destructiveButtonIndex` (int) - index of destructive button in `options`\n * - `title` (string) - a title to show above the action sheet\n * - `message` (string) - a message to show below the title\n *\n * The 'callback' function takes one parameter, the zero-based index\n * of the selected item.\n *\n * See http://facebook.github.io/react-native/docs/actionsheetios.html#showactionsheetwithoptions\n */\n showActionSheetWithOptions(\n options: {|\n +title?: ?string,\n +message?: ?string,\n +options: Array,\n +destructiveButtonIndex?: ?number,\n +cancelButtonIndex?: ?number,\n +anchor?: ?number,\n +tintColor?: number | string,\n |},\n callback: (buttonIndex: number) => void,\n ) {\n invariant(\n typeof options === 'object' && options !== null,\n 'Options must be a valid object',\n );\n invariant(typeof callback === 'function', 'Must provide a valid callback');\n\n RCTActionSheetManager.showActionSheetWithOptions(\n {...options, tintColor: processColor(options.tintColor)},\n callback,\n );\n },\n\n /**\n * Display the iOS share sheet. The `options` object should contain\n * one or both of `message` and `url` and can additionally have\n * a `subject` or `excludedActivityTypes`:\n *\n * - `url` (string) - a URL to share\n * - `message` (string) - a message to share\n * - `subject` (string) - a subject for the message\n * - `excludedActivityTypes` (array) - the activities to exclude from\n * the ActionSheet\n * - `tintColor` (color) - tint color of the buttons\n *\n * The 'failureCallback' function takes one parameter, an error object.\n * The only property defined on this object is an optional `stack` property\n * of type `string`.\n *\n * The 'successCallback' function takes two parameters:\n *\n * - a boolean value signifying success or failure\n * - a string that, in the case of success, indicates the method of sharing\n *\n * See http://facebook.github.io/react-native/docs/actionsheetios.html#showshareactionsheetwithoptions\n */\n showShareActionSheetWithOptions(\n options: Object,\n failureCallback: Function,\n successCallback: Function,\n ) {\n invariant(\n typeof options === 'object' && options !== null,\n 'Options must be a valid object',\n );\n invariant(\n typeof failureCallback === 'function',\n 'Must provide a valid failureCallback',\n );\n invariant(\n typeof successCallback === 'function',\n 'Must provide a valid successCallback',\n );\n RCTActionSheetManager.showShareActionSheetWithOptions(\n {...options, tintColor: processColor(options.tintColor)},\n failureCallback,\n successCallback,\n );\n },\n};\n\nmodule.exports = ActionSheetIOS;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst BatchedBridge = require('BatchedBridge');\nconst BugReporting = require('BugReporting');\nconst NativeModules = require('NativeModules');\nconst ReactNative = require('ReactNative');\nconst SceneTracker = require('SceneTracker');\n\nconst infoLog = require('infoLog');\nconst invariant = require('fbjs/lib/invariant');\nconst renderApplication = require('renderApplication');\n\ntype Task = (taskData: any) => Promise;\ntype TaskProvider = () => Task;\nexport type ComponentProvider = () => React$ComponentType;\nexport type ComponentProviderInstrumentationHook = (\n component: ComponentProvider,\n) => React$ComponentType;\nexport type AppConfig = {\n appKey: string,\n component?: ComponentProvider,\n run?: Function,\n section?: boolean,\n};\nexport type Runnable = {\n component?: ComponentProvider,\n run: Function,\n};\nexport type Runnables = {\n [appKey: string]: Runnable,\n};\nexport type Registry = {\n sections: Array,\n runnables: Runnables,\n};\nexport type WrapperComponentProvider = any => React$ComponentType<*>;\n\nconst runnables: Runnables = {};\nlet runCount = 1;\nconst sections: Runnables = {};\nconst tasks: Map = new Map();\nlet componentProviderInstrumentationHook: ComponentProviderInstrumentationHook = (\n component: ComponentProvider,\n) => component();\n\nlet wrapperComponentProvider: ?WrapperComponentProvider;\n\n/**\n * `AppRegistry` is the JavaScript entry point to running all React Native apps.\n *\n * See http://facebook.github.io/react-native/docs/appregistry.html\n */\nconst AppRegistry = {\n setWrapperComponentProvider(provider: WrapperComponentProvider) {\n wrapperComponentProvider = provider;\n },\n\n registerConfig(config: Array): void {\n config.forEach(appConfig => {\n if (appConfig.run) {\n AppRegistry.registerRunnable(appConfig.appKey, appConfig.run);\n } else {\n invariant(\n appConfig.component != null,\n 'AppRegistry.registerConfig(...): Every config is expected to set ' +\n 'either `run` or `component`, but `%s` has neither.',\n appConfig.appKey,\n );\n AppRegistry.registerComponent(\n appConfig.appKey,\n appConfig.component,\n appConfig.section,\n );\n }\n });\n },\n\n /**\n * Registers an app's root component.\n *\n * See http://facebook.github.io/react-native/docs/appregistry.html#registercomponent\n */\n registerComponent(\n appKey: string,\n componentProvider: ComponentProvider,\n section?: boolean,\n ): string {\n runnables[appKey] = {\n componentProvider,\n run: appParameters => {\n renderApplication(\n componentProviderInstrumentationHook(componentProvider),\n appParameters.initialProps,\n appParameters.rootTag,\n wrapperComponentProvider && wrapperComponentProvider(appParameters),\n appParameters.fabric,\n );\n },\n };\n if (section) {\n sections[appKey] = runnables[appKey];\n }\n return appKey;\n },\n\n registerRunnable(appKey: string, run: Function): string {\n runnables[appKey] = {run};\n return appKey;\n },\n\n registerSection(appKey: string, component: ComponentProvider): void {\n AppRegistry.registerComponent(appKey, component, true);\n },\n\n getAppKeys(): Array {\n return Object.keys(runnables);\n },\n\n getSectionKeys(): Array {\n return Object.keys(sections);\n },\n\n getSections(): Runnables {\n return {\n ...sections,\n };\n },\n\n getRunnable(appKey: string): ?Runnable {\n return runnables[appKey];\n },\n\n getRegistry(): Registry {\n return {\n sections: AppRegistry.getSectionKeys(),\n runnables: {...runnables},\n };\n },\n\n setComponentProviderInstrumentationHook(\n hook: ComponentProviderInstrumentationHook,\n ) {\n componentProviderInstrumentationHook = hook;\n },\n\n /**\n * Loads the JavaScript bundle and runs the app.\n *\n * See http://facebook.github.io/react-native/docs/appregistry.html#runapplication\n */\n runApplication(appKey: string, appParameters: any): void {\n const msg =\n 'Running application \"' +\n appKey +\n '\" with appParams: ' +\n JSON.stringify(appParameters) +\n '. ' +\n '__DEV__ === ' +\n String(__DEV__) +\n ', development-level warning are ' +\n (__DEV__ ? 'ON' : 'OFF') +\n ', performance optimizations are ' +\n (__DEV__ ? 'OFF' : 'ON');\n infoLog(msg);\n BugReporting.addSource(\n 'AppRegistry.runApplication' + runCount++,\n () => msg,\n );\n invariant(\n runnables[appKey] && runnables[appKey].run,\n 'Application ' +\n appKey +\n ' has not been registered.\\n\\n' +\n \"Hint: This error often happens when you're running the packager \" +\n '(local dev server) from a wrong folder. For example you have ' +\n 'multiple apps and the packager is still running for the app you ' +\n 'were working on before.\\nIf this is the case, simply kill the old ' +\n 'packager instance (e.g. close the packager terminal window) ' +\n 'and start the packager in the correct app folder (e.g. cd into app ' +\n \"folder and run 'npm start').\\n\\n\" +\n 'This error can also happen due to a require() error during ' +\n 'initialization or failure to call AppRegistry.registerComponent.\\n\\n',\n );\n\n SceneTracker.setActiveScene({name: appKey});\n runnables[appKey].run(appParameters);\n },\n\n /**\n * Stops an application when a view should be destroyed.\n *\n * See http://facebook.github.io/react-native/docs/appregistry.html#unmountapplicationcomponentatroottag\n */\n unmountApplicationComponentAtRootTag(rootTag: number): void {\n ReactNative.unmountComponentAtNodeAndRemoveContainer(rootTag);\n },\n\n /**\n * Register a headless task. A headless task is a bit of code that runs without a UI.\n *\n * See http://facebook.github.io/react-native/docs/appregistry.html#registerheadlesstask\n */\n registerHeadlessTask(taskKey: string, task: TaskProvider): void {\n if (tasks.has(taskKey)) {\n console.warn(\n `registerHeadlessTask called multiple times for same key '${taskKey}'`,\n );\n }\n tasks.set(taskKey, task);\n },\n\n /**\n * Only called from native code. Starts a headless task.\n *\n * See http://facebook.github.io/react-native/docs/appregistry.html#startheadlesstask\n */\n startHeadlessTask(taskId: number, taskKey: string, data: any): void {\n const taskProvider = tasks.get(taskKey);\n if (!taskProvider) {\n throw new Error(`No task registered for key ${taskKey}`);\n }\n taskProvider()(data)\n .then(() =>\n NativeModules.HeadlessJsTaskSupport.notifyTaskFinished(taskId),\n )\n .catch(reason => {\n console.error(reason);\n NativeModules.HeadlessJsTaskSupport.notifyTaskFinished(taskId);\n });\n },\n};\n\nBatchedBridge.registerCallableModule('AppRegistry', AppRegistry);\n\nmodule.exports = AppRegistry;\n","/**\n * Copyright (c) 2013-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nconst Map = require('Map');\nconst infoLog = require('infoLog');\n\nimport type EmitterSubscription from 'EmitterSubscription';\n\ntype ExtraData = {[key: string]: string};\ntype SourceCallback = () => string;\ntype DebugData = {extras: ExtraData, files: ExtraData};\n\nfunction defaultExtras() {\n BugReporting.addFileSource('react_hierarchy.txt', () =>\n require('dumpReactTree')(),\n );\n}\n\n/**\n * A simple class for collecting bug report data. Components can add sources that will be queried when a bug report\n * is created via `collectExtraData`. For example, a list component might add a source that provides the list of rows\n * that are currently visible on screen. Components should also remember to call `remove()` on the object that is\n * returned by `addSource` when they are unmounted.\n */\nclass BugReporting {\n static _extraSources: Map = new Map();\n static _fileSources: Map = new Map();\n static _subscription: ?EmitterSubscription = null;\n static _redboxSubscription: ?EmitterSubscription = null;\n\n static _maybeInit() {\n if (!BugReporting._subscription) {\n BugReporting._subscription = RCTDeviceEventEmitter.addListener(\n 'collectBugExtraData',\n BugReporting.collectExtraData,\n null,\n );\n defaultExtras();\n }\n\n if (!BugReporting._redboxSubscription) {\n BugReporting._redboxSubscription = RCTDeviceEventEmitter.addListener(\n 'collectRedBoxExtraData',\n BugReporting.collectExtraData,\n null,\n );\n }\n }\n\n /**\n * Maps a string key to a simple callback that should return a string payload to be attached\n * to a bug report. Source callbacks are called when `collectExtraData` is called.\n *\n * Returns an object to remove the source when the component unmounts.\n *\n * Conflicts trample with a warning.\n */\n static addSource(\n key: string,\n callback: SourceCallback,\n ): {remove: () => void} {\n return this._addSource(key, callback, BugReporting._extraSources);\n }\n\n /**\n * Maps a string key to a simple callback that should return a string payload to be attached\n * to a bug report. Source callbacks are called when `collectExtraData` is called.\n *\n * Returns an object to remove the source when the component unmounts.\n *\n * Conflicts trample with a warning.\n */\n static addFileSource(\n key: string,\n callback: SourceCallback,\n ): {remove: () => void} {\n return this._addSource(key, callback, BugReporting._fileSources);\n }\n\n static _addSource(\n key: string,\n callback: SourceCallback,\n source: Map,\n ): {remove: () => void} {\n BugReporting._maybeInit();\n if (source.has(key)) {\n console.warn(\n `BugReporting.add* called multiple times for same key '${key}'`,\n );\n }\n source.set(key, callback);\n return {\n remove: () => {\n source.delete(key);\n },\n };\n }\n\n /**\n * This can be called from a native bug reporting flow, or from JS code.\n *\n * If available, this will call `NativeModules.BugReporting.setExtraData(extraData)`\n * after collecting `extraData`.\n */\n static collectExtraData(): DebugData {\n const extraData: ExtraData = {};\n for (const [key, callback] of BugReporting._extraSources) {\n extraData[key] = callback();\n }\n const fileData: ExtraData = {};\n for (const [key, callback] of BugReporting._fileSources) {\n fileData[key] = callback();\n }\n infoLog('BugReporting extraData:', extraData);\n const BugReportingNativeModule = require('NativeModules').BugReporting;\n BugReportingNativeModule &&\n BugReportingNativeModule.setExtraData &&\n BugReportingNativeModule.setExtraData(extraData, fileData);\n\n const RedBoxNativeModule = require('NativeModules').RedBox;\n RedBoxNativeModule &&\n RedBoxNativeModule.setExtraData &&\n RedBoxNativeModule.setExtraData(extraData, 'From BugReporting.js');\n\n return {extras: extraData, files: fileData};\n }\n}\n\nmodule.exports = BugReporting;\n","/**\n * Copyright (c) 2013-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 * @format\n * @flow strict\n */\n\n'use strict';\n\n/*\nconst getReactData = require('getReactData');\n\nconst INDENTATION_SIZE = 2;\nconst MAX_DEPTH = 2;\nconst MAX_STRING_LENGTH = 50;\n*/\n\n/**\n * Dump all React Native root views and their content. This function tries\n * it best to get the content but ultimately relies on implementation details\n * of React and will fail in future versions.\n */\nfunction dumpReactTree() {\n try {\n return getReactTree();\n } catch (e) {\n return 'Failed to dump react tree: ' + e;\n }\n}\n\nfunction getReactTree() {\n // TODO(sema): Reenable tree dumps using the Fiber tree structure. #15945684\n return (\n 'React tree dumps have been temporarily disabled while React is ' +\n 'upgraded to Fiber.'\n );\n /*\n let output = '';\n const rootIds = Object.getOwnPropertyNames(ReactNativeMount._instancesByContainerID);\n for (const rootId of rootIds) {\n const instance = ReactNativeMount._instancesByContainerID[rootId];\n output += `============ Root ID: ${rootId} ============\\n`;\n output += dumpNode(instance, 0);\n output += `============ End root ID: ${rootId} ============\\n`;\n }\n return output;\n*/\n}\n\n/*\nfunction dumpNode(node: Object, indentation: number) {\n const data = getReactData(node);\n if (data.nodeType === 'Text') {\n return indent(indentation) + data.text + '\\n';\n } else if (data.nodeType === 'Empty') {\n return '';\n }\n let output = indent(indentation) + `<${data.name}`;\n if (data.nodeType === 'Composite') {\n for (const propName of Object.getOwnPropertyNames(data.props || {})) {\n if (isNormalProp(propName)) {\n try {\n const value = convertValue(data.props[propName]);\n if (value) {\n output += ` ${propName}=${value}`;\n }\n } catch (e) {\n const message = `[Failed to get property: ${e}]`;\n output += ` ${propName}=${message}`;\n }\n }\n }\n }\n let childOutput = '';\n for (const child of data.children || []) {\n childOutput += dumpNode(child, indentation + 1);\n }\n\n if (childOutput) {\n output += '>\\n' + childOutput + indent(indentation) + `\\n`;\n } else {\n output += ' />\\n';\n }\n\n return output;\n}\n\nfunction isNormalProp(name: string): boolean {\n switch (name) {\n case 'children':\n case 'key':\n case 'ref':\n return false;\n default:\n return true;\n }\n}\n\nfunction convertObject(object: Object, depth: number) {\n if (depth >= MAX_DEPTH) {\n return '[...omitted]';\n }\n let output = '{';\n let first = true;\n for (const key of Object.getOwnPropertyNames(object)) {\n if (!first) {\n output += ', ';\n }\n output += `${key}: ${convertValue(object[key], depth + 1)}`;\n first = false;\n }\n return output + '}';\n}\n\nfunction convertValue(value, depth = 0): ?string {\n if (!value) {\n return null;\n }\n\n switch (typeof value) {\n case 'string':\n return JSON.stringify(possiblyEllipsis(value).replace('\\n', '\\\\n'));\n case 'boolean':\n case 'number':\n return JSON.stringify(value);\n case 'function':\n return '[function]';\n case 'object':\n return convertObject(value, depth);\n default:\n return null;\n }\n}\n\nfunction possiblyEllipsis(value: string) {\n if (value.length > MAX_STRING_LENGTH) {\n return value.slice(0, MAX_STRING_LENGTH) + '...';\n } else {\n return value;\n }\n}\n\nfunction indent(size: number) {\n return ' '.repeat(size * INDENTATION_SIZE);\n}\n*/\n\nmodule.exports = dumpReactTree;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict\n */\n\n'use strict';\n\ntype Scene = {name: string};\n\nlet _listeners: Array<(scene: Scene) => void> = [];\n\nlet _activeScene = {name: 'default'};\n\nconst SceneTracker = {\n setActiveScene(scene: Scene) {\n _activeScene = scene;\n _listeners.forEach(listener => listener(_activeScene));\n },\n\n getActiveScene(): Scene {\n return _activeScene;\n },\n\n addActiveSceneChangedListener(\n callback: (scene: Scene) => void,\n ): {remove: () => void} {\n _listeners.push(callback);\n return {\n remove: () => {\n _listeners = _listeners.filter(listener => callback !== listener);\n },\n };\n },\n};\n\nmodule.exports = SceneTracker;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst AppContainer = require('AppContainer');\nconst React = require('React');\nconst ReactFabricIndicator = require('ReactFabricIndicator');\n\nconst invariant = require('fbjs/lib/invariant');\n\n// require BackHandler so it sets the default handler that exits the app if no listeners respond\nrequire('BackHandler');\n\nfunction renderApplication(\n RootComponent: React.ComponentType,\n initialProps: Props,\n rootTag: any,\n WrapperComponent?: ?React.ComponentType<*>,\n fabric?: boolean,\n showFabricIndicator?: boolean,\n) {\n invariant(rootTag, 'Expect to have a valid rootTag, instead got ', rootTag);\n\n let renderable = (\n \n \n {fabric === true && showFabricIndicator === true ? (\n \n ) : null}\n \n );\n\n // If the root component is async, the user probably wants the initial render\n // to be async also. To do this, wrap AppContainer with an async marker.\n // For more info see https://fb.me/is-component-async\n if (\n /* $FlowFixMe(>=0.68.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.68 was deployed. To see the error delete this\n * comment and run Flow. */\n RootComponent.prototype != null &&\n RootComponent.prototype.unstable_isAsyncReactComponent === true\n ) {\n // $FlowFixMe This is not yet part of the official public API\n const ConcurrentMode = React.unstable_ConcurrentMode;\n renderable = {renderable};\n }\n\n if (fabric) {\n require('ReactFabric').render(renderable, rootTag);\n } else {\n require('ReactNative').render(renderable, rootTag);\n }\n}\n\nmodule.exports = renderApplication;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst React = require('React');\nconst StyleSheet = require('StyleSheet');\nconst Text = require('Text');\nconst View = require('View');\n\nfunction ReactFabricIndicator(): React.Node {\n return (\n \n FABRIC\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'rgba(0,0,0, 0.25)',\n position: 'absolute',\n top: 0,\n right: 0,\n padding: 2,\n },\n text: {\n fontSize: 6,\n color: '#ffffff',\n },\n});\n\nmodule.exports = ReactFabricIndicator;\n","/**\n * Copyright (c) 2015-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 * @format\n */\n\n'use strict';\n\nconst DeviceEventManager = require('NativeModules').DeviceEventManager;\nconst RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\n\nconst DEVICE_BACK_EVENT = 'hardwareBackPress';\n\ntype BackPressEventName = $Enum<{\n backPress: string,\n}>;\n\nconst _backPressSubscriptions = new Set();\n\nRCTDeviceEventEmitter.addListener(DEVICE_BACK_EVENT, function() {\n let invokeDefault = true;\n const subscriptions = Array.from(_backPressSubscriptions.values()).reverse();\n\n for (let i = 0; i < subscriptions.length; ++i) {\n if (subscriptions[i]()) {\n invokeDefault = false;\n break;\n }\n }\n\n if (invokeDefault) {\n BackHandler.exitApp();\n }\n});\n\n/**\n * Detect hardware button presses for back navigation.\n *\n * Android: Detect hardware back button presses, and programmatically invoke the default back button\n * functionality to exit the app if there are no listeners or if none of the listeners return true.\n *\n * tvOS: Detect presses of the menu button on the TV remote. (Still to be implemented:\n * programmatically disable menu button handling\n * functionality to exit the app if there are no listeners or if none of the listeners return true.)\n *\n * iOS: Not applicable.\n *\n * The event subscriptions are called in reverse order (i.e. last registered subscription first),\n * and if one subscription returns true then subscriptions registered earlier will not be called.\n *\n * Example:\n *\n * ```javascript\n * BackHandler.addEventListener('hardwareBackPress', function() {\n * // this.onMainScreen and this.goBack are just examples, you need to use your own implementation here\n * // Typically you would use the navigator here to go to the last state.\n *\n * if (!this.onMainScreen()) {\n * this.goBack();\n * return true;\n * }\n * return false;\n * });\n * ```\n */\nconst BackHandler = {\n exitApp: function() {\n DeviceEventManager.invokeDefaultBackPressHandler();\n },\n\n /**\n * Adds an event handler. Supported events:\n *\n * - `hardwareBackPress`: Fires when the Android hardware back button is pressed or when the\n * tvOS menu button is pressed.\n */\n addEventListener: function(\n eventName: BackPressEventName,\n handler: Function,\n ): {remove: () => void} {\n _backPressSubscriptions.add(handler);\n return {\n remove: () => BackHandler.removeEventListener(eventName, handler),\n };\n },\n\n /**\n * Removes the event handler.\n */\n removeEventListener: function(\n eventName: BackPressEventName,\n handler: Function,\n ): void {\n _backPressSubscriptions.delete(handler);\n },\n};\n\nmodule.exports = BackHandler;\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @format\n * @flow\n */\n\n'use strict';\n\nconst BatchedBridge = require('BatchedBridge');\n\n// TODO @sema: Adjust types\nimport type {ReactNativeType} from 'ReactNativeTypes';\n\nlet ReactFabric;\n\nif (__DEV__) {\n ReactFabric = require('ReactFabric-dev');\n} else {\n ReactFabric = require('ReactFabric-prod');\n}\n\nBatchedBridge.registerCallableModule('ReactFabric', ReactFabric);\n\nmodule.exports = (ReactFabric: ReactNativeType);\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @noflow\n * @providesModule ReactFabric-prod\n * @preventMunge\n * @generated\n */\n\n\"use strict\";\nrequire(\"InitializeCore\");\nvar ReactNativeViewConfigRegistry = require(\"ReactNativeViewConfigRegistry\"),\n UIManager = require(\"UIManager\"),\n React = require(\"react\"),\n deepDiffer = require(\"deepDiffer\"),\n flattenStyle = require(\"flattenStyle\"),\n TextInputState = require(\"TextInputState\"),\n FabricUIManager = require(\"FabricUIManager\");\nvar scheduler = require(\"scheduler\"),\n ExceptionsManager = require(\"ExceptionsManager\");\nfunction invariant(condition, format, a, b, c, d, e, f) {\n if (!condition) {\n condition = void 0;\n if (void 0 === format)\n condition = Error(\n \"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\"\n );\n else {\n var args = [a, b, c, d, e, f],\n argIndex = 0;\n condition = Error(\n format.replace(/%s/g, function() {\n return args[argIndex++];\n })\n );\n condition.name = \"Invariant Violation\";\n }\n condition.framesToPop = 1;\n throw condition;\n }\n}\nfunction invokeGuardedCallbackImpl(name, func, context, a, b, c, d, e, f) {\n var funcArgs = Array.prototype.slice.call(arguments, 3);\n try {\n func.apply(context, funcArgs);\n } catch (error) {\n this.onError(error);\n }\n}\nvar hasError = !1,\n caughtError = null,\n hasRethrowError = !1,\n rethrowError = null,\n reporter = {\n onError: function(error) {\n hasError = !0;\n caughtError = error;\n }\n };\nfunction invokeGuardedCallback(name, func, context, a, b, c, d, e, f) {\n hasError = !1;\n caughtError = null;\n invokeGuardedCallbackImpl.apply(reporter, arguments);\n}\nfunction invokeGuardedCallbackAndCatchFirstError(\n name,\n func,\n context,\n a,\n b,\n c,\n d,\n e,\n f\n) {\n invokeGuardedCallback.apply(this, arguments);\n if (hasError) {\n if (hasError) {\n var error = caughtError;\n hasError = !1;\n caughtError = null;\n } else\n invariant(\n !1,\n \"clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue.\"\n ),\n (error = void 0);\n hasRethrowError || ((hasRethrowError = !0), (rethrowError = error));\n }\n}\nvar eventPluginOrder = null,\n namesToPlugins = {};\nfunction recomputePluginOrdering() {\n if (eventPluginOrder)\n for (var pluginName in namesToPlugins) {\n var pluginModule = namesToPlugins[pluginName],\n pluginIndex = eventPluginOrder.indexOf(pluginName);\n invariant(\n -1 < pluginIndex,\n \"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.\",\n pluginName\n );\n if (!plugins[pluginIndex]) {\n invariant(\n pluginModule.extractEvents,\n \"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.\",\n pluginName\n );\n plugins[pluginIndex] = pluginModule;\n pluginIndex = pluginModule.eventTypes;\n for (var eventName in pluginIndex) {\n var JSCompiler_inline_result = void 0;\n var dispatchConfig = pluginIndex[eventName],\n pluginModule$jscomp$0 = pluginModule,\n eventName$jscomp$0 = eventName;\n invariant(\n !eventNameDispatchConfigs.hasOwnProperty(eventName$jscomp$0),\n \"EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.\",\n eventName$jscomp$0\n );\n eventNameDispatchConfigs[eventName$jscomp$0] = dispatchConfig;\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n if (phasedRegistrationNames) {\n for (JSCompiler_inline_result in phasedRegistrationNames)\n phasedRegistrationNames.hasOwnProperty(\n JSCompiler_inline_result\n ) &&\n publishRegistrationName(\n phasedRegistrationNames[JSCompiler_inline_result],\n pluginModule$jscomp$0,\n eventName$jscomp$0\n );\n JSCompiler_inline_result = !0;\n } else\n dispatchConfig.registrationName\n ? (publishRegistrationName(\n dispatchConfig.registrationName,\n pluginModule$jscomp$0,\n eventName$jscomp$0\n ),\n (JSCompiler_inline_result = !0))\n : (JSCompiler_inline_result = !1);\n invariant(\n JSCompiler_inline_result,\n \"EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.\",\n eventName,\n pluginName\n );\n }\n }\n }\n}\nfunction publishRegistrationName(registrationName, pluginModule) {\n invariant(\n !registrationNameModules[registrationName],\n \"EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.\",\n registrationName\n );\n registrationNameModules[registrationName] = pluginModule;\n}\nvar plugins = [],\n eventNameDispatchConfigs = {},\n registrationNameModules = {},\n getFiberCurrentPropsFromNode = null,\n getInstanceFromNode = null,\n getNodeFromInstance = null;\nfunction executeDispatch(event, listener, inst) {\n var type = event.type || \"unknown-event\";\n event.currentTarget = getNodeFromInstance(inst);\n invokeGuardedCallbackAndCatchFirstError(type, listener, void 0, event);\n event.currentTarget = null;\n}\nfunction executeDirectDispatch(event) {\n var dispatchListener = event._dispatchListeners,\n dispatchInstance = event._dispatchInstances;\n invariant(\n !Array.isArray(dispatchListener),\n \"executeDirectDispatch(...): Invalid `event`.\"\n );\n event.currentTarget = dispatchListener\n ? getNodeFromInstance(dispatchInstance)\n : null;\n dispatchListener = dispatchListener ? dispatchListener(event) : null;\n event.currentTarget = null;\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n return dispatchListener;\n}\nfunction accumulateInto(current, next) {\n invariant(\n null != next,\n \"accumulateInto(...): Accumulated items must not be null or undefined.\"\n );\n if (null == current) return next;\n if (Array.isArray(current)) {\n if (Array.isArray(next)) return current.push.apply(current, next), current;\n current.push(next);\n return current;\n }\n return Array.isArray(next) ? [current].concat(next) : [current, next];\n}\nfunction forEachAccumulated(arr, cb, scope) {\n Array.isArray(arr) ? arr.forEach(cb, scope) : arr && cb.call(scope, arr);\n}\nvar eventQueue = null;\nfunction executeDispatchesAndReleaseTopLevel(e) {\n if (e) {\n var dispatchListeners = e._dispatchListeners,\n dispatchInstances = e._dispatchInstances;\n if (Array.isArray(dispatchListeners))\n for (\n var i = 0;\n i < dispatchListeners.length && !e.isPropagationStopped();\n i++\n )\n executeDispatch(e, dispatchListeners[i], dispatchInstances[i]);\n else\n dispatchListeners &&\n executeDispatch(e, dispatchListeners, dispatchInstances);\n e._dispatchListeners = null;\n e._dispatchInstances = null;\n e.isPersistent() || e.constructor.release(e);\n }\n}\nvar injection = {\n injectEventPluginOrder: function(injectedEventPluginOrder) {\n invariant(\n !eventPluginOrder,\n \"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.\"\n );\n eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n recomputePluginOrdering();\n },\n injectEventPluginsByName: function(injectedNamesToPlugins) {\n var isOrderingDirty = !1,\n pluginName;\n for (pluginName in injectedNamesToPlugins)\n if (injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n var pluginModule = injectedNamesToPlugins[pluginName];\n (namesToPlugins.hasOwnProperty(pluginName) &&\n namesToPlugins[pluginName] === pluginModule) ||\n (invariant(\n !namesToPlugins[pluginName],\n \"EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.\",\n pluginName\n ),\n (namesToPlugins[pluginName] = pluginModule),\n (isOrderingDirty = !0));\n }\n isOrderingDirty && recomputePluginOrdering();\n }\n};\nfunction getListener(inst, registrationName) {\n var listener = inst.stateNode;\n if (!listener) return null;\n var props = getFiberCurrentPropsFromNode(listener);\n if (!props) return null;\n listener = props[registrationName];\n a: switch (registrationName) {\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n (props = !props.disabled) ||\n ((inst = inst.type),\n (props = !(\n \"button\" === inst ||\n \"input\" === inst ||\n \"select\" === inst ||\n \"textarea\" === inst\n )));\n inst = !props;\n break a;\n default:\n inst = !1;\n }\n if (inst) return null;\n invariant(\n !listener || \"function\" === typeof listener,\n \"Expected `%s` listener to be a function, instead got a value of `%s` type.\",\n registrationName,\n typeof listener\n );\n return listener;\n}\nfunction getParent(inst) {\n do inst = inst.return;\n while (inst && 5 !== inst.tag);\n return inst ? inst : null;\n}\nfunction traverseTwoPhase(inst, fn, arg) {\n for (var path = []; inst; ) path.push(inst), (inst = getParent(inst));\n for (inst = path.length; 0 < inst--; ) fn(path[inst], \"captured\", arg);\n for (inst = 0; inst < path.length; inst++) fn(path[inst], \"bubbled\", arg);\n}\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n if (\n (phase = getListener(\n inst,\n event.dispatchConfig.phasedRegistrationNames[phase]\n ))\n )\n (event._dispatchListeners = accumulateInto(\n event._dispatchListeners,\n phase\n )),\n (event._dispatchInstances = accumulateInto(\n event._dispatchInstances,\n inst\n ));\n}\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n event &&\n event.dispatchConfig.phasedRegistrationNames &&\n traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n}\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n var targetInst = event._targetInst;\n targetInst = targetInst ? getParent(targetInst) : null;\n traverseTwoPhase(targetInst, accumulateDirectionalDispatches, event);\n }\n}\nfunction accumulateDirectDispatchesSingle(event) {\n if (event && event.dispatchConfig.registrationName) {\n var inst = event._targetInst;\n if (inst && event && event.dispatchConfig.registrationName) {\n var listener = getListener(inst, event.dispatchConfig.registrationName);\n listener &&\n ((event._dispatchListeners = accumulateInto(\n event._dispatchListeners,\n listener\n )),\n (event._dispatchInstances = accumulateInto(\n event._dispatchInstances,\n inst\n )));\n }\n }\n}\nfunction functionThatReturnsTrue() {\n return !0;\n}\nfunction functionThatReturnsFalse() {\n return !1;\n}\nfunction SyntheticEvent(\n dispatchConfig,\n targetInst,\n nativeEvent,\n nativeEventTarget\n) {\n this.dispatchConfig = dispatchConfig;\n this._targetInst = targetInst;\n this.nativeEvent = nativeEvent;\n dispatchConfig = this.constructor.Interface;\n for (var propName in dispatchConfig)\n dispatchConfig.hasOwnProperty(propName) &&\n ((targetInst = dispatchConfig[propName])\n ? (this[propName] = targetInst(nativeEvent))\n : \"target\" === propName\n ? (this.target = nativeEventTarget)\n : (this[propName] = nativeEvent[propName]));\n this.isDefaultPrevented = (null != nativeEvent.defaultPrevented\n ? nativeEvent.defaultPrevented\n : !1 === nativeEvent.returnValue)\n ? functionThatReturnsTrue\n : functionThatReturnsFalse;\n this.isPropagationStopped = functionThatReturnsFalse;\n return this;\n}\nObject.assign(SyntheticEvent.prototype, {\n preventDefault: function() {\n this.defaultPrevented = !0;\n var event = this.nativeEvent;\n event &&\n (event.preventDefault\n ? event.preventDefault()\n : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n (this.isDefaultPrevented = functionThatReturnsTrue));\n },\n stopPropagation: function() {\n var event = this.nativeEvent;\n event &&\n (event.stopPropagation\n ? event.stopPropagation()\n : \"unknown\" !== typeof event.cancelBubble && (event.cancelBubble = !0),\n (this.isPropagationStopped = functionThatReturnsTrue));\n },\n persist: function() {\n this.isPersistent = functionThatReturnsTrue;\n },\n isPersistent: functionThatReturnsFalse,\n destructor: function() {\n var Interface = this.constructor.Interface,\n propName;\n for (propName in Interface) this[propName] = null;\n this.nativeEvent = this._targetInst = this.dispatchConfig = null;\n this.isPropagationStopped = this.isDefaultPrevented = functionThatReturnsFalse;\n this._dispatchInstances = this._dispatchListeners = null;\n }\n});\nSyntheticEvent.Interface = {\n type: null,\n target: null,\n currentTarget: function() {\n return null;\n },\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function(event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\nSyntheticEvent.extend = function(Interface) {\n function E() {}\n function Class() {\n return Super.apply(this, arguments);\n }\n var Super = this;\n E.prototype = Super.prototype;\n var prototype = new E();\n Object.assign(prototype, Class.prototype);\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n Class.Interface = Object.assign({}, Super.Interface, Interface);\n Class.extend = Super.extend;\n addEventPoolingTo(Class);\n return Class;\n};\naddEventPoolingTo(SyntheticEvent);\nfunction getPooledEvent(dispatchConfig, targetInst, nativeEvent, nativeInst) {\n if (this.eventPool.length) {\n var instance = this.eventPool.pop();\n this.call(instance, dispatchConfig, targetInst, nativeEvent, nativeInst);\n return instance;\n }\n return new this(dispatchConfig, targetInst, nativeEvent, nativeInst);\n}\nfunction releasePooledEvent(event) {\n invariant(\n event instanceof this,\n \"Trying to release an event instance into a pool of a different type.\"\n );\n event.destructor();\n 10 > this.eventPool.length && this.eventPool.push(event);\n}\nfunction addEventPoolingTo(EventConstructor) {\n EventConstructor.eventPool = [];\n EventConstructor.getPooled = getPooledEvent;\n EventConstructor.release = releasePooledEvent;\n}\nvar ResponderSyntheticEvent = SyntheticEvent.extend({\n touchHistory: function() {\n return null;\n }\n});\nfunction isStartish(topLevelType) {\n return \"topTouchStart\" === topLevelType;\n}\nfunction isMoveish(topLevelType) {\n return \"topTouchMove\" === topLevelType;\n}\nvar startDependencies = [\"topTouchStart\"],\n moveDependencies = [\"topTouchMove\"],\n endDependencies = [\"topTouchCancel\", \"topTouchEnd\"],\n touchBank = [],\n touchHistory = {\n touchBank: touchBank,\n numberActiveTouches: 0,\n indexOfSingleActiveTouch: -1,\n mostRecentTimeStamp: 0\n };\nfunction timestampForTouch(touch) {\n return touch.timeStamp || touch.timestamp;\n}\nfunction getTouchIdentifier(_ref) {\n _ref = _ref.identifier;\n invariant(null != _ref, \"Touch object is missing identifier.\");\n return _ref;\n}\nfunction recordTouchStart(touch) {\n var identifier = getTouchIdentifier(touch),\n touchRecord = touchBank[identifier];\n touchRecord\n ? ((touchRecord.touchActive = !0),\n (touchRecord.startPageX = touch.pageX),\n (touchRecord.startPageY = touch.pageY),\n (touchRecord.startTimeStamp = timestampForTouch(touch)),\n (touchRecord.currentPageX = touch.pageX),\n (touchRecord.currentPageY = touch.pageY),\n (touchRecord.currentTimeStamp = timestampForTouch(touch)),\n (touchRecord.previousPageX = touch.pageX),\n (touchRecord.previousPageY = touch.pageY),\n (touchRecord.previousTimeStamp = timestampForTouch(touch)))\n : ((touchRecord = {\n touchActive: !0,\n startPageX: touch.pageX,\n startPageY: touch.pageY,\n startTimeStamp: timestampForTouch(touch),\n currentPageX: touch.pageX,\n currentPageY: touch.pageY,\n currentTimeStamp: timestampForTouch(touch),\n previousPageX: touch.pageX,\n previousPageY: touch.pageY,\n previousTimeStamp: timestampForTouch(touch)\n }),\n (touchBank[identifier] = touchRecord));\n touchHistory.mostRecentTimeStamp = timestampForTouch(touch);\n}\nfunction recordTouchMove(touch) {\n var touchRecord = touchBank[getTouchIdentifier(touch)];\n touchRecord\n ? ((touchRecord.touchActive = !0),\n (touchRecord.previousPageX = touchRecord.currentPageX),\n (touchRecord.previousPageY = touchRecord.currentPageY),\n (touchRecord.previousTimeStamp = touchRecord.currentTimeStamp),\n (touchRecord.currentPageX = touch.pageX),\n (touchRecord.currentPageY = touch.pageY),\n (touchRecord.currentTimeStamp = timestampForTouch(touch)),\n (touchHistory.mostRecentTimeStamp = timestampForTouch(touch)))\n : console.error(\n \"Cannot record touch move without a touch start.\\nTouch Move: %s\\n\",\n \"Touch Bank: %s\",\n printTouch(touch),\n printTouchBank()\n );\n}\nfunction recordTouchEnd(touch) {\n var touchRecord = touchBank[getTouchIdentifier(touch)];\n touchRecord\n ? ((touchRecord.touchActive = !1),\n (touchRecord.previousPageX = touchRecord.currentPageX),\n (touchRecord.previousPageY = touchRecord.currentPageY),\n (touchRecord.previousTimeStamp = touchRecord.currentTimeStamp),\n (touchRecord.currentPageX = touch.pageX),\n (touchRecord.currentPageY = touch.pageY),\n (touchRecord.currentTimeStamp = timestampForTouch(touch)),\n (touchHistory.mostRecentTimeStamp = timestampForTouch(touch)))\n : console.error(\n \"Cannot record touch end without a touch start.\\nTouch End: %s\\n\",\n \"Touch Bank: %s\",\n printTouch(touch),\n printTouchBank()\n );\n}\nfunction printTouch(touch) {\n return JSON.stringify({\n identifier: touch.identifier,\n pageX: touch.pageX,\n pageY: touch.pageY,\n timestamp: timestampForTouch(touch)\n });\n}\nfunction printTouchBank() {\n var printed = JSON.stringify(touchBank.slice(0, 20));\n 20 < touchBank.length &&\n (printed += \" (original size: \" + touchBank.length + \")\");\n return printed;\n}\nvar ResponderTouchHistoryStore = {\n recordTouchTrack: function(topLevelType, nativeEvent) {\n if (isMoveish(topLevelType))\n nativeEvent.changedTouches.forEach(recordTouchMove);\n else if (isStartish(topLevelType))\n nativeEvent.changedTouches.forEach(recordTouchStart),\n (touchHistory.numberActiveTouches = nativeEvent.touches.length),\n 1 === touchHistory.numberActiveTouches &&\n (touchHistory.indexOfSingleActiveTouch =\n nativeEvent.touches[0].identifier);\n else if (\n \"topTouchEnd\" === topLevelType ||\n \"topTouchCancel\" === topLevelType\n )\n if (\n (nativeEvent.changedTouches.forEach(recordTouchEnd),\n (touchHistory.numberActiveTouches = nativeEvent.touches.length),\n 1 === touchHistory.numberActiveTouches)\n )\n for (topLevelType = 0; topLevelType < touchBank.length; topLevelType++)\n if (\n ((nativeEvent = touchBank[topLevelType]),\n null != nativeEvent && nativeEvent.touchActive)\n ) {\n touchHistory.indexOfSingleActiveTouch = topLevelType;\n break;\n }\n },\n touchHistory: touchHistory\n};\nfunction accumulate(current, next) {\n invariant(\n null != next,\n \"accumulate(...): Accumulated items must be not be null or undefined.\"\n );\n return null == current\n ? next\n : Array.isArray(current)\n ? current.concat(next)\n : Array.isArray(next)\n ? [current].concat(next)\n : [current, next];\n}\nvar responderInst = null,\n trackedTouchCount = 0;\nfunction changeResponder(nextResponderInst, blockHostResponder) {\n var oldResponderInst = responderInst;\n responderInst = nextResponderInst;\n if (null !== ResponderEventPlugin.GlobalResponderHandler)\n ResponderEventPlugin.GlobalResponderHandler.onChange(\n oldResponderInst,\n nextResponderInst,\n blockHostResponder\n );\n}\nvar eventTypes$1 = {\n startShouldSetResponder: {\n phasedRegistrationNames: {\n bubbled: \"onStartShouldSetResponder\",\n captured: \"onStartShouldSetResponderCapture\"\n },\n dependencies: startDependencies\n },\n scrollShouldSetResponder: {\n phasedRegistrationNames: {\n bubbled: \"onScrollShouldSetResponder\",\n captured: \"onScrollShouldSetResponderCapture\"\n },\n dependencies: [\"topScroll\"]\n },\n selectionChangeShouldSetResponder: {\n phasedRegistrationNames: {\n bubbled: \"onSelectionChangeShouldSetResponder\",\n captured: \"onSelectionChangeShouldSetResponderCapture\"\n },\n dependencies: [\"topSelectionChange\"]\n },\n moveShouldSetResponder: {\n phasedRegistrationNames: {\n bubbled: \"onMoveShouldSetResponder\",\n captured: \"onMoveShouldSetResponderCapture\"\n },\n dependencies: moveDependencies\n },\n responderStart: {\n registrationName: \"onResponderStart\",\n dependencies: startDependencies\n },\n responderMove: {\n registrationName: \"onResponderMove\",\n dependencies: moveDependencies\n },\n responderEnd: {\n registrationName: \"onResponderEnd\",\n dependencies: endDependencies\n },\n responderRelease: {\n registrationName: \"onResponderRelease\",\n dependencies: endDependencies\n },\n responderTerminationRequest: {\n registrationName: \"onResponderTerminationRequest\",\n dependencies: []\n },\n responderGrant: { registrationName: \"onResponderGrant\", dependencies: [] },\n responderReject: {\n registrationName: \"onResponderReject\",\n dependencies: []\n },\n responderTerminate: {\n registrationName: \"onResponderTerminate\",\n dependencies: []\n }\n },\n ResponderEventPlugin = {\n _getResponder: function() {\n return responderInst;\n },\n eventTypes: eventTypes$1,\n extractEvents: function(\n topLevelType,\n targetInst,\n nativeEvent,\n nativeEventTarget\n ) {\n if (isStartish(topLevelType)) trackedTouchCount += 1;\n else if (\n \"topTouchEnd\" === topLevelType ||\n \"topTouchCancel\" === topLevelType\n )\n if (0 <= trackedTouchCount) --trackedTouchCount;\n else\n return (\n console.error(\n \"Ended a touch event which was not counted in `trackedTouchCount`.\"\n ),\n null\n );\n ResponderTouchHistoryStore.recordTouchTrack(topLevelType, nativeEvent);\n if (\n targetInst &&\n ((\"topScroll\" === topLevelType && !nativeEvent.responderIgnoreScroll) ||\n (0 < trackedTouchCount && \"topSelectionChange\" === topLevelType) ||\n isStartish(topLevelType) ||\n isMoveish(topLevelType))\n ) {\n var JSCompiler_temp = isStartish(topLevelType)\n ? eventTypes$1.startShouldSetResponder\n : isMoveish(topLevelType)\n ? eventTypes$1.moveShouldSetResponder\n : \"topSelectionChange\" === topLevelType\n ? eventTypes$1.selectionChangeShouldSetResponder\n : eventTypes$1.scrollShouldSetResponder;\n if (responderInst)\n b: {\n var JSCompiler_temp$jscomp$0 = responderInst;\n for (\n var depthA = 0, tempA = JSCompiler_temp$jscomp$0;\n tempA;\n tempA = getParent(tempA)\n )\n depthA++;\n tempA = 0;\n for (var tempB = targetInst; tempB; tempB = getParent(tempB))\n tempA++;\n for (; 0 < depthA - tempA; )\n (JSCompiler_temp$jscomp$0 = getParent(JSCompiler_temp$jscomp$0)),\n depthA--;\n for (; 0 < tempA - depthA; )\n (targetInst = getParent(targetInst)), tempA--;\n for (; depthA--; ) {\n if (\n JSCompiler_temp$jscomp$0 === targetInst ||\n JSCompiler_temp$jscomp$0 === targetInst.alternate\n )\n break b;\n JSCompiler_temp$jscomp$0 = getParent(JSCompiler_temp$jscomp$0);\n targetInst = getParent(targetInst);\n }\n JSCompiler_temp$jscomp$0 = null;\n }\n else JSCompiler_temp$jscomp$0 = targetInst;\n targetInst = JSCompiler_temp$jscomp$0 === responderInst;\n JSCompiler_temp$jscomp$0 = ResponderSyntheticEvent.getPooled(\n JSCompiler_temp,\n JSCompiler_temp$jscomp$0,\n nativeEvent,\n nativeEventTarget\n );\n JSCompiler_temp$jscomp$0.touchHistory =\n ResponderTouchHistoryStore.touchHistory;\n targetInst\n ? forEachAccumulated(\n JSCompiler_temp$jscomp$0,\n accumulateTwoPhaseDispatchesSingleSkipTarget\n )\n : forEachAccumulated(\n JSCompiler_temp$jscomp$0,\n accumulateTwoPhaseDispatchesSingle\n );\n b: {\n JSCompiler_temp = JSCompiler_temp$jscomp$0._dispatchListeners;\n targetInst = JSCompiler_temp$jscomp$0._dispatchInstances;\n if (Array.isArray(JSCompiler_temp))\n for (\n depthA = 0;\n depthA < JSCompiler_temp.length &&\n !JSCompiler_temp$jscomp$0.isPropagationStopped();\n depthA++\n ) {\n if (\n JSCompiler_temp[depthA](\n JSCompiler_temp$jscomp$0,\n targetInst[depthA]\n )\n ) {\n JSCompiler_temp = targetInst[depthA];\n break b;\n }\n }\n else if (\n JSCompiler_temp &&\n JSCompiler_temp(JSCompiler_temp$jscomp$0, targetInst)\n ) {\n JSCompiler_temp = targetInst;\n break b;\n }\n JSCompiler_temp = null;\n }\n JSCompiler_temp$jscomp$0._dispatchInstances = null;\n JSCompiler_temp$jscomp$0._dispatchListeners = null;\n JSCompiler_temp$jscomp$0.isPersistent() ||\n JSCompiler_temp$jscomp$0.constructor.release(\n JSCompiler_temp$jscomp$0\n );\n JSCompiler_temp && JSCompiler_temp !== responderInst\n ? ((JSCompiler_temp$jscomp$0 = void 0),\n (targetInst = ResponderSyntheticEvent.getPooled(\n eventTypes$1.responderGrant,\n JSCompiler_temp,\n nativeEvent,\n nativeEventTarget\n )),\n (targetInst.touchHistory = ResponderTouchHistoryStore.touchHistory),\n forEachAccumulated(targetInst, accumulateDirectDispatchesSingle),\n (depthA = !0 === executeDirectDispatch(targetInst)),\n responderInst\n ? ((tempA = ResponderSyntheticEvent.getPooled(\n eventTypes$1.responderTerminationRequest,\n responderInst,\n nativeEvent,\n nativeEventTarget\n )),\n (tempA.touchHistory = ResponderTouchHistoryStore.touchHistory),\n forEachAccumulated(tempA, accumulateDirectDispatchesSingle),\n (tempB =\n !tempA._dispatchListeners || executeDirectDispatch(tempA)),\n tempA.isPersistent() || tempA.constructor.release(tempA),\n tempB\n ? ((tempA = ResponderSyntheticEvent.getPooled(\n eventTypes$1.responderTerminate,\n responderInst,\n nativeEvent,\n nativeEventTarget\n )),\n (tempA.touchHistory =\n ResponderTouchHistoryStore.touchHistory),\n forEachAccumulated(tempA, accumulateDirectDispatchesSingle),\n (JSCompiler_temp$jscomp$0 = accumulate(\n JSCompiler_temp$jscomp$0,\n [targetInst, tempA]\n )),\n changeResponder(JSCompiler_temp, depthA))\n : ((JSCompiler_temp = ResponderSyntheticEvent.getPooled(\n eventTypes$1.responderReject,\n JSCompiler_temp,\n nativeEvent,\n nativeEventTarget\n )),\n (JSCompiler_temp.touchHistory =\n ResponderTouchHistoryStore.touchHistory),\n forEachAccumulated(\n JSCompiler_temp,\n accumulateDirectDispatchesSingle\n ),\n (JSCompiler_temp$jscomp$0 = accumulate(\n JSCompiler_temp$jscomp$0,\n JSCompiler_temp\n ))))\n : ((JSCompiler_temp$jscomp$0 = accumulate(\n JSCompiler_temp$jscomp$0,\n targetInst\n )),\n changeResponder(JSCompiler_temp, depthA)),\n (JSCompiler_temp = JSCompiler_temp$jscomp$0))\n : (JSCompiler_temp = null);\n } else JSCompiler_temp = null;\n JSCompiler_temp$jscomp$0 = responderInst && isStartish(topLevelType);\n targetInst = responderInst && isMoveish(topLevelType);\n depthA =\n responderInst &&\n (\"topTouchEnd\" === topLevelType || \"topTouchCancel\" === topLevelType);\n if (\n (JSCompiler_temp$jscomp$0 = JSCompiler_temp$jscomp$0\n ? eventTypes$1.responderStart\n : targetInst\n ? eventTypes$1.responderMove\n : depthA\n ? eventTypes$1.responderEnd\n : null)\n )\n (JSCompiler_temp$jscomp$0 = ResponderSyntheticEvent.getPooled(\n JSCompiler_temp$jscomp$0,\n responderInst,\n nativeEvent,\n nativeEventTarget\n )),\n (JSCompiler_temp$jscomp$0.touchHistory =\n ResponderTouchHistoryStore.touchHistory),\n forEachAccumulated(\n JSCompiler_temp$jscomp$0,\n accumulateDirectDispatchesSingle\n ),\n (JSCompiler_temp = accumulate(\n JSCompiler_temp,\n JSCompiler_temp$jscomp$0\n ));\n JSCompiler_temp$jscomp$0 =\n responderInst && \"topTouchCancel\" === topLevelType;\n if (\n (topLevelType =\n responderInst &&\n !JSCompiler_temp$jscomp$0 &&\n (\"topTouchEnd\" === topLevelType || \"topTouchCancel\" === topLevelType))\n )\n a: {\n if ((topLevelType = nativeEvent.touches) && 0 !== topLevelType.length)\n for (targetInst = 0; targetInst < topLevelType.length; targetInst++)\n if (\n ((depthA = topLevelType[targetInst].target),\n null !== depthA && void 0 !== depthA && 0 !== depthA)\n ) {\n tempA = getInstanceFromNode(depthA);\n b: {\n for (depthA = responderInst; tempA; ) {\n if (depthA === tempA || depthA === tempA.alternate) {\n depthA = !0;\n break b;\n }\n tempA = getParent(tempA);\n }\n depthA = !1;\n }\n if (depthA) {\n topLevelType = !1;\n break a;\n }\n }\n topLevelType = !0;\n }\n if (\n (topLevelType = JSCompiler_temp$jscomp$0\n ? eventTypes$1.responderTerminate\n : topLevelType\n ? eventTypes$1.responderRelease\n : null)\n )\n (nativeEvent = ResponderSyntheticEvent.getPooled(\n topLevelType,\n responderInst,\n nativeEvent,\n nativeEventTarget\n )),\n (nativeEvent.touchHistory = ResponderTouchHistoryStore.touchHistory),\n forEachAccumulated(nativeEvent, accumulateDirectDispatchesSingle),\n (JSCompiler_temp = accumulate(JSCompiler_temp, nativeEvent)),\n changeResponder(null);\n return JSCompiler_temp;\n },\n GlobalResponderHandler: null,\n injection: {\n injectGlobalResponderHandler: function(GlobalResponderHandler) {\n ResponderEventPlugin.GlobalResponderHandler = GlobalResponderHandler;\n }\n }\n },\n ReactNativeBridgeEventPlugin = {\n eventTypes: ReactNativeViewConfigRegistry.eventTypes,\n extractEvents: function(\n topLevelType,\n targetInst,\n nativeEvent,\n nativeEventTarget\n ) {\n if (null == targetInst) return null;\n var bubbleDispatchConfig =\n ReactNativeViewConfigRegistry.customBubblingEventTypes[topLevelType],\n directDispatchConfig =\n ReactNativeViewConfigRegistry.customDirectEventTypes[topLevelType];\n invariant(\n bubbleDispatchConfig || directDispatchConfig,\n 'Unsupported top level event type \"%s\" dispatched',\n topLevelType\n );\n topLevelType = SyntheticEvent.getPooled(\n bubbleDispatchConfig || directDispatchConfig,\n targetInst,\n nativeEvent,\n nativeEventTarget\n );\n if (bubbleDispatchConfig)\n forEachAccumulated(topLevelType, accumulateTwoPhaseDispatchesSingle);\n else if (directDispatchConfig)\n forEachAccumulated(topLevelType, accumulateDirectDispatchesSingle);\n else return null;\n return topLevelType;\n }\n };\ninjection.injectEventPluginOrder([\n \"ResponderEventPlugin\",\n \"ReactNativeBridgeEventPlugin\"\n]);\ninjection.injectEventPluginsByName({\n ResponderEventPlugin: ResponderEventPlugin,\n ReactNativeBridgeEventPlugin: ReactNativeBridgeEventPlugin\n});\nfunction getInstanceFromInstance(instanceHandle) {\n return instanceHandle;\n}\ngetFiberCurrentPropsFromNode = function(inst) {\n return inst.canonical.currentProps;\n};\ngetInstanceFromNode = getInstanceFromInstance;\ngetNodeFromInstance = function(inst) {\n inst = inst.stateNode.canonical._nativeTag;\n invariant(inst, \"All native instances should have a tag.\");\n return inst;\n};\nResponderEventPlugin.injection.injectGlobalResponderHandler({\n onChange: function(from, to, blockNativeResponder) {\n null !== to\n ? UIManager.setJSResponder(\n to.stateNode.canonical._nativeTag,\n blockNativeResponder\n )\n : UIManager.clearJSResponder();\n }\n});\nvar ReactSharedInternals =\n React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n hasSymbol = \"function\" === typeof Symbol && Symbol.for,\n REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for(\"react.element\") : 60103,\n REACT_PORTAL_TYPE = hasSymbol ? Symbol.for(\"react.portal\") : 60106,\n REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for(\"react.fragment\") : 60107,\n REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for(\"react.strict_mode\") : 60108,\n REACT_PROFILER_TYPE = hasSymbol ? Symbol.for(\"react.profiler\") : 60114,\n REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for(\"react.provider\") : 60109,\n REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for(\"react.context\") : 60110,\n REACT_CONCURRENT_MODE_TYPE = hasSymbol\n ? Symbol.for(\"react.concurrent_mode\")\n : 60111,\n REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for(\"react.forward_ref\") : 60112,\n REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for(\"react.suspense\") : 60113,\n REACT_MEMO_TYPE = hasSymbol ? Symbol.for(\"react.memo\") : 60115,\n REACT_LAZY_TYPE = hasSymbol ? Symbol.for(\"react.lazy\") : 60116,\n MAYBE_ITERATOR_SYMBOL = \"function\" === typeof Symbol && Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nfunction getComponentName(type) {\n if (null == type) return null;\n if (\"function\" === typeof type) return type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_CONCURRENT_MODE_TYPE:\n return \"ConcurrentMode\";\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n return \"Context.Consumer\";\n case REACT_PROVIDER_TYPE:\n return \"Context.Provider\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n innerType = innerType.displayName || innerType.name || \"\";\n return (\n type.displayName ||\n (\"\" !== innerType ? \"ForwardRef(\" + innerType + \")\" : \"ForwardRef\")\n );\n case REACT_MEMO_TYPE:\n return getComponentName(type.type);\n case REACT_LAZY_TYPE:\n if ((type = 1 === type._status ? type._result : null))\n return getComponentName(type);\n }\n return null;\n}\nfunction isFiberMountedImpl(fiber) {\n var node = fiber;\n if (fiber.alternate) for (; node.return; ) node = node.return;\n else {\n if (0 !== (node.effectTag & 2)) return 1;\n for (; node.return; )\n if (((node = node.return), 0 !== (node.effectTag & 2))) return 1;\n }\n return 3 === node.tag ? 2 : 3;\n}\nfunction assertIsMounted(fiber) {\n invariant(\n 2 === isFiberMountedImpl(fiber),\n \"Unable to find node on an unmounted component.\"\n );\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n var alternate = fiber.alternate;\n if (!alternate)\n return (\n (alternate = isFiberMountedImpl(fiber)),\n invariant(\n 3 !== alternate,\n \"Unable to find node on an unmounted component.\"\n ),\n 1 === alternate ? null : fiber\n );\n for (var a = fiber, b = alternate; ; ) {\n var parentA = a.return,\n parentB = parentA ? parentA.alternate : null;\n if (!parentA || !parentB) break;\n if (parentA.child === parentB.child) {\n for (var child = parentA.child; child; ) {\n if (child === a) return assertIsMounted(parentA), fiber;\n if (child === b) return assertIsMounted(parentA), alternate;\n child = child.sibling;\n }\n invariant(!1, \"Unable to find node on an unmounted component.\");\n }\n if (a.return !== b.return) (a = parentA), (b = parentB);\n else {\n child = !1;\n for (var _child = parentA.child; _child; ) {\n if (_child === a) {\n child = !0;\n a = parentA;\n b = parentB;\n break;\n }\n if (_child === b) {\n child = !0;\n b = parentA;\n a = parentB;\n break;\n }\n _child = _child.sibling;\n }\n if (!child) {\n for (_child = parentB.child; _child; ) {\n if (_child === a) {\n child = !0;\n a = parentB;\n b = parentA;\n break;\n }\n if (_child === b) {\n child = !0;\n b = parentB;\n a = parentA;\n break;\n }\n _child = _child.sibling;\n }\n invariant(\n child,\n \"Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.\"\n );\n }\n }\n invariant(\n a.alternate === b,\n \"Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.\"\n );\n }\n invariant(3 === a.tag, \"Unable to find node on an unmounted component.\");\n return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiber(parent) {\n parent = findCurrentFiberUsingSlowPath(parent);\n if (!parent) return null;\n for (var node = parent; ; ) {\n if (5 === node.tag || 6 === node.tag) return node;\n if (node.child) (node.child.return = node), (node = node.child);\n else {\n if (node === parent) break;\n for (; !node.sibling; ) {\n if (!node.return || node.return === parent) return null;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n }\n return null;\n}\nfunction mountSafeCallback_NOT_REALLY_SAFE(context, callback) {\n return function() {\n if (\n callback &&\n (\"boolean\" !== typeof context.__isMounted || context.__isMounted)\n )\n return callback.apply(context, arguments);\n };\n}\nvar emptyObject = {},\n removedKeys = null,\n removedKeyCount = 0;\nfunction restoreDeletedValuesInNestedArray(\n updatePayload,\n node,\n validAttributes\n) {\n if (Array.isArray(node))\n for (var i = node.length; i-- && 0 < removedKeyCount; )\n restoreDeletedValuesInNestedArray(\n updatePayload,\n node[i],\n validAttributes\n );\n else if (node && 0 < removedKeyCount)\n for (i in removedKeys)\n if (removedKeys[i]) {\n var nextProp = node[i];\n if (void 0 !== nextProp) {\n var attributeConfig = validAttributes[i];\n if (attributeConfig) {\n \"function\" === typeof nextProp && (nextProp = !0);\n \"undefined\" === typeof nextProp && (nextProp = null);\n if (\"object\" !== typeof attributeConfig)\n updatePayload[i] = nextProp;\n else if (\n \"function\" === typeof attributeConfig.diff ||\n \"function\" === typeof attributeConfig.process\n )\n (nextProp =\n \"function\" === typeof attributeConfig.process\n ? attributeConfig.process(nextProp)\n : nextProp),\n (updatePayload[i] = nextProp);\n removedKeys[i] = !1;\n removedKeyCount--;\n }\n }\n }\n}\nfunction diffNestedProperty(\n updatePayload,\n prevProp,\n nextProp,\n validAttributes\n) {\n if (!updatePayload && prevProp === nextProp) return updatePayload;\n if (!prevProp || !nextProp)\n return nextProp\n ? addNestedProperty(updatePayload, nextProp, validAttributes)\n : prevProp\n ? clearNestedProperty(updatePayload, prevProp, validAttributes)\n : updatePayload;\n if (!Array.isArray(prevProp) && !Array.isArray(nextProp))\n return diffProperties(updatePayload, prevProp, nextProp, validAttributes);\n if (Array.isArray(prevProp) && Array.isArray(nextProp)) {\n var minLength =\n prevProp.length < nextProp.length ? prevProp.length : nextProp.length,\n i;\n for (i = 0; i < minLength; i++)\n updatePayload = diffNestedProperty(\n updatePayload,\n prevProp[i],\n nextProp[i],\n validAttributes\n );\n for (; i < prevProp.length; i++)\n updatePayload = clearNestedProperty(\n updatePayload,\n prevProp[i],\n validAttributes\n );\n for (; i < nextProp.length; i++)\n updatePayload = addNestedProperty(\n updatePayload,\n nextProp[i],\n validAttributes\n );\n return updatePayload;\n }\n return Array.isArray(prevProp)\n ? diffProperties(\n updatePayload,\n flattenStyle(prevProp),\n nextProp,\n validAttributes\n )\n : diffProperties(\n updatePayload,\n prevProp,\n flattenStyle(nextProp),\n validAttributes\n );\n}\nfunction addNestedProperty(updatePayload, nextProp, validAttributes) {\n if (!nextProp) return updatePayload;\n if (!Array.isArray(nextProp))\n return diffProperties(\n updatePayload,\n emptyObject,\n nextProp,\n validAttributes\n );\n for (var i = 0; i < nextProp.length; i++)\n updatePayload = addNestedProperty(\n updatePayload,\n nextProp[i],\n validAttributes\n );\n return updatePayload;\n}\nfunction clearNestedProperty(updatePayload, prevProp, validAttributes) {\n if (!prevProp) return updatePayload;\n if (!Array.isArray(prevProp))\n return diffProperties(\n updatePayload,\n prevProp,\n emptyObject,\n validAttributes\n );\n for (var i = 0; i < prevProp.length; i++)\n updatePayload = clearNestedProperty(\n updatePayload,\n prevProp[i],\n validAttributes\n );\n return updatePayload;\n}\nfunction diffProperties(updatePayload, prevProps, nextProps, validAttributes) {\n var attributeConfig, propKey;\n for (propKey in nextProps)\n if ((attributeConfig = validAttributes[propKey])) {\n var prevProp = prevProps[propKey];\n var nextProp = nextProps[propKey];\n \"function\" === typeof nextProp &&\n ((nextProp = !0), \"function\" === typeof prevProp && (prevProp = !0));\n \"undefined\" === typeof nextProp &&\n ((nextProp = null),\n \"undefined\" === typeof prevProp && (prevProp = null));\n removedKeys && (removedKeys[propKey] = !1);\n if (updatePayload && void 0 !== updatePayload[propKey])\n if (\"object\" !== typeof attributeConfig)\n updatePayload[propKey] = nextProp;\n else {\n if (\n \"function\" === typeof attributeConfig.diff ||\n \"function\" === typeof attributeConfig.process\n )\n (attributeConfig =\n \"function\" === typeof attributeConfig.process\n ? attributeConfig.process(nextProp)\n : nextProp),\n (updatePayload[propKey] = attributeConfig);\n }\n else if (prevProp !== nextProp)\n if (\"object\" !== typeof attributeConfig)\n (\"object\" !== typeof nextProp ||\n null === nextProp ||\n deepDiffer(prevProp, nextProp)) &&\n ((updatePayload || (updatePayload = {}))[propKey] = nextProp);\n else if (\n \"function\" === typeof attributeConfig.diff ||\n \"function\" === typeof attributeConfig.process\n ) {\n if (\n void 0 === prevProp ||\n (\"function\" === typeof attributeConfig.diff\n ? attributeConfig.diff(prevProp, nextProp)\n : \"object\" !== typeof nextProp ||\n null === nextProp ||\n deepDiffer(prevProp, nextProp))\n )\n (attributeConfig =\n \"function\" === typeof attributeConfig.process\n ? attributeConfig.process(nextProp)\n : nextProp),\n ((updatePayload || (updatePayload = {}))[\n propKey\n ] = attributeConfig);\n } else\n (removedKeys = null),\n (removedKeyCount = 0),\n (updatePayload = diffNestedProperty(\n updatePayload,\n prevProp,\n nextProp,\n attributeConfig\n )),\n 0 < removedKeyCount &&\n updatePayload &&\n (restoreDeletedValuesInNestedArray(\n updatePayload,\n nextProp,\n attributeConfig\n ),\n (removedKeys = null));\n }\n for (var _propKey in prevProps)\n void 0 === nextProps[_propKey] &&\n (!(attributeConfig = validAttributes[_propKey]) ||\n (updatePayload && void 0 !== updatePayload[_propKey]) ||\n ((prevProp = prevProps[_propKey]),\n void 0 !== prevProp &&\n (\"object\" !== typeof attributeConfig ||\n \"function\" === typeof attributeConfig.diff ||\n \"function\" === typeof attributeConfig.process\n ? (((updatePayload || (updatePayload = {}))[_propKey] = null),\n removedKeys || (removedKeys = {}),\n removedKeys[_propKey] ||\n ((removedKeys[_propKey] = !0), removedKeyCount++))\n : (updatePayload = clearNestedProperty(\n updatePayload,\n prevProp,\n attributeConfig\n )))));\n return updatePayload;\n}\nvar now$1 =\n \"object\" === typeof performance && \"function\" === typeof performance.now\n ? function() {\n return performance.now();\n }\n : function() {\n return Date.now();\n },\n scheduledCallback = null,\n frameDeadline = 0;\nfunction setTimeoutCallback() {\n frameDeadline = now$1() + 5;\n var callback = scheduledCallback;\n scheduledCallback = null;\n null !== callback && callback();\n}\nvar restoreTarget = null,\n restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n if ((target = getInstanceFromNode(target))) {\n invariant(\n !1,\n \"setRestoreImplementation() needs to be called to handle a target for controlled events. This error is likely caused by a bug in React. Please file an issue.\"\n );\n var props = getFiberCurrentPropsFromNode(target.stateNode);\n null(target.stateNode, target.type, props);\n }\n}\nfunction _batchedUpdatesImpl(fn, bookkeeping) {\n return fn(bookkeeping);\n}\nfunction _flushInteractiveUpdatesImpl() {}\nvar isBatching = !1;\nfunction batchedUpdates(fn, bookkeeping) {\n if (isBatching) return fn(bookkeeping);\n isBatching = !0;\n try {\n return _batchedUpdatesImpl(fn, bookkeeping);\n } finally {\n if (((isBatching = !1), null !== restoreTarget || null !== restoreQueue))\n if (\n (_flushInteractiveUpdatesImpl(),\n restoreTarget &&\n ((bookkeeping = restoreTarget),\n (fn = restoreQueue),\n (restoreQueue = restoreTarget = null),\n restoreStateOfTarget(bookkeeping),\n fn))\n )\n for (bookkeeping = 0; bookkeeping < fn.length; bookkeeping++)\n restoreStateOfTarget(fn[bookkeeping]);\n }\n}\nfunction dispatchEvent(target, topLevelType, nativeEvent) {\n batchedUpdates(function() {\n var events = nativeEvent.target;\n for (var events$jscomp$0 = null, i = 0; i < plugins.length; i++) {\n var possiblePlugin = plugins[i];\n possiblePlugin &&\n (possiblePlugin = possiblePlugin.extractEvents(\n topLevelType,\n target,\n nativeEvent,\n events\n )) &&\n (events$jscomp$0 = accumulateInto(events$jscomp$0, possiblePlugin));\n }\n events = events$jscomp$0;\n null !== events && (eventQueue = accumulateInto(eventQueue, events));\n events = eventQueue;\n eventQueue = null;\n if (\n events &&\n (forEachAccumulated(events, executeDispatchesAndReleaseTopLevel),\n invariant(\n !eventQueue,\n \"processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.\"\n ),\n hasRethrowError)\n )\n throw ((events = rethrowError),\n (hasRethrowError = !1),\n (rethrowError = null),\n events);\n });\n}\nfunction shim$1() {\n invariant(\n !1,\n \"The current renderer does not support hydration. This error is likely caused by a bug in React. Please file an issue.\"\n );\n}\nvar nextReactTag = 2;\nFabricUIManager.registerEventHandler &&\n FabricUIManager.registerEventHandler(dispatchEvent);\nvar ReactFabricHostComponent = (function() {\n function ReactFabricHostComponent(tag, viewConfig, props) {\n if (!(this instanceof ReactFabricHostComponent))\n throw new TypeError(\"Cannot call a class as a function\");\n this._nativeTag = tag;\n this.viewConfig = viewConfig;\n this.currentProps = props;\n }\n ReactFabricHostComponent.prototype.blur = function() {\n TextInputState.blurTextInput(this._nativeTag);\n };\n ReactFabricHostComponent.prototype.focus = function() {\n TextInputState.focusTextInput(this._nativeTag);\n };\n ReactFabricHostComponent.prototype.measure = function(callback) {\n UIManager.measure(\n this._nativeTag,\n mountSafeCallback_NOT_REALLY_SAFE(this, callback)\n );\n };\n ReactFabricHostComponent.prototype.measureInWindow = function(callback) {\n UIManager.measureInWindow(\n this._nativeTag,\n mountSafeCallback_NOT_REALLY_SAFE(this, callback)\n );\n };\n ReactFabricHostComponent.prototype.measureLayout = function(\n relativeToNativeNode,\n onSuccess,\n onFail\n ) {\n UIManager.measureLayout(\n this._nativeTag,\n relativeToNativeNode,\n mountSafeCallback_NOT_REALLY_SAFE(this, onFail),\n mountSafeCallback_NOT_REALLY_SAFE(this, onSuccess)\n );\n };\n ReactFabricHostComponent.prototype.setNativeProps = function(nativeProps) {\n nativeProps = diffProperties(\n null,\n emptyObject,\n nativeProps,\n this.viewConfig.validAttributes\n );\n null != nativeProps &&\n UIManager.updateView(\n this._nativeTag,\n this.viewConfig.uiViewClassName,\n nativeProps\n );\n };\n return ReactFabricHostComponent;\n})();\nfunction createTextInstance(\n text,\n rootContainerInstance,\n hostContext,\n internalInstanceHandle\n) {\n invariant(\n hostContext.isInAParentText,\n \"Text strings must be rendered within a component.\"\n );\n hostContext = nextReactTag;\n nextReactTag += 2;\n return {\n node: FabricUIManager.createNode(\n hostContext,\n \"RCTRawText\",\n rootContainerInstance,\n { text: text },\n internalInstanceHandle\n )\n };\n}\nvar scheduleTimeout = setTimeout,\n cancelTimeout = clearTimeout;\nfunction cloneHiddenInstance(instance) {\n var node = instance.node;\n var updatePayload = diffProperties(\n null,\n emptyObject,\n { style: { display: \"none\" } },\n instance.canonical.viewConfig.validAttributes\n );\n return {\n node: FabricUIManager.cloneNodeWithNewProps(node, updatePayload),\n canonical: instance.canonical\n };\n}\nfunction cloneUnhiddenInstance(instance, type, props) {\n var viewConfig = instance.canonical.viewConfig;\n type = instance.node;\n var prevProps = Object.assign({}, props, {\n style: [props.style, { display: \"none\" }]\n });\n props = diffProperties(null, prevProps, props, viewConfig.validAttributes);\n return {\n node: FabricUIManager.cloneNodeWithNewProps(type, props),\n canonical: instance.canonical\n };\n}\nvar BEFORE_SLASH_RE = /^(.*)[\\\\\\/]/;\nfunction getStackByFiberInDevAndProd(workInProgress) {\n var info = \"\";\n do {\n a: switch (workInProgress.tag) {\n case 3:\n case 4:\n case 6:\n case 7:\n case 10:\n case 9:\n var JSCompiler_inline_result = \"\";\n break a;\n default:\n var owner = workInProgress._debugOwner,\n source = workInProgress._debugSource,\n name = getComponentName(workInProgress.type);\n JSCompiler_inline_result = null;\n owner && (JSCompiler_inline_result = getComponentName(owner.type));\n owner = name;\n name = \"\";\n source\n ? (name =\n \" (at \" +\n source.fileName.replace(BEFORE_SLASH_RE, \"\") +\n \":\" +\n source.lineNumber +\n \")\")\n : JSCompiler_inline_result &&\n (name = \" (created by \" + JSCompiler_inline_result + \")\");\n JSCompiler_inline_result = \"\\n in \" + (owner || \"Unknown\") + name;\n }\n info += JSCompiler_inline_result;\n workInProgress = workInProgress.return;\n } while (workInProgress);\n return info;\n}\nnew Set();\nvar valueStack = [],\n index = -1;\nfunction pop(cursor) {\n 0 > index ||\n ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n index++;\n valueStack[index] = cursor.current;\n cursor.current = value;\n}\nvar emptyContextObject = {},\n contextStackCursor = { current: emptyContextObject },\n didPerformWorkStackCursor = { current: !1 },\n previousContext = emptyContextObject;\nfunction getMaskedContext(workInProgress, unmaskedContext) {\n var contextTypes = workInProgress.type.contextTypes;\n if (!contextTypes) return emptyContextObject;\n var instance = workInProgress.stateNode;\n if (\n instance &&\n instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext\n )\n return instance.__reactInternalMemoizedMaskedChildContext;\n var context = {},\n key;\n for (key in contextTypes) context[key] = unmaskedContext[key];\n instance &&\n ((workInProgress = workInProgress.stateNode),\n (workInProgress.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext),\n (workInProgress.__reactInternalMemoizedMaskedChildContext = context));\n return context;\n}\nfunction isContextProvider(type) {\n type = type.childContextTypes;\n return null !== type && void 0 !== type;\n}\nfunction popContext(fiber) {\n pop(didPerformWorkStackCursor, fiber);\n pop(contextStackCursor, fiber);\n}\nfunction popTopLevelContextObject(fiber) {\n pop(didPerformWorkStackCursor, fiber);\n pop(contextStackCursor, fiber);\n}\nfunction pushTopLevelContextObject(fiber, context, didChange) {\n invariant(\n contextStackCursor.current === emptyContextObject,\n \"Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue.\"\n );\n push(contextStackCursor, context, fiber);\n push(didPerformWorkStackCursor, didChange, fiber);\n}\nfunction processChildContext(fiber, type, parentContext) {\n var instance = fiber.stateNode;\n fiber = type.childContextTypes;\n if (\"function\" !== typeof instance.getChildContext) return parentContext;\n instance = instance.getChildContext();\n for (var contextKey in instance)\n invariant(\n contextKey in fiber,\n '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.',\n getComponentName(type) || \"Unknown\",\n contextKey\n );\n return Object.assign({}, parentContext, instance);\n}\nfunction pushContextProvider(workInProgress) {\n var instance = workInProgress.stateNode;\n instance =\n (instance && instance.__reactInternalMemoizedMergedChildContext) ||\n emptyContextObject;\n previousContext = contextStackCursor.current;\n push(contextStackCursor, instance, workInProgress);\n push(\n didPerformWorkStackCursor,\n didPerformWorkStackCursor.current,\n workInProgress\n );\n return !0;\n}\nfunction invalidateContextProvider(workInProgress, type, didChange) {\n var instance = workInProgress.stateNode;\n invariant(\n instance,\n \"Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue.\"\n );\n didChange\n ? ((type = processChildContext(workInProgress, type, previousContext)),\n (instance.__reactInternalMemoizedMergedChildContext = type),\n pop(didPerformWorkStackCursor, workInProgress),\n pop(contextStackCursor, workInProgress),\n push(contextStackCursor, type, workInProgress))\n : pop(didPerformWorkStackCursor, workInProgress);\n push(didPerformWorkStackCursor, didChange, workInProgress);\n}\nvar onCommitFiberRoot = null,\n onCommitFiberUnmount = null;\nfunction catchErrors(fn) {\n return function(arg) {\n try {\n return fn(arg);\n } catch (err) {}\n };\n}\nfunction injectInternals(internals) {\n if (\"undefined\" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) return !1;\n var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (hook.isDisabled || !hook.supportsFiber) return !0;\n try {\n var rendererID = hook.inject(internals);\n onCommitFiberRoot = catchErrors(function(root) {\n return hook.onCommitFiberRoot(rendererID, root);\n });\n onCommitFiberUnmount = catchErrors(function(fiber) {\n return hook.onCommitFiberUnmount(rendererID, fiber);\n });\n } catch (err) {}\n return !0;\n}\nfunction FiberNode(tag, pendingProps, key, mode) {\n this.tag = tag;\n this.key = key;\n this.sibling = this.child = this.return = this.stateNode = this.type = this.elementType = null;\n this.index = 0;\n this.ref = null;\n this.pendingProps = pendingProps;\n this.firstContextDependency = this.memoizedState = this.updateQueue = this.memoizedProps = null;\n this.mode = mode;\n this.effectTag = 0;\n this.lastEffect = this.firstEffect = this.nextEffect = null;\n this.childExpirationTime = this.expirationTime = 0;\n this.alternate = null;\n}\nfunction createFiber(tag, pendingProps, key, mode) {\n return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n Component = Component.prototype;\n return !(!Component || !Component.isReactComponent);\n}\nfunction resolveLazyComponentTag(Component) {\n if (\"function\" === typeof Component)\n return shouldConstruct(Component) ? 1 : 0;\n if (void 0 !== Component && null !== Component) {\n Component = Component.$$typeof;\n if (Component === REACT_FORWARD_REF_TYPE) return 11;\n if (Component === REACT_MEMO_TYPE) return 14;\n }\n return 2;\n}\nfunction createWorkInProgress(current, pendingProps) {\n var workInProgress = current.alternate;\n null === workInProgress\n ? ((workInProgress = createFiber(\n current.tag,\n pendingProps,\n current.key,\n current.mode\n )),\n (workInProgress.elementType = current.elementType),\n (workInProgress.type = current.type),\n (workInProgress.stateNode = current.stateNode),\n (workInProgress.alternate = current),\n (current.alternate = workInProgress))\n : ((workInProgress.pendingProps = pendingProps),\n (workInProgress.effectTag = 0),\n (workInProgress.nextEffect = null),\n (workInProgress.firstEffect = null),\n (workInProgress.lastEffect = null));\n workInProgress.childExpirationTime = current.childExpirationTime;\n workInProgress.expirationTime = current.expirationTime;\n workInProgress.child = current.child;\n workInProgress.memoizedProps = current.memoizedProps;\n workInProgress.memoizedState = current.memoizedState;\n workInProgress.updateQueue = current.updateQueue;\n workInProgress.firstContextDependency = current.firstContextDependency;\n workInProgress.sibling = current.sibling;\n workInProgress.index = current.index;\n workInProgress.ref = current.ref;\n return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n type,\n key,\n pendingProps,\n owner,\n mode,\n expirationTime\n) {\n var fiberTag = 2;\n owner = type;\n if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n else if (\"string\" === typeof type) fiberTag = 5;\n else\n a: switch (type) {\n case REACT_FRAGMENT_TYPE:\n return createFiberFromFragment(\n pendingProps.children,\n mode,\n expirationTime,\n key\n );\n case REACT_CONCURRENT_MODE_TYPE:\n return createFiberFromMode(pendingProps, mode | 3, expirationTime, key);\n case REACT_STRICT_MODE_TYPE:\n return createFiberFromMode(pendingProps, mode | 2, expirationTime, key);\n case REACT_PROFILER_TYPE:\n return (\n (type = createFiber(12, pendingProps, key, mode | 4)),\n (type.elementType = REACT_PROFILER_TYPE),\n (type.type = REACT_PROFILER_TYPE),\n (type.expirationTime = expirationTime),\n type\n );\n case REACT_SUSPENSE_TYPE:\n return (\n (type = createFiber(13, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_TYPE),\n (type.type = REACT_SUSPENSE_TYPE),\n (type.expirationTime = expirationTime),\n type\n );\n default:\n if (\"object\" === typeof type && null !== type)\n switch (type.$$typeof) {\n case REACT_PROVIDER_TYPE:\n fiberTag = 10;\n break a;\n case REACT_CONTEXT_TYPE:\n fiberTag = 9;\n break a;\n case REACT_FORWARD_REF_TYPE:\n fiberTag = 11;\n break a;\n case REACT_MEMO_TYPE:\n fiberTag = 14;\n break a;\n case REACT_LAZY_TYPE:\n fiberTag = 16;\n owner = null;\n break a;\n }\n invariant(\n !1,\n \"Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\",\n null == type ? type : typeof type,\n \"\"\n );\n }\n key = createFiber(fiberTag, pendingProps, key, mode);\n key.elementType = type;\n key.type = owner;\n key.expirationTime = expirationTime;\n return key;\n}\nfunction createFiberFromFragment(elements, mode, expirationTime, key) {\n elements = createFiber(7, elements, key, mode);\n elements.expirationTime = expirationTime;\n return elements;\n}\nfunction createFiberFromMode(pendingProps, mode, expirationTime, key) {\n pendingProps = createFiber(8, pendingProps, key, mode);\n mode = 0 === (mode & 1) ? REACT_STRICT_MODE_TYPE : REACT_CONCURRENT_MODE_TYPE;\n pendingProps.elementType = mode;\n pendingProps.type = mode;\n pendingProps.expirationTime = expirationTime;\n return pendingProps;\n}\nfunction createFiberFromText(content, mode, expirationTime) {\n content = createFiber(6, content, null, mode);\n content.expirationTime = expirationTime;\n return content;\n}\nfunction createFiberFromPortal(portal, mode, expirationTime) {\n mode = createFiber(\n 4,\n null !== portal.children ? portal.children : [],\n portal.key,\n mode\n );\n mode.expirationTime = expirationTime;\n mode.stateNode = {\n containerInfo: portal.containerInfo,\n pendingChildren: null,\n implementation: portal.implementation\n };\n return mode;\n}\nfunction markPendingPriorityLevel(root, expirationTime) {\n root.didError = !1;\n var earliestPendingTime = root.earliestPendingTime;\n 0 === earliestPendingTime\n ? (root.earliestPendingTime = root.latestPendingTime = expirationTime)\n : earliestPendingTime < expirationTime\n ? (root.earliestPendingTime = expirationTime)\n : root.latestPendingTime > expirationTime &&\n (root.latestPendingTime = expirationTime);\n findNextExpirationTimeToWorkOn(expirationTime, root);\n}\nfunction markSuspendedPriorityLevel(root, suspendedTime) {\n root.didError = !1;\n var latestPingedTime = root.latestPingedTime;\n 0 !== latestPingedTime &&\n latestPingedTime >= suspendedTime &&\n (root.latestPingedTime = 0);\n latestPingedTime = root.earliestPendingTime;\n var latestPendingTime = root.latestPendingTime;\n latestPingedTime === suspendedTime\n ? (root.earliestPendingTime =\n latestPendingTime === suspendedTime\n ? (root.latestPendingTime = 0)\n : latestPendingTime)\n : latestPendingTime === suspendedTime &&\n (root.latestPendingTime = latestPingedTime);\n latestPingedTime = root.earliestSuspendedTime;\n latestPendingTime = root.latestSuspendedTime;\n 0 === latestPingedTime\n ? (root.earliestSuspendedTime = root.latestSuspendedTime = suspendedTime)\n : latestPingedTime < suspendedTime\n ? (root.earliestSuspendedTime = suspendedTime)\n : latestPendingTime > suspendedTime &&\n (root.latestSuspendedTime = suspendedTime);\n findNextExpirationTimeToWorkOn(suspendedTime, root);\n}\nfunction findEarliestOutstandingPriorityLevel(root, renderExpirationTime) {\n var earliestPendingTime = root.earliestPendingTime;\n root = root.earliestSuspendedTime;\n earliestPendingTime > renderExpirationTime &&\n (renderExpirationTime = earliestPendingTime);\n root > renderExpirationTime && (renderExpirationTime = root);\n return renderExpirationTime;\n}\nfunction findNextExpirationTimeToWorkOn(completedExpirationTime, root) {\n var earliestSuspendedTime = root.earliestSuspendedTime,\n latestSuspendedTime = root.latestSuspendedTime,\n earliestPendingTime = root.earliestPendingTime,\n latestPingedTime = root.latestPingedTime;\n earliestPendingTime =\n 0 !== earliestPendingTime ? earliestPendingTime : latestPingedTime;\n 0 === earliestPendingTime &&\n (0 === completedExpirationTime ||\n latestSuspendedTime < completedExpirationTime) &&\n (earliestPendingTime = latestSuspendedTime);\n completedExpirationTime = earliestPendingTime;\n 0 !== completedExpirationTime &&\n earliestSuspendedTime > completedExpirationTime &&\n (completedExpirationTime = earliestSuspendedTime);\n root.nextExpirationTimeToWorkOn = earliestPendingTime;\n root.expirationTime = completedExpirationTime;\n}\nvar hasForceUpdate = !1;\nfunction createUpdateQueue(baseState) {\n return {\n baseState: baseState,\n firstUpdate: null,\n lastUpdate: null,\n firstCapturedUpdate: null,\n lastCapturedUpdate: null,\n firstEffect: null,\n lastEffect: null,\n firstCapturedEffect: null,\n lastCapturedEffect: null\n };\n}\nfunction cloneUpdateQueue(currentQueue) {\n return {\n baseState: currentQueue.baseState,\n firstUpdate: currentQueue.firstUpdate,\n lastUpdate: currentQueue.lastUpdate,\n firstCapturedUpdate: null,\n lastCapturedUpdate: null,\n firstEffect: null,\n lastEffect: null,\n firstCapturedEffect: null,\n lastCapturedEffect: null\n };\n}\nfunction createUpdate(expirationTime) {\n return {\n expirationTime: expirationTime,\n tag: 0,\n payload: null,\n callback: null,\n next: null,\n nextEffect: null\n };\n}\nfunction appendUpdateToQueue(queue, update) {\n null === queue.lastUpdate\n ? (queue.firstUpdate = queue.lastUpdate = update)\n : ((queue.lastUpdate.next = update), (queue.lastUpdate = update));\n}\nfunction enqueueUpdate(fiber, update) {\n var alternate = fiber.alternate;\n if (null === alternate) {\n var queue1 = fiber.updateQueue;\n var queue2 = null;\n null === queue1 &&\n (queue1 = fiber.updateQueue = createUpdateQueue(fiber.memoizedState));\n } else\n (queue1 = fiber.updateQueue),\n (queue2 = alternate.updateQueue),\n null === queue1\n ? null === queue2\n ? ((queue1 = fiber.updateQueue = createUpdateQueue(\n fiber.memoizedState\n )),\n (queue2 = alternate.updateQueue = createUpdateQueue(\n alternate.memoizedState\n )))\n : (queue1 = fiber.updateQueue = cloneUpdateQueue(queue2))\n : null === queue2 &&\n (queue2 = alternate.updateQueue = cloneUpdateQueue(queue1));\n null === queue2 || queue1 === queue2\n ? appendUpdateToQueue(queue1, update)\n : null === queue1.lastUpdate || null === queue2.lastUpdate\n ? (appendUpdateToQueue(queue1, update),\n appendUpdateToQueue(queue2, update))\n : (appendUpdateToQueue(queue1, update), (queue2.lastUpdate = update));\n}\nfunction enqueueCapturedUpdate(workInProgress, update) {\n var workInProgressQueue = workInProgress.updateQueue;\n workInProgressQueue =\n null === workInProgressQueue\n ? (workInProgress.updateQueue = createUpdateQueue(\n workInProgress.memoizedState\n ))\n : ensureWorkInProgressQueueIsAClone(workInProgress, workInProgressQueue);\n null === workInProgressQueue.lastCapturedUpdate\n ? (workInProgressQueue.firstCapturedUpdate = workInProgressQueue.lastCapturedUpdate = update)\n : ((workInProgressQueue.lastCapturedUpdate.next = update),\n (workInProgressQueue.lastCapturedUpdate = update));\n}\nfunction ensureWorkInProgressQueueIsAClone(workInProgress, queue) {\n var current = workInProgress.alternate;\n null !== current &&\n queue === current.updateQueue &&\n (queue = workInProgress.updateQueue = cloneUpdateQueue(queue));\n return queue;\n}\nfunction getStateFromUpdate(\n workInProgress,\n queue,\n update,\n prevState,\n nextProps,\n instance\n) {\n switch (update.tag) {\n case 1:\n return (\n (workInProgress = update.payload),\n \"function\" === typeof workInProgress\n ? workInProgress.call(instance, prevState, nextProps)\n : workInProgress\n );\n case 3:\n workInProgress.effectTag = (workInProgress.effectTag & -2049) | 64;\n case 0:\n workInProgress = update.payload;\n nextProps =\n \"function\" === typeof workInProgress\n ? workInProgress.call(instance, prevState, nextProps)\n : workInProgress;\n if (null === nextProps || void 0 === nextProps) break;\n return Object.assign({}, prevState, nextProps);\n case 2:\n hasForceUpdate = !0;\n }\n return prevState;\n}\nfunction processUpdateQueue(\n workInProgress,\n queue,\n props,\n instance,\n renderExpirationTime\n) {\n hasForceUpdate = !1;\n queue = ensureWorkInProgressQueueIsAClone(workInProgress, queue);\n for (\n var newBaseState = queue.baseState,\n newFirstUpdate = null,\n newExpirationTime = 0,\n update = queue.firstUpdate,\n resultState = newBaseState;\n null !== update;\n\n ) {\n var updateExpirationTime = update.expirationTime;\n updateExpirationTime < renderExpirationTime\n ? (null === newFirstUpdate &&\n ((newFirstUpdate = update), (newBaseState = resultState)),\n newExpirationTime < updateExpirationTime &&\n (newExpirationTime = updateExpirationTime))\n : ((resultState = getStateFromUpdate(\n workInProgress,\n queue,\n update,\n resultState,\n props,\n instance\n )),\n null !== update.callback &&\n ((workInProgress.effectTag |= 32),\n (update.nextEffect = null),\n null === queue.lastEffect\n ? (queue.firstEffect = queue.lastEffect = update)\n : ((queue.lastEffect.nextEffect = update),\n (queue.lastEffect = update))));\n update = update.next;\n }\n updateExpirationTime = null;\n for (update = queue.firstCapturedUpdate; null !== update; ) {\n var _updateExpirationTime = update.expirationTime;\n _updateExpirationTime < renderExpirationTime\n ? (null === updateExpirationTime &&\n ((updateExpirationTime = update),\n null === newFirstUpdate && (newBaseState = resultState)),\n newExpirationTime < _updateExpirationTime &&\n (newExpirationTime = _updateExpirationTime))\n : ((resultState = getStateFromUpdate(\n workInProgress,\n queue,\n update,\n resultState,\n props,\n instance\n )),\n null !== update.callback &&\n ((workInProgress.effectTag |= 32),\n (update.nextEffect = null),\n null === queue.lastCapturedEffect\n ? (queue.firstCapturedEffect = queue.lastCapturedEffect = update)\n : ((queue.lastCapturedEffect.nextEffect = update),\n (queue.lastCapturedEffect = update))));\n update = update.next;\n }\n null === newFirstUpdate && (queue.lastUpdate = null);\n null === updateExpirationTime\n ? (queue.lastCapturedUpdate = null)\n : (workInProgress.effectTag |= 32);\n null === newFirstUpdate &&\n null === updateExpirationTime &&\n (newBaseState = resultState);\n queue.baseState = newBaseState;\n queue.firstUpdate = newFirstUpdate;\n queue.firstCapturedUpdate = updateExpirationTime;\n workInProgress.expirationTime = newExpirationTime;\n workInProgress.memoizedState = resultState;\n}\nfunction commitUpdateQueue(finishedWork, finishedQueue, instance) {\n null !== finishedQueue.firstCapturedUpdate &&\n (null !== finishedQueue.lastUpdate &&\n ((finishedQueue.lastUpdate.next = finishedQueue.firstCapturedUpdate),\n (finishedQueue.lastUpdate = finishedQueue.lastCapturedUpdate)),\n (finishedQueue.firstCapturedUpdate = finishedQueue.lastCapturedUpdate = null));\n commitUpdateEffects(finishedQueue.firstEffect, instance);\n finishedQueue.firstEffect = finishedQueue.lastEffect = null;\n commitUpdateEffects(finishedQueue.firstCapturedEffect, instance);\n finishedQueue.firstCapturedEffect = finishedQueue.lastCapturedEffect = null;\n}\nfunction commitUpdateEffects(effect, instance) {\n for (; null !== effect; ) {\n var _callback3 = effect.callback;\n if (null !== _callback3) {\n effect.callback = null;\n var context = instance;\n invariant(\n \"function\" === typeof _callback3,\n \"Invalid argument passed as callback. Expected a function. Instead received: %s\",\n _callback3\n );\n _callback3.call(context);\n }\n effect = effect.nextEffect;\n }\n}\nfunction createCapturedValue(value, source) {\n return {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n}\nvar valueCursor = { current: null },\n currentlyRenderingFiber = null,\n lastContextDependency = null,\n lastContextWithAllBitsObserved = null;\nfunction pushProvider(providerFiber, nextValue) {\n var context = providerFiber.type._context;\n push(valueCursor, context._currentValue2, providerFiber);\n context._currentValue2 = nextValue;\n}\nfunction popProvider(providerFiber) {\n var currentValue = valueCursor.current;\n pop(valueCursor, providerFiber);\n providerFiber.type._context._currentValue2 = currentValue;\n}\nfunction prepareToReadContext(workInProgress) {\n currentlyRenderingFiber = workInProgress;\n lastContextWithAllBitsObserved = lastContextDependency = null;\n workInProgress.firstContextDependency = null;\n}\nfunction readContext(context, observedBits) {\n if (\n lastContextWithAllBitsObserved !== context &&\n !1 !== observedBits &&\n 0 !== observedBits\n ) {\n if (\"number\" !== typeof observedBits || 1073741823 === observedBits)\n (lastContextWithAllBitsObserved = context), (observedBits = 1073741823);\n observedBits = { context: context, observedBits: observedBits, next: null };\n null === lastContextDependency\n ? (invariant(\n null !== currentlyRenderingFiber,\n \"Context can only be read while React is rendering, e.g. inside the render method or getDerivedStateFromProps.\"\n ),\n (currentlyRenderingFiber.firstContextDependency = lastContextDependency = observedBits))\n : (lastContextDependency = lastContextDependency.next = observedBits);\n }\n return context._currentValue2;\n}\nvar NO_CONTEXT = {},\n contextStackCursor$1 = { current: NO_CONTEXT },\n contextFiberStackCursor = { current: NO_CONTEXT },\n rootInstanceStackCursor = { current: NO_CONTEXT };\nfunction requiredContext(c) {\n invariant(\n c !== NO_CONTEXT,\n \"Expected host context to exist. This error is likely caused by a bug in React. Please file an issue.\"\n );\n return c;\n}\nfunction pushHostContainer(fiber, nextRootInstance) {\n push(rootInstanceStackCursor, nextRootInstance, fiber);\n push(contextFiberStackCursor, fiber, fiber);\n push(contextStackCursor$1, NO_CONTEXT, fiber);\n pop(contextStackCursor$1, fiber);\n push(contextStackCursor$1, { isInAParentText: !1 }, fiber);\n}\nfunction popHostContainer(fiber) {\n pop(contextStackCursor$1, fiber);\n pop(contextFiberStackCursor, fiber);\n pop(rootInstanceStackCursor, fiber);\n}\nfunction pushHostContext(fiber) {\n requiredContext(rootInstanceStackCursor.current);\n var context = requiredContext(contextStackCursor$1.current);\n var nextContext = fiber.type;\n nextContext =\n \"AndroidTextInput\" === nextContext ||\n \"RCTMultilineTextInputView\" === nextContext ||\n \"RCTSinglelineTextInputView\" === nextContext ||\n \"RCTText\" === nextContext ||\n \"RCTVirtualText\" === nextContext;\n nextContext =\n context.isInAParentText !== nextContext\n ? { isInAParentText: nextContext }\n : context;\n context !== nextContext &&\n (push(contextFiberStackCursor, fiber, fiber),\n push(contextStackCursor$1, nextContext, fiber));\n}\nfunction popHostContext(fiber) {\n contextFiberStackCursor.current === fiber &&\n (pop(contextStackCursor$1, fiber), pop(contextFiberStackCursor, fiber));\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction is(x, y) {\n return x === y ? 0 !== x || 0 !== y || 1 / x === 1 / y : x !== x && y !== y;\n}\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) return !0;\n if (\n \"object\" !== typeof objA ||\n null === objA ||\n \"object\" !== typeof objB ||\n null === objB\n )\n return !1;\n var keysA = Object.keys(objA),\n keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return !1;\n for (keysB = 0; keysB < keysA.length; keysB++)\n if (\n !hasOwnProperty.call(objB, keysA[keysB]) ||\n !is(objA[keysA[keysB]], objB[keysA[keysB]])\n )\n return !1;\n return !0;\n}\nfunction resolveDefaultProps(Component, baseProps) {\n if (Component && Component.defaultProps) {\n baseProps = Object.assign({}, baseProps);\n Component = Component.defaultProps;\n for (var propName in Component)\n void 0 === baseProps[propName] &&\n (baseProps[propName] = Component[propName]);\n }\n return baseProps;\n}\nfunction readLazyComponentType(lazyComponent) {\n var result = lazyComponent._result;\n switch (lazyComponent._status) {\n case 1:\n return result;\n case 2:\n throw result;\n case 0:\n throw result;\n default:\n throw ((lazyComponent._status = 0),\n (result = lazyComponent._ctor),\n (result = result()),\n result.then(\n function(moduleObject) {\n 0 === lazyComponent._status &&\n ((moduleObject = moduleObject.default),\n (lazyComponent._status = 1),\n (lazyComponent._result = moduleObject));\n },\n function(error) {\n 0 === lazyComponent._status &&\n ((lazyComponent._status = 2), (lazyComponent._result = error));\n }\n ),\n (lazyComponent._result = result),\n result);\n }\n}\nvar ReactCurrentOwner$4 = ReactSharedInternals.ReactCurrentOwner,\n emptyRefsObject = new React.Component().refs;\nfunction applyDerivedStateFromProps(\n workInProgress,\n ctor,\n getDerivedStateFromProps,\n nextProps\n) {\n ctor = workInProgress.memoizedState;\n getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n getDerivedStateFromProps =\n null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n ? ctor\n : Object.assign({}, ctor, getDerivedStateFromProps);\n workInProgress.memoizedState = getDerivedStateFromProps;\n nextProps = workInProgress.updateQueue;\n null !== nextProps &&\n 0 === workInProgress.expirationTime &&\n (nextProps.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n isMounted: function(component) {\n return (component = component._reactInternalFiber)\n ? 2 === isFiberMountedImpl(component)\n : !1;\n },\n enqueueSetState: function(inst, payload, callback) {\n inst = inst._reactInternalFiber;\n var currentTime = requestCurrentTime();\n currentTime = computeExpirationForFiber(currentTime, inst);\n var update = createUpdate(currentTime);\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n flushPassiveEffects();\n enqueueUpdate(inst, update);\n scheduleWork(inst, currentTime);\n },\n enqueueReplaceState: function(inst, payload, callback) {\n inst = inst._reactInternalFiber;\n var currentTime = requestCurrentTime();\n currentTime = computeExpirationForFiber(currentTime, inst);\n var update = createUpdate(currentTime);\n update.tag = 1;\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n flushPassiveEffects();\n enqueueUpdate(inst, update);\n scheduleWork(inst, currentTime);\n },\n enqueueForceUpdate: function(inst, callback) {\n inst = inst._reactInternalFiber;\n var currentTime = requestCurrentTime();\n currentTime = computeExpirationForFiber(currentTime, inst);\n var update = createUpdate(currentTime);\n update.tag = 2;\n void 0 !== callback && null !== callback && (update.callback = callback);\n flushPassiveEffects();\n enqueueUpdate(inst, update);\n scheduleWork(inst, currentTime);\n }\n};\nfunction checkShouldComponentUpdate(\n workInProgress,\n ctor,\n oldProps,\n newProps,\n oldState,\n newState,\n nextContext\n) {\n workInProgress = workInProgress.stateNode;\n return \"function\" === typeof workInProgress.shouldComponentUpdate\n ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n : ctor.prototype && ctor.prototype.isPureReactComponent\n ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n : !0;\n}\nfunction constructClassInstance(workInProgress, ctor, props) {\n var isLegacyContextConsumer = !1,\n unmaskedContext = emptyContextObject;\n var context = ctor.contextType;\n \"object\" === typeof context && null !== context\n ? (context = ReactCurrentOwner$4.currentDispatcher.readContext(context))\n : ((unmaskedContext = isContextProvider(ctor)\n ? previousContext\n : contextStackCursor.current),\n (isLegacyContextConsumer = ctor.contextTypes),\n (context = (isLegacyContextConsumer =\n null !== isLegacyContextConsumer && void 0 !== isLegacyContextConsumer)\n ? getMaskedContext(workInProgress, unmaskedContext)\n : emptyContextObject));\n ctor = new ctor(props, context);\n workInProgress.memoizedState =\n null !== ctor.state && void 0 !== ctor.state ? ctor.state : null;\n ctor.updater = classComponentUpdater;\n workInProgress.stateNode = ctor;\n ctor._reactInternalFiber = workInProgress;\n isLegacyContextConsumer &&\n ((workInProgress = workInProgress.stateNode),\n (workInProgress.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext),\n (workInProgress.__reactInternalMemoizedMaskedChildContext = context));\n return ctor;\n}\nfunction callComponentWillReceiveProps(\n workInProgress,\n instance,\n newProps,\n nextContext\n) {\n workInProgress = instance.state;\n \"function\" === typeof instance.componentWillReceiveProps &&\n instance.componentWillReceiveProps(newProps, nextContext);\n \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n instance.state !== workInProgress &&\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction mountClassInstance(\n workInProgress,\n ctor,\n newProps,\n renderExpirationTime\n) {\n var instance = workInProgress.stateNode;\n instance.props = newProps;\n instance.state = workInProgress.memoizedState;\n instance.refs = emptyRefsObject;\n var contextType = ctor.contextType;\n \"object\" === typeof contextType && null !== contextType\n ? (instance.context = ReactCurrentOwner$4.currentDispatcher.readContext(\n contextType\n ))\n : ((contextType = isContextProvider(ctor)\n ? previousContext\n : contextStackCursor.current),\n (instance.context = getMaskedContext(workInProgress, contextType)));\n contextType = workInProgress.updateQueue;\n null !== contextType &&\n (processUpdateQueue(\n workInProgress,\n contextType,\n newProps,\n instance,\n renderExpirationTime\n ),\n (instance.state = workInProgress.memoizedState));\n contextType = ctor.getDerivedStateFromProps;\n \"function\" === typeof contextType &&\n (applyDerivedStateFromProps(workInProgress, ctor, contextType, newProps),\n (instance.state = workInProgress.memoizedState));\n \"function\" === typeof ctor.getDerivedStateFromProps ||\n \"function\" === typeof instance.getSnapshotBeforeUpdate ||\n (\"function\" !== typeof instance.UNSAFE_componentWillMount &&\n \"function\" !== typeof instance.componentWillMount) ||\n ((ctor = instance.state),\n \"function\" === typeof instance.componentWillMount &&\n instance.componentWillMount(),\n \"function\" === typeof instance.UNSAFE_componentWillMount &&\n instance.UNSAFE_componentWillMount(),\n ctor !== instance.state &&\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null),\n (contextType = workInProgress.updateQueue),\n null !== contextType &&\n (processUpdateQueue(\n workInProgress,\n contextType,\n newProps,\n instance,\n renderExpirationTime\n ),\n (instance.state = workInProgress.memoizedState)));\n \"function\" === typeof instance.componentDidMount &&\n (workInProgress.effectTag |= 4);\n}\nvar isArray = Array.isArray;\nfunction coerceRef(returnFiber, current$$1, element) {\n returnFiber = element.ref;\n if (\n null !== returnFiber &&\n \"function\" !== typeof returnFiber &&\n \"object\" !== typeof returnFiber\n ) {\n if (element._owner) {\n element = element._owner;\n var inst = void 0;\n element &&\n (invariant(1 === element.tag, \"Function components cannot have refs.\"),\n (inst = element.stateNode));\n invariant(\n inst,\n \"Missing owner for string ref %s. This error is likely caused by a bug in React. Please file an issue.\",\n returnFiber\n );\n var stringRef = \"\" + returnFiber;\n if (\n null !== current$$1 &&\n null !== current$$1.ref &&\n \"function\" === typeof current$$1.ref &&\n current$$1.ref._stringRef === stringRef\n )\n return current$$1.ref;\n current$$1 = function(value) {\n var refs = inst.refs;\n refs === emptyRefsObject && (refs = inst.refs = {});\n null === value ? delete refs[stringRef] : (refs[stringRef] = value);\n };\n current$$1._stringRef = stringRef;\n return current$$1;\n }\n invariant(\n \"string\" === typeof returnFiber,\n \"Expected ref to be a function, a string, an object returned by React.createRef(), or null.\"\n );\n invariant(\n element._owner,\n \"Element ref was specified as a string (%s) but no owner was set. This could happen for one of the following reasons:\\n1. You may be adding a ref to a function component\\n2. You may be adding a ref to a component that was not created inside a component's render method\\n3. You have multiple copies of React loaded\\nSee https://fb.me/react-refs-must-have-owner for more information.\",\n returnFiber\n );\n }\n return returnFiber;\n}\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n \"textarea\" !== returnFiber.type &&\n invariant(\n !1,\n \"Objects are not valid as a React child (found: %s).%s\",\n \"[object Object]\" === Object.prototype.toString.call(newChild)\n ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n : newChild,\n \"\"\n );\n}\nfunction ChildReconciler(shouldTrackSideEffects) {\n function deleteChild(returnFiber, childToDelete) {\n if (shouldTrackSideEffects) {\n var last = returnFiber.lastEffect;\n null !== last\n ? ((last.nextEffect = childToDelete),\n (returnFiber.lastEffect = childToDelete))\n : (returnFiber.firstEffect = returnFiber.lastEffect = childToDelete);\n childToDelete.nextEffect = null;\n childToDelete.effectTag = 8;\n }\n }\n function deleteRemainingChildren(returnFiber, currentFirstChild) {\n if (!shouldTrackSideEffects) return null;\n for (; null !== currentFirstChild; )\n deleteChild(returnFiber, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return null;\n }\n function mapRemainingChildren(returnFiber, currentFirstChild) {\n for (returnFiber = new Map(); null !== currentFirstChild; )\n null !== currentFirstChild.key\n ? returnFiber.set(currentFirstChild.key, currentFirstChild)\n : returnFiber.set(currentFirstChild.index, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return returnFiber;\n }\n function useFiber(fiber, pendingProps, expirationTime) {\n fiber = createWorkInProgress(fiber, pendingProps, expirationTime);\n fiber.index = 0;\n fiber.sibling = null;\n return fiber;\n }\n function placeChild(newFiber, lastPlacedIndex, newIndex) {\n newFiber.index = newIndex;\n if (!shouldTrackSideEffects) return lastPlacedIndex;\n newIndex = newFiber.alternate;\n if (null !== newIndex)\n return (\n (newIndex = newIndex.index),\n newIndex < lastPlacedIndex\n ? ((newFiber.effectTag = 2), lastPlacedIndex)\n : newIndex\n );\n newFiber.effectTag = 2;\n return lastPlacedIndex;\n }\n function placeSingleChild(newFiber) {\n shouldTrackSideEffects &&\n null === newFiber.alternate &&\n (newFiber.effectTag = 2);\n return newFiber;\n }\n function updateTextNode(\n returnFiber,\n current$$1,\n textContent,\n expirationTime\n ) {\n if (null === current$$1 || 6 !== current$$1.tag)\n return (\n (current$$1 = createFiberFromText(\n textContent,\n returnFiber.mode,\n expirationTime\n )),\n (current$$1.return = returnFiber),\n current$$1\n );\n current$$1 = useFiber(current$$1, textContent, expirationTime);\n current$$1.return = returnFiber;\n return current$$1;\n }\n function updateElement(returnFiber, current$$1, element, expirationTime) {\n if (null !== current$$1 && current$$1.elementType === element.type)\n return (\n (expirationTime = useFiber(current$$1, element.props, expirationTime)),\n (expirationTime.ref = coerceRef(returnFiber, current$$1, element)),\n (expirationTime.return = returnFiber),\n expirationTime\n );\n expirationTime = createFiberFromTypeAndProps(\n element.type,\n element.key,\n element.props,\n null,\n returnFiber.mode,\n expirationTime\n );\n expirationTime.ref = coerceRef(returnFiber, current$$1, element);\n expirationTime.return = returnFiber;\n return expirationTime;\n }\n function updatePortal(returnFiber, current$$1, portal, expirationTime) {\n if (\n null === current$$1 ||\n 4 !== current$$1.tag ||\n current$$1.stateNode.containerInfo !== portal.containerInfo ||\n current$$1.stateNode.implementation !== portal.implementation\n )\n return (\n (current$$1 = createFiberFromPortal(\n portal,\n returnFiber.mode,\n expirationTime\n )),\n (current$$1.return = returnFiber),\n current$$1\n );\n current$$1 = useFiber(current$$1, portal.children || [], expirationTime);\n current$$1.return = returnFiber;\n return current$$1;\n }\n function updateFragment(\n returnFiber,\n current$$1,\n fragment,\n expirationTime,\n key\n ) {\n if (null === current$$1 || 7 !== current$$1.tag)\n return (\n (current$$1 = createFiberFromFragment(\n fragment,\n returnFiber.mode,\n expirationTime,\n key\n )),\n (current$$1.return = returnFiber),\n current$$1\n );\n current$$1 = useFiber(current$$1, fragment, expirationTime);\n current$$1.return = returnFiber;\n return current$$1;\n }\n function createChild(returnFiber, newChild, expirationTime) {\n if (\"string\" === typeof newChild || \"number\" === typeof newChild)\n return (\n (newChild = createFiberFromText(\n \"\" + newChild,\n returnFiber.mode,\n expirationTime\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (expirationTime = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n expirationTime\n )),\n (expirationTime.ref = coerceRef(returnFiber, null, newChild)),\n (expirationTime.return = returnFiber),\n expirationTime\n );\n case REACT_PORTAL_TYPE:\n return (\n (newChild = createFiberFromPortal(\n newChild,\n returnFiber.mode,\n expirationTime\n )),\n (newChild.return = returnFiber),\n newChild\n );\n }\n if (isArray(newChild) || getIteratorFn(newChild))\n return (\n (newChild = createFiberFromFragment(\n newChild,\n returnFiber.mode,\n expirationTime,\n null\n )),\n (newChild.return = returnFiber),\n newChild\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return null;\n }\n function updateSlot(returnFiber, oldFiber, newChild, expirationTime) {\n var key = null !== oldFiber ? oldFiber.key : null;\n if (\"string\" === typeof newChild || \"number\" === typeof newChild)\n return null !== key\n ? null\n : updateTextNode(returnFiber, oldFiber, \"\" + newChild, expirationTime);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return newChild.key === key\n ? newChild.type === REACT_FRAGMENT_TYPE\n ? updateFragment(\n returnFiber,\n oldFiber,\n newChild.props.children,\n expirationTime,\n key\n )\n : updateElement(returnFiber, oldFiber, newChild, expirationTime)\n : null;\n case REACT_PORTAL_TYPE:\n return newChild.key === key\n ? updatePortal(returnFiber, oldFiber, newChild, expirationTime)\n : null;\n }\n if (isArray(newChild) || getIteratorFn(newChild))\n return null !== key\n ? null\n : updateFragment(\n returnFiber,\n oldFiber,\n newChild,\n expirationTime,\n null\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return null;\n }\n function updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n expirationTime\n ) {\n if (\"string\" === typeof newChild || \"number\" === typeof newChild)\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateTextNode(\n returnFiber,\n existingChildren,\n \"\" + newChild,\n expirationTime\n )\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n newChild.type === REACT_FRAGMENT_TYPE\n ? updateFragment(\n returnFiber,\n existingChildren,\n newChild.props.children,\n expirationTime,\n newChild.key\n )\n : updateElement(\n returnFiber,\n existingChildren,\n newChild,\n expirationTime\n )\n );\n case REACT_PORTAL_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updatePortal(\n returnFiber,\n existingChildren,\n newChild,\n expirationTime\n )\n );\n }\n if (isArray(newChild) || getIteratorFn(newChild))\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateFragment(\n returnFiber,\n existingChildren,\n newChild,\n expirationTime,\n null\n )\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return null;\n }\n function reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChildren,\n expirationTime\n ) {\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null;\n null !== oldFiber && newIdx < newChildren.length;\n newIdx++\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(\n returnFiber,\n oldFiber,\n newChildren[newIdx],\n expirationTime\n );\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (newIdx === newChildren.length)\n return (\n deleteRemainingChildren(returnFiber, oldFiber), resultingFirstChild\n );\n if (null === oldFiber) {\n for (; newIdx < newChildren.length; newIdx++)\n if (\n (oldFiber = createChild(\n returnFiber,\n newChildren[newIdx],\n expirationTime\n ))\n )\n (currentFirstChild = placeChild(oldFiber, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = oldFiber)\n : (previousNewFiber.sibling = oldFiber),\n (previousNewFiber = oldFiber);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(returnFiber, oldFiber);\n newIdx < newChildren.length;\n newIdx++\n )\n if (\n (nextOldFiber = updateFromMap(\n oldFiber,\n returnFiber,\n newIdx,\n newChildren[newIdx],\n expirationTime\n ))\n )\n shouldTrackSideEffects &&\n null !== nextOldFiber.alternate &&\n oldFiber.delete(\n null === nextOldFiber.key ? newIdx : nextOldFiber.key\n ),\n (currentFirstChild = placeChild(\n nextOldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = nextOldFiber)\n : (previousNewFiber.sibling = nextOldFiber),\n (previousNewFiber = nextOldFiber);\n shouldTrackSideEffects &&\n oldFiber.forEach(function(child) {\n return deleteChild(returnFiber, child);\n });\n return resultingFirstChild;\n }\n function reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChildrenIterable,\n expirationTime\n ) {\n var iteratorFn = getIteratorFn(newChildrenIterable);\n invariant(\n \"function\" === typeof iteratorFn,\n \"An object is not an iterable. This error is likely caused by a bug in React. Please file an issue.\"\n );\n newChildrenIterable = iteratorFn.call(newChildrenIterable);\n invariant(\n null != newChildrenIterable,\n \"An iterable object provided no iterator.\"\n );\n for (\n var previousNewFiber = (iteratorFn = null),\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null,\n step = newChildrenIterable.next();\n null !== oldFiber && !step.done;\n newIdx++, step = newChildrenIterable.next()\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(\n returnFiber,\n oldFiber,\n step.value,\n expirationTime\n );\n if (null === newFiber) {\n oldFiber || (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (iteratorFn = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (step.done)\n return deleteRemainingChildren(returnFiber, oldFiber), iteratorFn;\n if (null === oldFiber) {\n for (; !step.done; newIdx++, step = newChildrenIterable.next())\n (step = createChild(returnFiber, step.value, expirationTime)),\n null !== step &&\n ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (iteratorFn = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n return iteratorFn;\n }\n for (\n oldFiber = mapRemainingChildren(returnFiber, oldFiber);\n !step.done;\n newIdx++, step = newChildrenIterable.next()\n )\n (step = updateFromMap(\n oldFiber,\n returnFiber,\n newIdx,\n step.value,\n expirationTime\n )),\n null !== step &&\n (shouldTrackSideEffects &&\n null !== step.alternate &&\n oldFiber.delete(null === step.key ? newIdx : step.key),\n (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (iteratorFn = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n shouldTrackSideEffects &&\n oldFiber.forEach(function(child) {\n return deleteChild(returnFiber, child);\n });\n return iteratorFn;\n }\n return function(returnFiber, currentFirstChild, newChild, expirationTime) {\n var isUnkeyedTopLevelFragment =\n \"object\" === typeof newChild &&\n null !== newChild &&\n newChild.type === REACT_FRAGMENT_TYPE &&\n null === newChild.key;\n isUnkeyedTopLevelFragment && (newChild = newChild.props.children);\n var isObject = \"object\" === typeof newChild && null !== newChild;\n if (isObject)\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n a: {\n isObject = newChild.key;\n for (\n isUnkeyedTopLevelFragment = currentFirstChild;\n null !== isUnkeyedTopLevelFragment;\n\n ) {\n if (isUnkeyedTopLevelFragment.key === isObject)\n if (\n 7 === isUnkeyedTopLevelFragment.tag\n ? newChild.type === REACT_FRAGMENT_TYPE\n : isUnkeyedTopLevelFragment.elementType === newChild.type\n ) {\n deleteRemainingChildren(\n returnFiber,\n isUnkeyedTopLevelFragment.sibling\n );\n currentFirstChild = useFiber(\n isUnkeyedTopLevelFragment,\n newChild.type === REACT_FRAGMENT_TYPE\n ? newChild.props.children\n : newChild.props,\n expirationTime\n );\n currentFirstChild.ref = coerceRef(\n returnFiber,\n isUnkeyedTopLevelFragment,\n newChild\n );\n currentFirstChild.return = returnFiber;\n returnFiber = currentFirstChild;\n break a;\n } else {\n deleteRemainingChildren(\n returnFiber,\n isUnkeyedTopLevelFragment\n );\n break;\n }\n else deleteChild(returnFiber, isUnkeyedTopLevelFragment);\n isUnkeyedTopLevelFragment = isUnkeyedTopLevelFragment.sibling;\n }\n newChild.type === REACT_FRAGMENT_TYPE\n ? ((currentFirstChild = createFiberFromFragment(\n newChild.props.children,\n returnFiber.mode,\n expirationTime,\n newChild.key\n )),\n (currentFirstChild.return = returnFiber),\n (returnFiber = currentFirstChild))\n : ((expirationTime = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n expirationTime\n )),\n (expirationTime.ref = coerceRef(\n returnFiber,\n currentFirstChild,\n newChild\n )),\n (expirationTime.return = returnFiber),\n (returnFiber = expirationTime));\n }\n return placeSingleChild(returnFiber);\n case REACT_PORTAL_TYPE:\n a: {\n for (\n isUnkeyedTopLevelFragment = newChild.key;\n null !== currentFirstChild;\n\n ) {\n if (currentFirstChild.key === isUnkeyedTopLevelFragment)\n if (\n 4 === currentFirstChild.tag &&\n currentFirstChild.stateNode.containerInfo ===\n newChild.containerInfo &&\n currentFirstChild.stateNode.implementation ===\n newChild.implementation\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n currentFirstChild = useFiber(\n currentFirstChild,\n newChild.children || [],\n expirationTime\n );\n currentFirstChild.return = returnFiber;\n returnFiber = currentFirstChild;\n break a;\n } else {\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n }\n else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n currentFirstChild = createFiberFromPortal(\n newChild,\n returnFiber.mode,\n expirationTime\n );\n currentFirstChild.return = returnFiber;\n returnFiber = currentFirstChild;\n }\n return placeSingleChild(returnFiber);\n }\n if (\"string\" === typeof newChild || \"number\" === typeof newChild)\n return (\n (newChild = \"\" + newChild),\n null !== currentFirstChild && 6 === currentFirstChild.tag\n ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n (currentFirstChild = useFiber(\n currentFirstChild,\n newChild,\n expirationTime\n )),\n (currentFirstChild.return = returnFiber),\n (returnFiber = currentFirstChild))\n : (deleteRemainingChildren(returnFiber, currentFirstChild),\n (currentFirstChild = createFiberFromText(\n newChild,\n returnFiber.mode,\n expirationTime\n )),\n (currentFirstChild.return = returnFiber),\n (returnFiber = currentFirstChild)),\n placeSingleChild(returnFiber)\n );\n if (isArray(newChild))\n return reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChild,\n expirationTime\n );\n if (getIteratorFn(newChild))\n return reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChild,\n expirationTime\n );\n isObject && throwOnInvalidObjectType(returnFiber, newChild);\n if (\"undefined\" === typeof newChild && !isUnkeyedTopLevelFragment)\n switch (returnFiber.tag) {\n case 1:\n case 0:\n (expirationTime = returnFiber.type),\n invariant(\n !1,\n \"%s(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.\",\n expirationTime.displayName || expirationTime.name || \"Component\"\n );\n }\n return deleteRemainingChildren(returnFiber, currentFirstChild);\n };\n}\nvar reconcileChildFibers = ChildReconciler(!0),\n mountChildFibers = ChildReconciler(!1),\n hydrationParentFiber = null,\n nextHydratableInstance = null,\n isHydrating = !1;\nfunction tryHydrate(fiber, nextInstance) {\n switch (fiber.tag) {\n case 5:\n return (\n (nextInstance = shim$1(nextInstance, fiber.type, fiber.pendingProps)),\n null !== nextInstance ? ((fiber.stateNode = nextInstance), !0) : !1\n );\n case 6:\n return (\n (nextInstance = shim$1(nextInstance, fiber.pendingProps)),\n null !== nextInstance ? ((fiber.stateNode = nextInstance), !0) : !1\n );\n default:\n return !1;\n }\n}\nfunction tryToClaimNextHydratableInstance(fiber$jscomp$0) {\n if (isHydrating) {\n var nextInstance = nextHydratableInstance;\n if (nextInstance) {\n var firstAttemptedInstance = nextInstance;\n if (!tryHydrate(fiber$jscomp$0, nextInstance)) {\n nextInstance = shim$1(firstAttemptedInstance);\n if (!nextInstance || !tryHydrate(fiber$jscomp$0, nextInstance)) {\n fiber$jscomp$0.effectTag |= 2;\n isHydrating = !1;\n hydrationParentFiber = fiber$jscomp$0;\n return;\n }\n var returnFiber = hydrationParentFiber,\n fiber = createFiber(5, null, null, 0);\n fiber.elementType = \"DELETED\";\n fiber.type = \"DELETED\";\n fiber.stateNode = firstAttemptedInstance;\n fiber.return = returnFiber;\n fiber.effectTag = 8;\n null !== returnFiber.lastEffect\n ? ((returnFiber.lastEffect.nextEffect = fiber),\n (returnFiber.lastEffect = fiber))\n : (returnFiber.firstEffect = returnFiber.lastEffect = fiber);\n }\n hydrationParentFiber = fiber$jscomp$0;\n nextHydratableInstance = shim$1(nextInstance);\n } else\n (fiber$jscomp$0.effectTag |= 2),\n (isHydrating = !1),\n (hydrationParentFiber = fiber$jscomp$0);\n }\n}\nvar ReactCurrentOwner$3 = ReactSharedInternals.ReactCurrentOwner;\nfunction reconcileChildren(\n current$$1,\n workInProgress,\n nextChildren,\n renderExpirationTime\n) {\n workInProgress.child =\n null === current$$1\n ? mountChildFibers(\n workInProgress,\n null,\n nextChildren,\n renderExpirationTime\n )\n : reconcileChildFibers(\n workInProgress,\n current$$1.child,\n nextChildren,\n renderExpirationTime\n );\n}\nfunction updateForwardRef(\n current$$1,\n workInProgress,\n Component,\n nextProps,\n renderExpirationTime\n) {\n Component = Component.render;\n var ref = workInProgress.ref;\n prepareToReadContext(workInProgress, renderExpirationTime);\n nextProps = Component(nextProps, ref);\n workInProgress.effectTag |= 1;\n reconcileChildren(\n current$$1,\n workInProgress,\n nextProps,\n renderExpirationTime\n );\n return workInProgress.child;\n}\nfunction updateMemoComponent(\n current$$1,\n workInProgress,\n Component,\n nextProps,\n updateExpirationTime,\n renderExpirationTime\n) {\n if (null === current$$1) {\n var type = Component.type;\n if (\n \"function\" === typeof type &&\n !shouldConstruct(type) &&\n void 0 === type.defaultProps &&\n null === Component.compare &&\n void 0 === Component.defaultProps\n )\n return (\n (workInProgress.tag = 15),\n (workInProgress.type = type),\n updateSimpleMemoComponent(\n current$$1,\n workInProgress,\n type,\n nextProps,\n updateExpirationTime,\n renderExpirationTime\n )\n );\n current$$1 = createFiberFromTypeAndProps(\n Component.type,\n null,\n nextProps,\n null,\n workInProgress.mode,\n renderExpirationTime\n );\n current$$1.ref = workInProgress.ref;\n current$$1.return = workInProgress;\n return (workInProgress.child = current$$1);\n }\n type = current$$1.child;\n if (\n updateExpirationTime < renderExpirationTime &&\n ((updateExpirationTime = type.memoizedProps),\n (Component = Component.compare),\n (Component = null !== Component ? Component : shallowEqual),\n Component(updateExpirationTime, nextProps) &&\n current$$1.ref === workInProgress.ref)\n )\n return bailoutOnAlreadyFinishedWork(\n current$$1,\n workInProgress,\n renderExpirationTime\n );\n workInProgress.effectTag |= 1;\n current$$1 = createWorkInProgress(type, nextProps, renderExpirationTime);\n current$$1.ref = workInProgress.ref;\n current$$1.return = workInProgress;\n return (workInProgress.child = current$$1);\n}\nfunction updateSimpleMemoComponent(\n current$$1,\n workInProgress,\n Component,\n nextProps,\n updateExpirationTime,\n renderExpirationTime\n) {\n return null !== current$$1 &&\n updateExpirationTime < renderExpirationTime &&\n shallowEqual(current$$1.memoizedProps, nextProps) &&\n current$$1.ref === workInProgress.ref\n ? bailoutOnAlreadyFinishedWork(\n current$$1,\n workInProgress,\n renderExpirationTime\n )\n : updateFunctionComponent(\n current$$1,\n workInProgress,\n Component,\n nextProps,\n renderExpirationTime\n );\n}\nfunction markRef(current$$1, workInProgress) {\n var ref = workInProgress.ref;\n if (\n (null === current$$1 && null !== ref) ||\n (null !== current$$1 && current$$1.ref !== ref)\n )\n workInProgress.effectTag |= 128;\n}\nfunction updateFunctionComponent(\n current$$1,\n workInProgress,\n Component,\n nextProps,\n renderExpirationTime\n) {\n var unmaskedContext = isContextProvider(Component)\n ? previousContext\n : contextStackCursor.current;\n unmaskedContext = getMaskedContext(workInProgress, unmaskedContext);\n prepareToReadContext(workInProgress, renderExpirationTime);\n Component = Component(nextProps, unmaskedContext);\n workInProgress.effectTag |= 1;\n reconcileChildren(\n current$$1,\n workInProgress,\n Component,\n renderExpirationTime\n );\n return workInProgress.child;\n}\nfunction updateClassComponent(\n current$$1,\n workInProgress,\n Component,\n nextProps,\n renderExpirationTime\n) {\n if (isContextProvider(Component)) {\n var hasContext = !0;\n pushContextProvider(workInProgress);\n } else hasContext = !1;\n prepareToReadContext(workInProgress, renderExpirationTime);\n if (null === workInProgress.stateNode)\n null !== current$$1 &&\n ((current$$1.alternate = null),\n (workInProgress.alternate = null),\n (workInProgress.effectTag |= 2)),\n constructClassInstance(\n workInProgress,\n Component,\n nextProps,\n renderExpirationTime\n ),\n mountClassInstance(\n workInProgress,\n Component,\n nextProps,\n renderExpirationTime\n ),\n (nextProps = !0);\n else if (null === current$$1) {\n var instance = workInProgress.stateNode,\n oldProps = workInProgress.memoizedProps;\n instance.props = oldProps;\n var oldContext = instance.context,\n contextType = Component.contextType;\n \"object\" === typeof contextType && null !== contextType\n ? (contextType = ReactCurrentOwner$4.currentDispatcher.readContext(\n contextType\n ))\n : ((contextType = isContextProvider(Component)\n ? previousContext\n : contextStackCursor.current),\n (contextType = getMaskedContext(workInProgress, contextType)));\n var getDerivedStateFromProps = Component.getDerivedStateFromProps,\n hasNewLifecycles =\n \"function\" === typeof getDerivedStateFromProps ||\n \"function\" === typeof instance.getSnapshotBeforeUpdate;\n hasNewLifecycles ||\n (\"function\" !== typeof instance.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof instance.componentWillReceiveProps) ||\n ((oldProps !== nextProps || oldContext !== contextType) &&\n callComponentWillReceiveProps(\n workInProgress,\n instance,\n nextProps,\n contextType\n ));\n hasForceUpdate = !1;\n var oldState = workInProgress.memoizedState;\n oldContext = instance.state = oldState;\n var updateQueue = workInProgress.updateQueue;\n null !== updateQueue &&\n (processUpdateQueue(\n workInProgress,\n updateQueue,\n nextProps,\n instance,\n renderExpirationTime\n ),\n (oldContext = workInProgress.memoizedState));\n oldProps !== nextProps ||\n oldState !== oldContext ||\n didPerformWorkStackCursor.current ||\n hasForceUpdate\n ? (\"function\" === typeof getDerivedStateFromProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n getDerivedStateFromProps,\n nextProps\n ),\n (oldContext = workInProgress.memoizedState)),\n (oldProps =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n oldProps,\n nextProps,\n oldState,\n oldContext,\n contextType\n ))\n ? (hasNewLifecycles ||\n (\"function\" !== typeof instance.UNSAFE_componentWillMount &&\n \"function\" !== typeof instance.componentWillMount) ||\n (\"function\" === typeof instance.componentWillMount &&\n instance.componentWillMount(),\n \"function\" === typeof instance.UNSAFE_componentWillMount &&\n instance.UNSAFE_componentWillMount()),\n \"function\" === typeof instance.componentDidMount &&\n (workInProgress.effectTag |= 4))\n : (\"function\" === typeof instance.componentDidMount &&\n (workInProgress.effectTag |= 4),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = oldContext)),\n (instance.props = nextProps),\n (instance.state = oldContext),\n (instance.context = contextType),\n (nextProps = oldProps))\n : (\"function\" === typeof instance.componentDidMount &&\n (workInProgress.effectTag |= 4),\n (nextProps = !1));\n } else\n (instance = workInProgress.stateNode),\n (oldProps = workInProgress.memoizedProps),\n (instance.props =\n workInProgress.type === workInProgress.elementType\n ? oldProps\n : resolveDefaultProps(workInProgress.type, oldProps)),\n (oldContext = instance.context),\n (contextType = Component.contextType),\n \"object\" === typeof contextType && null !== contextType\n ? (contextType = ReactCurrentOwner$4.currentDispatcher.readContext(\n contextType\n ))\n : ((contextType = isContextProvider(Component)\n ? previousContext\n : contextStackCursor.current),\n (contextType = getMaskedContext(workInProgress, contextType))),\n (getDerivedStateFromProps = Component.getDerivedStateFromProps),\n (hasNewLifecycles =\n \"function\" === typeof getDerivedStateFromProps ||\n \"function\" === typeof instance.getSnapshotBeforeUpdate) ||\n (\"function\" !== typeof instance.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof instance.componentWillReceiveProps) ||\n ((oldProps !== nextProps || oldContext !== contextType) &&\n callComponentWillReceiveProps(\n workInProgress,\n instance,\n nextProps,\n contextType\n )),\n (hasForceUpdate = !1),\n (oldContext = workInProgress.memoizedState),\n (oldState = instance.state = oldContext),\n (updateQueue = workInProgress.updateQueue),\n null !== updateQueue &&\n (processUpdateQueue(\n workInProgress,\n updateQueue,\n nextProps,\n instance,\n renderExpirationTime\n ),\n (oldState = workInProgress.memoizedState)),\n oldProps !== nextProps ||\n oldContext !== oldState ||\n didPerformWorkStackCursor.current ||\n hasForceUpdate\n ? (\"function\" === typeof getDerivedStateFromProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n getDerivedStateFromProps,\n nextProps\n ),\n (oldState = workInProgress.memoizedState)),\n (getDerivedStateFromProps =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n oldProps,\n nextProps,\n oldContext,\n oldState,\n contextType\n ))\n ? (hasNewLifecycles ||\n (\"function\" !== typeof instance.UNSAFE_componentWillUpdate &&\n \"function\" !== typeof instance.componentWillUpdate) ||\n (\"function\" === typeof instance.componentWillUpdate &&\n instance.componentWillUpdate(\n nextProps,\n oldState,\n contextType\n ),\n \"function\" === typeof instance.UNSAFE_componentWillUpdate &&\n instance.UNSAFE_componentWillUpdate(\n nextProps,\n oldState,\n contextType\n )),\n \"function\" === typeof instance.componentDidUpdate &&\n (workInProgress.effectTag |= 4),\n \"function\" === typeof instance.getSnapshotBeforeUpdate &&\n (workInProgress.effectTag |= 256))\n : (\"function\" !== typeof instance.componentDidUpdate ||\n (oldProps === current$$1.memoizedProps &&\n oldContext === current$$1.memoizedState) ||\n (workInProgress.effectTag |= 4),\n \"function\" !== typeof instance.getSnapshotBeforeUpdate ||\n (oldProps === current$$1.memoizedProps &&\n oldContext === current$$1.memoizedState) ||\n (workInProgress.effectTag |= 256),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = oldState)),\n (instance.props = nextProps),\n (instance.state = oldState),\n (instance.context = contextType),\n (nextProps = getDerivedStateFromProps))\n : (\"function\" !== typeof instance.componentDidUpdate ||\n (oldProps === current$$1.memoizedProps &&\n oldContext === current$$1.memoizedState) ||\n (workInProgress.effectTag |= 4),\n \"function\" !== typeof instance.getSnapshotBeforeUpdate ||\n (oldProps === current$$1.memoizedProps &&\n oldContext === current$$1.memoizedState) ||\n (workInProgress.effectTag |= 256),\n (nextProps = !1));\n return finishClassComponent(\n current$$1,\n workInProgress,\n Component,\n nextProps,\n hasContext,\n renderExpirationTime\n );\n}\nfunction finishClassComponent(\n current$$1,\n workInProgress,\n Component,\n shouldUpdate,\n hasContext,\n renderExpirationTime\n) {\n markRef(current$$1, workInProgress);\n var didCaptureError = 0 !== (workInProgress.effectTag & 64);\n if (!shouldUpdate && !didCaptureError)\n return (\n hasContext && invalidateContextProvider(workInProgress, Component, !1),\n bailoutOnAlreadyFinishedWork(\n current$$1,\n workInProgress,\n renderExpirationTime\n )\n );\n shouldUpdate = workInProgress.stateNode;\n ReactCurrentOwner$3.current = workInProgress;\n var nextChildren =\n didCaptureError && \"function\" !== typeof Component.getDerivedStateFromError\n ? null\n : shouldUpdate.render();\n workInProgress.effectTag |= 1;\n null !== current$$1 && didCaptureError\n ? ((workInProgress.child = reconcileChildFibers(\n workInProgress,\n current$$1.child,\n null,\n renderExpirationTime\n )),\n (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n nextChildren,\n renderExpirationTime\n )))\n : reconcileChildren(\n current$$1,\n workInProgress,\n nextChildren,\n renderExpirationTime\n );\n workInProgress.memoizedState = shouldUpdate.state;\n hasContext && invalidateContextProvider(workInProgress, Component, !0);\n return workInProgress.child;\n}\nfunction pushHostRootContext(workInProgress) {\n var root = workInProgress.stateNode;\n root.pendingContext\n ? pushTopLevelContextObject(\n workInProgress,\n root.pendingContext,\n root.pendingContext !== root.context\n )\n : root.context &&\n pushTopLevelContextObject(workInProgress, root.context, !1);\n pushHostContainer(workInProgress, root.containerInfo);\n}\nfunction updateSuspenseComponent(\n current$$1,\n workInProgress,\n renderExpirationTime\n) {\n var mode = workInProgress.mode,\n nextProps = workInProgress.pendingProps,\n nextState = workInProgress.memoizedState;\n if (0 === (workInProgress.effectTag & 64)) {\n nextState = null;\n var nextDidTimeout = !1;\n } else\n (nextState = { timedOutAt: null !== nextState ? nextState.timedOutAt : 0 }),\n (nextDidTimeout = !0),\n (workInProgress.effectTag &= -65);\n null === current$$1\n ? nextDidTimeout\n ? ((nextDidTimeout = nextProps.fallback),\n (nextProps = createFiberFromFragment(null, mode, 0, null)),\n 0 === (workInProgress.mode & 1) &&\n (nextProps.child =\n null !== workInProgress.memoizedState\n ? workInProgress.child.child\n : workInProgress.child),\n (mode = createFiberFromFragment(\n nextDidTimeout,\n mode,\n renderExpirationTime,\n null\n )),\n (nextProps.sibling = mode),\n (renderExpirationTime = nextProps),\n (renderExpirationTime.return = mode.return = workInProgress))\n : (renderExpirationTime = mode = mountChildFibers(\n workInProgress,\n null,\n nextProps.children,\n renderExpirationTime\n ))\n : null !== current$$1.memoizedState\n ? ((mode = current$$1.child),\n (current$$1 = mode.sibling),\n nextDidTimeout\n ? ((renderExpirationTime = nextProps.fallback),\n (nextProps = createWorkInProgress(mode, mode.pendingProps, 0)),\n 0 === (workInProgress.mode & 1) &&\n ((nextDidTimeout =\n null !== workInProgress.memoizedState\n ? workInProgress.child.child\n : workInProgress.child),\n nextDidTimeout !== mode.child &&\n (nextProps.child = nextDidTimeout)),\n (mode = nextProps.sibling = createWorkInProgress(\n current$$1,\n renderExpirationTime,\n current$$1.expirationTime\n )),\n (renderExpirationTime = nextProps),\n (nextProps.childExpirationTime = 0),\n (renderExpirationTime.return = mode.return = workInProgress))\n : (renderExpirationTime = mode = reconcileChildFibers(\n workInProgress,\n mode.child,\n nextProps.children,\n renderExpirationTime\n )))\n : ((current$$1 = current$$1.child),\n nextDidTimeout\n ? ((nextDidTimeout = nextProps.fallback),\n (nextProps = createFiberFromFragment(null, mode, 0, null)),\n (nextProps.child = current$$1),\n 0 === (workInProgress.mode & 1) &&\n (nextProps.child =\n null !== workInProgress.memoizedState\n ? workInProgress.child.child\n : workInProgress.child),\n (mode = nextProps.sibling = createFiberFromFragment(\n nextDidTimeout,\n mode,\n renderExpirationTime,\n null\n )),\n (mode.effectTag |= 2),\n (renderExpirationTime = nextProps),\n (nextProps.childExpirationTime = 0),\n (renderExpirationTime.return = mode.return = workInProgress))\n : (mode = renderExpirationTime = reconcileChildFibers(\n workInProgress,\n current$$1,\n nextProps.children,\n renderExpirationTime\n )));\n workInProgress.memoizedState = nextState;\n workInProgress.child = renderExpirationTime;\n return mode;\n}\nfunction bailoutOnAlreadyFinishedWork(\n current$$1,\n workInProgress,\n renderExpirationTime\n) {\n null !== current$$1 &&\n (workInProgress.firstContextDependency = current$$1.firstContextDependency);\n if (workInProgress.childExpirationTime < renderExpirationTime) return null;\n invariant(\n null === current$$1 || workInProgress.child === current$$1.child,\n \"Resuming work not yet implemented.\"\n );\n if (null !== workInProgress.child) {\n current$$1 = workInProgress.child;\n renderExpirationTime = createWorkInProgress(\n current$$1,\n current$$1.pendingProps,\n current$$1.expirationTime\n );\n workInProgress.child = renderExpirationTime;\n for (\n renderExpirationTime.return = workInProgress;\n null !== current$$1.sibling;\n\n )\n (current$$1 = current$$1.sibling),\n (renderExpirationTime = renderExpirationTime.sibling = createWorkInProgress(\n current$$1,\n current$$1.pendingProps,\n current$$1.expirationTime\n )),\n (renderExpirationTime.return = workInProgress);\n renderExpirationTime.sibling = null;\n }\n return workInProgress.child;\n}\nfunction beginWork(current$$1, workInProgress, renderExpirationTime) {\n var updateExpirationTime = workInProgress.expirationTime;\n if (\n null !== current$$1 &&\n current$$1.memoizedProps === workInProgress.pendingProps &&\n !didPerformWorkStackCursor.current &&\n updateExpirationTime < renderExpirationTime\n ) {\n switch (workInProgress.tag) {\n case 3:\n pushHostRootContext(workInProgress);\n break;\n case 5:\n pushHostContext(workInProgress);\n break;\n case 1:\n isContextProvider(workInProgress.type) &&\n pushContextProvider(workInProgress);\n break;\n case 4:\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n );\n break;\n case 10:\n pushProvider(workInProgress, workInProgress.memoizedProps.value);\n break;\n case 13:\n if (null !== workInProgress.memoizedState) {\n updateExpirationTime = workInProgress.child.childExpirationTime;\n if (\n 0 !== updateExpirationTime &&\n updateExpirationTime >= renderExpirationTime\n )\n return updateSuspenseComponent(\n current$$1,\n workInProgress,\n renderExpirationTime\n );\n workInProgress = bailoutOnAlreadyFinishedWork(\n current$$1,\n workInProgress,\n renderExpirationTime\n );\n return null !== workInProgress ? workInProgress.sibling : null;\n }\n }\n return bailoutOnAlreadyFinishedWork(\n current$$1,\n workInProgress,\n renderExpirationTime\n );\n }\n workInProgress.expirationTime = 0;\n switch (workInProgress.tag) {\n case 2:\n updateExpirationTime = workInProgress.elementType;\n null !== current$$1 &&\n ((current$$1.alternate = null),\n (workInProgress.alternate = null),\n (workInProgress.effectTag |= 2));\n current$$1 = workInProgress.pendingProps;\n var context = getMaskedContext(\n workInProgress,\n contextStackCursor.current\n );\n prepareToReadContext(workInProgress, renderExpirationTime);\n context = updateExpirationTime(current$$1, context);\n workInProgress.effectTag |= 1;\n if (\n \"object\" === typeof context &&\n null !== context &&\n \"function\" === typeof context.render &&\n void 0 === context.$$typeof\n ) {\n workInProgress.tag = 1;\n if (isContextProvider(updateExpirationTime)) {\n var hasContext = !0;\n pushContextProvider(workInProgress);\n } else hasContext = !1;\n workInProgress.memoizedState =\n null !== context.state && void 0 !== context.state\n ? context.state\n : null;\n var getDerivedStateFromProps =\n updateExpirationTime.getDerivedStateFromProps;\n \"function\" === typeof getDerivedStateFromProps &&\n applyDerivedStateFromProps(\n workInProgress,\n updateExpirationTime,\n getDerivedStateFromProps,\n current$$1\n );\n context.updater = classComponentUpdater;\n workInProgress.stateNode = context;\n context._reactInternalFiber = workInProgress;\n mountClassInstance(\n workInProgress,\n updateExpirationTime,\n current$$1,\n renderExpirationTime\n );\n workInProgress = finishClassComponent(\n null,\n workInProgress,\n updateExpirationTime,\n !0,\n hasContext,\n renderExpirationTime\n );\n } else\n (workInProgress.tag = 0),\n reconcileChildren(\n null,\n workInProgress,\n context,\n renderExpirationTime\n ),\n (workInProgress = workInProgress.child);\n return workInProgress;\n case 16:\n context = workInProgress.elementType;\n null !== current$$1 &&\n ((current$$1.alternate = null),\n (workInProgress.alternate = null),\n (workInProgress.effectTag |= 2));\n hasContext = workInProgress.pendingProps;\n current$$1 = readLazyComponentType(context);\n workInProgress.type = current$$1;\n context = workInProgress.tag = resolveLazyComponentTag(current$$1);\n hasContext = resolveDefaultProps(current$$1, hasContext);\n getDerivedStateFromProps = void 0;\n switch (context) {\n case 0:\n getDerivedStateFromProps = updateFunctionComponent(\n null,\n workInProgress,\n current$$1,\n hasContext,\n renderExpirationTime\n );\n break;\n case 1:\n getDerivedStateFromProps = updateClassComponent(\n null,\n workInProgress,\n current$$1,\n hasContext,\n renderExpirationTime\n );\n break;\n case 11:\n getDerivedStateFromProps = updateForwardRef(\n null,\n workInProgress,\n current$$1,\n hasContext,\n renderExpirationTime\n );\n break;\n case 14:\n getDerivedStateFromProps = updateMemoComponent(\n null,\n workInProgress,\n current$$1,\n resolveDefaultProps(current$$1.type, hasContext),\n updateExpirationTime,\n renderExpirationTime\n );\n break;\n default:\n invariant(\n !1,\n \"Element type is invalid. Received a promise that resolves to: %s. Lazy element type must resolve to a class or function.%s\",\n current$$1,\n \"\"\n );\n }\n return getDerivedStateFromProps;\n case 0:\n return (\n (updateExpirationTime = workInProgress.type),\n (context = workInProgress.pendingProps),\n (context =\n workInProgress.elementType === updateExpirationTime\n ? context\n : resolveDefaultProps(updateExpirationTime, context)),\n updateFunctionComponent(\n current$$1,\n workInProgress,\n updateExpirationTime,\n context,\n renderExpirationTime\n )\n );\n case 1:\n return (\n (updateExpirationTime = workInProgress.type),\n (context = workInProgress.pendingProps),\n (context =\n workInProgress.elementType === updateExpirationTime\n ? context\n : resolveDefaultProps(updateExpirationTime, context)),\n updateClassComponent(\n current$$1,\n workInProgress,\n updateExpirationTime,\n context,\n renderExpirationTime\n )\n );\n case 3:\n return (\n pushHostRootContext(workInProgress),\n (updateExpirationTime = workInProgress.updateQueue),\n invariant(\n null !== updateExpirationTime,\n \"If the root does not have an updateQueue, we should have already bailed out. This error is likely caused by a bug in React. Please file an issue.\"\n ),\n (context = workInProgress.memoizedState),\n (context = null !== context ? context.element : null),\n processUpdateQueue(\n workInProgress,\n updateExpirationTime,\n workInProgress.pendingProps,\n null,\n renderExpirationTime\n ),\n (updateExpirationTime = workInProgress.memoizedState.element),\n updateExpirationTime === context\n ? (workInProgress = bailoutOnAlreadyFinishedWork(\n current$$1,\n workInProgress,\n renderExpirationTime\n ))\n : (reconcileChildren(\n current$$1,\n workInProgress,\n updateExpirationTime,\n renderExpirationTime\n ),\n (workInProgress = workInProgress.child)),\n workInProgress\n );\n case 5:\n return (\n pushHostContext(workInProgress),\n null === current$$1 && tryToClaimNextHydratableInstance(workInProgress),\n (updateExpirationTime = workInProgress.pendingProps.children),\n markRef(current$$1, workInProgress),\n reconcileChildren(\n current$$1,\n workInProgress,\n updateExpirationTime,\n renderExpirationTime\n ),\n (workInProgress = workInProgress.child),\n workInProgress\n );\n case 6:\n return (\n null === current$$1 && tryToClaimNextHydratableInstance(workInProgress),\n null\n );\n case 13:\n return updateSuspenseComponent(\n current$$1,\n workInProgress,\n renderExpirationTime\n );\n case 4:\n return (\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n ),\n (updateExpirationTime = workInProgress.pendingProps),\n null === current$$1\n ? (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n updateExpirationTime,\n renderExpirationTime\n ))\n : reconcileChildren(\n current$$1,\n workInProgress,\n updateExpirationTime,\n renderExpirationTime\n ),\n workInProgress.child\n );\n case 11:\n return (\n (updateExpirationTime = workInProgress.type),\n (context = workInProgress.pendingProps),\n (context =\n workInProgress.elementType === updateExpirationTime\n ? context\n : resolveDefaultProps(updateExpirationTime, context)),\n updateForwardRef(\n current$$1,\n workInProgress,\n updateExpirationTime,\n context,\n renderExpirationTime\n )\n );\n case 7:\n return (\n reconcileChildren(\n current$$1,\n workInProgress,\n workInProgress.pendingProps,\n renderExpirationTime\n ),\n workInProgress.child\n );\n case 8:\n return (\n reconcileChildren(\n current$$1,\n workInProgress,\n workInProgress.pendingProps.children,\n renderExpirationTime\n ),\n workInProgress.child\n );\n case 12:\n return (\n reconcileChildren(\n current$$1,\n workInProgress,\n workInProgress.pendingProps.children,\n renderExpirationTime\n ),\n workInProgress.child\n );\n case 10:\n a: {\n updateExpirationTime = workInProgress.type._context;\n context = workInProgress.pendingProps;\n getDerivedStateFromProps = workInProgress.memoizedProps;\n hasContext = context.value;\n pushProvider(workInProgress, hasContext);\n if (null !== getDerivedStateFromProps) {\n var oldValue = getDerivedStateFromProps.value;\n hasContext =\n (oldValue === hasContext &&\n (0 !== oldValue || 1 / oldValue === 1 / hasContext)) ||\n (oldValue !== oldValue && hasContext !== hasContext)\n ? 0\n : (\"function\" ===\n typeof updateExpirationTime._calculateChangedBits\n ? updateExpirationTime._calculateChangedBits(\n oldValue,\n hasContext\n )\n : 1073741823) | 0;\n if (0 === hasContext) {\n if (\n getDerivedStateFromProps.children === context.children &&\n !didPerformWorkStackCursor.current\n ) {\n workInProgress = bailoutOnAlreadyFinishedWork(\n current$$1,\n workInProgress,\n renderExpirationTime\n );\n break a;\n }\n } else\n for (\n getDerivedStateFromProps = workInProgress.child,\n null !== getDerivedStateFromProps &&\n (getDerivedStateFromProps.return = workInProgress);\n null !== getDerivedStateFromProps;\n\n ) {\n oldValue = getDerivedStateFromProps.firstContextDependency;\n if (null !== oldValue) {\n do {\n if (\n oldValue.context === updateExpirationTime &&\n 0 !== (oldValue.observedBits & hasContext)\n ) {\n if (1 === getDerivedStateFromProps.tag) {\n var nextFiber = createUpdate(renderExpirationTime);\n nextFiber.tag = 2;\n enqueueUpdate(getDerivedStateFromProps, nextFiber);\n }\n getDerivedStateFromProps.expirationTime <\n renderExpirationTime &&\n (getDerivedStateFromProps.expirationTime = renderExpirationTime);\n nextFiber = getDerivedStateFromProps.alternate;\n null !== nextFiber &&\n nextFiber.expirationTime < renderExpirationTime &&\n (nextFiber.expirationTime = renderExpirationTime);\n for (\n var node = getDerivedStateFromProps.return;\n null !== node;\n\n ) {\n nextFiber = node.alternate;\n if (node.childExpirationTime < renderExpirationTime)\n (node.childExpirationTime = renderExpirationTime),\n null !== nextFiber &&\n nextFiber.childExpirationTime <\n renderExpirationTime &&\n (nextFiber.childExpirationTime = renderExpirationTime);\n else if (\n null !== nextFiber &&\n nextFiber.childExpirationTime < renderExpirationTime\n )\n nextFiber.childExpirationTime = renderExpirationTime;\n else break;\n node = node.return;\n }\n }\n nextFiber = getDerivedStateFromProps.child;\n oldValue = oldValue.next;\n } while (null !== oldValue);\n } else\n nextFiber =\n 10 === getDerivedStateFromProps.tag\n ? getDerivedStateFromProps.type === workInProgress.type\n ? null\n : getDerivedStateFromProps.child\n : getDerivedStateFromProps.child;\n if (null !== nextFiber)\n nextFiber.return = getDerivedStateFromProps;\n else\n for (\n nextFiber = getDerivedStateFromProps;\n null !== nextFiber;\n\n ) {\n if (nextFiber === workInProgress) {\n nextFiber = null;\n break;\n }\n getDerivedStateFromProps = nextFiber.sibling;\n if (null !== getDerivedStateFromProps) {\n getDerivedStateFromProps.return = nextFiber.return;\n nextFiber = getDerivedStateFromProps;\n break;\n }\n nextFiber = nextFiber.return;\n }\n getDerivedStateFromProps = nextFiber;\n }\n }\n reconcileChildren(\n current$$1,\n workInProgress,\n context.children,\n renderExpirationTime\n );\n workInProgress = workInProgress.child;\n }\n return workInProgress;\n case 9:\n return (\n (context = workInProgress.type),\n (hasContext = workInProgress.pendingProps),\n (updateExpirationTime = hasContext.children),\n prepareToReadContext(workInProgress, renderExpirationTime),\n (context = readContext(context, hasContext.unstable_observedBits)),\n (updateExpirationTime = updateExpirationTime(context)),\n (workInProgress.effectTag |= 1),\n reconcileChildren(\n current$$1,\n workInProgress,\n updateExpirationTime,\n renderExpirationTime\n ),\n workInProgress.child\n );\n case 14:\n return (\n (context = workInProgress.type),\n (hasContext = resolveDefaultProps(\n context,\n workInProgress.pendingProps\n )),\n (hasContext = resolveDefaultProps(context.type, hasContext)),\n updateMemoComponent(\n current$$1,\n workInProgress,\n context,\n hasContext,\n updateExpirationTime,\n renderExpirationTime\n )\n );\n case 15:\n return updateSimpleMemoComponent(\n current$$1,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n updateExpirationTime,\n renderExpirationTime\n );\n case 17:\n return (\n (updateExpirationTime = workInProgress.type),\n (context = workInProgress.pendingProps),\n (context =\n workInProgress.elementType === updateExpirationTime\n ? context\n : resolveDefaultProps(updateExpirationTime, context)),\n null !== current$$1 &&\n ((current$$1.alternate = null),\n (workInProgress.alternate = null),\n (workInProgress.effectTag |= 2)),\n (workInProgress.tag = 1),\n isContextProvider(updateExpirationTime)\n ? ((current$$1 = !0), pushContextProvider(workInProgress))\n : (current$$1 = !1),\n prepareToReadContext(workInProgress, renderExpirationTime),\n constructClassInstance(\n workInProgress,\n updateExpirationTime,\n context,\n renderExpirationTime\n ),\n mountClassInstance(\n workInProgress,\n updateExpirationTime,\n context,\n renderExpirationTime\n ),\n finishClassComponent(\n null,\n workInProgress,\n updateExpirationTime,\n !0,\n current$$1,\n renderExpirationTime\n )\n );\n default:\n invariant(\n !1,\n \"Unknown unit of work tag. This error is likely caused by a bug in React. Please file an issue.\"\n );\n }\n}\nvar appendAllChildren = void 0,\n updateHostContainer = void 0,\n updateHostComponent$1 = void 0,\n updateHostText$1 = void 0;\nappendAllChildren = function(\n parent,\n workInProgress,\n needsVisibilityToggle,\n isHidden\n) {\n for (var node = workInProgress.child; null !== node; ) {\n a: if (5 === node.tag) {\n var instance = node.stateNode;\n if (needsVisibilityToggle) {\n var props = node.memoizedProps,\n type = node.type;\n instance = isHidden\n ? cloneHiddenInstance(instance, type, props, node)\n : cloneUnhiddenInstance(instance, type, props, node);\n node.stateNode = instance;\n }\n FabricUIManager.appendChild(parent.node, instance.node);\n } else if (6 === node.tag) {\n instance = node.stateNode;\n if (needsVisibilityToggle) {\n instance = node.memoizedProps;\n props = requiredContext(rootInstanceStackCursor.current);\n type = requiredContext(contextStackCursor$1.current);\n if (isHidden) throw Error(\"Not yet implemented.\");\n instance = createTextInstance(instance, props, type, workInProgress);\n node.stateNode = instance;\n }\n FabricUIManager.appendChild(parent.node, instance.node);\n } else if (4 !== node.tag) {\n if (\n 13 === node.tag &&\n ((props = node.alternate),\n null !== props &&\n ((instance = null !== node.memoizedState),\n (null !== props.memoizedState) !== instance))\n ) {\n props = instance ? node.child : node;\n null !== props && appendAllChildren(parent, props, !0, instance);\n break a;\n }\n if (null !== node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n }\n if (node === workInProgress) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === workInProgress) return;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n};\nfunction appendAllChildrenToContainer(\n containerChildSet,\n workInProgress,\n needsVisibilityToggle,\n isHidden\n) {\n for (var node = workInProgress.child; null !== node; ) {\n a: if (5 === node.tag) {\n var instance = node.stateNode;\n if (needsVisibilityToggle) {\n var props = node.memoizedProps,\n type = node.type;\n instance = isHidden\n ? cloneHiddenInstance(instance, type, props, node)\n : cloneUnhiddenInstance(instance, type, props, node);\n node.stateNode = instance;\n }\n FabricUIManager.appendChildToSet(containerChildSet, instance.node);\n } else if (6 === node.tag) {\n instance = node.stateNode;\n if (needsVisibilityToggle) {\n instance = node.memoizedProps;\n props = requiredContext(rootInstanceStackCursor.current);\n type = requiredContext(contextStackCursor$1.current);\n if (isHidden) throw Error(\"Not yet implemented.\");\n instance = createTextInstance(instance, props, type, workInProgress);\n node.stateNode = instance;\n }\n FabricUIManager.appendChildToSet(containerChildSet, instance.node);\n } else if (4 !== node.tag) {\n if (\n 13 === node.tag &&\n ((props = node.alternate),\n null !== props &&\n ((instance = null !== node.memoizedState),\n (null !== props.memoizedState) !== instance))\n ) {\n props = instance ? node.child : node;\n null !== props &&\n appendAllChildrenToContainer(containerChildSet, props, !0, instance);\n break a;\n }\n if (null !== node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n }\n if (node === workInProgress) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === workInProgress) return;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n}\nupdateHostContainer = function(workInProgress) {\n var portalOrRoot = workInProgress.stateNode;\n if (null !== workInProgress.firstEffect) {\n var container = portalOrRoot.containerInfo,\n newChildSet = FabricUIManager.createChildSet(container);\n appendAllChildrenToContainer(newChildSet, workInProgress, !1, !1);\n portalOrRoot.pendingChildren = newChildSet;\n workInProgress.effectTag |= 4;\n FabricUIManager.completeRoot(container, newChildSet);\n }\n};\nupdateHostComponent$1 = function(current, workInProgress, type, newProps) {\n type = current.stateNode;\n var oldProps = current.memoizedProps;\n if ((current = null === workInProgress.firstEffect) && oldProps === newProps)\n workInProgress.stateNode = type;\n else {\n var recyclableInstance = workInProgress.stateNode;\n requiredContext(contextStackCursor$1.current);\n var updatePayload = null;\n oldProps !== newProps &&\n ((oldProps = diffProperties(\n null,\n oldProps,\n newProps,\n recyclableInstance.canonical.viewConfig.validAttributes\n )),\n (recyclableInstance.canonical.currentProps = newProps),\n (updatePayload = oldProps));\n current && null === updatePayload\n ? (workInProgress.stateNode = type)\n : ((newProps = updatePayload),\n (recyclableInstance = type.node),\n (type = {\n node: current\n ? null !== newProps\n ? FabricUIManager.cloneNodeWithNewProps(\n recyclableInstance,\n newProps\n )\n : FabricUIManager.cloneNode(recyclableInstance)\n : null !== newProps\n ? FabricUIManager.cloneNodeWithNewChildrenAndProps(\n recyclableInstance,\n newProps\n )\n : FabricUIManager.cloneNodeWithNewChildren(recyclableInstance),\n canonical: type.canonical\n }),\n (workInProgress.stateNode = type),\n current\n ? (workInProgress.effectTag |= 4)\n : appendAllChildren(type, workInProgress, !1, !1));\n }\n};\nupdateHostText$1 = function(current, workInProgress, oldText, newText) {\n oldText !== newText &&\n ((current = requiredContext(rootInstanceStackCursor.current)),\n (oldText = requiredContext(contextStackCursor$1.current)),\n (workInProgress.stateNode = createTextInstance(\n newText,\n current,\n oldText,\n workInProgress\n )),\n (workInProgress.effectTag |= 4));\n};\nfunction logCapturedError(capturedError) {\n var componentStack = capturedError.componentStack,\n error = capturedError.error;\n if (error instanceof Error) {\n capturedError = error.message;\n var name = error.name;\n try {\n error.message =\n (capturedError ? name + \": \" + capturedError : name) +\n \"\\n\\nThis error is located at:\" +\n componentStack;\n } catch (e) {}\n } else\n error =\n \"string\" === typeof error\n ? Error(error + \"\\n\\nThis error is located at:\" + componentStack)\n : Error(\"Unspecified error at:\" + componentStack);\n ExceptionsManager.handleException(error, !1);\n}\nfunction logError(boundary, errorInfo) {\n var source = errorInfo.source,\n stack = errorInfo.stack;\n null === stack &&\n null !== source &&\n (stack = getStackByFiberInDevAndProd(source));\n errorInfo = {\n componentName: null !== source ? getComponentName(source.type) : null,\n componentStack: null !== stack ? stack : \"\",\n error: errorInfo.value,\n errorBoundary: null,\n errorBoundaryName: null,\n errorBoundaryFound: !1,\n willRetry: !1\n };\n null !== boundary &&\n 1 === boundary.tag &&\n ((errorInfo.errorBoundary = boundary.stateNode),\n (errorInfo.errorBoundaryName = getComponentName(boundary.type)),\n (errorInfo.errorBoundaryFound = !0),\n (errorInfo.willRetry = !0));\n try {\n logCapturedError(errorInfo);\n } catch (e) {\n setTimeout(function() {\n throw e;\n });\n }\n}\nfunction safelyDetachRef(current$$1) {\n var ref = current$$1.ref;\n if (null !== ref)\n if (\"function\" === typeof ref)\n try {\n ref(null);\n } catch (refError) {\n captureCommitPhaseError(current$$1, refError);\n }\n else ref.current = null;\n}\nfunction commitWork(current$$1, finishedWork) {\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n return;\n }\n switch (finishedWork.tag) {\n case 1:\n break;\n case 5:\n break;\n case 6:\n break;\n case 3:\n case 4:\n break;\n default:\n invariant(\n !1,\n \"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\"\n );\n }\n}\nfunction createRootErrorUpdate(fiber, errorInfo, expirationTime) {\n expirationTime = createUpdate(expirationTime);\n expirationTime.tag = 3;\n expirationTime.payload = { element: null };\n var error = errorInfo.value;\n expirationTime.callback = function() {\n onUncaughtError(error);\n logError(fiber, errorInfo);\n };\n return expirationTime;\n}\nfunction createClassErrorUpdate(fiber, errorInfo, expirationTime) {\n expirationTime = createUpdate(expirationTime);\n expirationTime.tag = 3;\n var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n if (\"function\" === typeof getDerivedStateFromError) {\n var error$jscomp$0 = errorInfo.value;\n expirationTime.payload = function() {\n return getDerivedStateFromError(error$jscomp$0);\n };\n }\n var inst = fiber.stateNode;\n null !== inst &&\n \"function\" === typeof inst.componentDidCatch &&\n (expirationTime.callback = function() {\n \"function\" !== typeof getDerivedStateFromError &&\n (null === legacyErrorBoundariesThatAlreadyFailed\n ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n : legacyErrorBoundariesThatAlreadyFailed.add(this));\n var error = errorInfo.value,\n stack = errorInfo.stack;\n logError(fiber, errorInfo);\n this.componentDidCatch(error, {\n componentStack: null !== stack ? stack : \"\"\n });\n });\n return expirationTime;\n}\nfunction unwindWork(workInProgress) {\n switch (workInProgress.tag) {\n case 1:\n isContextProvider(workInProgress.type) && popContext(workInProgress);\n var effectTag = workInProgress.effectTag;\n return effectTag & 2048\n ? ((workInProgress.effectTag = (effectTag & -2049) | 64),\n workInProgress)\n : null;\n case 3:\n return (\n popHostContainer(workInProgress),\n popTopLevelContextObject(workInProgress),\n (effectTag = workInProgress.effectTag),\n invariant(\n 0 === (effectTag & 64),\n \"The root failed to unmount after an error. This is likely a bug in React. Please file an issue.\"\n ),\n (workInProgress.effectTag = (effectTag & -2049) | 64),\n workInProgress\n );\n case 5:\n return popHostContext(workInProgress), null;\n case 13:\n return (\n (effectTag = workInProgress.effectTag),\n effectTag & 2048\n ? ((workInProgress.effectTag = (effectTag & -2049) | 64),\n workInProgress)\n : null\n );\n case 4:\n return popHostContainer(workInProgress), null;\n case 10:\n return popProvider(workInProgress), null;\n default:\n return null;\n }\n}\nvar DispatcherWithoutHooks = { readContext: readContext },\n ReactCurrentOwner$2 = ReactSharedInternals.ReactCurrentOwner,\n isWorking = !1,\n nextUnitOfWork = null,\n nextRoot = null,\n nextRenderExpirationTime = 0,\n nextLatestAbsoluteTimeoutMs = -1,\n nextRenderDidError = !1,\n nextEffect = null,\n isCommitting$1 = !1,\n passiveEffectCallbackHandle = null,\n passiveEffectCallback = null,\n legacyErrorBoundariesThatAlreadyFailed = null;\nfunction resetStack() {\n if (null !== nextUnitOfWork)\n for (\n var interruptedWork = nextUnitOfWork.return;\n null !== interruptedWork;\n\n ) {\n var interruptedWork$jscomp$0 = interruptedWork;\n switch (interruptedWork$jscomp$0.tag) {\n case 1:\n var childContextTypes =\n interruptedWork$jscomp$0.type.childContextTypes;\n null !== childContextTypes &&\n void 0 !== childContextTypes &&\n popContext(interruptedWork$jscomp$0);\n break;\n case 3:\n popHostContainer(interruptedWork$jscomp$0);\n popTopLevelContextObject(interruptedWork$jscomp$0);\n break;\n case 5:\n popHostContext(interruptedWork$jscomp$0);\n break;\n case 4:\n popHostContainer(interruptedWork$jscomp$0);\n break;\n case 10:\n popProvider(interruptedWork$jscomp$0);\n }\n interruptedWork = interruptedWork.return;\n }\n nextRoot = null;\n nextRenderExpirationTime = 0;\n nextLatestAbsoluteTimeoutMs = -1;\n nextRenderDidError = !1;\n nextUnitOfWork = null;\n}\nfunction flushPassiveEffects() {\n null !== passiveEffectCallback &&\n (scheduler.unstable_cancelCallback(passiveEffectCallbackHandle),\n passiveEffectCallback());\n}\nfunction completeUnitOfWork(workInProgress) {\n for (;;) {\n var current$$1 = workInProgress.alternate,\n returnFiber = workInProgress.return,\n siblingFiber = workInProgress.sibling;\n if (0 === (workInProgress.effectTag & 1024)) {\n nextUnitOfWork = workInProgress;\n a: {\n var current = current$$1;\n current$$1 = workInProgress;\n var renderExpirationTime = nextRenderExpirationTime;\n var instance = current$$1.pendingProps;\n switch (current$$1.tag) {\n case 2:\n break;\n case 16:\n break;\n case 15:\n case 0:\n break;\n case 1:\n isContextProvider(current$$1.type) && popContext(current$$1);\n break;\n case 3:\n popHostContainer(current$$1);\n popTopLevelContextObject(current$$1);\n instance = current$$1.stateNode;\n instance.pendingContext &&\n ((instance.context = instance.pendingContext),\n (instance.pendingContext = null));\n if (null === current || null === current.child)\n current$$1.effectTag &= -3;\n updateHostContainer(current$$1);\n break;\n case 5:\n popHostContext(current$$1);\n renderExpirationTime = requiredContext(\n rootInstanceStackCursor.current\n );\n var type = current$$1.type;\n if (null !== current && null != current$$1.stateNode)\n updateHostComponent$1(\n current,\n current$$1,\n type,\n instance,\n renderExpirationTime\n ),\n current.ref !== current$$1.ref && (current$$1.effectTag |= 128);\n else if (instance) {\n var currentHostContext = requiredContext(\n contextStackCursor$1.current\n ),\n internalInstanceHandle = current$$1;\n current = nextReactTag;\n nextReactTag += 2;\n var viewConfig = ReactNativeViewConfigRegistry.get(type);\n invariant(\n \"RCTView\" !== type || !currentHostContext.isInAParentText,\n \"Nesting of within is not currently supported.\"\n );\n type = diffProperties(\n null,\n emptyObject,\n instance,\n viewConfig.validAttributes\n );\n renderExpirationTime = FabricUIManager.createNode(\n current,\n viewConfig.uiViewClassName,\n renderExpirationTime,\n type,\n internalInstanceHandle\n );\n instance = new ReactFabricHostComponent(\n current,\n viewConfig,\n instance\n );\n instance = { node: renderExpirationTime, canonical: instance };\n appendAllChildren(instance, current$$1, !1, !1);\n current$$1.stateNode = instance;\n null !== current$$1.ref && (current$$1.effectTag |= 128);\n } else\n invariant(\n null !== current$$1.stateNode,\n \"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.\"\n );\n break;\n case 6:\n current && null != current$$1.stateNode\n ? updateHostText$1(\n current,\n current$$1,\n current.memoizedProps,\n instance\n )\n : (\"string\" !== typeof instance &&\n invariant(\n null !== current$$1.stateNode,\n \"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.\"\n ),\n (current = requiredContext(rootInstanceStackCursor.current)),\n (renderExpirationTime = requiredContext(\n contextStackCursor$1.current\n )),\n (current$$1.stateNode = createTextInstance(\n instance,\n current,\n renderExpirationTime,\n current$$1\n )));\n break;\n case 11:\n break;\n case 13:\n instance = current$$1.memoizedState;\n if (0 !== (current$$1.effectTag & 64)) {\n current$$1.expirationTime = renderExpirationTime;\n nextUnitOfWork = current$$1;\n break a;\n }\n instance = null !== instance;\n renderExpirationTime =\n null !== current && null !== current.memoizedState;\n null !== current &&\n !instance &&\n renderExpirationTime &&\n ((current = current.child.sibling),\n null !== current &&\n ((viewConfig = current$$1.firstEffect),\n null !== viewConfig\n ? ((current$$1.firstEffect = current),\n (current.nextEffect = viewConfig))\n : ((current$$1.firstEffect = current$$1.lastEffect = current),\n (current.nextEffect = null)),\n (current.effectTag = 8)));\n if (\n instance !== renderExpirationTime ||\n (0 === (current$$1.effectTag & 1) && instance)\n )\n current$$1.effectTag |= 4;\n break;\n case 7:\n break;\n case 8:\n break;\n case 12:\n break;\n case 4:\n popHostContainer(current$$1);\n updateHostContainer(current$$1);\n break;\n case 10:\n popProvider(current$$1);\n break;\n case 9:\n break;\n case 14:\n break;\n case 17:\n isContextProvider(current$$1.type) && popContext(current$$1);\n break;\n default:\n invariant(\n !1,\n \"Unknown unit of work tag. This error is likely caused by a bug in React. Please file an issue.\"\n );\n }\n nextUnitOfWork = null;\n }\n current$$1 = workInProgress;\n if (\n 1 === nextRenderExpirationTime ||\n 1 !== current$$1.childExpirationTime\n ) {\n instance = 0;\n for (current = current$$1.child; null !== current; )\n (renderExpirationTime = current.expirationTime),\n (viewConfig = current.childExpirationTime),\n renderExpirationTime > instance &&\n (instance = renderExpirationTime),\n viewConfig > instance && (instance = viewConfig),\n (current = current.sibling);\n current$$1.childExpirationTime = instance;\n }\n if (null !== nextUnitOfWork) return nextUnitOfWork;\n null !== returnFiber &&\n 0 === (returnFiber.effectTag & 1024) &&\n (null === returnFiber.firstEffect &&\n (returnFiber.firstEffect = workInProgress.firstEffect),\n null !== workInProgress.lastEffect &&\n (null !== returnFiber.lastEffect &&\n (returnFiber.lastEffect.nextEffect = workInProgress.firstEffect),\n (returnFiber.lastEffect = workInProgress.lastEffect)),\n 1 < workInProgress.effectTag &&\n (null !== returnFiber.lastEffect\n ? (returnFiber.lastEffect.nextEffect = workInProgress)\n : (returnFiber.firstEffect = workInProgress),\n (returnFiber.lastEffect = workInProgress)));\n } else {\n workInProgress = unwindWork(workInProgress, nextRenderExpirationTime);\n if (null !== workInProgress)\n return (workInProgress.effectTag &= 1023), workInProgress;\n null !== returnFiber &&\n ((returnFiber.firstEffect = returnFiber.lastEffect = null),\n (returnFiber.effectTag |= 1024));\n }\n if (null !== siblingFiber) return siblingFiber;\n if (null !== returnFiber) workInProgress = returnFiber;\n else break;\n }\n return null;\n}\nfunction performUnitOfWork(workInProgress) {\n var next = beginWork(\n workInProgress.alternate,\n workInProgress,\n nextRenderExpirationTime\n );\n workInProgress.memoizedProps = workInProgress.pendingProps;\n null === next && (next = completeUnitOfWork(workInProgress));\n ReactCurrentOwner$2.current = null;\n return next;\n}\nfunction renderRoot(root$jscomp$0, isYieldy) {\n invariant(\n !isWorking,\n \"renderRoot was called recursively. This error is likely caused by a bug in React. Please file an issue.\"\n );\n flushPassiveEffects();\n isWorking = !0;\n ReactCurrentOwner$2.currentDispatcher = DispatcherWithoutHooks;\n var expirationTime = root$jscomp$0.nextExpirationTimeToWorkOn;\n if (\n expirationTime !== nextRenderExpirationTime ||\n root$jscomp$0 !== nextRoot ||\n null === nextUnitOfWork\n )\n resetStack(),\n (nextRoot = root$jscomp$0),\n (nextRenderExpirationTime = expirationTime),\n (nextUnitOfWork = createWorkInProgress(\n nextRoot.current,\n null,\n nextRenderExpirationTime\n )),\n (root$jscomp$0.pendingCommitExpirationTime = 0);\n var didFatal = !1;\n do {\n try {\n if (isYieldy)\n for (; null !== nextUnitOfWork && !shouldYieldToRenderer(); )\n nextUnitOfWork = performUnitOfWork(nextUnitOfWork);\n else\n for (; null !== nextUnitOfWork; )\n nextUnitOfWork = performUnitOfWork(nextUnitOfWork);\n } catch (thrownValue) {\n if (\n ((lastContextWithAllBitsObserved = lastContextDependency = currentlyRenderingFiber = null),\n null === nextUnitOfWork)\n )\n (didFatal = !0), onUncaughtError(thrownValue);\n else {\n invariant(\n null !== nextUnitOfWork,\n \"Failed to replay rendering after an error. This is likely caused by a bug in React. Please file an issue with a reproducing case to help us find it.\"\n );\n var sourceFiber = nextUnitOfWork,\n returnFiber = sourceFiber.return;\n if (null === returnFiber) (didFatal = !0), onUncaughtError(thrownValue);\n else {\n a: {\n var root = root$jscomp$0,\n returnFiber$jscomp$0 = returnFiber,\n sourceFiber$jscomp$0 = sourceFiber,\n value = thrownValue;\n returnFiber = nextRenderExpirationTime;\n sourceFiber$jscomp$0.effectTag |= 1024;\n sourceFiber$jscomp$0.firstEffect = sourceFiber$jscomp$0.lastEffect = null;\n if (\n null !== value &&\n \"object\" === typeof value &&\n \"function\" === typeof value.then\n ) {\n var thenable = value;\n value = returnFiber$jscomp$0;\n var earliestTimeoutMs = -1,\n startTimeMs = -1;\n do {\n if (13 === value.tag) {\n var current$$1 = value.alternate;\n if (\n null !== current$$1 &&\n ((current$$1 = current$$1.memoizedState),\n null !== current$$1)\n ) {\n startTimeMs = 10 * (1073741822 - current$$1.timedOutAt);\n break;\n }\n current$$1 = value.pendingProps.maxDuration;\n if (\"number\" === typeof current$$1)\n if (0 >= current$$1) earliestTimeoutMs = 0;\n else if (\n -1 === earliestTimeoutMs ||\n current$$1 < earliestTimeoutMs\n )\n earliestTimeoutMs = current$$1;\n }\n value = value.return;\n } while (null !== value);\n value = returnFiber$jscomp$0;\n do {\n if ((current$$1 = 13 === value.tag))\n current$$1 =\n void 0 === value.memoizedProps.fallback\n ? !1\n : null === value.memoizedState;\n if (current$$1) {\n returnFiber$jscomp$0 = retrySuspendedRoot.bind(\n null,\n root,\n value,\n sourceFiber$jscomp$0,\n 0 === (value.mode & 1) ? 1073741823 : returnFiber\n );\n thenable.then(returnFiber$jscomp$0, returnFiber$jscomp$0);\n if (0 === (value.mode & 1)) {\n value.effectTag |= 64;\n sourceFiber$jscomp$0.effectTag &= -1957;\n 1 === sourceFiber$jscomp$0.tag &&\n null === sourceFiber$jscomp$0.alternate &&\n (sourceFiber$jscomp$0.tag = 17);\n sourceFiber$jscomp$0.expirationTime = returnFiber;\n break a;\n }\n -1 === earliestTimeoutMs\n ? (root = 1073741823)\n : (-1 === startTimeMs &&\n (startTimeMs =\n 10 *\n (1073741822 -\n findEarliestOutstandingPriorityLevel(\n root,\n returnFiber\n )) -\n 5e3),\n (root = startTimeMs + earliestTimeoutMs));\n 0 <= root &&\n nextLatestAbsoluteTimeoutMs < root &&\n (nextLatestAbsoluteTimeoutMs = root);\n value.effectTag |= 2048;\n value.expirationTime = returnFiber;\n break a;\n }\n value = value.return;\n } while (null !== value);\n value = Error(\n (getComponentName(sourceFiber$jscomp$0.type) ||\n \"A React component\") +\n \" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a component higher in the tree to provide a loading indicator or placeholder to display.\" +\n getStackByFiberInDevAndProd(sourceFiber$jscomp$0)\n );\n }\n nextRenderDidError = !0;\n value = createCapturedValue(value, sourceFiber$jscomp$0);\n root = returnFiber$jscomp$0;\n do {\n switch (root.tag) {\n case 3:\n sourceFiber$jscomp$0 = value;\n root.effectTag |= 2048;\n root.expirationTime = returnFiber;\n returnFiber = createRootErrorUpdate(\n root,\n sourceFiber$jscomp$0,\n returnFiber\n );\n enqueueCapturedUpdate(root, returnFiber);\n break a;\n case 1:\n if (\n ((sourceFiber$jscomp$0 = value),\n (returnFiber$jscomp$0 = root.type),\n (thenable = root.stateNode),\n 0 === (root.effectTag & 64) &&\n (\"function\" ===\n typeof returnFiber$jscomp$0.getDerivedStateFromError ||\n (null !== thenable &&\n \"function\" === typeof thenable.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(\n thenable\n )))))\n ) {\n root.effectTag |= 2048;\n root.expirationTime = returnFiber;\n returnFiber = createClassErrorUpdate(\n root,\n sourceFiber$jscomp$0,\n returnFiber\n );\n enqueueCapturedUpdate(root, returnFiber);\n break a;\n }\n }\n root = root.return;\n } while (null !== root);\n }\n nextUnitOfWork = completeUnitOfWork(sourceFiber);\n continue;\n }\n }\n }\n break;\n } while (1);\n isWorking = !1;\n lastContextWithAllBitsObserved = lastContextDependency = currentlyRenderingFiber = ReactCurrentOwner$2.currentDispatcher = null;\n if (didFatal) (nextRoot = null), (root$jscomp$0.finishedWork = null);\n else if (null !== nextUnitOfWork) root$jscomp$0.finishedWork = null;\n else {\n didFatal = root$jscomp$0.current.alternate;\n invariant(\n null !== didFatal,\n \"Finished root should have a work-in-progress. This error is likely caused by a bug in React. Please file an issue.\"\n );\n nextRoot = null;\n if (nextRenderDidError) {\n sourceFiber = root$jscomp$0.latestPendingTime;\n returnFiber = root$jscomp$0.latestSuspendedTime;\n root = root$jscomp$0.latestPingedTime;\n if (\n (0 !== sourceFiber && sourceFiber < expirationTime) ||\n (0 !== returnFiber && returnFiber < expirationTime) ||\n (0 !== root && root < expirationTime)\n ) {\n markSuspendedPriorityLevel(root$jscomp$0, expirationTime);\n onSuspend(\n root$jscomp$0,\n didFatal,\n expirationTime,\n root$jscomp$0.expirationTime,\n -1\n );\n return;\n }\n if (!root$jscomp$0.didError && isYieldy) {\n root$jscomp$0.didError = !0;\n expirationTime = root$jscomp$0.nextExpirationTimeToWorkOn = expirationTime;\n isYieldy = root$jscomp$0.expirationTime = 1073741823;\n onSuspend(root$jscomp$0, didFatal, expirationTime, isYieldy, -1);\n return;\n }\n }\n isYieldy && -1 !== nextLatestAbsoluteTimeoutMs\n ? (markSuspendedPriorityLevel(root$jscomp$0, expirationTime),\n (isYieldy =\n 10 *\n (1073741822 -\n findEarliestOutstandingPriorityLevel(\n root$jscomp$0,\n expirationTime\n ))),\n isYieldy < nextLatestAbsoluteTimeoutMs &&\n (nextLatestAbsoluteTimeoutMs = isYieldy),\n (isYieldy = 10 * (1073741822 - requestCurrentTime())),\n (isYieldy = nextLatestAbsoluteTimeoutMs - isYieldy),\n onSuspend(\n root$jscomp$0,\n didFatal,\n expirationTime,\n root$jscomp$0.expirationTime,\n 0 > isYieldy ? 0 : isYieldy\n ))\n : ((root$jscomp$0.pendingCommitExpirationTime = expirationTime),\n (root$jscomp$0.finishedWork = didFatal));\n }\n}\nfunction captureCommitPhaseError(sourceFiber, value) {\n for (var fiber = sourceFiber.return; null !== fiber; ) {\n switch (fiber.tag) {\n case 1:\n var instance = fiber.stateNode;\n if (\n \"function\" === typeof fiber.type.getDerivedStateFromError ||\n (\"function\" === typeof instance.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n ) {\n sourceFiber = createCapturedValue(value, sourceFiber);\n sourceFiber = createClassErrorUpdate(fiber, sourceFiber, 1073741823);\n enqueueUpdate(fiber, sourceFiber);\n scheduleWork(fiber, 1073741823);\n return;\n }\n break;\n case 3:\n sourceFiber = createCapturedValue(value, sourceFiber);\n sourceFiber = createRootErrorUpdate(fiber, sourceFiber, 1073741823);\n enqueueUpdate(fiber, sourceFiber);\n scheduleWork(fiber, 1073741823);\n return;\n }\n fiber = fiber.return;\n }\n 3 === sourceFiber.tag &&\n ((fiber = createCapturedValue(value, sourceFiber)),\n (fiber = createRootErrorUpdate(sourceFiber, fiber, 1073741823)),\n enqueueUpdate(sourceFiber, fiber),\n scheduleWork(sourceFiber, 1073741823));\n}\nfunction computeExpirationForFiber(currentTime, fiber) {\n isWorking\n ? (currentTime = isCommitting$1 ? 1073741823 : nextRenderExpirationTime)\n : fiber.mode & 1\n ? ((currentTime = isBatchingInteractiveUpdates\n ? 1073741822 - 10 * ((((1073741822 - currentTime + 15) / 10) | 0) + 1)\n : 1073741822 -\n 25 * ((((1073741822 - currentTime + 500) / 25) | 0) + 1)),\n null !== nextRoot &&\n currentTime === nextRenderExpirationTime &&\n --currentTime)\n : (currentTime = 1073741823);\n isBatchingInteractiveUpdates &&\n (0 === lowestPriorityPendingInteractiveExpirationTime ||\n currentTime < lowestPriorityPendingInteractiveExpirationTime) &&\n (lowestPriorityPendingInteractiveExpirationTime = currentTime);\n return currentTime;\n}\nfunction retrySuspendedRoot(root, boundaryFiber, sourceFiber, suspendedTime) {\n var retryTime = root.earliestSuspendedTime;\n var latestSuspendedTime = root.latestSuspendedTime;\n if (\n 0 !== retryTime &&\n suspendedTime <= retryTime &&\n suspendedTime >= latestSuspendedTime\n ) {\n latestSuspendedTime = retryTime = suspendedTime;\n root.didError = !1;\n var latestPingedTime = root.latestPingedTime;\n if (0 === latestPingedTime || latestPingedTime > latestSuspendedTime)\n root.latestPingedTime = latestSuspendedTime;\n findNextExpirationTimeToWorkOn(latestSuspendedTime, root);\n } else\n (retryTime = requestCurrentTime()),\n (retryTime = computeExpirationForFiber(retryTime, boundaryFiber)),\n markPendingPriorityLevel(root, retryTime);\n 0 !== (boundaryFiber.mode & 1) &&\n root === nextRoot &&\n nextRenderExpirationTime === suspendedTime &&\n (nextRoot = null);\n scheduleWorkToRoot(boundaryFiber, retryTime);\n 0 === (boundaryFiber.mode & 1) &&\n (scheduleWorkToRoot(sourceFiber, retryTime),\n 1 === sourceFiber.tag &&\n null !== sourceFiber.stateNode &&\n ((boundaryFiber = createUpdate(retryTime)),\n (boundaryFiber.tag = 2),\n enqueueUpdate(sourceFiber, boundaryFiber)));\n sourceFiber = root.expirationTime;\n 0 !== sourceFiber && requestWork(root, sourceFiber);\n}\nfunction scheduleWorkToRoot(fiber, expirationTime) {\n fiber.expirationTime < expirationTime &&\n (fiber.expirationTime = expirationTime);\n var alternate = fiber.alternate;\n null !== alternate &&\n alternate.expirationTime < expirationTime &&\n (alternate.expirationTime = expirationTime);\n var node = fiber.return,\n root = null;\n if (null === node && 3 === fiber.tag) root = fiber.stateNode;\n else\n for (; null !== node; ) {\n alternate = node.alternate;\n node.childExpirationTime < expirationTime &&\n (node.childExpirationTime = expirationTime);\n null !== alternate &&\n alternate.childExpirationTime < expirationTime &&\n (alternate.childExpirationTime = expirationTime);\n if (null === node.return && 3 === node.tag) {\n root = node.stateNode;\n break;\n }\n node = node.return;\n }\n return root;\n}\nfunction scheduleWork(fiber, expirationTime) {\n fiber = scheduleWorkToRoot(fiber, expirationTime);\n null !== fiber &&\n (!isWorking &&\n 0 !== nextRenderExpirationTime &&\n expirationTime > nextRenderExpirationTime &&\n resetStack(),\n markPendingPriorityLevel(fiber, expirationTime),\n (isWorking && !isCommitting$1 && nextRoot === fiber) ||\n requestWork(fiber, fiber.expirationTime),\n nestedUpdateCount > NESTED_UPDATE_LIMIT &&\n ((nestedUpdateCount = 0),\n invariant(\n !1,\n \"Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.\"\n )));\n}\nvar firstScheduledRoot = null,\n lastScheduledRoot = null,\n callbackExpirationTime = 0,\n callbackID = void 0,\n isRendering = !1,\n nextFlushedRoot = null,\n nextFlushedExpirationTime = 0,\n lowestPriorityPendingInteractiveExpirationTime = 0,\n hasUnhandledError = !1,\n unhandledError = null,\n isBatchingUpdates = !1,\n isUnbatchingUpdates = !1,\n isBatchingInteractiveUpdates = !1,\n completedBatches = null,\n originalStartTimeMs = now$1(),\n currentRendererTime = 1073741822 - ((originalStartTimeMs / 10) | 0),\n currentSchedulerTime = currentRendererTime,\n NESTED_UPDATE_LIMIT = 50,\n nestedUpdateCount = 0,\n lastCommittedRootDuringThisBatch = null;\nfunction recomputeCurrentRendererTime() {\n currentRendererTime =\n 1073741822 - (((now$1() - originalStartTimeMs) / 10) | 0);\n}\nfunction scheduleCallbackWithExpirationTime(root, expirationTime) {\n if (0 !== callbackExpirationTime) {\n if (expirationTime < callbackExpirationTime) return;\n null !== callbackID &&\n ((root = callbackID), (scheduledCallback = null), clearTimeout(root));\n }\n callbackExpirationTime = expirationTime;\n now$1();\n scheduledCallback = performAsyncWork;\n callbackID = setTimeout(setTimeoutCallback, 1);\n}\nfunction onSuspend(\n root,\n finishedWork,\n suspendedExpirationTime,\n rootExpirationTime,\n msUntilTimeout\n) {\n root.expirationTime = rootExpirationTime;\n 0 !== msUntilTimeout || shouldYieldToRenderer()\n ? 0 < msUntilTimeout &&\n (root.timeoutHandle = scheduleTimeout(\n onTimeout.bind(null, root, finishedWork, suspendedExpirationTime),\n msUntilTimeout\n ))\n : ((root.pendingCommitExpirationTime = suspendedExpirationTime),\n (root.finishedWork = finishedWork));\n}\nfunction onTimeout(root, finishedWork, suspendedExpirationTime) {\n root.pendingCommitExpirationTime = suspendedExpirationTime;\n root.finishedWork = finishedWork;\n recomputeCurrentRendererTime();\n currentSchedulerTime = currentRendererTime;\n invariant(\n !isRendering,\n \"work.commit(): Cannot commit while already rendering. This likely means you attempted to commit from inside a lifecycle method.\"\n );\n nextFlushedRoot = root;\n nextFlushedExpirationTime = suspendedExpirationTime;\n performWorkOnRoot(root, suspendedExpirationTime, !1);\n performWork(1073741823, !1);\n}\nfunction requestCurrentTime() {\n if (isRendering) return currentSchedulerTime;\n findHighestPriorityRoot();\n if (0 === nextFlushedExpirationTime || 1 === nextFlushedExpirationTime)\n recomputeCurrentRendererTime(),\n (currentSchedulerTime = currentRendererTime);\n return currentSchedulerTime;\n}\nfunction requestWork(root, expirationTime) {\n null === root.nextScheduledRoot\n ? ((root.expirationTime = expirationTime),\n null === lastScheduledRoot\n ? ((firstScheduledRoot = lastScheduledRoot = root),\n (root.nextScheduledRoot = root))\n : ((lastScheduledRoot = lastScheduledRoot.nextScheduledRoot = root),\n (lastScheduledRoot.nextScheduledRoot = firstScheduledRoot)))\n : expirationTime > root.expirationTime &&\n (root.expirationTime = expirationTime);\n isRendering ||\n (isBatchingUpdates\n ? isUnbatchingUpdates &&\n ((nextFlushedRoot = root),\n (nextFlushedExpirationTime = 1073741823),\n performWorkOnRoot(root, 1073741823, !1))\n : 1073741823 === expirationTime\n ? performWork(1073741823, !1)\n : scheduleCallbackWithExpirationTime(root, expirationTime));\n}\nfunction findHighestPriorityRoot() {\n var highestPriorityWork = 0,\n highestPriorityRoot = null;\n if (null !== lastScheduledRoot)\n for (\n var previousScheduledRoot = lastScheduledRoot, root = firstScheduledRoot;\n null !== root;\n\n ) {\n var remainingExpirationTime = root.expirationTime;\n if (0 === remainingExpirationTime) {\n invariant(\n null !== previousScheduledRoot && null !== lastScheduledRoot,\n \"Should have a previous and last root. This error is likely caused by a bug in React. Please file an issue.\"\n );\n if (root === root.nextScheduledRoot) {\n firstScheduledRoot = lastScheduledRoot = root.nextScheduledRoot = null;\n break;\n } else if (root === firstScheduledRoot)\n (firstScheduledRoot = remainingExpirationTime =\n root.nextScheduledRoot),\n (lastScheduledRoot.nextScheduledRoot = remainingExpirationTime),\n (root.nextScheduledRoot = null);\n else if (root === lastScheduledRoot) {\n lastScheduledRoot = previousScheduledRoot;\n lastScheduledRoot.nextScheduledRoot = firstScheduledRoot;\n root.nextScheduledRoot = null;\n break;\n } else\n (previousScheduledRoot.nextScheduledRoot = root.nextScheduledRoot),\n (root.nextScheduledRoot = null);\n root = previousScheduledRoot.nextScheduledRoot;\n } else {\n remainingExpirationTime > highestPriorityWork &&\n ((highestPriorityWork = remainingExpirationTime),\n (highestPriorityRoot = root));\n if (root === lastScheduledRoot) break;\n if (1073741823 === highestPriorityWork) break;\n previousScheduledRoot = root;\n root = root.nextScheduledRoot;\n }\n }\n nextFlushedRoot = highestPriorityRoot;\n nextFlushedExpirationTime = highestPriorityWork;\n}\nvar didYield = !1;\nfunction shouldYieldToRenderer() {\n return didYield ? !0 : frameDeadline <= now$1() ? (didYield = !0) : !1;\n}\nfunction performAsyncWork() {\n try {\n if (!shouldYieldToRenderer() && null !== firstScheduledRoot) {\n recomputeCurrentRendererTime();\n var root = firstScheduledRoot;\n do {\n var expirationTime = root.expirationTime;\n 0 !== expirationTime &&\n currentRendererTime <= expirationTime &&\n (root.nextExpirationTimeToWorkOn = currentRendererTime);\n root = root.nextScheduledRoot;\n } while (root !== firstScheduledRoot);\n }\n performWork(0, !0);\n } finally {\n didYield = !1;\n }\n}\nfunction performWork(minExpirationTime, isYieldy) {\n findHighestPriorityRoot();\n if (isYieldy)\n for (\n recomputeCurrentRendererTime(),\n currentSchedulerTime = currentRendererTime;\n null !== nextFlushedRoot &&\n 0 !== nextFlushedExpirationTime &&\n minExpirationTime <= nextFlushedExpirationTime &&\n !(didYield && currentRendererTime > nextFlushedExpirationTime);\n\n )\n performWorkOnRoot(\n nextFlushedRoot,\n nextFlushedExpirationTime,\n currentRendererTime > nextFlushedExpirationTime\n ),\n findHighestPriorityRoot(),\n recomputeCurrentRendererTime(),\n (currentSchedulerTime = currentRendererTime);\n else\n for (\n ;\n null !== nextFlushedRoot &&\n 0 !== nextFlushedExpirationTime &&\n minExpirationTime <= nextFlushedExpirationTime;\n\n )\n performWorkOnRoot(nextFlushedRoot, nextFlushedExpirationTime, !1),\n findHighestPriorityRoot();\n isYieldy && ((callbackExpirationTime = 0), (callbackID = null));\n 0 !== nextFlushedExpirationTime &&\n scheduleCallbackWithExpirationTime(\n nextFlushedRoot,\n nextFlushedExpirationTime\n );\n nestedUpdateCount = 0;\n lastCommittedRootDuringThisBatch = null;\n if (null !== completedBatches)\n for (\n minExpirationTime = completedBatches,\n completedBatches = null,\n isYieldy = 0;\n isYieldy < minExpirationTime.length;\n isYieldy++\n ) {\n var batch = minExpirationTime[isYieldy];\n try {\n batch._onComplete();\n } catch (error) {\n hasUnhandledError ||\n ((hasUnhandledError = !0), (unhandledError = error));\n }\n }\n if (hasUnhandledError)\n throw ((minExpirationTime = unhandledError),\n (unhandledError = null),\n (hasUnhandledError = !1),\n minExpirationTime);\n}\nfunction performWorkOnRoot(root, expirationTime, isYieldy) {\n invariant(\n !isRendering,\n \"performWorkOnRoot was called recursively. This error is likely caused by a bug in React. Please file an issue.\"\n );\n isRendering = !0;\n if (isYieldy) {\n var _finishedWork = root.finishedWork;\n null !== _finishedWork\n ? completeRoot$1(root, _finishedWork, expirationTime)\n : ((root.finishedWork = null),\n (_finishedWork = root.timeoutHandle),\n -1 !== _finishedWork &&\n ((root.timeoutHandle = -1), cancelTimeout(_finishedWork)),\n renderRoot(root, isYieldy),\n (_finishedWork = root.finishedWork),\n null !== _finishedWork &&\n (shouldYieldToRenderer()\n ? (root.finishedWork = _finishedWork)\n : completeRoot$1(root, _finishedWork, expirationTime)));\n } else\n (_finishedWork = root.finishedWork),\n null !== _finishedWork\n ? completeRoot$1(root, _finishedWork, expirationTime)\n : ((root.finishedWork = null),\n (_finishedWork = root.timeoutHandle),\n -1 !== _finishedWork &&\n ((root.timeoutHandle = -1), cancelTimeout(_finishedWork)),\n renderRoot(root, isYieldy),\n (_finishedWork = root.finishedWork),\n null !== _finishedWork &&\n completeRoot$1(root, _finishedWork, expirationTime));\n isRendering = !1;\n}\nfunction completeRoot$1(root, finishedWork$jscomp$0, expirationTime) {\n var firstBatch = root.firstBatch;\n if (\n null !== firstBatch &&\n firstBatch._expirationTime >= expirationTime &&\n (null === completedBatches\n ? (completedBatches = [firstBatch])\n : completedBatches.push(firstBatch),\n firstBatch._defer)\n ) {\n root.finishedWork = finishedWork$jscomp$0;\n root.expirationTime = 0;\n return;\n }\n root.finishedWork = null;\n root === lastCommittedRootDuringThisBatch\n ? nestedUpdateCount++\n : ((lastCommittedRootDuringThisBatch = root), (nestedUpdateCount = 0));\n isCommitting$1 = isWorking = !0;\n invariant(\n root.current !== finishedWork$jscomp$0,\n \"Cannot commit the same tree as before. This is probably a bug related to the return field. This error is likely caused by a bug in React. Please file an issue.\"\n );\n expirationTime = root.pendingCommitExpirationTime;\n invariant(\n 0 !== expirationTime,\n \"Cannot commit an incomplete root. This error is likely caused by a bug in React. Please file an issue.\"\n );\n root.pendingCommitExpirationTime = 0;\n firstBatch = finishedWork$jscomp$0.expirationTime;\n var childExpirationTimeBeforeCommit =\n finishedWork$jscomp$0.childExpirationTime;\n firstBatch =\n childExpirationTimeBeforeCommit > firstBatch\n ? childExpirationTimeBeforeCommit\n : firstBatch;\n root.didError = !1;\n 0 === firstBatch\n ? ((root.earliestPendingTime = 0),\n (root.latestPendingTime = 0),\n (root.earliestSuspendedTime = 0),\n (root.latestSuspendedTime = 0),\n (root.latestPingedTime = 0))\n : ((childExpirationTimeBeforeCommit = root.latestPendingTime),\n 0 !== childExpirationTimeBeforeCommit &&\n (childExpirationTimeBeforeCommit > firstBatch\n ? (root.earliestPendingTime = root.latestPendingTime = 0)\n : root.earliestPendingTime > firstBatch &&\n (root.earliestPendingTime = root.latestPendingTime)),\n (childExpirationTimeBeforeCommit = root.earliestSuspendedTime),\n 0 === childExpirationTimeBeforeCommit\n ? markPendingPriorityLevel(root, firstBatch)\n : firstBatch < root.latestSuspendedTime\n ? ((root.earliestSuspendedTime = 0),\n (root.latestSuspendedTime = 0),\n (root.latestPingedTime = 0),\n markPendingPriorityLevel(root, firstBatch))\n : firstBatch > childExpirationTimeBeforeCommit &&\n markPendingPriorityLevel(root, firstBatch));\n findNextExpirationTimeToWorkOn(0, root);\n ReactCurrentOwner$2.current = null;\n 1 < finishedWork$jscomp$0.effectTag\n ? null !== finishedWork$jscomp$0.lastEffect\n ? ((finishedWork$jscomp$0.lastEffect.nextEffect = finishedWork$jscomp$0),\n (firstBatch = finishedWork$jscomp$0.firstEffect))\n : (firstBatch = finishedWork$jscomp$0)\n : (firstBatch = finishedWork$jscomp$0.firstEffect);\n for (nextEffect = firstBatch; null !== nextEffect; ) {\n childExpirationTimeBeforeCommit = !1;\n var error$jscomp$0 = void 0;\n try {\n for (; null !== nextEffect; ) {\n if (nextEffect.effectTag & 256)\n a: {\n var current$$1 = nextEffect.alternate,\n finishedWork = nextEffect;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n break a;\n case 1:\n if (finishedWork.effectTag & 256 && null !== current$$1) {\n var prevProps = current$$1.memoizedProps,\n prevState = current$$1.memoizedState,\n instance = finishedWork.stateNode,\n snapshot = instance.getSnapshotBeforeUpdate(\n finishedWork.elementType === finishedWork.type\n ? prevProps\n : resolveDefaultProps(finishedWork.type, prevProps),\n prevState\n );\n instance.__reactInternalSnapshotBeforeUpdate = snapshot;\n }\n break a;\n case 3:\n case 5:\n case 6:\n case 4:\n case 17:\n break a;\n default:\n invariant(\n !1,\n \"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\"\n );\n }\n }\n nextEffect = nextEffect.nextEffect;\n }\n } catch (e) {\n (childExpirationTimeBeforeCommit = !0), (error$jscomp$0 = e);\n }\n childExpirationTimeBeforeCommit &&\n (invariant(\n null !== nextEffect,\n \"Should have next effect. This error is likely caused by a bug in React. Please file an issue.\"\n ),\n captureCommitPhaseError(nextEffect, error$jscomp$0),\n null !== nextEffect && (nextEffect = nextEffect.nextEffect));\n }\n for (nextEffect = firstBatch; null !== nextEffect; ) {\n current$$1 = !1;\n prevProps = void 0;\n try {\n for (; null !== nextEffect; ) {\n var effectTag = nextEffect.effectTag;\n if (effectTag & 128) {\n var current$$1$jscomp$0 = nextEffect.alternate;\n if (null !== current$$1$jscomp$0) {\n var currentRef = current$$1$jscomp$0.ref;\n null !== currentRef &&\n (\"function\" === typeof currentRef\n ? currentRef(null)\n : (currentRef.current = null));\n }\n }\n switch (effectTag & 14) {\n case 2:\n nextEffect.effectTag &= -3;\n break;\n case 6:\n nextEffect.effectTag &= -3;\n commitWork(nextEffect.alternate, nextEffect);\n break;\n case 4:\n commitWork(nextEffect.alternate, nextEffect);\n break;\n case 8:\n prevState = nextEffect;\n a: for (snapshot = instance = prevState; ; ) {\n childExpirationTimeBeforeCommit = snapshot;\n \"function\" === typeof onCommitFiberUnmount &&\n onCommitFiberUnmount(childExpirationTimeBeforeCommit);\n switch (childExpirationTimeBeforeCommit.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n var updateQueue = childExpirationTimeBeforeCommit.updateQueue;\n if (null !== updateQueue) {\n var lastEffect = updateQueue.lastEffect;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n error$jscomp$0 = firstEffect;\n do {\n var destroy = error$jscomp$0.destroy;\n if (null !== destroy) {\n finishedWork = childExpirationTimeBeforeCommit;\n try {\n destroy();\n } catch (error) {\n captureCommitPhaseError(finishedWork, error);\n }\n }\n error$jscomp$0 = error$jscomp$0.next;\n } while (error$jscomp$0 !== firstEffect);\n }\n }\n break;\n case 1:\n safelyDetachRef(childExpirationTimeBeforeCommit);\n var instance$jscomp$0 =\n childExpirationTimeBeforeCommit.stateNode;\n if (\n \"function\" === typeof instance$jscomp$0.componentWillUnmount\n )\n try {\n (instance$jscomp$0.props =\n childExpirationTimeBeforeCommit.memoizedProps),\n (instance$jscomp$0.state =\n childExpirationTimeBeforeCommit.memoizedState),\n instance$jscomp$0.componentWillUnmount();\n } catch (unmountError) {\n captureCommitPhaseError(\n childExpirationTimeBeforeCommit,\n unmountError\n );\n }\n break;\n case 5:\n safelyDetachRef(childExpirationTimeBeforeCommit);\n break;\n case 4:\n FabricUIManager.createChildSet(\n childExpirationTimeBeforeCommit.stateNode.containerInfo\n );\n }\n if (null !== snapshot.child)\n (snapshot.child.return = snapshot), (snapshot = snapshot.child);\n else {\n if (snapshot === instance) break;\n for (; null === snapshot.sibling; ) {\n if (null === snapshot.return || snapshot.return === instance)\n break a;\n snapshot = snapshot.return;\n }\n snapshot.sibling.return = snapshot.return;\n snapshot = snapshot.sibling;\n }\n }\n prevState.return = null;\n prevState.child = null;\n prevState.memoizedState = null;\n prevState.updateQueue = null;\n var alternate = prevState.alternate;\n null !== alternate &&\n ((alternate.return = null),\n (alternate.child = null),\n (alternate.memoizedState = null),\n (alternate.updateQueue = null));\n }\n nextEffect = nextEffect.nextEffect;\n }\n } catch (e) {\n (current$$1 = !0), (prevProps = e);\n }\n current$$1 &&\n (invariant(\n null !== nextEffect,\n \"Should have next effect. This error is likely caused by a bug in React. Please file an issue.\"\n ),\n captureCommitPhaseError(nextEffect, prevProps),\n null !== nextEffect && (nextEffect = nextEffect.nextEffect));\n }\n root.current = finishedWork$jscomp$0;\n for (nextEffect = firstBatch; null !== nextEffect; ) {\n effectTag = !1;\n current$$1$jscomp$0 = void 0;\n try {\n for (currentRef = expirationTime; null !== nextEffect; ) {\n var effectTag$jscomp$0 = nextEffect.effectTag;\n if (effectTag$jscomp$0 & 36) {\n var current$$1$jscomp$1 = nextEffect.alternate;\n updateQueue = nextEffect;\n lastEffect = currentRef;\n switch (updateQueue.tag) {\n case 0:\n case 11:\n case 15:\n break;\n case 1:\n var instance$jscomp$1 = updateQueue.stateNode;\n if (updateQueue.effectTag & 4)\n if (null === current$$1$jscomp$1)\n instance$jscomp$1.componentDidMount();\n else {\n var prevProps$jscomp$0 =\n updateQueue.elementType === updateQueue.type\n ? current$$1$jscomp$1.memoizedProps\n : resolveDefaultProps(\n updateQueue.type,\n current$$1$jscomp$1.memoizedProps\n );\n instance$jscomp$1.componentDidUpdate(\n prevProps$jscomp$0,\n current$$1$jscomp$1.memoizedState,\n instance$jscomp$1.__reactInternalSnapshotBeforeUpdate\n );\n }\n var updateQueue$jscomp$0 = updateQueue.updateQueue;\n null !== updateQueue$jscomp$0 &&\n commitUpdateQueue(\n updateQueue,\n updateQueue$jscomp$0,\n instance$jscomp$1,\n lastEffect\n );\n break;\n case 3:\n var _updateQueue = updateQueue.updateQueue;\n if (null !== _updateQueue) {\n firstEffect = null;\n if (null !== updateQueue.child)\n switch (updateQueue.child.tag) {\n case 5:\n firstEffect = updateQueue.child.stateNode.canonical;\n break;\n case 1:\n firstEffect = updateQueue.child.stateNode;\n }\n commitUpdateQueue(\n updateQueue,\n _updateQueue,\n firstEffect,\n lastEffect\n );\n }\n break;\n case 5:\n null === current$$1$jscomp$1 &&\n updateQueue.effectTag & 4 &&\n invariant(\n !1,\n \"The current renderer does not support mutation. This error is likely caused by a bug in React. Please file an issue.\"\n );\n break;\n case 6:\n break;\n case 4:\n break;\n case 12:\n break;\n case 13:\n break;\n case 17:\n break;\n default:\n invariant(\n !1,\n \"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\"\n );\n }\n }\n if (effectTag$jscomp$0 & 128) {\n var ref = nextEffect.ref;\n if (null !== ref) {\n var instance$jscomp$2 = nextEffect.stateNode;\n switch (nextEffect.tag) {\n case 5:\n var instanceToUse = instance$jscomp$2.canonical;\n break;\n default:\n instanceToUse = instance$jscomp$2;\n }\n \"function\" === typeof ref\n ? ref(instanceToUse)\n : (ref.current = instanceToUse);\n }\n }\n nextEffect = nextEffect.nextEffect;\n }\n } catch (e) {\n (effectTag = !0), (current$$1$jscomp$0 = e);\n }\n effectTag &&\n (invariant(\n null !== nextEffect,\n \"Should have next effect. This error is likely caused by a bug in React. Please file an issue.\"\n ),\n captureCommitPhaseError(nextEffect, current$$1$jscomp$0),\n null !== nextEffect && (nextEffect = nextEffect.nextEffect));\n }\n isWorking = isCommitting$1 = !1;\n \"function\" === typeof onCommitFiberRoot &&\n onCommitFiberRoot(finishedWork$jscomp$0.stateNode);\n effectTag$jscomp$0 = finishedWork$jscomp$0.expirationTime;\n finishedWork$jscomp$0 = finishedWork$jscomp$0.childExpirationTime;\n finishedWork$jscomp$0 =\n finishedWork$jscomp$0 > effectTag$jscomp$0\n ? finishedWork$jscomp$0\n : effectTag$jscomp$0;\n 0 === finishedWork$jscomp$0 &&\n (legacyErrorBoundariesThatAlreadyFailed = null);\n root.expirationTime = finishedWork$jscomp$0;\n root.finishedWork = null;\n}\nfunction onUncaughtError(error) {\n invariant(\n null !== nextFlushedRoot,\n \"Should be working on a root. This error is likely caused by a bug in React. Please file an issue.\"\n );\n nextFlushedRoot.expirationTime = 0;\n hasUnhandledError || ((hasUnhandledError = !0), (unhandledError = error));\n}\nfunction findHostInstance(component) {\n var fiber = component._reactInternalFiber;\n void 0 === fiber &&\n (\"function\" === typeof component.render\n ? invariant(!1, \"Unable to find node on an unmounted component.\")\n : invariant(\n !1,\n \"Argument appears to not be a ReactComponent. Keys: %s\",\n Object.keys(component)\n ));\n component = findCurrentHostFiber(fiber);\n return null === component ? null : component.stateNode;\n}\nfunction updateContainer(element, container, parentComponent, callback) {\n var current$$1 = container.current,\n currentTime = requestCurrentTime();\n current$$1 = computeExpirationForFiber(currentTime, current$$1);\n currentTime = container.current;\n a: if (parentComponent) {\n parentComponent = parentComponent._reactInternalFiber;\n b: {\n invariant(\n 2 === isFiberMountedImpl(parentComponent) && 1 === parentComponent.tag,\n \"Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue.\"\n );\n var parentContext = parentComponent;\n do {\n switch (parentContext.tag) {\n case 3:\n parentContext = parentContext.stateNode.context;\n break b;\n case 1:\n if (isContextProvider(parentContext.type)) {\n parentContext =\n parentContext.stateNode\n .__reactInternalMemoizedMergedChildContext;\n break b;\n }\n }\n parentContext = parentContext.return;\n } while (null !== parentContext);\n invariant(\n !1,\n \"Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue.\"\n );\n parentContext = void 0;\n }\n if (1 === parentComponent.tag) {\n var Component = parentComponent.type;\n if (isContextProvider(Component)) {\n parentComponent = processChildContext(\n parentComponent,\n Component,\n parentContext\n );\n break a;\n }\n }\n parentComponent = parentContext;\n } else parentComponent = emptyContextObject;\n null === container.context\n ? (container.context = parentComponent)\n : (container.pendingContext = parentComponent);\n container = callback;\n callback = createUpdate(current$$1);\n callback.payload = { element: element };\n container = void 0 === container ? null : container;\n null !== container && (callback.callback = container);\n flushPassiveEffects();\n enqueueUpdate(currentTime, callback);\n scheduleWork(currentTime, current$$1);\n return current$$1;\n}\nfunction createPortal(children, containerInfo, implementation) {\n var key =\n 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: null == key ? null : \"\" + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n}\nfunction _inherits(subClass, superClass) {\n if (\"function\" !== typeof superClass && null !== superClass)\n throw new TypeError(\n \"Super expression must either be null or a function, not \" +\n typeof superClass\n );\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n });\n superClass &&\n (Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass));\n}\nvar getInspectorDataForViewTag = void 0;\ngetInspectorDataForViewTag = function() {\n invariant(!1, \"getInspectorDataForViewTag() is not available in production\");\n};\nfunction findNodeHandle(componentOrHandle) {\n if (null == componentOrHandle) return null;\n if (\"number\" === typeof componentOrHandle) return componentOrHandle;\n if (componentOrHandle._nativeTag) return componentOrHandle._nativeTag;\n if (componentOrHandle.canonical && componentOrHandle.canonical._nativeTag)\n return componentOrHandle.canonical._nativeTag;\n componentOrHandle = findHostInstance(componentOrHandle);\n return null == componentOrHandle\n ? componentOrHandle\n : componentOrHandle.canonical\n ? componentOrHandle.canonical._nativeTag\n : componentOrHandle._nativeTag;\n}\n_batchedUpdatesImpl = function(fn, a) {\n var previousIsBatchingUpdates = isBatchingUpdates;\n isBatchingUpdates = !0;\n try {\n return fn(a);\n } finally {\n (isBatchingUpdates = previousIsBatchingUpdates) ||\n isRendering ||\n performWork(1073741823, !1);\n }\n};\n_flushInteractiveUpdatesImpl = function() {\n isRendering ||\n 0 === lowestPriorityPendingInteractiveExpirationTime ||\n (performWork(lowestPriorityPendingInteractiveExpirationTime, !1),\n (lowestPriorityPendingInteractiveExpirationTime = 0));\n};\nvar roots = new Map(),\n ReactFabric = {\n NativeComponent: (function(findNodeHandle, findHostInstance) {\n return (function(_React$Component) {\n function ReactNativeComponent() {\n if (!(this instanceof ReactNativeComponent))\n throw new TypeError(\"Cannot call a class as a function\");\n var call = _React$Component.apply(this, arguments);\n if (!this)\n throw new ReferenceError(\n \"this hasn't been initialised - super() hasn't been called\"\n );\n return !call ||\n (\"object\" !== typeof call && \"function\" !== typeof call)\n ? this\n : call;\n }\n _inherits(ReactNativeComponent, _React$Component);\n ReactNativeComponent.prototype.blur = function() {\n TextInputState.blurTextInput(findNodeHandle(this));\n };\n ReactNativeComponent.prototype.focus = function() {\n TextInputState.focusTextInput(findNodeHandle(this));\n };\n ReactNativeComponent.prototype.measure = function(callback) {\n UIManager.measure(\n findNodeHandle(this),\n mountSafeCallback_NOT_REALLY_SAFE(this, callback)\n );\n };\n ReactNativeComponent.prototype.measureInWindow = function(callback) {\n UIManager.measureInWindow(\n findNodeHandle(this),\n mountSafeCallback_NOT_REALLY_SAFE(this, callback)\n );\n };\n ReactNativeComponent.prototype.measureLayout = function(\n relativeToNativeNode,\n onSuccess,\n onFail\n ) {\n UIManager.measureLayout(\n findNodeHandle(this),\n relativeToNativeNode,\n mountSafeCallback_NOT_REALLY_SAFE(this, onFail),\n mountSafeCallback_NOT_REALLY_SAFE(this, onSuccess)\n );\n };\n ReactNativeComponent.prototype.setNativeProps = function(nativeProps) {\n var maybeInstance = void 0;\n try {\n maybeInstance = findHostInstance(this);\n } catch (error) {}\n if (null != maybeInstance) {\n var viewConfig =\n maybeInstance.viewConfig || maybeInstance.canonical.viewConfig;\n nativeProps = diffProperties(\n null,\n emptyObject,\n nativeProps,\n viewConfig.validAttributes\n );\n null != nativeProps &&\n UIManager.updateView(\n maybeInstance._nativeTag,\n viewConfig.uiViewClassName,\n nativeProps\n );\n }\n };\n return ReactNativeComponent;\n })(React.Component);\n })(findNodeHandle, findHostInstance),\n findNodeHandle: findNodeHandle,\n render: function(element, containerTag, callback) {\n var root = roots.get(containerTag);\n if (!root) {\n root = createFiber(3, null, null, 0);\n var root$jscomp$0 = {\n current: root,\n containerInfo: containerTag,\n pendingChildren: null,\n earliestPendingTime: 0,\n latestPendingTime: 0,\n earliestSuspendedTime: 0,\n latestSuspendedTime: 0,\n latestPingedTime: 0,\n didError: !1,\n pendingCommitExpirationTime: 0,\n finishedWork: null,\n timeoutHandle: -1,\n context: null,\n pendingContext: null,\n hydrate: !1,\n nextExpirationTimeToWorkOn: 0,\n expirationTime: 0,\n firstBatch: null,\n nextScheduledRoot: null\n };\n root = root.stateNode = root$jscomp$0;\n roots.set(containerTag, root);\n }\n updateContainer(element, root, null, callback);\n a: if (((element = root.current), element.child))\n switch (element.child.tag) {\n case 5:\n element = element.child.stateNode.canonical;\n break a;\n default:\n element = element.child.stateNode;\n }\n else element = null;\n return element;\n },\n unmountComponentAtNode: function(containerTag) {\n var root = roots.get(containerTag);\n root &&\n updateContainer(null, root, null, function() {\n roots.delete(containerTag);\n });\n },\n createPortal: function(children, containerTag) {\n return createPortal(\n children,\n containerTag,\n null,\n 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null\n );\n },\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: {\n NativeMethodsMixin: (function(findNodeHandle, findHostInstance) {\n return {\n measure: function(callback) {\n UIManager.measure(\n findNodeHandle(this),\n mountSafeCallback_NOT_REALLY_SAFE(this, callback)\n );\n },\n measureInWindow: function(callback) {\n UIManager.measureInWindow(\n findNodeHandle(this),\n mountSafeCallback_NOT_REALLY_SAFE(this, callback)\n );\n },\n measureLayout: function(relativeToNativeNode, onSuccess, onFail) {\n UIManager.measureLayout(\n findNodeHandle(this),\n relativeToNativeNode,\n mountSafeCallback_NOT_REALLY_SAFE(this, onFail),\n mountSafeCallback_NOT_REALLY_SAFE(this, onSuccess)\n );\n },\n setNativeProps: function(nativeProps) {\n var maybeInstance = void 0;\n try {\n maybeInstance = findHostInstance(this);\n } catch (error) {}\n if (null != maybeInstance) {\n var viewConfig = maybeInstance.viewConfig;\n nativeProps = diffProperties(\n null,\n emptyObject,\n nativeProps,\n viewConfig.validAttributes\n );\n null != nativeProps &&\n UIManager.updateView(\n maybeInstance._nativeTag,\n viewConfig.uiViewClassName,\n nativeProps\n );\n }\n },\n focus: function() {\n TextInputState.focusTextInput(findNodeHandle(this));\n },\n blur: function() {\n TextInputState.blurTextInput(findNodeHandle(this));\n }\n };\n })(findNodeHandle, findHostInstance)\n }\n };\n(function(devToolsConfig) {\n var findFiberByHostInstance = devToolsConfig.findFiberByHostInstance;\n return injectInternals(\n Object.assign({}, devToolsConfig, {\n findHostInstanceByFiber: function(fiber) {\n fiber = findCurrentHostFiber(fiber);\n return null === fiber ? null : fiber.stateNode;\n },\n findFiberByHostInstance: function(instance) {\n return findFiberByHostInstance\n ? findFiberByHostInstance(instance)\n : null;\n }\n })\n );\n})({\n findFiberByHostInstance: getInstanceFromInstance,\n getInspectorDataForViewTag: getInspectorDataForViewTag,\n bundleType: 0,\n version: \"16.6.1\",\n rendererPackageName: \"react-native-renderer\"\n});\nvar ReactFabric$2 = { default: ReactFabric },\n ReactFabric$3 = (ReactFabric$2 && ReactFabric) || ReactFabric$2;\nmodule.exports = ReactFabric$3.default || ReactFabric$3;\n","/**\n * Copyright (c) 2015-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 * @flow strict\n * @format\n */\n'use strict';\n\n// TODO: type these properly.\ntype Node = {};\ntype NodeSet = Array;\ntype NodeProps = {};\ntype InstanceHandle = {};\ntype Spec = {|\n +createNode: (\n reactTag: number,\n viewName: string,\n rootTag: number,\n props: NodeProps,\n instanceHandle: InstanceHandle,\n ) => Node,\n +cloneNode: (node: Node) => Node,\n +cloneNodeWithNewChildren: (node: Node) => Node,\n +cloneNodeWithNewProps: (node: Node, newProps: NodeProps) => Node,\n +cloneNodeWithNewChildrenAndProps: (node: Node, newProps: NodeProps) => Node,\n +createChildSet: (rootTag: number) => NodeSet,\n +appendChild: (parentNode: Node, child: Node) => Node,\n +appendChildToSet: (childSet: NodeSet, child: Node) => void,\n +completeRoot: (rootTag: number, childSet: NodeSet) => void,\n|};\n\nconst FabricUIManager: ?Spec = global.nativeFabricUIManager;\n\nmodule.exports = FabricUIManager;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst MissingNativeEventEmitterShim = require('MissingNativeEventEmitterShim');\nconst NativeEventEmitter = require('NativeEventEmitter');\nconst NativeModules = require('NativeModules');\nconst RCTAppState = NativeModules.AppState;\n\nconst logError = require('logError');\nconst invariant = require('fbjs/lib/invariant');\n\n/**\n * `AppState` can tell you if the app is in the foreground or background,\n * and notify you when the state changes.\n *\n * See http://facebook.github.io/react-native/docs/appstate.html\n */\nclass AppState extends NativeEventEmitter {\n _eventHandlers: Object;\n currentState: ?string;\n isAvailable: boolean = true;\n\n constructor() {\n super(RCTAppState);\n\n this.isAvailable = true;\n this._eventHandlers = {\n change: new Map(),\n memoryWarning: new Map(),\n };\n\n // TODO: Remove the 'active' fallback after `initialAppState` is exported by\n // the Android implementation.\n this.currentState = RCTAppState.initialAppState || 'active';\n\n let eventUpdated = false;\n\n // TODO: this is a terrible solution - in order to ensure `currentState`\n // prop is up to date, we have to register an observer that updates it\n // whenever the state changes, even if nobody cares. We should just\n // deprecate the `currentState` property and get rid of this.\n this.addListener('appStateDidChange', appStateData => {\n eventUpdated = true;\n this.currentState = appStateData.app_state;\n });\n\n // TODO: see above - this request just populates the value of `currentState`\n // when the module is first initialized. Would be better to get rid of the\n // prop and expose `getCurrentAppState` method directly.\n RCTAppState.getCurrentAppState(appStateData => {\n // It's possible that the state will have changed here & listeners need to be notified\n if (!eventUpdated && this.currentState !== appStateData.app_state) {\n this.currentState = appStateData.app_state;\n this.emit('appStateDidChange', appStateData);\n }\n }, logError);\n }\n\n // TODO: now that AppState is a subclass of NativeEventEmitter, we could\n // deprecate `addEventListener` and `removeEventListener` and just use\n // addListener` and `listener.remove()` directly. That will be a breaking\n // change though, as both the method and event names are different\n // (addListener events are currently required to be globally unique).\n /**\n * Add a handler to AppState changes by listening to the `change` event type\n * and providing the handler.\n *\n * See http://facebook.github.io/react-native/docs/appstate.html#addeventlistener\n */\n addEventListener(type: string, handler: Function) {\n invariant(\n ['change', 'memoryWarning'].indexOf(type) !== -1,\n 'Trying to subscribe to unknown event: \"%s\"',\n type,\n );\n if (type === 'change') {\n this._eventHandlers[type].set(\n handler,\n this.addListener('appStateDidChange', appStateData => {\n handler(appStateData.app_state);\n }),\n );\n } else if (type === 'memoryWarning') {\n this._eventHandlers[type].set(\n handler,\n this.addListener('memoryWarning', handler),\n );\n }\n }\n\n /**\n * Remove a handler by passing the `change` event type and the handler.\n *\n * See http://facebook.github.io/react-native/docs/appstate.html#removeeventlistener\n */\n removeEventListener(type: string, handler: Function) {\n invariant(\n ['change', 'memoryWarning'].indexOf(type) !== -1,\n 'Trying to remove listener for unknown event: \"%s\"',\n type,\n );\n if (!this._eventHandlers[type].has(handler)) {\n return;\n }\n this._eventHandlers[type].get(handler).remove();\n this._eventHandlers[type].delete(handler);\n }\n}\n\nif (__DEV__ && !RCTAppState) {\n class MissingNativeAppStateShim extends MissingNativeEventEmitterShim {\n constructor() {\n super('RCTAppState', 'AppState');\n }\n\n get currentState(): ?string {\n this.throwMissingNativeModule();\n }\n\n addEventListener(...args: Array) {\n this.throwMissingNativeModule();\n }\n\n removeEventListener(...args: Array) {\n this.throwMissingNativeModule();\n }\n }\n\n // This module depends on the native `RCTAppState` module. If you don't\n // include it, `AppState.isAvailable` will return `false`, and any method\n // calls will throw. We reassign the class variable to keep the autodoc\n // generator happy.\n AppState = new MissingNativeAppStateShim();\n} else {\n AppState = new AppState();\n}\n\nmodule.exports = AppState;\n","/**\n * Copyright (c) 2015-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 * @format\n * @noflow\n * @flow-weak\n * @jsdoc\n */\n\n'use strict';\n\nconst NativeModules = require('NativeModules');\n\n// Use RocksDB if available, then SQLite, then file storage.\nconst RCTAsyncStorage =\n NativeModules.AsyncRocksDBStorage ||\n NativeModules.AsyncSQLiteDBStorage ||\n NativeModules.AsyncLocalStorage;\n\n/**\n * `AsyncStorage` is a simple, unencrypted, asynchronous, persistent, key-value\n * storage system that is global to the app. It should be used instead of\n * LocalStorage.\n *\n * See http://facebook.github.io/react-native/docs/asyncstorage.html\n */\nconst AsyncStorage = {\n _getRequests: ([]: Array),\n _getKeys: ([]: Array),\n _immediate: (null: ?number),\n\n /**\n * Fetches an item for a `key` and invokes a callback upon completion.\n *\n * See http://facebook.github.io/react-native/docs/asyncstorage.html#getitem\n */\n getItem: function(\n key: string,\n callback?: ?(error: ?Error, result: ?string) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiGet([key], function(errors, result) {\n // Unpack result to get value from [[key,value]]\n const value = result && result[0] && result[0][1] ? result[0][1] : null;\n const errs = convertErrors(errors);\n callback && callback(errs && errs[0], value);\n if (errs) {\n reject(errs[0]);\n } else {\n resolve(value);\n }\n });\n });\n },\n\n /**\n * Sets the value for a `key` and invokes a callback upon completion.\n *\n * See http://facebook.github.io/react-native/docs/asyncstorage.html#setitem\n */\n setItem: function(\n key: string,\n value: string,\n callback?: ?(error: ?Error) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiSet([[key, value]], function(errors) {\n const errs = convertErrors(errors);\n callback && callback(errs && errs[0]);\n if (errs) {\n reject(errs[0]);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Removes an item for a `key` and invokes a callback upon completion.\n *\n * See http://facebook.github.io/react-native/docs/asyncstorage.html#removeitem\n */\n removeItem: function(\n key: string,\n callback?: ?(error: ?Error) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiRemove([key], function(errors) {\n const errs = convertErrors(errors);\n callback && callback(errs && errs[0]);\n if (errs) {\n reject(errs[0]);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Merges an existing `key` value with an input value, assuming both values\n * are stringified JSON.\n *\n * **NOTE:** This is not supported by all native implementations.\n *\n * See http://facebook.github.io/react-native/docs/asyncstorage.html#mergeitem\n */\n mergeItem: function(\n key: string,\n value: string,\n callback?: ?(error: ?Error) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiMerge([[key, value]], function(errors) {\n const errs = convertErrors(errors);\n callback && callback(errs && errs[0]);\n if (errs) {\n reject(errs[0]);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Erases *all* `AsyncStorage` for all clients, libraries, etc. You probably\n * don't want to call this; use `removeItem` or `multiRemove` to clear only\n * your app's keys.\n *\n * See http://facebook.github.io/react-native/docs/asyncstorage.html#clear\n */\n clear: function(callback?: ?(error: ?Error) => void): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.clear(function(error) {\n callback && callback(convertError(error));\n if (error && convertError(error)) {\n reject(convertError(error));\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Gets *all* keys known to your app; for all callers, libraries, etc.\n *\n * See http://facebook.github.io/react-native/docs/asyncstorage.html#getallkeys\n */\n getAllKeys: function(\n callback?: ?(error: ?Error, keys: ?Array) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.getAllKeys(function(error, keys) {\n callback && callback(convertError(error), keys);\n if (error) {\n reject(convertError(error));\n } else {\n resolve(keys);\n }\n });\n });\n },\n\n /**\n * The following batched functions are useful for executing a lot of\n * operations at once, allowing for native optimizations and provide the\n * convenience of a single callback after all operations are complete.\n *\n * These functions return arrays of errors, potentially one for every key.\n * For key-specific errors, the Error object will have a key property to\n * indicate which key caused the error.\n */\n\n /**\n * Flushes any pending requests using a single batch call to get the data.\n *\n * See http://facebook.github.io/react-native/docs/asyncstorage.html#flushgetrequests\n * */\n flushGetRequests: function(): void {\n const getRequests = this._getRequests;\n const getKeys = this._getKeys;\n\n this._getRequests = [];\n this._getKeys = [];\n\n RCTAsyncStorage.multiGet(getKeys, function(errors, result) {\n // Even though the runtime complexity of this is theoretically worse vs if we used a map,\n // it's much, much faster in practice for the data sets we deal with (we avoid\n // allocating result pair arrays). This was heavily benchmarked.\n //\n // Is there a way to avoid using the map but fix the bug in this breaking test?\n // https://github.com/facebook/react-native/commit/8dd8ad76579d7feef34c014d387bf02065692264\n const map = {};\n result &&\n result.forEach(([key, value]) => {\n map[key] = value;\n return value;\n });\n const reqLength = getRequests.length;\n for (let i = 0; i < reqLength; i++) {\n const request = getRequests[i];\n const requestKeys = request.keys;\n const requestResult = requestKeys.map(key => [key, map[key]]);\n request.callback && request.callback(null, requestResult);\n request.resolve && request.resolve(requestResult);\n }\n });\n },\n\n /**\n * This allows you to batch the fetching of items given an array of `key`\n * inputs. Your callback will be invoked with an array of corresponding\n * key-value pairs found.\n *\n * See http://facebook.github.io/react-native/docs/asyncstorage.html#multiget\n */\n multiGet: function(\n keys: Array,\n callback?: ?(errors: ?Array, result: ?Array>) => void,\n ): Promise {\n if (!this._immediate) {\n this._immediate = setImmediate(() => {\n this._immediate = null;\n this.flushGetRequests();\n });\n }\n\n const getRequest = {\n keys: keys,\n callback: callback,\n // do we need this?\n keyIndex: this._getKeys.length,\n resolve: null,\n reject: null,\n };\n\n const promiseResult = new Promise((resolve, reject) => {\n getRequest.resolve = resolve;\n getRequest.reject = reject;\n });\n\n this._getRequests.push(getRequest);\n // avoid fetching duplicates\n keys.forEach(key => {\n if (this._getKeys.indexOf(key) === -1) {\n this._getKeys.push(key);\n }\n });\n\n return promiseResult;\n },\n\n /**\n * Use this as a batch operation for storing multiple key-value pairs. When\n * the operation completes you'll get a single callback with any errors.\n *\n * See http://facebook.github.io/react-native/docs/asyncstorage.html#multiset\n */\n multiSet: function(\n keyValuePairs: Array>,\n callback?: ?(errors: ?Array) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiSet(keyValuePairs, function(errors) {\n const error = convertErrors(errors);\n callback && callback(error);\n if (error) {\n reject(error);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Call this to batch the deletion of all keys in the `keys` array.\n *\n * See http://facebook.github.io/react-native/docs/asyncstorage.html#multiremove\n */\n multiRemove: function(\n keys: Array,\n callback?: ?(errors: ?Array) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiRemove(keys, function(errors) {\n const error = convertErrors(errors);\n callback && callback(error);\n if (error) {\n reject(error);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Batch operation to merge in existing and new values for a given set of\n * keys. This assumes that the values are stringified JSON.\n *\n * **NOTE**: This is not supported by all native implementations.\n *\n * See http://facebook.github.io/react-native/docs/asyncstorage.html#multimerge\n */\n multiMerge: function(\n keyValuePairs: Array>,\n callback?: ?(errors: ?Array) => void,\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiMerge(keyValuePairs, function(errors) {\n const error = convertErrors(errors);\n callback && callback(error);\n if (error) {\n reject(error);\n } else {\n resolve(null);\n }\n });\n });\n },\n};\n\n// Not all native implementations support merge.\nif (!RCTAsyncStorage.multiMerge) {\n delete AsyncStorage.mergeItem;\n delete AsyncStorage.multiMerge;\n}\n\nfunction convertErrors(errs) {\n if (!errs) {\n return null;\n }\n return (Array.isArray(errs) ? errs : [errs]).map(e => convertError(e));\n}\n\nfunction convertError(error) {\n if (!error) {\n return null;\n }\n const out = new Error(error.message);\n out.key = error.key; // flow doesn't like this :(\n return out;\n}\n\nmodule.exports = AsyncStorage;\n","/**\n * Copyright (c) 2015-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 * BackAndroid has been moved to BackHandler. This stub calls BackHandler methods\n * after generating a warning to remind users to move to the new BackHandler module.\n *\n * @format\n */\n\n'use strict';\n\nconst BackHandler = require('BackHandler');\n\nconst warning = require('fbjs/lib/warning');\n\n/**\n * Deprecated. Use BackHandler instead.\n */\nconst BackAndroid = {\n exitApp: function() {\n warning(\n false,\n 'BackAndroid is deprecated. Please use BackHandler instead.',\n );\n BackHandler.exitApp();\n },\n\n addEventListener: function(\n eventName: BackPressEventName,\n handler: Function,\n ): {remove: () => void} {\n warning(\n false,\n 'BackAndroid is deprecated. Please use BackHandler instead.',\n );\n return BackHandler.addEventListener(eventName, handler);\n },\n\n removeEventListener: function(\n eventName: BackPressEventName,\n handler: Function,\n ): void {\n warning(\n false,\n 'BackAndroid is deprecated. Please use BackHandler instead.',\n );\n BackHandler.removeEventListener(eventName, handler);\n },\n};\n\nmodule.exports = BackAndroid;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n'use strict';\n\nconst PropTypes = require('prop-types');\nconst {checkPropTypes} = PropTypes;\nconst RCTCameraRollManager = require('NativeModules').CameraRollManager;\n\nconst createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\nconst invariant = require('fbjs/lib/invariant');\n\nconst GROUP_TYPES_OPTIONS = {\n Album: 'Album',\n All: 'All',\n Event: 'Event',\n Faces: 'Faces',\n Library: 'Library',\n PhotoStream: 'PhotoStream',\n SavedPhotos: 'SavedPhotos', // default\n};\n\nconst ASSET_TYPE_OPTIONS = {\n All: 'All',\n Videos: 'Videos',\n Photos: 'Photos',\n};\n\ntype GetPhotosParams = {\n first: number,\n after?: string,\n groupTypes?: $Keys,\n groupName?: string,\n assetType?: $Keys,\n mimeTypes?: Array,\n};\n\n/**\n * Shape of the param arg for the `getPhotos` function.\n */\nconst getPhotosParamChecker = createStrictShapeTypeChecker({\n /**\n * The number of photos wanted in reverse order of the photo application\n * (i.e. most recent first for SavedPhotos).\n */\n first: PropTypes.number.isRequired,\n\n /**\n * A cursor that matches `page_info { end_cursor }` returned from a previous\n * call to `getPhotos`\n */\n after: PropTypes.string,\n\n /**\n * Specifies which group types to filter the results to.\n */\n groupTypes: PropTypes.oneOf(Object.keys(GROUP_TYPES_OPTIONS)),\n\n /**\n * Specifies filter on group names, like 'Recent Photos' or custom album\n * titles.\n */\n groupName: PropTypes.string,\n\n /**\n * Specifies filter on asset type\n */\n assetType: PropTypes.oneOf(Object.keys(ASSET_TYPE_OPTIONS)),\n\n /**\n * Filter by mimetype (e.g. image/jpeg).\n */\n mimeTypes: PropTypes.arrayOf(PropTypes.string),\n});\n\ntype GetPhotosReturn = Promise<{\n edges: Array<{\n node: {\n type: string,\n group_name: string,\n image: {\n uri: string,\n height: number,\n width: number,\n isStored?: boolean,\n playableDuration: number,\n },\n timestamp: number,\n location?: {\n latitude?: number,\n longitude?: number,\n altitude?: number,\n heading?: number,\n speed?: number,\n },\n },\n }>,\n page_info: {\n has_next_page: boolean,\n start_cursor?: string,\n end_cursor?: string,\n },\n}>;\n\n/**\n * Shape of the return value of the `getPhotos` function.\n */\nconst getPhotosReturnChecker = createStrictShapeTypeChecker({\n edges: PropTypes.arrayOf(\n /* $FlowFixMe(>=0.66.0 site=react_native_fb) This comment suppresses an\n * error found when Flow v0.66 was deployed. To see the error delete this\n * comment and run Flow. */\n createStrictShapeTypeChecker({\n node: createStrictShapeTypeChecker({\n type: PropTypes.string.isRequired,\n group_name: PropTypes.string.isRequired,\n image: createStrictShapeTypeChecker({\n uri: PropTypes.string.isRequired,\n height: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n isStored: PropTypes.bool,\n playableDuration: PropTypes.number.isRequired,\n }).isRequired,\n timestamp: PropTypes.number.isRequired,\n location: createStrictShapeTypeChecker({\n latitude: PropTypes.number,\n longitude: PropTypes.number,\n altitude: PropTypes.number,\n heading: PropTypes.number,\n speed: PropTypes.number,\n }),\n }).isRequired,\n }),\n ).isRequired,\n page_info: createStrictShapeTypeChecker({\n has_next_page: PropTypes.bool.isRequired,\n start_cursor: PropTypes.string,\n end_cursor: PropTypes.string,\n }).isRequired,\n});\n\n/**\n * `CameraRoll` provides access to the local camera roll or photo library.\n *\n * See https://facebook.github.io/react-native/docs/cameraroll.html\n */\nclass CameraRoll {\n static GroupTypesOptions: Object = GROUP_TYPES_OPTIONS;\n static AssetTypeOptions: Object = ASSET_TYPE_OPTIONS;\n\n /**\n * `CameraRoll.saveImageWithTag()` is deprecated. Use `CameraRoll.saveToCameraRoll()` instead.\n */\n static saveImageWithTag(tag: string): Promise {\n console.warn(\n '`CameraRoll.saveImageWithTag()` is deprecated. Use `CameraRoll.saveToCameraRoll()` instead.',\n );\n return this.saveToCameraRoll(tag, 'photo');\n }\n\n static deletePhotos(photos: Array) {\n return RCTCameraRollManager.deletePhotos(photos);\n }\n\n /**\n * Saves the photo or video to the camera roll or photo library.\n *\n * See https://facebook.github.io/react-native/docs/cameraroll.html#savetocameraroll\n */\n static saveToCameraRoll(\n tag: string,\n type?: 'photo' | 'video',\n ): Promise {\n invariant(\n typeof tag === 'string',\n 'CameraRoll.saveToCameraRoll must be a valid string.',\n );\n\n invariant(\n type === 'photo' || type === 'video' || type === undefined,\n `The second argument to saveToCameraRoll must be 'photo' or 'video'. You passed ${type ||\n 'unknown'}`,\n );\n\n let mediaType = 'photo';\n if (type) {\n mediaType = type;\n } else if (['mov', 'mp4'].indexOf(tag.split('.').slice(-1)[0]) >= 0) {\n mediaType = 'video';\n }\n\n return RCTCameraRollManager.saveToCameraRoll(tag, mediaType);\n }\n\n /**\n * Returns a Promise with photo identifier objects from the local camera\n * roll of the device matching shape defined by `getPhotosReturnChecker`.\n *\n * See https://facebook.github.io/react-native/docs/cameraroll.html#getphotos\n */\n static getPhotos(params: GetPhotosParams): GetPhotosReturn {\n if (__DEV__) {\n checkPropTypes(\n {params: getPhotosParamChecker},\n {params},\n 'params',\n 'CameraRoll.getPhotos',\n );\n }\n if (arguments.length > 1) {\n console.warn(\n 'CameraRoll.getPhotos(tag, success, error) is deprecated. Use the returned Promise instead',\n );\n let successCallback = arguments[1];\n if (__DEV__) {\n const callback = arguments[1];\n successCallback = response => {\n checkPropTypes(\n {response: getPhotosReturnChecker},\n {response},\n 'response',\n 'CameraRoll.getPhotos callback',\n );\n callback(response);\n };\n }\n const errorCallback = arguments[2] || (() => {});\n RCTCameraRollManager.getPhotos(params).then(\n successCallback,\n errorCallback,\n );\n }\n // TODO: Add the __DEV__ check back in to verify the Promise result\n return RCTCameraRollManager.getPhotos(params);\n }\n}\n\nmodule.exports = CameraRoll;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict-local\n */\n\n'use strict';\n\nconst Clipboard = require('NativeModules').Clipboard;\n\n/**\n * `Clipboard` gives you an interface for setting and getting content from Clipboard on both iOS and Android\n */\nmodule.exports = {\n /**\n * Get content of string type, this method returns a `Promise`, so you can use following code to get clipboard content\n * ```javascript\n * async _getContent() {\n * var content = await Clipboard.getString();\n * }\n * ```\n */\n getString(): Promise {\n return Clipboard.getString();\n },\n /**\n * Set content of string type. You can use following code to set clipboard content\n * ```javascript\n * _setContent() {\n * Clipboard.setString('hello world');\n * }\n * ```\n * @param the content to be stored in the clipboard.\n */\n setString(content: string) {\n Clipboard.setString(content);\n },\n};\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst DatePickerModule = require('NativeModules').DatePickerAndroid;\n\n/**\n * Convert a Date to a timestamp.\n */\nfunction _toMillis(options: Object, key: string) {\n const dateVal = options[key];\n // Is it a Date object?\n if (typeof dateVal === 'object' && typeof dateVal.getMonth === 'function') {\n options[key] = dateVal.getTime();\n }\n}\n\n/**\n * Opens the standard Android date picker dialog.\n *\n * ### Example\n *\n * ```\n * try {\n * const {action, year, month, day} = await DatePickerAndroid.open({\n * // Use `new Date()` for current date.\n * // May 25 2020. Month 0 is January.\n * date: new Date(2020, 4, 25)\n * });\n * if (action !== DatePickerAndroid.dismissedAction) {\n * // Selected year, month (0-11), day\n * }\n * } catch ({code, message}) {\n * console.warn('Cannot open date picker', message);\n * }\n * ```\n */\nclass DatePickerAndroid {\n /**\n * Opens the standard Android date picker dialog.\n *\n * The available keys for the `options` object are:\n *\n * - `date` (`Date` object or timestamp in milliseconds) - date to show by default\n * - `minDate` (`Date` or timestamp in milliseconds) - minimum date that can be selected\n * - `maxDate` (`Date` object or timestamp in milliseconds) - maximum date that can be selected\n * - `mode` (`enum('calendar', 'spinner', 'default')`) - To set the date-picker mode to calendar/spinner/default\n * - 'calendar': Show a date picker in calendar mode.\n * - 'spinner': Show a date picker in spinner mode.\n * - 'default': Show a default native date picker(spinner/calendar) based on android versions.\n *\n * Returns a Promise which will be invoked an object containing `action`, `year`, `month` (0-11),\n * `day` if the user picked a date. If the user dismissed the dialog, the Promise will\n * still be resolved with action being `DatePickerAndroid.dismissedAction` and all the other keys\n * being undefined. **Always** check whether the `action` before reading the values.\n *\n * Note the native date picker dialog has some UI glitches on Android 4 and lower\n * when using the `minDate` and `maxDate` options.\n */\n static async open(options: Object): Promise {\n const optionsMs = options;\n if (optionsMs) {\n _toMillis(options, 'date');\n _toMillis(options, 'minDate');\n _toMillis(options, 'maxDate');\n }\n return DatePickerModule.open(options);\n }\n\n /**\n * A date has been selected.\n */\n static get dateSetAction() {\n return 'dateSetAction';\n }\n /**\n * The dialog has been dismissed.\n */\n static get dismissedAction() {\n return 'dismissedAction';\n }\n}\n\nmodule.exports = DatePickerAndroid;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst RCTImagePicker = require('NativeModules').ImagePickerIOS;\n\nconst ImagePickerIOS = {\n canRecordVideos: function(callback: Function) {\n return RCTImagePicker.canRecordVideos(callback);\n },\n canUseCamera: function(callback: Function) {\n return RCTImagePicker.canUseCamera(callback);\n },\n openCameraDialog: function(\n config: Object,\n successCallback: Function,\n cancelCallback: Function,\n ) {\n config = {\n videoMode: false,\n ...config,\n };\n return RCTImagePicker.openCameraDialog(\n config,\n successCallback,\n cancelCallback,\n );\n },\n openSelectDialog: function(\n config: Object,\n successCallback: Function,\n cancelCallback: Function,\n ) {\n config = {\n showImages: true,\n showVideos: false,\n ...config,\n };\n return RCTImagePicker.openSelectDialog(\n config,\n successCallback,\n cancelCallback,\n );\n },\n};\n\nmodule.exports = ImagePickerIOS;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst NativeEventEmitter = require('NativeEventEmitter');\nconst NativeModules = require('NativeModules');\nconst Platform = require('Platform');\n\nconst invariant = require('fbjs/lib/invariant');\n\nconst LinkingManager =\n Platform.OS === 'android'\n ? NativeModules.IntentAndroid\n : NativeModules.LinkingManager;\n\n/**\n * `Linking` gives you a general interface to interact with both incoming\n * and outgoing app links.\n *\n * See https://facebook.github.io/react-native/docs/linking.html\n */\nclass Linking extends NativeEventEmitter {\n constructor() {\n super(LinkingManager);\n }\n\n /**\n * Add a handler to Linking changes by listening to the `url` event type\n * and providing the handler\n *\n * See https://facebook.github.io/react-native/docs/linking.html#addeventlistener\n */\n addEventListener(type: string, handler: Function) {\n this.addListener(type, handler);\n }\n\n /**\n * Remove a handler by passing the `url` event type and the handler.\n *\n * See https://facebook.github.io/react-native/docs/linking.html#removeeventlistener\n */\n removeEventListener(type: string, handler: Function) {\n this.removeListener(type, handler);\n }\n\n /**\n * Try to open the given `url` with any of the installed apps.\n *\n * See https://facebook.github.io/react-native/docs/linking.html#openurl\n */\n openURL(url: string): Promise {\n this._validateURL(url);\n return LinkingManager.openURL(url);\n }\n\n /**\n * Determine whether or not an installed app can handle a given URL.\n *\n * See https://facebook.github.io/react-native/docs/linking.html#canopenurl\n */\n canOpenURL(url: string): Promise {\n this._validateURL(url);\n return LinkingManager.canOpenURL(url);\n }\n\n /**\n * If the app launch was triggered by an app link,\n * it will give the link url, otherwise it will give `null`\n *\n * See https://facebook.github.io/react-native/docs/linking.html#getinitialurl\n */\n getInitialURL(): Promise {\n return LinkingManager.getInitialURL();\n }\n\n _validateURL(url: string) {\n invariant(\n typeof url === 'string',\n 'Invalid URL: should be a string. Was: ' + url,\n );\n invariant(url, 'Invalid URL: cannot be empty');\n }\n}\n\nmodule.exports = new Linking();\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst Map = require('Map');\nconst NativeEventEmitter = require('NativeEventEmitter');\nconst NativeModules = require('NativeModules');\nconst Platform = require('Platform');\nconst RCTNetInfo = NativeModules.NetInfo;\n\nconst NetInfoEventEmitter = new NativeEventEmitter(RCTNetInfo);\n\nconst DEVICE_CONNECTIVITY_EVENT = 'networkStatusDidChange';\n\ntype ChangeEventName = $Enum<{\n connectionChange: string,\n change: string,\n}>;\n\ntype ReachabilityStateIOS = $Enum<{\n cell: string,\n none: string,\n unknown: string,\n wifi: string,\n}>;\n\ntype ConnectivityStateAndroid = $Enum<{\n NONE: string,\n MOBILE: string,\n WIFI: string,\n MOBILE_MMS: string,\n MOBILE_SUPL: string,\n MOBILE_DUN: string,\n MOBILE_HIPRI: string,\n WIMAX: string,\n BLUETOOTH: string,\n DUMMY: string,\n ETHERNET: string,\n MOBILE_FOTA: string,\n MOBILE_IMS: string,\n MOBILE_CBS: string,\n WIFI_P2P: string,\n MOBILE_IA: string,\n MOBILE_EMERGENCY: string,\n PROXY: string,\n VPN: string,\n UNKNOWN: string,\n}>;\n\nconst _subscriptions = new Map();\n\nlet _isConnectedDeprecated;\nif (Platform.OS === 'ios') {\n _isConnectedDeprecated = function(\n reachability: ReachabilityStateIOS,\n ): boolean {\n return reachability !== 'none' && reachability !== 'unknown';\n };\n} else if (Platform.OS === 'android') {\n _isConnectedDeprecated = function(\n connectionType: ConnectivityStateAndroid,\n ): boolean {\n return connectionType !== 'NONE' && connectionType !== 'UNKNOWN';\n };\n}\n\nfunction _isConnected(connection) {\n return connection.type !== 'none' && connection.type !== 'unknown';\n}\n\nconst _isConnectedSubscriptions = new Map();\n\n/**\n * NetInfo exposes info about online/offline status.\n *\n * See https://facebook.github.io/react-native/docs/netinfo.html\n */\nconst NetInfo = {\n /**\n * Adds an event handler.\n *\n * See https://facebook.github.io/react-native/docs/netinfo.html#addeventlistener\n */\n addEventListener(\n eventName: ChangeEventName,\n handler: Function,\n ): {remove: () => void} {\n let listener;\n if (eventName === 'connectionChange') {\n listener = NetInfoEventEmitter.addListener(\n DEVICE_CONNECTIVITY_EVENT,\n appStateData => {\n handler({\n type: appStateData.connectionType,\n effectiveType: appStateData.effectiveConnectionType,\n });\n },\n );\n } else if (eventName === 'change') {\n console.warn(\n 'NetInfo\\'s \"change\" event is deprecated. Listen to the \"connectionChange\" event instead.',\n );\n\n listener = NetInfoEventEmitter.addListener(\n DEVICE_CONNECTIVITY_EVENT,\n appStateData => {\n handler(appStateData.network_info);\n },\n );\n } else {\n console.warn('Trying to subscribe to unknown event: \"' + eventName + '\"');\n return {\n remove: () => {},\n };\n }\n\n _subscriptions.set(handler, listener);\n return {\n remove: () => NetInfo.removeEventListener(eventName, handler),\n };\n },\n\n /**\n * Removes the listener for network status changes.\n *\n * See https://facebook.github.io/react-native/docs/netinfo.html#removeeventlistener\n */\n removeEventListener(eventName: ChangeEventName, handler: Function): void {\n const listener = _subscriptions.get(handler);\n if (!listener) {\n return;\n }\n listener.remove();\n _subscriptions.delete(handler);\n },\n\n /**\n * This function is deprecated. Use `getConnectionInfo` instead.\n * Returns a promise that resolves with one of the deprecated connectivity\n * types:\n *\n * The following connectivity types are deprecated. They're used by the\n * deprecated APIs `fetch` and the `change` event.\n *\n * iOS connectivity types (deprecated):\n * - `none` - device is offline\n * - `wifi` - device is online and connected via wifi, or is the iOS simulator\n * - `cell` - device is connected via Edge, 3G, WiMax, or LTE\n * - `unknown` - error case and the network status is unknown\n *\n * Android connectivity types (deprecated).\n * - `NONE` - device is offline\n * - `BLUETOOTH` - The Bluetooth data connection.\n * - `DUMMY` - Dummy data connection.\n * - `ETHERNET` - The Ethernet data connection.\n * - `MOBILE` - The Mobile data connection.\n * - `MOBILE_DUN` - A DUN-specific Mobile data connection.\n * - `MOBILE_HIPRI` - A High Priority Mobile data connection.\n * - `MOBILE_MMS` - An MMS-specific Mobile data connection.\n * - `MOBILE_SUPL` - A SUPL-specific Mobile data connection.\n * - `VPN` - A virtual network using one or more native bearers. Requires\n * API Level 21\n * - `WIFI` - The WIFI data connection.\n * - `WIMAX` - The WiMAX data connection.\n * - `UNKNOWN` - Unknown data connection.\n *\n * The rest of the connectivity types are hidden by the Android API, but can\n * be used if necessary.\n */\n fetch(): Promise {\n console.warn(\n 'NetInfo.fetch() is deprecated. Use NetInfo.getConnectionInfo() instead.',\n );\n return RCTNetInfo.getCurrentConnectivity().then(resp => resp.network_info);\n },\n\n /**\n * See https://facebook.github.io/react-native/docs/netinfo.html#getconnectioninfo\n */\n getConnectionInfo(): Promise {\n return RCTNetInfo.getCurrentConnectivity().then(resp => {\n return {\n type: resp.connectionType,\n effectiveType: resp.effectiveConnectionType,\n };\n });\n },\n\n /**\n * An object with the same methods as above but the listener receives a\n * boolean which represents the internet connectivity.\n *\n * See https://facebook.github.io/react-native/docs/netinfo.html#isconnected\n */\n isConnected: {\n addEventListener(\n eventName: ChangeEventName,\n handler: Function,\n ): {remove: () => void} {\n const listener = connection => {\n if (eventName === 'change') {\n handler(_isConnectedDeprecated(connection));\n } else if (eventName === 'connectionChange') {\n handler(_isConnected(connection));\n }\n };\n _isConnectedSubscriptions.set(handler, listener);\n NetInfo.addEventListener(eventName, listener);\n return {\n remove: () =>\n NetInfo.isConnected.removeEventListener(eventName, handler),\n };\n },\n\n removeEventListener(eventName: ChangeEventName, handler: Function): void {\n const listener = _isConnectedSubscriptions.get(handler);\n NetInfo.removeEventListener(\n eventName,\n /* $FlowFixMe(>=0.36.0 site=react_native_fb,react_native_oss) Flow error\n * detected during the deploy of Flow v0.36.0. To see the error, remove\n * this comment and run Flow */\n listener,\n );\n _isConnectedSubscriptions.delete(handler);\n },\n\n fetch(): Promise {\n return NetInfo.getConnectionInfo().then(_isConnected);\n },\n },\n\n isConnectionExpensive(): Promise {\n return Platform.OS === 'android'\n ? RCTNetInfo.isConnectionMetered()\n : Promise.reject(new Error('Currently not supported on iOS'));\n },\n};\n\nmodule.exports = NetInfo;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst NativeEventEmitter = require('NativeEventEmitter');\nconst RCTPushNotificationManager = require('NativeModules')\n .PushNotificationManager;\nconst invariant = require('fbjs/lib/invariant');\n\nconst PushNotificationEmitter = new NativeEventEmitter(\n RCTPushNotificationManager,\n);\n\nconst _notifHandlers = new Map();\n\nconst DEVICE_NOTIF_EVENT = 'remoteNotificationReceived';\nconst NOTIF_REGISTER_EVENT = 'remoteNotificationsRegistered';\nconst NOTIF_REGISTRATION_ERROR_EVENT = 'remoteNotificationRegistrationError';\nconst DEVICE_LOCAL_NOTIF_EVENT = 'localNotificationReceived';\n\nexport type ContentAvailable = 1 | null | void;\n\nexport type FetchResult = {\n NewData: string,\n NoData: string,\n ResultFailed: string,\n};\n\n/**\n * An event emitted by PushNotificationIOS.\n */\nexport type PushNotificationEventName = $Enum<{\n /**\n * Fired when a remote notification is received. The handler will be invoked\n * with an instance of `PushNotificationIOS`.\n */\n notification: string,\n /**\n * Fired when a local notification is received. The handler will be invoked\n * with an instance of `PushNotificationIOS`.\n */\n localNotification: string,\n /**\n * Fired when the user registers for remote notifications. The handler will be\n * invoked with a hex string representing the deviceToken.\n */\n register: string,\n /**\n * Fired when the user fails to register for remote notifications. Typically\n * occurs when APNS is having issues, or the device is a simulator. The\n * handler will be invoked with {message: string, code: number, details: any}.\n */\n registrationError: string,\n}>;\n\n/**\n *\n * Handle push notifications for your app, including permission handling and\n * icon badge number.\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html\n */\nclass PushNotificationIOS {\n _data: Object;\n _alert: string | Object;\n _sound: string;\n _category: string;\n _contentAvailable: ContentAvailable;\n _badgeCount: number;\n _notificationId: string;\n _isRemote: boolean;\n _remoteNotificationCompleteCallbackCalled: boolean;\n _threadID: string;\n\n static FetchResult: FetchResult = {\n NewData: 'UIBackgroundFetchResultNewData',\n NoData: 'UIBackgroundFetchResultNoData',\n ResultFailed: 'UIBackgroundFetchResultFailed',\n };\n\n /**\n * Schedules the localNotification for immediate presentation.\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#presentlocalnotification\n */\n static presentLocalNotification(details: Object) {\n RCTPushNotificationManager.presentLocalNotification(details);\n }\n\n /**\n * Schedules the localNotification for future presentation.\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#schedulelocalnotification\n */\n static scheduleLocalNotification(details: Object) {\n RCTPushNotificationManager.scheduleLocalNotification(details);\n }\n\n /**\n * Cancels all scheduled localNotifications.\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#cancelalllocalnotifications\n */\n static cancelAllLocalNotifications() {\n RCTPushNotificationManager.cancelAllLocalNotifications();\n }\n\n /**\n * Remove all delivered notifications from Notification Center.\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#removealldeliverednotifications\n */\n static removeAllDeliveredNotifications(): void {\n RCTPushNotificationManager.removeAllDeliveredNotifications();\n }\n\n /**\n * Provides you with a list of the app’s notifications that are still displayed in Notification Center.\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#getdeliverednotifications\n */\n static getDeliveredNotifications(\n callback: (notifications: Array) => void,\n ): void {\n RCTPushNotificationManager.getDeliveredNotifications(callback);\n }\n\n /**\n * Removes the specified notifications from Notification Center\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#removedeliverednotifications\n */\n static removeDeliveredNotifications(identifiers: Array): void {\n RCTPushNotificationManager.removeDeliveredNotifications(identifiers);\n }\n\n /**\n * Sets the badge number for the app icon on the home screen.\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#setapplicationiconbadgenumber\n */\n static setApplicationIconBadgeNumber(number: number) {\n RCTPushNotificationManager.setApplicationIconBadgeNumber(number);\n }\n\n /**\n * Gets the current badge number for the app icon on the home screen.\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#getapplicationiconbadgenumber\n */\n static getApplicationIconBadgeNumber(callback: Function) {\n RCTPushNotificationManager.getApplicationIconBadgeNumber(callback);\n }\n\n /**\n * Cancel local notifications.\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#cancellocalnotification\n */\n static cancelLocalNotifications(userInfo: Object) {\n RCTPushNotificationManager.cancelLocalNotifications(userInfo);\n }\n\n /**\n * Gets the local notifications that are currently scheduled.\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#getscheduledlocalnotifications\n */\n static getScheduledLocalNotifications(callback: Function) {\n RCTPushNotificationManager.getScheduledLocalNotifications(callback);\n }\n\n /**\n * Attaches a listener to remote or local notification events while the app\n * is running in the foreground or the background.\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#addeventlistener\n */\n static addEventListener(type: PushNotificationEventName, handler: Function) {\n invariant(\n type === 'notification' ||\n type === 'register' ||\n type === 'registrationError' ||\n type === 'localNotification',\n 'PushNotificationIOS only supports `notification`, `register`, `registrationError`, and `localNotification` events',\n );\n let listener;\n if (type === 'notification') {\n listener = PushNotificationEmitter.addListener(\n DEVICE_NOTIF_EVENT,\n notifData => {\n handler(new PushNotificationIOS(notifData));\n },\n );\n } else if (type === 'localNotification') {\n listener = PushNotificationEmitter.addListener(\n DEVICE_LOCAL_NOTIF_EVENT,\n notifData => {\n handler(new PushNotificationIOS(notifData));\n },\n );\n } else if (type === 'register') {\n listener = PushNotificationEmitter.addListener(\n NOTIF_REGISTER_EVENT,\n registrationInfo => {\n handler(registrationInfo.deviceToken);\n },\n );\n } else if (type === 'registrationError') {\n listener = PushNotificationEmitter.addListener(\n NOTIF_REGISTRATION_ERROR_EVENT,\n errorInfo => {\n handler(errorInfo);\n },\n );\n }\n _notifHandlers.set(type, listener);\n }\n\n /**\n * Removes the event listener. Do this in `componentWillUnmount` to prevent\n * memory leaks.\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#removeeventlistener\n */\n static removeEventListener(\n type: PushNotificationEventName,\n handler: Function,\n ) {\n invariant(\n type === 'notification' ||\n type === 'register' ||\n type === 'registrationError' ||\n type === 'localNotification',\n 'PushNotificationIOS only supports `notification`, `register`, `registrationError`, and `localNotification` events',\n );\n const listener = _notifHandlers.get(type);\n if (!listener) {\n return;\n }\n listener.remove();\n _notifHandlers.delete(type);\n }\n\n /**\n * Requests notification permissions from iOS, prompting the user's\n * dialog box. By default, it will request all notification permissions, but\n * a subset of these can be requested by passing a map of requested\n * permissions.\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#requestpermissions\n */\n static requestPermissions(permissions?: {\n alert?: boolean,\n badge?: boolean,\n sound?: boolean,\n }): Promise<{\n alert: boolean,\n badge: boolean,\n sound: boolean,\n }> {\n let requestedPermissions = {};\n if (permissions) {\n requestedPermissions = {\n alert: !!permissions.alert,\n badge: !!permissions.badge,\n sound: !!permissions.sound,\n };\n } else {\n requestedPermissions = {\n alert: true,\n badge: true,\n sound: true,\n };\n }\n return RCTPushNotificationManager.requestPermissions(requestedPermissions);\n }\n\n /**\n * Unregister for all remote notifications received via Apple Push Notification service.\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#abandonpermissions\n */\n static abandonPermissions() {\n RCTPushNotificationManager.abandonPermissions();\n }\n\n /**\n * See what push permissions are currently enabled. `callback` will be\n * invoked with a `permissions` object.\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#checkpermissions\n */\n static checkPermissions(callback: Function) {\n invariant(typeof callback === 'function', 'Must provide a valid callback');\n RCTPushNotificationManager.checkPermissions(callback);\n }\n\n /**\n * This method returns a promise that resolves to either the notification\n * object if the app was launched by a push notification, or `null` otherwise.\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#getinitialnotification\n */\n static getInitialNotification(): Promise {\n return RCTPushNotificationManager.getInitialNotification().then(\n notification => {\n return notification && new PushNotificationIOS(notification);\n },\n );\n }\n\n /**\n * You will never need to instantiate `PushNotificationIOS` yourself.\n * Listening to the `notification` event and invoking\n * `getInitialNotification` is sufficient\n *\n */\n constructor(nativeNotif: Object) {\n this._data = {};\n this._remoteNotificationCompleteCallbackCalled = false;\n this._isRemote = nativeNotif.remote;\n if (this._isRemote) {\n this._notificationId = nativeNotif.notificationId;\n }\n\n if (nativeNotif.remote) {\n // Extract data from Apple's `aps` dict as defined:\n // https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html\n Object.keys(nativeNotif).forEach(notifKey => {\n const notifVal = nativeNotif[notifKey];\n if (notifKey === 'aps') {\n this._alert = notifVal.alert;\n this._sound = notifVal.sound;\n this._badgeCount = notifVal.badge;\n this._category = notifVal.category;\n this._contentAvailable = notifVal['content-available'];\n this._threadID = notifVal['thread-id'];\n } else {\n this._data[notifKey] = notifVal;\n }\n });\n } else {\n // Local notifications aren't being sent down with `aps` dict.\n this._badgeCount = nativeNotif.applicationIconBadgeNumber;\n this._sound = nativeNotif.soundName;\n this._alert = nativeNotif.alertBody;\n this._data = nativeNotif.userInfo;\n this._category = nativeNotif.category;\n }\n }\n\n /**\n * This method is available for remote notifications that have been received via:\n * `application:didReceiveRemoteNotification:fetchCompletionHandler:`\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#finish\n */\n finish(fetchResult: string) {\n if (\n !this._isRemote ||\n !this._notificationId ||\n this._remoteNotificationCompleteCallbackCalled\n ) {\n return;\n }\n this._remoteNotificationCompleteCallbackCalled = true;\n\n RCTPushNotificationManager.onFinishRemoteNotification(\n this._notificationId,\n fetchResult,\n );\n }\n\n /**\n * An alias for `getAlert` to get the notification's main message string\n */\n getMessage(): ?string | ?Object {\n // alias because \"alert\" is an ambiguous name\n return this._alert;\n }\n\n /**\n * Gets the sound string from the `aps` object\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#getsound\n */\n getSound(): ?string {\n return this._sound;\n }\n\n /**\n * Gets the category string from the `aps` object\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#getcategory\n */\n getCategory(): ?string {\n return this._category;\n }\n\n /**\n * Gets the notification's main message from the `aps` object\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#getalert\n */\n getAlert(): ?string | ?Object {\n return this._alert;\n }\n\n /**\n * Gets the content-available number from the `aps` object\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#getcontentavailable\n */\n getContentAvailable(): ContentAvailable {\n return this._contentAvailable;\n }\n\n /**\n * Gets the badge count number from the `aps` object\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#getbadgecount\n */\n getBadgeCount(): ?number {\n return this._badgeCount;\n }\n\n /**\n * Gets the data object on the notif\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#getdata\n */\n getData(): ?Object {\n return this._data;\n }\n\n /**\n * Gets the thread ID on the notif\n *\n * See https://facebook.github.io/react-native/docs/pushnotificationios.html#getthreadid\n */\n getThreadID(): ?string {\n return this._threadID;\n }\n}\n\nmodule.exports = PushNotificationIOS;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst Settings = {\n get(key: string): mixed {\n console.warn('Settings is not yet supported on Android');\n return null;\n },\n\n set(settings: Object) {\n console.warn('Settings is not yet supported on Android');\n },\n\n watchKeys(keys: string | Array, callback: Function): number {\n console.warn('Settings is not yet supported on Android');\n return -1;\n },\n\n clearWatch(watchId: number) {\n console.warn('Settings is not yet supported on Android');\n },\n};\n\nmodule.exports = Settings;\n","/**\n * Copyright (c) 2016-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst Platform = require('Platform');\n\nconst invariant = require('fbjs/lib/invariant');\nconst processColor = require('processColor');\n\nconst {ActionSheetManager, ShareModule} = require('NativeModules');\n\ntype Content =\n | {title?: string, message: string}\n | {title?: string, url: string};\ntype Options = {\n dialogTitle?: string,\n excludedActivityTypes?: Array,\n tintColor?: string,\n subject?: string,\n};\n\nclass Share {\n /**\n * Open a dialog to share text content.\n *\n * In iOS, Returns a Promise which will be invoked an object containing `action`, `activityType`.\n * If the user dismissed the dialog, the Promise will still be resolved with action being `Share.dismissedAction`\n * and all the other keys being undefined.\n *\n * In Android, Returns a Promise which always be resolved with action being `Share.sharedAction`.\n *\n * ### Content\n *\n * - `message` - a message to share\n * - `title` - title of the message\n *\n * #### iOS\n *\n * - `url` - an URL to share\n *\n * At least one of URL and message is required.\n *\n * ### Options\n *\n * #### iOS\n *\n * - `subject` - a subject to share via email\n * - `excludedActivityTypes`\n * - `tintColor`\n *\n * #### Android\n *\n * - `dialogTitle`\n *\n */\n static share(content: Content, options: Options = {}): Promise {\n invariant(\n typeof content === 'object' && content !== null,\n 'Content to share must be a valid object',\n );\n invariant(\n typeof content.url === 'string' || typeof content.message === 'string',\n 'At least one of URL and message is required',\n );\n invariant(\n typeof options === 'object' && options !== null,\n 'Options must be a valid object',\n );\n\n if (Platform.OS === 'android') {\n invariant(\n !content.title || typeof content.title === 'string',\n 'Invalid title: title should be a string.',\n );\n return ShareModule.share(content, options.dialogTitle);\n } else if (Platform.OS === 'ios') {\n return new Promise((resolve, reject) => {\n ActionSheetManager.showShareActionSheetWithOptions(\n {...content, ...options, tintColor: processColor(options.tintColor)},\n error => reject(error),\n (success, activityType) => {\n if (success) {\n resolve({\n action: 'sharedAction',\n activityType: activityType,\n });\n } else {\n resolve({\n action: 'dismissedAction',\n });\n }\n },\n );\n });\n } else {\n return Promise.reject(new Error('Unsupported platform'));\n }\n }\n\n /**\n * The content was successfully shared.\n */\n static get sharedAction(): string {\n return 'sharedAction';\n }\n\n /**\n * The dialog has been dismissed.\n * @platform ios\n */\n static get dismissedAction(): string {\n return 'dismissedAction';\n }\n}\n\nmodule.exports = Share;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst NativeEventEmitter = require('NativeEventEmitter');\n\n/* $FlowFixMe(>=0.78.0 site=react_native_android_fb) This issue was found when\n * making Flow check .android.js files. */\nmodule.exports = new NativeEventEmitter('StatusBarManager');\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\n'use strict';\n\nconst TimePickerModule = require('NativeModules').TimePickerAndroid;\n\n/**\n * Opens the standard Android time picker dialog.\n *\n * ### Example\n *\n * ```\n * try {\n * const {action, hour, minute} = await TimePickerAndroid.open({\n * hour: 14,\n * minute: 0,\n * is24Hour: false, // Will display '2 PM'\n * });\n * if (action !== TimePickerAndroid.dismissedAction) {\n * // Selected hour (0-23), minute (0-59)\n * }\n * } catch ({code, message}) {\n * console.warn('Cannot open time picker', message);\n * }\n * ```\n */\nclass TimePickerAndroid {\n /**\n * Opens the standard Android time picker dialog.\n *\n * The available keys for the `options` object are:\n * * `hour` (0-23) - the hour to show, defaults to the current time\n * * `minute` (0-59) - the minute to show, defaults to the current time\n * * `is24Hour` (boolean) - If `true`, the picker uses the 24-hour format. If `false`,\n * the picker shows an AM/PM chooser. If undefined, the default for the current locale\n * is used.\n * * `mode` (`enum('clock', 'spinner', 'default')`) - set the time picker mode\n * - 'clock': Show a time picker in clock mode.\n * - 'spinner': Show a time picker in spinner mode.\n * - 'default': Show a default time picker based on Android versions.\n *\n * Returns a Promise which will be invoked an object containing `action`, `hour` (0-23),\n * `minute` (0-59) if the user picked a time. If the user dismissed the dialog, the Promise will\n * still be resolved with action being `TimePickerAndroid.dismissedAction` and all the other keys\n * being undefined. **Always** check whether the `action` before reading the values.\n */\n static async open(options: Object): Promise {\n return TimePickerModule.open(options);\n }\n\n /**\n * A time has been selected.\n */\n static get timeSetAction() {\n return 'timeSetAction';\n }\n /**\n * The dialog has been dismissed.\n */\n static get dismissedAction() {\n return 'dismissedAction';\n }\n}\n\nmodule.exports = TimePickerAndroid;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n * @jsdoc\n */\n\n'use strict';\n\nconst RCTVibration = require('NativeModules').Vibration;\nconst Platform = require('Platform');\n\n/**\n * Vibration API\n *\n * See https://facebook.github.io/react-native/docs/vibration.html\n */\n\nlet _vibrating: boolean = false;\nlet _id: number = 0; // _id is necessary to prevent race condition.\n\nfunction vibrateByPattern(pattern: Array, repeat: boolean = false) {\n if (_vibrating) {\n return;\n }\n _vibrating = true;\n if (pattern[0] === 0) {\n RCTVibration.vibrate();\n pattern = pattern.slice(1);\n }\n if (pattern.length === 0) {\n _vibrating = false;\n return;\n }\n setTimeout(() => vibrateScheduler(++_id, pattern, repeat, 1), pattern[0]);\n}\n\nfunction vibrateScheduler(\n id,\n pattern: Array,\n repeat: boolean,\n nextIndex: number,\n) {\n if (!_vibrating || id !== _id) {\n return;\n }\n RCTVibration.vibrate();\n if (nextIndex >= pattern.length) {\n if (repeat) {\n nextIndex = 0;\n } else {\n _vibrating = false;\n return;\n }\n }\n setTimeout(\n () => vibrateScheduler(id, pattern, repeat, nextIndex + 1),\n pattern[nextIndex],\n );\n}\n\nconst Vibration = {\n /**\n * Trigger a vibration with specified `pattern`.\n *\n * See https://facebook.github.io/react-native/docs/vibration.html#vibrate\n */\n vibrate: function(\n pattern: number | Array = 400,\n repeat: boolean = false,\n ) {\n if (Platform.OS === 'android') {\n if (typeof pattern === 'number') {\n RCTVibration.vibrate(pattern);\n } else if (Array.isArray(pattern)) {\n RCTVibration.vibrateByPattern(pattern, repeat ? 0 : -1);\n } else {\n throw new Error('Vibration pattern should be a number or array');\n }\n } else {\n if (_vibrating) {\n return;\n }\n if (typeof pattern === 'number') {\n RCTVibration.vibrate();\n } else if (Array.isArray(pattern)) {\n vibrateByPattern(pattern, repeat);\n } else {\n throw new Error('Vibration pattern should be a number or array');\n }\n }\n },\n /**\n * Stop vibration\n *\n * See https://facebook.github.io/react-native/docs/vibration.html#cancel\n */\n cancel: function() {\n if (Platform.OS === 'ios') {\n _vibrating = false;\n } else {\n RCTVibration.cancel();\n }\n },\n};\n\nmodule.exports = Vibration;\n","/**\n * Copyright (c) 2015-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 * Stub of VibrationIOS for Android.\n *\n * @format\n */\n\n'use strict';\n\nconst warning = require('fbjs/lib/warning');\n\nconst VibrationIOS = {\n vibrate: function() {\n warning('VibrationIOS is not supported on this platform!');\n },\n};\n\nmodule.exports = VibrationIOS;\n","/**\n * Copyright (c) 2015-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 * @flow\n * @format\n */\n\n'use strict';\n\nconst React = require('React');\n\nimport type {Category} from 'YellowBoxCategory';\nimport type {Registry, Subscription} from 'YellowBoxRegistry';\n\ntype Props = $ReadOnly<{||}>;\ntype State = {|\n registry: ?Registry,\n|};\n\nlet YellowBox;\n\n/**\n * YellowBox displays warnings at the bottom of the screen.\n *\n * Warnings help guard against subtle yet significant issues that can impact the\n * quality of the app. This \"in your face\" style of warning allows developers to\n * notice and correct these issues as quickly as possible.\n *\n * YellowBox is only enabled in `__DEV__`. Set the following flag to disable it:\n *\n * console.disableYellowBox = true;\n *\n * Ignore specific warnings by calling:\n *\n * YellowBox.ignoreWarnings(['Warning: ...']);\n *\n * Strings supplied to `YellowBox.ignoreWarnings` only need to be a substring of\n * the ignored warning messages.\n */\nif (__DEV__) {\n const Platform = require('Platform');\n const RCTLog = require('RCTLog');\n const YellowBoxList = require('YellowBoxList');\n const YellowBoxRegistry = require('YellowBoxRegistry');\n\n const {error, warn} = console;\n\n // eslint-disable-next-line no-shadow\n YellowBox = class YellowBox extends React.Component {\n static ignoreWarnings(patterns: $ReadOnlyArray): void {\n YellowBoxRegistry.addIgnorePatterns(patterns);\n }\n\n static install(): void {\n (console: any).error = function(...args) {\n error.call(console, ...args);\n // Show YellowBox for the `warning` module.\n if (typeof args[0] === 'string' && args[0].startsWith('Warning: ')) {\n registerWarning(...args);\n }\n };\n\n (console: any).warn = function(...args) {\n warn.call(console, ...args);\n registerWarning(...args);\n };\n\n if ((console: any).disableYellowBox === true) {\n YellowBoxRegistry.setDisabled(true);\n }\n (Object.defineProperty: any)(console, 'disableYellowBox', {\n configurable: true,\n get: () => YellowBoxRegistry.isDisabled(),\n set: value => YellowBoxRegistry.setDisabled(value),\n });\n\n if (Platform.isTesting) {\n (console: any).disableYellowBox = true;\n }\n\n RCTLog.setWarningHandler((...args) => {\n registerWarning(...args);\n });\n }\n\n static uninstall(): void {\n (console: any).error = error;\n (console: any).warn = error;\n delete (console: any).disableYellowBox;\n }\n\n _subscription: ?Subscription;\n\n state = {\n registry: null,\n };\n\n render(): React.Node {\n // TODO: Ignore warnings that fire when rendering `YellowBox` itself.\n return this.state.registry == null ? null : (\n \n );\n }\n\n componentDidMount(): void {\n this._subscription = YellowBoxRegistry.observe(registry => {\n this.setState({registry});\n });\n }\n\n componentWillUnmount(): void {\n if (this._subscription != null) {\n this._subscription.unsubscribe();\n }\n }\n\n _handleDismiss = (category: Category): void => {\n YellowBoxRegistry.delete(category);\n };\n\n _handleDismissAll(): void {\n YellowBoxRegistry.clear();\n }\n };\n\n const registerWarning = (...args): void => {\n YellowBoxRegistry.add({args, framesToPop: 2});\n };\n} else {\n YellowBox = class extends React.Component {\n static ignoreWarnings(patterns: $ReadOnlyArray): void {\n // Do nothing.\n }\n\n static install(): void {\n // Do nothing.\n }\n\n static uninstall(): void {\n // Do nothing.\n }\n\n render(): React.Node {\n return null;\n }\n };\n}\n\nmodule.exports = YellowBox;\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow\n */\n\nconst ReactNative = require('ReactNative');\nconst UIManager = require('UIManager');\n\n/**\n * Capture an image of the screen, window or an individual view. The image\n * will be stored in a temporary file that will only exist for as long as the\n * app is running.\n *\n * The `view` argument can be the literal string `window` if you want to\n * capture the entire window, or it can be a reference to a specific\n * React Native component.\n *\n * The `options` argument may include:\n * - width/height (number) - the width and height of the image to capture.\n * - format (string) - either 'png' or 'jpeg'. Defaults to 'png'.\n * - quality (number) - the quality when using jpeg. 0.0 - 1.0 (default).\n *\n * Returns a Promise.\n * @platform ios\n */\nmodule.exports = function takeSnapshot(\n view?: 'window' | React$Element | number,\n options?: {\n width?: number,\n height?: number,\n format?: 'png' | 'jpeg',\n quality?: number,\n },\n): Promise {\n if (typeof view !== 'number' && view !== 'window') {\n view = ReactNative.findNodeHandle(view) || 'window';\n }\n\n // Call the hidden '__takeSnapshot' method; the main one throws an error to\n // prevent accidental backwards-incompatible usage.\n return UIManager.__takeSnapshot(view, options);\n};\n","/**\n * Copyright (c) 2015-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 * @format\n * @flow strict\n */\n\n'use strict';\n\nconst PropTypes = require('prop-types');\n\nconst PointPropType = PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number,\n});\n\nexport type PointProp = $ReadOnly<{\n x: number,\n y: number,\n}>;\n\nmodule.exports = PointPropType;\n","import React, {Component} from 'react';\nimport {StackNavigator} from 'react-navigation';\nimport Tabbed_Navigation from './src/page/TabbedNavigation';\nimport Create_Account from './src/page/Assets/secondary/CreateAccount';\nimport Backup_Account from './src/page/Assets/secondary/BackupAccount';\nimport MnemonicWord_1 from './src/page/Assets/secondary/MnemonicWord_1';\nimport MnemonicWord_2 from './src/page/Assets/secondary/MnemonicWord_2';\nimport MnemonicWord_3 from './src/page/Assets/secondary/MnemonicWord_3';\nimport QR_Code from './src/page/Assets/secondary/QRCode';\nimport Coin_details from './src/page/Assets/secondary/CoinDetails';\nimport Manage_Account from './src/page/Profile/secondary/ManageAccount';\nimport Transfer from './src/page/Assets/secondary/Transfer/Transfer';\nimport Make_transfer from './src/page/Assets/secondary/Transfer/MakeTransfer';\nimport Transfer_details\n from './src/page/Assets/secondary/Transfer/TransferDetails';\nimport Addresses from './src/page/Profile/secondary/Addresses';\nimport Add_address from './src/page/Profile/secondary/AddAddress';\nimport Address_information\n from './src/page/Profile/secondary/AddressInformation';\nimport Camera from './src/page/Assets/secondary/Camera';\nimport Validator_Info from './src/page/Staking/secondary/ValidatorInfo';\nimport Stake from './src/page/Staking/secondary/Stake';\nimport BondFunds from './src/page/Staking/secondary/BondFunds';\nimport Unbond from './src/page/Staking/secondary/Unbond';\nimport BondAdditional from './src/page/Staking/secondary/BondAdditional';\nimport SetSessionKey from './src/page/Staking/secondary/SetSessionKey';\nimport Nominate from './src/page/Staking/secondary/Nominate';\nimport Unstake from './src/page/Staking/secondary/Unstake';\nimport Unnominate from './src/page/Staking/secondary/Unnominate';\nimport Change_Password\n from './src/page/Profile/secondary/Change/ChangePassword';\nimport Change_Name from './src/page/Profile/secondary/Change/ChangeName';\nimport NayorAye from './src/page/Democracy/secondary/NayorAye';\nimport Settings from './src/page/Profile/secondary/Settings';\nimport Set_Node from './src/page/Profile/secondary/Settings/SetNode';\nimport About from './src/page/Profile/secondary/About';\nimport Gesture from './src/page/Profile/secondary/Settings/Gesture';\nimport {setJSExceptionHandler} from './src/util/error_guard';\nimport {Provider} from 'mobx-react';\n//获取store实例\nimport AppState from './src/mobx/mobx';\nimport Api from '@polkadot/api/promise';\nimport WsProvider from '@polkadot/rpc-provider/ws';\nconst Polkawallet_App = StackNavigator ({\n Tabbed_Navigation: {\n screen: Tabbed_Navigation,\n navigationOptions: {header: null},\n },\n Create_Account: {screen: Create_Account, navigationOptions: {header: null}},\n Backup_Account: {screen: Backup_Account, navigationOptions: {header: null}},\n QR_Code: {screen: QR_Code, navigationOptions: {header: null}},\n Coin_details: {screen: Coin_details, navigationOptions: {header: null}},\n Manage_Account: {screen: Manage_Account, navigationOptions: {header: null}},\n Transfer: {screen: Transfer, navigationOptions: {header: null}},\n Make_transfer: {screen: Make_transfer, navigationOptions: {header: null}},\n Transfer_details: {\n screen: Transfer_details,\n navigationOptions: {header: null},\n },\n Addresses: {screen: Addresses, navigationOptions: {header: null}},\n Add_address: {screen: Add_address, navigationOptions: {header: null}},\n Address_information: {\n screen: Address_information,\n navigationOptions: {header: null},\n },\n Camera: {screen: Camera, navigationOptions: {header: null}},\n Validator_Info: {screen: Validator_Info, navigationOptions: {header: null}},\n Stake: {screen: Stake, navigationOptions: {header: null}},\n BondFunds: {screen: BondFunds, navigationOptions: {header: null}},\n Unbond: {screen: Unbond, navigationOptions: {header: null}},\n BondAdditional: {screen: BondAdditional, navigationOptions: {header: null}},\n SetSessionKey: {screen: SetSessionKey, navigationOptions: {header: null}},\n Nominate: {screen: Nominate, navigationOptions: {header: null}},\n Unstake: {screen: Unstake, navigationOptions: {header: null}},\n Unnominate: {screen: Unnominate, navigationOptions: {header: null}},\n Change_Password: {screen: Change_Password, navigationOptions: {header: null}},\n Change_Name: {screen: Change_Name, navigationOptions: {header: null}},\n NayorAye: {screen: NayorAye, navigationOptions: {header: null}},\n Settings: {screen: Settings, navigationOptions: {header: null}},\n Set_Node: {screen: Set_Node, navigationOptions: {header: null}},\n About: {screen: About, navigationOptions: {header: null}},\n Gesture: {screen: Gesture, navigationOptions: {header: null}},\n MnemonicWord_1: {screen: MnemonicWord_1, navigationOptions: {header: null}},\n MnemonicWord_2: {screen: MnemonicWord_2, navigationOptions: {header: null}},\n MnemonicWord_3: {screen: MnemonicWord_3, navigationOptions: {header: null}},\n});\n\nsetJSExceptionHandler (() => {}, true);\n\nexport default class Polkawallet extends Component {\n componentWillMount () {\n (async () => {\n const provider = new WsProvider (AppState.stateStore.ENDPOINT);\n const api = await Api.create (provider);\n AppState.stateStore.API = api;\n }) ();\n }\n render () {\n return (\n \n \n \n );\n }\n}\n","function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n}\n\nmodule.exports = _interopRequireWildcard;","/* eslint global-require: 0 */\n\nmodule.exports = {\n // Core\n get createNavigationContainer() {\n return require('./createNavigationContainer').default;\n },\n get StateUtils() {\n return require('./StateUtils').default;\n },\n get getNavigation() {\n return require('./getNavigation').default;\n },\n\n // Navigators\n get createNavigator() {\n return require('./navigators/createNavigator').default;\n },\n get createKeyboardAwareNavigator() {\n return require('./navigators/createKeyboardAwareNavigator').default;\n },\n get NavigationProvider() {\n return require('./views/NavigationContext').default.NavigationProvider;\n },\n get NavigationConsumer() {\n return require('./views/NavigationContext').default.NavigationConsumer;\n },\n get createStackNavigator() {\n return require('react-navigation-stack').createStackNavigator;\n },\n get StackNavigator() {\n console.warn(\n 'The StackNavigator function name is deprecated, please use createStackNavigator instead'\n );\n return require('react-navigation-stack').createStackNavigator;\n },\n get createSwitchNavigator() {\n return require('./navigators/createContainedSwitchNavigator').default;\n },\n get SwitchNavigator() {\n console.warn(\n 'The SwitchNavigator function name is deprecated, please use createSwitchNavigator instead'\n );\n return require('./navigators/createContainedSwitchNavigator').default;\n },\n get createDrawerNavigator() {\n return require('react-navigation-drawer').createDrawerNavigator;\n },\n get DrawerNavigator() {\n console.warn(\n 'The DrawerNavigator function name is deprecated, please use createDrawerNavigator instead'\n );\n return require('react-navigation-drawer').createDrawerNavigator;\n },\n get createTabNavigator() {\n console.warn(\n 'createTabNavigator is deprecated. Please use the createBottomTabNavigator or createMaterialTopTabNavigator instead.'\n );\n return require('react-navigation-deprecated-tab-navigator')\n .createTabNavigator;\n },\n get TabNavigator() {\n console.warn(\n 'TabNavigator is deprecated. Please use the createBottomTabNavigator or createMaterialTopTabNavigator instead.'\n );\n return require('react-navigation-deprecated-tab-navigator')\n .createTabNavigator;\n },\n get createBottomTabNavigator() {\n return require('react-navigation-tabs').createBottomTabNavigator;\n },\n get createMaterialTopTabNavigator() {\n return require('react-navigation-tabs').createMaterialTopTabNavigator;\n },\n\n // Actions\n get NavigationActions() {\n return require('./NavigationActions').default;\n },\n get StackActions() {\n return require('./routers/StackActions').default;\n },\n get DrawerActions() {\n return require('react-navigation-drawer').DrawerActions;\n },\n\n // Routers\n get StackRouter() {\n return require('./routers/StackRouter').default;\n },\n get TabRouter() {\n return require('./routers/TabRouter').default;\n },\n get DrawerRouter() {\n return require('react-navigation-drawer').DrawerRouter;\n },\n get SwitchRouter() {\n return require('./routers/SwitchRouter').default;\n },\n get createConfigGetter() {\n return require('./routers/createConfigGetter').default;\n },\n get getScreenForRouteName() {\n return require('./routers/getScreenForRouteName').default;\n },\n get validateRouteConfigMap() {\n return require('./routers/validateRouteConfigMap').default;\n },\n\n // Utils\n get getActiveChildNavigationOptions() {\n return require('./utils/getActiveChildNavigationOptions').default;\n },\n get pathUtils() {\n return require('./routers/pathUtils').default;\n },\n\n // Views\n get Transitioner() {\n return require('react-navigation-stack').Transitioner;\n },\n get StackView() {\n return require('react-navigation-stack').StackView;\n },\n get StackViewCard() {\n return require('react-navigation-stack').StackViewCard;\n },\n get StackViewTransitionConfigs() {\n return require('react-navigation-stack').StackViewTransitionConfigs;\n },\n get SafeAreaView() {\n return require('react-native-safe-area-view').default;\n },\n get SceneView() {\n return require('./views/SceneView').default;\n },\n get ResourceSavingSceneView() {\n return require('./views/ResourceSavingSceneView').default;\n },\n\n // Header\n get Header() {\n return require('react-navigation-stack').Header;\n },\n get HeaderTitle() {\n return require('react-navigation-stack').HeaderTitle;\n },\n get HeaderBackButton() {\n return require('react-navigation-stack').HeaderBackButton;\n },\n get HeaderStyleInterpolator() {\n return require('react-navigation-stack').HeaderStyleInterpolator;\n },\n\n // DrawerView\n get DrawerView() {\n return require('react-navigation-drawer').DrawerView;\n },\n get DrawerItems() {\n return require('react-navigation-drawer').DrawerNavigatorItems;\n },\n get DrawerSidebar() {\n return require('react-navigation-drawer').DrawerSidebar;\n },\n\n // TabView\n get TabView() {\n console.warn(\n 'TabView is deprecated. Please use the react-navigation-tabs package instead: https://github.com/react-navigation/react-navigation-tabs'\n );\n return require('react-navigation-deprecated-tab-navigator').TabView;\n },\n get TabBarTop() {\n console.warn(\n 'TabBarTop is deprecated. Please use the react-navigation-tabs package instead: https://github.com/react-navigation/react-navigation-tabs'\n );\n return require('react-navigation-deprecated-tab-navigator').TabBarTop;\n },\n get TabBarBottom() {\n console.warn(\n 'TabBarBottom is deprecated. Please use the react-navigation-tabs package instead: https://github.com/react-navigation/react-navigation-tabs'\n );\n return require('react-navigation-deprecated-tab-navigator').TabBarBottom;\n },\n\n // SwitchView\n get SwitchView() {\n return require('./views/SwitchView/SwitchView').default;\n },\n\n // NavigationEvents\n get NavigationEvents() {\n return require('./views/NavigationEvents').default;\n },\n\n // HOCs\n get withNavigation() {\n return require('./views/withNavigation').default;\n },\n get withNavigationFocus() {\n return require('./views/withNavigationFocus').default;\n },\n get withOrientation() {\n return require('./views/withOrientation').default;\n },\n};\n","import React from 'react';\nimport { AsyncStorage, Linking, Platform, BackHandler } from 'react-native';\nimport { polyfill } from 'react-lifecycles-compat';\n\nimport NavigationActions from './NavigationActions';\nimport getNavigation from './getNavigation';\nimport invariant from './utils/invariant';\nimport docsUrl from './utils/docsUrl';\nimport { urlToPathAndParams } from './routers/pathUtils';\n\nfunction isStateful(props) {\n return !props.navigation;\n}\n\nfunction validateProps(props) {\n if (isStateful(props)) {\n return;\n }\n\n const { navigation, screenProps, ...containerProps } = props;\n\n const keys = Object.keys(containerProps);\n\n if (keys.length !== 0) {\n throw new Error(\n 'This navigator has both navigation and container props, so it is ' +\n `unclear if it should own its own state. Remove props: \"${keys.join(\n ', '\n )}\" ` +\n 'if the navigator should get its state from the navigation prop. If the ' +\n 'navigator should maintain its own state, do not pass a navigation prop.'\n );\n }\n}\n\n// Track the number of stateful container instances. Warn if >0 and not using the\n// detached prop to explicitly acknowledge the behavior. We should deprecated implicit\n// stateful navigation containers in a future release and require a provider style pattern\n// instead in order to eliminate confusion entirely.\nlet _statefulContainerCount = 0;\nexport function _TESTING_ONLY_reset_container_count() {\n _statefulContainerCount = 0;\n}\n\n// We keep a global flag to catch errors during the state persistence hydrating scenario.\n// The innermost navigator who catches the error will dispatch a new init action.\nlet _reactNavigationIsHydratingState = false;\n// Unfortunate to use global state here, but it seems necessesary for the time\n// being. There seems to be some problems with cascading componentDidCatch\n// handlers. Ideally the inner non-stateful navigator catches the error and\n// re-throws it, to be caught by the top-level stateful navigator.\n\n/**\n * Create an HOC that injects the navigation and manages the navigation state\n * in case it's not passed from above.\n * This allows to use e.g. the StackNavigator and TabNavigator as root-level\n * components.\n */\nexport default function createNavigationContainer(Component) {\n class NavigationContainer extends React.Component {\n subs = null;\n\n static router = Component.router;\n static navigationOptions = null;\n\n static getDerivedStateFromProps(nextProps, prevState) {\n validateProps(nextProps);\n return null;\n }\n\n _actionEventSubscribers = new Set();\n\n constructor(props) {\n super(props);\n\n validateProps(props);\n\n this._initialAction = NavigationActions.init();\n\n if (this._isStateful()) {\n this.subs = BackHandler.addEventListener('hardwareBackPress', () => {\n if (!this._isMounted) {\n this.subs && this.subs.remove();\n } else {\n // dispatch returns true if the action results in a state change,\n // and false otherwise. This maps well to what BackHandler expects\n // from a callback -- true if handled, false if not handled\n return this.dispatch(NavigationActions.back());\n }\n });\n }\n\n this.state = {\n nav:\n this._isStateful() && !props.persistenceKey\n ? Component.router.getStateForAction(this._initialAction)\n : null,\n };\n }\n\n _renderLoading() {\n return this.props.renderLoadingExperimental\n ? this.props.renderLoadingExperimental()\n : null;\n }\n\n _isStateful() {\n return isStateful(this.props);\n }\n\n _validateProps(props) {\n if (this._isStateful()) {\n return;\n }\n\n const { navigation, screenProps, ...containerProps } = props;\n\n const keys = Object.keys(containerProps);\n\n if (keys.length !== 0) {\n throw new Error(\n 'This navigator has both navigation and container props, so it is ' +\n `unclear if it should own its own state. Remove props: \"${keys.join(\n ', '\n )}\" ` +\n 'if the navigator should get its state from the navigation prop. If the ' +\n 'navigator should maintain its own state, do not pass a navigation prop.'\n );\n }\n }\n\n _handleOpenURL = ({ url }) => {\n const { enableURLHandling, uriPrefix } = this.props;\n if (enableURLHandling === false) {\n return;\n }\n const parsedUrl = urlToPathAndParams(url, uriPrefix);\n if (parsedUrl) {\n const { path, params } = parsedUrl;\n const action = Component.router.getActionForPathAndParams(path, params);\n if (action) {\n this.dispatch(action);\n }\n }\n };\n\n _onNavigationStateChange(prevNav, nav, action) {\n if (\n typeof this.props.onNavigationStateChange === 'undefined' &&\n this._isStateful() &&\n !!process.env.REACT_NAV_LOGGING\n ) {\n /* eslint-disable no-console */\n if (console.group) {\n console.group('Navigation Dispatch: ');\n console.log('Action: ', action);\n console.log('New State: ', nav);\n console.log('Last State: ', prevNav);\n console.groupEnd();\n } else {\n console.log('Navigation Dispatch: ', {\n action,\n newState: nav,\n lastState: prevNav,\n });\n }\n /* eslint-enable no-console */\n return;\n }\n\n if (typeof this.props.onNavigationStateChange === 'function') {\n this.props.onNavigationStateChange(prevNav, nav, action);\n }\n }\n\n componentDidUpdate() {\n // Clear cached _navState every tick\n if (this._navState === this.state.nav) {\n this._navState = null;\n }\n }\n\n async componentDidMount() {\n this._isMounted = true;\n if (!this._isStateful()) {\n return;\n }\n\n if (__DEV__ && !this.props.detached) {\n if (_statefulContainerCount > 0) {\n // Temporarily only show this on iOS due to this issue:\n // https://github.com/react-navigation/react-navigation/issues/4196#issuecomment-390827829\n if (Platform.OS === 'ios') {\n console.warn(\n `You should only render one navigator explicitly in your app, and other navigators should by rendered by including them in that navigator. Full details at: ${docsUrl(\n 'common-mistakes.html#explicitly-rendering-more-than-one-navigator'\n )}`\n );\n }\n }\n }\n _statefulContainerCount++;\n Linking.addEventListener('url', this._handleOpenURL);\n\n // Pull out anything that can impact state\n const { persistenceKey, uriPrefix, enableURLHandling } = this.props;\n let parsedUrl = null;\n let startupStateJSON = null;\n if (enableURLHandling !== false) {\n startupStateJSON =\n persistenceKey && (await AsyncStorage.getItem(persistenceKey));\n const url = await Linking.getInitialURL();\n parsedUrl = url && urlToPathAndParams(url, uriPrefix);\n }\n\n // Initialize state. This must be done *after* any async code\n // so we don't end up with a different value for this.state.nav\n // due to changes while async function was resolving\n let action = this._initialAction;\n let startupState = this.state.nav;\n if (!startupState) {\n !!process.env.REACT_NAV_LOGGING &&\n console.log('Init new Navigation State');\n startupState = Component.router.getStateForAction(action);\n }\n\n // Pull persisted state from AsyncStorage\n if (startupStateJSON) {\n try {\n startupState = JSON.parse(startupStateJSON);\n _reactNavigationIsHydratingState = true;\n } catch (e) {}\n }\n\n // Pull state out of URL\n if (parsedUrl) {\n const { path, params } = parsedUrl;\n const urlAction = Component.router.getActionForPathAndParams(\n path,\n params\n );\n if (urlAction) {\n !!process.env.REACT_NAV_LOGGING &&\n console.log('Applying Navigation Action for Initial URL:', url);\n action = urlAction;\n startupState = Component.router.getStateForAction(\n urlAction,\n startupState\n );\n }\n }\n\n const dispatchActions = () =>\n this._actionEventSubscribers.forEach(subscriber =>\n subscriber({\n type: 'action',\n action,\n state: this.state.nav,\n lastState: null,\n })\n );\n\n if (startupState === this.state.nav) {\n dispatchActions();\n return;\n }\n\n this.setState({ nav: startupState }, () => {\n _reactNavigationIsHydratingState = false;\n dispatchActions();\n });\n }\n\n componentDidCatch(e, errorInfo) {\n if (_reactNavigationIsHydratingState) {\n _reactNavigationIsHydratingState = false;\n console.warn(\n 'Uncaught exception while starting app from persisted navigation state! Trying to render again with a fresh navigation state..'\n );\n this.dispatch(NavigationActions.init());\n } else {\n throw e;\n }\n }\n\n _persistNavigationState = async nav => {\n const { persistenceKey } = this.props;\n if (!persistenceKey) {\n return;\n }\n await AsyncStorage.setItem(persistenceKey, JSON.stringify(nav));\n };\n\n componentWillUnmount() {\n this._isMounted = false;\n Linking.removeEventListener('url', this._handleOpenURL);\n this.subs && this.subs.remove();\n\n if (this._isStateful()) {\n _statefulContainerCount--;\n }\n }\n\n // Per-tick temporary storage for state.nav\n\n dispatch = action => {\n if (this.props.navigation) {\n return this.props.navigation.dispatch(action);\n }\n\n // navState will have the most up-to-date value, because setState sometimes behaves asyncronously\n this._navState = this._navState || this.state.nav;\n const lastNavState = this._navState;\n invariant(lastNavState, 'should be set in constructor if stateful');\n const reducedState = Component.router.getStateForAction(\n action,\n lastNavState\n );\n const navState = reducedState === null ? lastNavState : reducedState;\n\n const dispatchActionEvents = () => {\n this._actionEventSubscribers.forEach(subscriber =>\n subscriber({\n type: 'action',\n action,\n state: navState,\n lastState: lastNavState,\n })\n );\n };\n\n if (reducedState === null) {\n // The router will return null when action has been handled and the state hasn't changed.\n // dispatch returns true when something has been handled.\n dispatchActionEvents();\n return true;\n }\n\n if (navState !== lastNavState) {\n // Cache updates to state.nav during the tick to ensure that subsequent calls will not discard this change\n this._navState = navState;\n this.setState({ nav: navState }, () => {\n this._onNavigationStateChange(lastNavState, navState, action);\n dispatchActionEvents();\n this._persistNavigationState(navState);\n });\n return true;\n }\n\n dispatchActionEvents();\n return false;\n };\n\n _getScreenProps = () => this.props.screenProps;\n\n render() {\n let navigation = this.props.navigation;\n if (this._isStateful()) {\n const navState = this.state.nav;\n if (!navState) {\n return this._renderLoading();\n }\n if (!this._navigation || this._navigation.state !== navState) {\n this._navigation = getNavigation(\n Component.router,\n navState,\n this.dispatch,\n this._actionEventSubscribers,\n this._getScreenProps,\n () => this._navigation\n );\n }\n navigation = this._navigation;\n }\n invariant(navigation, 'failed to get navigation');\n return ;\n }\n }\n\n return polyfill(NavigationContainer);\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/**\n * Copyright (c) 2013-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\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexports.polyfill = polyfill;\n","const BACK = 'Navigation/BACK';\nconst INIT = 'Navigation/INIT';\nconst NAVIGATE = 'Navigation/NAVIGATE';\nconst SET_PARAMS = 'Navigation/SET_PARAMS';\n\nconst back = (payload = {}) => ({\n type: BACK,\n key: payload.key,\n immediate: payload.immediate,\n});\n\nconst init = (payload = {}) => {\n const action = {\n type: INIT,\n };\n if (payload.params) {\n action.params = payload.params;\n }\n return action;\n};\n\nconst navigate = payload => {\n const action = {\n type: NAVIGATE,\n routeName: payload.routeName,\n };\n if (payload.params) {\n action.params = payload.params;\n }\n if (payload.action) {\n action.action = payload.action;\n }\n if (payload.key) {\n action.key = payload.key;\n }\n return action;\n};\n\nconst setParams = payload => ({\n type: SET_PARAMS,\n key: payload.key,\n params: payload.params,\n});\n\nexport default {\n // Action constants\n BACK,\n INIT,\n NAVIGATE,\n SET_PARAMS,\n\n // Action creators\n back,\n init,\n navigate,\n setParams,\n};\n","import getNavigationActionCreators from './routers/getNavigationActionCreators';\nimport getChildNavigation from './getChildNavigation';\n\nexport default function getNavigation(\n router,\n state,\n dispatch,\n actionSubscribers,\n getScreenProps,\n getCurrentNavigation\n) {\n const actions = router.getActionCreators(state, null);\n\n const navigation = {\n actions,\n router,\n state,\n dispatch,\n getScreenProps,\n getChildNavigation: childKey =>\n getChildNavigation(navigation, childKey, getCurrentNavigation),\n isFocused: childKey => {\n const { routes, index } = getCurrentNavigation().state;\n if (childKey == null || routes[index].key === childKey) {\n return true;\n }\n return false;\n },\n addListener: (eventName, handler) => {\n if (eventName !== 'action') {\n return { remove: () => {} };\n }\n actionSubscribers.add(handler);\n return {\n remove: () => {\n actionSubscribers.delete(handler);\n },\n };\n },\n dangerouslyGetParent: () => null,\n };\n\n const actionCreators = {\n ...getNavigationActionCreators(navigation.state),\n ...actions,\n };\n\n Object.keys(actionCreators).forEach(actionName => {\n navigation[actionName] = (...args) =>\n navigation.dispatch(actionCreators[actionName](...args));\n });\n\n return navigation;\n}\n","import NavigationActions from '../NavigationActions';\nimport invariant from '../utils/invariant';\n\nconst getNavigationActionCreators = route => {\n return {\n goBack: key => {\n let actualizedKey = key;\n if (key === undefined && route.key) {\n invariant(typeof route.key === 'string', 'key should be a string');\n actualizedKey = route.key;\n }\n return NavigationActions.back({ key: actualizedKey });\n },\n navigate: (navigateTo, params, action) => {\n if (typeof navigateTo === 'string') {\n return NavigationActions.navigate({\n routeName: navigateTo,\n params,\n action,\n });\n }\n invariant(\n typeof navigateTo === 'object',\n 'Must navigateTo an object or a string'\n );\n invariant(\n params == null,\n 'Params must not be provided to .navigate() when specifying an object'\n );\n invariant(\n action == null,\n 'Child action must not be provided to .navigate() when specifying an object'\n );\n return NavigationActions.navigate(navigateTo);\n },\n setParams: params => {\n invariant(\n route.key && typeof route.key === 'string',\n 'setParams cannot be called by root navigator'\n );\n return NavigationActions.setParams({ params, key: route.key });\n },\n };\n};\n\nexport default getNavigationActionCreators;\n","/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function(format) {};\n\nif (__DEV__) {\n validateFormat = function(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() {\n return args[argIndex++];\n })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n","import getChildEventSubscriber from './getChildEventSubscriber';\nimport getChildRouter from './getChildRouter';\nimport getNavigationActionCreators from './routers/getNavigationActionCreators';\nimport invariant from './utils/invariant';\n\nconst createParamGetter = route => (paramName, defaultValue) => {\n const params = route.params;\n\n if (params && paramName in params) {\n return params[paramName];\n }\n\n return defaultValue;\n};\n\nfunction getChildNavigation(navigation, childKey, getCurrentParentNavigation) {\n const children =\n navigation._childrenNavigation || (navigation._childrenNavigation = {});\n\n const childRoute = navigation.state.routes.find(r => r.key === childKey);\n\n if (!childRoute) {\n return null;\n }\n\n if (children[childKey] && children[childKey].state === childRoute) {\n return children[childKey];\n }\n\n const childRouter = getChildRouter(navigation.router, childRoute.routeName);\n\n // If the route has children, we'll use this to pass in to the action creators\n // for the childRouter so that any action that depends on the active route will\n // behave as expected. We don't explicitly require that routers implement routes\n // and index properties, but if we did then we would put an invariant here to\n // ensure that a focusedGrandChildRoute exists if childRouter is defined.\n const focusedGrandChildRoute =\n childRoute.routes && typeof childRoute.index === 'number'\n ? childRoute.routes[childRoute.index]\n : null;\n\n const actionCreators = {\n ...navigation.actions,\n ...navigation.router.getActionCreators(childRoute, navigation.state.key),\n ...(childRouter\n ? childRouter.getActionCreators(focusedGrandChildRoute, childRoute.key)\n : {}),\n ...getNavigationActionCreators(childRoute),\n };\n\n const actionHelpers = {};\n Object.keys(actionCreators).forEach(actionName => {\n actionHelpers[actionName] = (...args) => {\n const actionCreator = actionCreators[actionName];\n const action = actionCreator(...args);\n return navigation.dispatch(action);\n };\n });\n\n if (children[childKey]) {\n children[childKey] = {\n ...children[childKey],\n ...actionHelpers,\n state: childRoute,\n router: childRouter,\n actions: actionCreators,\n getParam: createParamGetter(childRoute),\n };\n return children[childKey];\n }\n\n const childSubscriber = getChildEventSubscriber(\n navigation.addListener,\n childKey\n );\n\n children[childKey] = {\n ...actionHelpers,\n\n state: childRoute,\n router: childRouter,\n actions: actionCreators,\n getParam: createParamGetter(childRoute),\n\n getChildNavigation: grandChildKey =>\n getChildNavigation(children[childKey], grandChildKey, () => {\n const nav = getCurrentParentNavigation();\n return nav && nav.getChildNavigation(childKey);\n }),\n\n isFocused: () => {\n const currentNavigation = getCurrentParentNavigation();\n if (!currentNavigation) {\n return false;\n }\n const { routes, index } = currentNavigation.state;\n if (!currentNavigation.isFocused()) {\n return false;\n }\n if (routes[index].key === childKey) {\n return true;\n }\n return false;\n },\n dispatch: navigation.dispatch,\n getScreenProps: navigation.getScreenProps,\n dangerouslyGetParent: getCurrentParentNavigation,\n addListener: childSubscriber.addListener,\n };\n return children[childKey];\n}\n\nexport default getChildNavigation;\n","/*\n * This is used to extract one children's worth of events from a stream of navigation action events\n *\n * Based on the 'action' events that get fired for this navigation state, this utility will fire\n * focus and blur events for this child\n */\nexport default function getChildEventSubscriber(addListener, key) {\n const actionSubscribers = new Set();\n const willFocusSubscribers = new Set();\n const didFocusSubscribers = new Set();\n const willBlurSubscribers = new Set();\n const didBlurSubscribers = new Set();\n\n const removeAll = () => {\n [\n actionSubscribers,\n willFocusSubscribers,\n didFocusSubscribers,\n willBlurSubscribers,\n didBlurSubscribers,\n ].forEach(set => set.clear());\n\n upstreamSubscribers.forEach(subs => subs && subs.remove());\n };\n\n const getChildSubscribers = evtName => {\n switch (evtName) {\n case 'action':\n return actionSubscribers;\n case 'willFocus':\n return willFocusSubscribers;\n case 'didFocus':\n return didFocusSubscribers;\n case 'willBlur':\n return willBlurSubscribers;\n case 'didBlur':\n return didBlurSubscribers;\n default:\n return null;\n }\n };\n\n const emit = (type, payload) => {\n const payloadWithType = { ...payload, type };\n const subscribers = getChildSubscribers(type);\n subscribers &&\n subscribers.forEach(subs => {\n subs(payloadWithType);\n });\n };\n\n // lastEmittedEvent keeps track of focus state for one route. First we assume\n // we are blurred. If we are focused on initialization, the first 'action'\n // event will cause onFocus+willFocus events because we had previously been\n // considered blurred\n let lastEmittedEvent = 'didBlur';\n\n const upstreamEvents = [\n 'willFocus',\n 'didFocus',\n 'willBlur',\n 'didBlur',\n 'action',\n ];\n\n const upstreamSubscribers = upstreamEvents.map(eventName =>\n addListener(eventName, payload => {\n const { state, lastState, action } = payload;\n const lastRoutes = lastState && lastState.routes;\n const routes = state && state.routes;\n\n const lastFocusKey =\n lastState && lastState.routes && lastState.routes[lastState.index].key;\n const focusKey = routes && routes[state.index].key;\n\n const isChildFocused = focusKey === key;\n const lastRoute =\n lastRoutes && lastRoutes.find(route => route.key === key);\n const newRoute = routes && routes.find(route => route.key === key);\n const childPayload = {\n context: `${key}:${action.type}_${payload.context || 'Root'}`,\n state: newRoute,\n lastState: lastRoute,\n action,\n type: eventName,\n };\n const isTransitioning = !!state && state.isTransitioning;\n\n const previouslyLastEmittedEvent = lastEmittedEvent;\n\n if (lastEmittedEvent === 'didBlur') {\n // The child is currently blurred. Look for willFocus conditions\n if (eventName === 'willFocus' && isChildFocused) {\n emit((lastEmittedEvent = 'willFocus'), childPayload);\n } else if (eventName === 'action' && isChildFocused) {\n emit((lastEmittedEvent = 'willFocus'), childPayload);\n }\n }\n if (lastEmittedEvent === 'willFocus') {\n // We are currently mid-focus. Look for didFocus conditions.\n // If state.isTransitioning is false, this child event happens immediately after willFocus\n if (eventName === 'didFocus' && isChildFocused && !isTransitioning) {\n emit((lastEmittedEvent = 'didFocus'), childPayload);\n } else if (\n eventName === 'action' &&\n isChildFocused &&\n !isTransitioning\n ) {\n emit((lastEmittedEvent = 'didFocus'), childPayload);\n }\n }\n\n if (lastEmittedEvent === 'didFocus') {\n // The child is currently focused. Look for blurring events\n if (!isChildFocused) {\n // The child is no longer focused within this navigation state\n emit((lastEmittedEvent = 'willBlur'), childPayload);\n } else if (eventName === 'willBlur') {\n // The parent is getting a willBlur event\n emit((lastEmittedEvent = 'willBlur'), childPayload);\n } else if (\n eventName === 'action' &&\n previouslyLastEmittedEvent === 'didFocus'\n ) {\n // While focused, pass action events to children for grandchildren focus\n emit('action', childPayload);\n }\n }\n\n if (lastEmittedEvent === 'willBlur') {\n // The child is mid-blur. Wait for transition to end\n if (eventName === 'action' && !isChildFocused && !isTransitioning) {\n // The child is done blurring because transitioning is over, or isTransitioning\n // never began and didBlur fires immediately after willBlur\n emit((lastEmittedEvent = 'didBlur'), childPayload);\n } else if (eventName === 'didBlur') {\n // Pass through the parent didBlur event if it happens\n emit((lastEmittedEvent = 'didBlur'), childPayload);\n }\n }\n\n if (lastEmittedEvent === 'didBlur' && !newRoute) {\n removeAll();\n }\n })\n );\n\n return {\n addListener(eventName, eventHandler) {\n const subscribers = getChildSubscribers(eventName);\n if (!subscribers) {\n throw new Error(`Invalid event name \"${eventName}\"`);\n }\n subscribers.add(eventHandler);\n const remove = () => {\n subscribers.delete(eventHandler);\n };\n return { remove };\n },\n };\n}\n","export default function getChildRouter(router, routeName) {\n if (router.childRouters && router.childRouters[routeName]) {\n return router.childRouters[routeName];\n }\n\n const Component = router.getComponentForRouteName(routeName);\n\n return Component.router;\n}\n","export default function docsUrl(path) {\n return `https://reactnavigation.org/docs/${path}`;\n}\n","import pathToRegexp, { compile } from 'path-to-regexp';\nimport NavigationActions from '../NavigationActions';\nimport invariant from '../utils/invariant';\n\nconst queryString = require('query-string');\n\nfunction isEmpty(obj) {\n if (!obj) return true;\n for (let key in obj) {\n return false;\n }\n return true;\n}\n\nconst getParamsFromPath = (inputParams, pathMatch, pathMatchKeys) => {\n const params = pathMatch.slice(1).reduce(\n // iterate over matched path params\n (paramsOut, matchResult, i) => {\n const key = pathMatchKeys[i];\n if (!key || key.asterisk) {\n return paramsOut;\n }\n const paramName = key.name;\n\n let decodedMatchResult;\n try {\n decodedMatchResult = decodeURIComponent(matchResult);\n } catch (e) {\n // ignore `URIError: malformed URI`\n }\n\n paramsOut[paramName] = decodedMatchResult || matchResult;\n return paramsOut;\n },\n {\n // start with the input(query string) params, which will get overridden by path params\n ...inputParams,\n }\n );\n return params;\n};\nconst getRestOfPath = (pathMatch, pathMatchKeys) => {\n const rest = pathMatch[pathMatchKeys.findIndex(k => k.asterisk) + 1];\n return rest;\n};\nexport const urlToPathAndParams = (url, uriPrefix) => {\n const searchMatch = url.match(/^(.*)\\?(.*)$/);\n const params = searchMatch ? queryString.parse(searchMatch[2]) : {};\n const urlWithoutSearch = searchMatch ? searchMatch[1] : url;\n const delimiter = uriPrefix || '://';\n let path = urlWithoutSearch.split(delimiter)[1];\n if (path === undefined) {\n path = urlWithoutSearch;\n }\n if (path === '/') {\n path = '';\n }\n if (path[path.length - 1] === '/') {\n path = path.slice(0, -1);\n }\n return {\n path,\n params,\n };\n};\n\nexport const createPathParser = (\n childRouters,\n routeConfigs,\n { paths: pathConfigs = {}, disableRouteNamePaths }\n) => {\n const pathsByRouteNames = {};\n let paths = [];\n\n // Build pathsByRouteNames, which includes a regex to match paths for each route. Keep in mind, the regex will pass for the route and all child routes. The code that uses pathsByRouteNames will need to also verify that the child router produces an action, in the case of isPathMatchable false (a null path).\n Object.keys(childRouters).forEach(routeName => {\n let pathPattern;\n\n // First check for paths on the router, then check the route config\n if (pathConfigs[routeName] !== undefined) {\n pathPattern = pathConfigs[routeName];\n } else {\n pathPattern = routeConfigs[routeName].path;\n }\n\n if (pathPattern === undefined) {\n // If the user hasn't specified a path at all nor disableRouteNamePaths, then we assume the routeName is an appropriate path\n pathPattern = disableRouteNamePaths ? null : routeName;\n }\n\n invariant(\n pathPattern === null || typeof pathPattern === 'string',\n `Route path for ${routeName} must be specified as a string, or null.`\n );\n\n // the path may be specified as null, which is similar to empty string because it allows child routers to handle the action, but it will not match empty paths\n const isPathMatchable = pathPattern !== null;\n // pathPattern is a string with inline params, such as people/:id/*foo\n const exactReKeys = [];\n const exactRe = isPathMatchable\n ? pathToRegexp(pathPattern, exactReKeys)\n : null;\n const extendedPathReKeys = [];\n const isWildcard = pathPattern === '' || !isPathMatchable;\n const extendedPathRe = pathToRegexp(\n isWildcard ? '*' : `${pathPattern}/*`,\n extendedPathReKeys\n );\n\n pathsByRouteNames[routeName] = {\n exactRe,\n exactReKeys,\n extendedPathRe,\n extendedPathReKeys,\n isWildcard,\n toPath: pathPattern === null ? () => '' : compile(pathPattern),\n };\n });\n\n paths = Object.entries(pathsByRouteNames);\n\n const getActionForPathAndParams = (pathToResolve = '', inputParams = {}) => {\n // Attempt to match `pathToResolve` with a route in this router's routeConfigs, deferring to child routers\n\n let matchedAction = null;\n\n // eslint-disable-next-line no-restricted-syntax\n for (const [routeName, path] of paths) {\n const { exactRe, exactReKeys, extendedPathRe, extendedPathReKeys } = path;\n const childRouter = childRouters[routeName];\n\n const exactMatch = exactRe && exactRe.exec(pathToResolve);\n\n if (exactMatch && exactMatch.length) {\n const extendedMatch =\n extendedPathRe && extendedPathRe.exec(pathToResolve);\n let childAction = null;\n if (extendedMatch && childRouter) {\n const restOfPath = getRestOfPath(extendedMatch, extendedPathReKeys);\n childAction = childRouter.getActionForPathAndParams(\n restOfPath,\n inputParams\n );\n }\n\n return NavigationActions.navigate({\n routeName,\n params: getParamsFromPath(inputParams, exactMatch, exactReKeys),\n action: childAction,\n });\n }\n }\n\n // eslint-disable-next-line no-restricted-syntax\n for (const [routeName, path] of paths) {\n const { extendedPathRe, extendedPathReKeys } = path;\n const childRouter = childRouters[routeName];\n\n const extendedMatch =\n extendedPathRe && extendedPathRe.exec(pathToResolve);\n\n if (extendedMatch && extendedMatch.length) {\n const restOfPath = getRestOfPath(extendedMatch, extendedPathReKeys);\n let childAction = null;\n if (childRouter) {\n childAction = childRouter.getActionForPathAndParams(\n restOfPath,\n inputParams\n );\n }\n if (!childAction) {\n continue;\n }\n return NavigationActions.navigate({\n routeName,\n params: getParamsFromPath(\n inputParams,\n extendedMatch,\n extendedPathReKeys\n ),\n action: childAction,\n });\n }\n }\n\n return null;\n };\n const getPathAndParamsForRoute = route => {\n const { routeName, params } = route;\n const childRouter = childRouters[routeName];\n const { toPath, exactReKeys } = pathsByRouteNames[routeName];\n const subPath = toPath(params);\n const nonPathParams = {};\n if (params) {\n Object.keys(params)\n .filter(paramName => !exactReKeys.find(k => k.name === paramName))\n .forEach(paramName => {\n nonPathParams[paramName] = params[paramName];\n });\n }\n if (childRouter) {\n // If it has a router it's a navigator.\n // If it doesn't have router it's an ordinary React component.\n const child = childRouter.getPathAndParamsForState(route);\n return {\n path: subPath ? `${subPath}/${child.path}` : child.path,\n params: child.params\n ? { ...nonPathParams, ...child.params }\n : nonPathParams,\n };\n }\n return {\n path: subPath,\n params: nonPathParams,\n };\n };\n return { getActionForPathAndParams, getPathAndParamsForRoute };\n};\n\nexport default {\n getParamsFromPath,\n createPathParser,\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, index) => {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, options),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, options),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, options),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, options)\n\t\t\t\t].join('');\n\t\t\t};\n\t\tcase 'bracket':\n\t\t\treturn (key, value) => {\n\t\t\t\treturn value === null ? [encode(key, options), '[]'].join('') : [\n\t\t\t\t\tencode(key, options),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, options)\n\t\t\t\t].join('');\n\t\t\t};\n\t\tdefault:\n\t\t\treturn (key, value) => {\n\t\t\t\treturn value === null ? encode(key, options) : [\n\t\t\t\t\tencode(key, options),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, options)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction extract(input) {\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parse(input, options) {\n\toptions = Object.assign({decode: true, arrayFormat: 'none'}, options);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof input !== 'string') {\n\t\treturn ret;\n\t}\n\n\tinput = input.trim().replace(/^[?#&]/, '');\n\n\tif (!input) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of input.split('&')) {\n\t\tlet [key, value] = param.replace(/\\+/g, ' ').split('=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : decode(value, options);\n\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\treturn Object.keys(ret).sort().reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (obj, options) => {\n\tif (!obj) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t}, options);\n\n\tconst formatter = encoderForArrayFormat(options);\n\tconst keys = Object.keys(obj);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = obj[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tconst result = [];\n\n\t\t\tfor (const value2 of value.slice()) {\n\t\t\t\tif (value2 === undefined) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, value2, result.length));\n\t\t\t}\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (input, options) => {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn {\n\t\turl: input.split('?')[0] || '',\n\t\tquery: parse(extract(input), options)\n\t};\n};\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","import invariant from './utils/invariant';\n\n/**\n * Utilities to perform atomic operation with navigate state and routes.\n *\n * ```javascript\n * const state1 = {key: 'screen 1'};\n * const state2 = NavigationStateUtils.push(state1, {key: 'screen 2'});\n * ```\n */\nconst StateUtils = {\n /**\n * Gets a route by key. If the route isn't found, returns `null`.\n */\n get(state, key) {\n return state.routes.find(route => route.key === key) || null;\n },\n\n /**\n * Returns the first index at which a given route's key can be found in the\n * routes of the navigation state, or -1 if it is not present.\n */\n indexOf(state, key) {\n return state.routes.findIndex(route => route.key === key);\n },\n\n /**\n * Returns `true` at which a given route's key can be found in the\n * routes of the navigation state.\n */\n has(state, key) {\n return !!state.routes.some(route => route.key === key);\n },\n\n /**\n * Pushes a new route into the navigation state.\n * Note that this moves the index to the positon to where the last route in the\n * stack is at.\n */\n push(state, route) {\n invariant(\n StateUtils.indexOf(state, route.key) === -1,\n 'should not push route with duplicated key %s',\n route.key\n );\n\n const routes = state.routes.slice();\n routes.push(route);\n\n return {\n ...state,\n index: routes.length - 1,\n routes,\n };\n },\n\n /**\n * Pops out a route from the navigation state.\n * Note that this moves the index to the positon to where the last route in the\n * stack is at.\n */\n pop(state) {\n if (state.index <= 0) {\n // [Note]: Over-popping does not throw error. Instead, it will be no-op.\n return state;\n }\n const routes = state.routes.slice(0, -1);\n return {\n ...state,\n index: routes.length - 1,\n routes,\n };\n },\n\n /**\n * Sets the focused route of the navigation state by index.\n */\n jumpToIndex(state, index) {\n if (index === state.index) {\n return state;\n }\n\n invariant(!!state.routes[index], 'invalid index %s to jump to', index);\n\n return {\n ...state,\n index,\n };\n },\n\n /**\n * Sets the focused route of the navigation state by key.\n */\n jumpTo(state, key) {\n const index = StateUtils.indexOf(state, key);\n return StateUtils.jumpToIndex(state, index);\n },\n\n /**\n * Sets the focused route to the previous route.\n */\n back(state) {\n const index = state.index - 1;\n const route = state.routes[index];\n return route ? StateUtils.jumpToIndex(state, index) : state;\n },\n\n /**\n * Sets the focused route to the next route.\n */\n forward(state) {\n const index = state.index + 1;\n const route = state.routes[index];\n return route ? StateUtils.jumpToIndex(state, index) : state;\n },\n\n /**\n * Replace a route by a key.\n * Note that this moves the index to the position to where the new route in the\n * stack is at and updates the routes array accordingly.\n */\n replaceAndPrune(state, key, route) {\n const index = StateUtils.indexOf(state, key);\n const replaced = StateUtils.replaceAtIndex(state, index, route);\n\n return {\n ...replaced,\n routes: replaced.routes.slice(0, index + 1),\n };\n },\n\n /**\n * Replace a route by a key.\n * Note that this moves the index to the position to where the new route in the\n * stack is at. Does not prune the routes.\n * If preserveIndex is true then replacing the route does not cause the index\n * to change to the index of that route.\n */\n replaceAt(state, key, route, preserveIndex = false) {\n const index = StateUtils.indexOf(state, key);\n const nextIndex = preserveIndex ? state.index : index;\n let nextState = StateUtils.replaceAtIndex(state, index, route);\n nextState.index = nextIndex;\n return nextState;\n },\n\n /**\n * Replace a route by a index.\n * Note that this moves the index to the positon to where the new route in the\n * stack is at.\n */\n replaceAtIndex(state, index, route) {\n invariant(\n !!state.routes[index],\n 'invalid index %s for replacing route %s',\n index,\n route.key\n );\n\n if (state.routes[index] === route && index === state.index) {\n return state;\n }\n\n const routes = state.routes.slice();\n routes[index] = route;\n\n return {\n ...state,\n index,\n routes,\n };\n },\n\n /**\n * Resets all routes.\n * Note that this moves the index to the position to where the last route in the\n * stack is at if the param `index` isn't provided.\n */\n reset(state, routes, index) {\n invariant(\n routes.length && Array.isArray(routes),\n 'invalid routes to replace'\n );\n\n const nextIndex = index === undefined ? routes.length - 1 : index;\n\n if (state.routes.length === routes.length && state.index === nextIndex) {\n const compare = (route, ii) => routes[ii] === route;\n if (state.routes.every(compare)) {\n return state;\n }\n }\n\n invariant(!!routes[nextIndex], 'invalid index %s to reset', nextIndex);\n\n return {\n ...state,\n index: nextIndex,\n routes,\n };\n },\n};\n\nexport default StateUtils;\n","import React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\n\nfunction createNavigator(NavigatorView, router, navigationConfig) {\n class Navigator extends React.Component {\n static router = router;\n static navigationOptions = null;\n\n state = {\n descriptors: {},\n screenProps: this.props.screenProps,\n };\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const prevDescriptors = prevState.descriptors;\n const { navigation, screenProps } = nextProps;\n const { state } = navigation;\n const { routes } = state;\n if (typeof routes === 'undefined') {\n throw new TypeError(\n 'No \"routes\" found in navigation state. Did you try to pass the navigation prop of a React component to a Navigator child? See https://reactnavigation.org/docs/en/custom-navigators.html#navigator-navigation-prop'\n );\n }\n\n const descriptors = {};\n\n routes.forEach(route => {\n if (\n prevDescriptors &&\n prevDescriptors[route.key] &&\n route === prevDescriptors[route.key].state &&\n screenProps === prevState.screenProps\n ) {\n descriptors[route.key] = prevDescriptors[route.key];\n return;\n }\n const getComponent = router.getComponentForRouteName.bind(\n null,\n route.routeName\n );\n const childNavigation = navigation.getChildNavigation(route.key);\n const options = router.getScreenOptions(childNavigation, screenProps);\n descriptors[route.key] = {\n key: route.key,\n getComponent,\n options,\n state: route,\n navigation: childNavigation,\n };\n });\n\n return { descriptors, screenProps };\n }\n\n render() {\n return (\n \n );\n }\n }\n\n return polyfill(Navigator);\n}\n\nexport default createNavigator;\n","import React from 'react';\nimport { TextInput } from 'react-native';\n\nexport default (Navigator, navigatorConfig) =>\n class KeyboardAwareNavigator extends React.Component {\n static router = Navigator.router;\n _previouslyFocusedTextInput = null;\n\n render() {\n return (\n \n );\n }\n\n _handleGestureBegin = () => {\n this._previouslyFocusedTextInput = TextInput.State.currentlyFocusedField();\n if (this._previouslyFocusedTextInput) {\n TextInput.State.blurTextInput(this._previouslyFocusedTextInput);\n }\n this.props.onGestureBegin && this.props.onGestureBegin();\n };\n\n _handleGestureCanceled = () => {\n if (this._previouslyFocusedTextInput) {\n TextInput.State.focusTextInput(this._previouslyFocusedTextInput);\n }\n this.props.onGestureCanceled && this.props.onGestureCanceled();\n };\n\n _handleGestureFinish = () => {\n this._previouslyFocusedTextInput = null;\n this.props.onGestureFinish && this.props.onGestureFinish();\n };\n\n _handleTransitionStart = (transitionProps, prevTransitionProps) => {\n // TODO: We should not even have received the transition start event\n // in the case where the index did not change, I believe. We\n // should revisit this after 2.0 release.\n if (transitionProps.index !== prevTransitionProps.index) {\n const currentField = TextInput.State.currentlyFocusedField();\n if (currentField) {\n TextInput.State.blurTextInput(currentField);\n }\n }\n\n const onTransitionStart =\n this.props.onTransitionStart || navigatorConfig.onTransitionStart;\n onTransitionStart &&\n onTransitionStart(transitionProps, prevTransitionProps);\n };\n };\n","import createReactContext from 'create-react-context';\n\nconst NavigationContext = createReactContext();\n\nexport const NavigationProvider = NavigationContext.Provider;\nexport const NavigationConsumer = NavigationContext.Consumer;\n\nexport default {\n NavigationProvider,\n NavigationConsumer,\n};\n","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = require('./implementation');\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = require('gud');\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = require('fbjs/lib/warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';\n\n var Provider = function (_Component) {\n _inherits(Provider, _Component);\n\n function Provider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Provider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Provider.prototype.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits = void 0;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== 'production') {\n (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n Provider.prototype.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(_react.Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n var Consumer = function (_Component2) {\n _inherits(Consumer, _Component2);\n\n function Consumer() {\n var _temp2, _this2, _ret2;\n\n _classCallCheck(this, Consumer);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n value: _this2.getValue()\n }, _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({ value: _this2.getValue() });\n }\n }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n }\n\n Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n var observedBits = this.props.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n Consumer.prototype.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n Consumer.prototype.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(_react.Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);\n\n\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\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 */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;","\"use strict\";\n\n/**\n * Copyright (c) 2013-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 * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;","/* eslint-disable import/no-commonjs */\n\nmodule.exports = {\n /**\n * Navigators\n */\n get createStackNavigator() {\n return require('./navigators/createContainedStackNavigator').default;\n },\n // note(brentvatne): in the future this will be default export, when we require\n // people to add their own provider at root in 3.0\n get createUncontainedStackNavigator() {\n return require('./navigators/createStackNavigator').default;\n },\n\n /**\n * Views\n */\n get Header() {\n return require('./views/Header/Header').default;\n },\n get HeaderBackButton() {\n return require('./views/Header/HeaderBackButton').default;\n },\n get HeaderTitle() {\n return require('./views/Header/HeaderTitle').default;\n },\n get HeaderStyleInterpolator() {\n return require('./views/Header/HeaderStyleInterpolator').default;\n },\n get StackView() {\n return require('./views/StackView/StackView').default;\n },\n get StackViewCard() {\n return require('./views/StackView/StackViewCard').default;\n },\n get StackViewLayout() {\n return require('./views/StackView/StackViewLayout').default;\n },\n get StackViewStyleInterpolator() {\n return require('./views/StackView/StackViewStyleInterpolator').default;\n },\n get StackViewTransitionConfigs() {\n return require('./views/StackView/StackViewTransitionConfigs').default;\n },\n get createPointerEventsContainer() {\n return require('./views/StackView/createPointerEventsContainer').default;\n },\n get Transitioner() {\n return require('./views/Transitioner').default;\n },\n get ScenesReducer() {\n return require('./views/ScenesReducer').default;\n }\n};","import { createNavigationContainer } from 'react-navigation';\nimport createStackNavigator from './createStackNavigator';\n\nconst createContainedStackNavigator = (routeConfigs, config = {}) => {\n const navigator = createStackNavigator(routeConfigs, config);\n return createNavigationContainer(navigator);\n};\n\nexport default createContainedStackNavigator;","import { StackRouter, createKeyboardAwareNavigator, createNavigator } from 'react-navigation';\nimport StackView from '../views/StackView/StackView';\n\nfunction createStackNavigator(routeConfigMap, stackConfig = {}) {\n const {\n initialRouteKey,\n initialRouteName,\n initialRouteParams,\n paths,\n navigationOptions,\n disableKeyboardHandling,\n getCustomActionCreators\n } = stackConfig;\n\n const stackRouterConfig = {\n initialRouteKey,\n initialRouteName,\n initialRouteParams,\n paths,\n navigationOptions,\n getCustomActionCreators\n };\n\n const router = StackRouter(routeConfigMap, stackRouterConfig);\n\n // Create a navigator with StackView as the view\n let Navigator = createNavigator(StackView, router, stackConfig);\n if (!disableKeyboardHandling) {\n Navigator = createKeyboardAwareNavigator(Navigator, stackConfig);\n }\n\n return Navigator;\n}\n\nexport default createStackNavigator;","import React from 'react';\nimport { NativeModules } from 'react-native';\n\nimport { StackActions } from 'react-navigation';\nimport StackViewLayout from './StackViewLayout';\nimport Transitioner from '../Transitioner';\nimport TransitionConfigs from './StackViewTransitionConfigs';\n\nconst NativeAnimatedModule = NativeModules && NativeModules.NativeAnimatedModule;\n\nclass StackView extends React.Component {\n static defaultProps = {\n navigationConfig: {\n mode: 'card'\n }\n };\n\n render() {\n return {\n const { navigationConfig, navigation } = this.props;\n const onTransitionEnd = this.props.onTransitionEnd || navigationConfig.onTransitionEnd;\n if (transition.navigation.state.isTransitioning) {\n navigation.dispatch(StackActions.completeTransition({\n key: navigation.state.key\n }));\n }\n onTransitionEnd && onTransitionEnd(transition, lastTransition);\n }} />;\n }\n\n componentDidMount() {\n const { navigation } = this.props;\n if (navigation.state.isTransitioning) {\n navigation.dispatch(StackActions.completeTransition({\n key: navigation.state.key\n }));\n }\n }\n\n _configureTransition = (transitionProps, prevTransitionProps) => {\n return {\n ...TransitionConfigs.getTransitionConfig(this.props.navigationConfig.transitionConfig, transitionProps, prevTransitionProps, this.props.navigationConfig.mode === 'modal').transitionSpec,\n useNativeDriver: !!NativeAnimatedModule\n };\n };\n\n _render = (transitionProps, lastTransitionProps) => {\n const { screenProps, navigationConfig } = this.props;\n return ;\n };\n}\n\nexport default StackView;","import React from 'react';\n\nimport clamp from '../../utils/clamp';\nimport { Animated, StyleSheet, PanResponder, Platform, View, I18nManager, Easing, Dimensions } from 'react-native';\nimport { SceneView, StackActions, NavigationActions, withOrientation, NavigationProvider } from 'react-navigation';\nimport { ScreenContainer } from 'react-native-screens';\n\nimport Card from './StackViewCard';\nimport Header from '../Header/Header';\n\nimport TransitionConfigs from './StackViewTransitionConfigs';\nimport { supportsImprovedSpringAnimation } from '../../utils/ReactNativeFeatures';\n\nconst emptyFunction = () => {};\n\nconst IPHONE_XS_HEIGHT = 812; // iPhone X and XS\nconst IPHONE_XR_HEIGHT = 896; // iPhone XR and XS Max\nconst { width: WINDOW_WIDTH, height: WINDOW_HEIGHT } = Dimensions.get('window');\nconst IS_IPHONE_X = Platform.OS === 'ios' && !Platform.isPad && !Platform.isTVOS && (WINDOW_HEIGHT === IPHONE_XS_HEIGHT || WINDOW_WIDTH === IPHONE_XS_HEIGHT || WINDOW_HEIGHT === IPHONE_XR_HEIGHT || WINDOW_WIDTH === IPHONE_XR_HEIGHT);\n\nconst EaseInOut = Easing.inOut(Easing.ease);\n\n/**\n * Enumerate possible values for validation\n */\nconst HEADER_LAYOUT_PRESET_VALUES = ['center', 'left'];\nconst HEADER_TRANSITION_PRESET_VALUES = ['uikit', 'fade-in-place'];\n\n/**\n * The max duration of the card animation in milliseconds after released gesture.\n * The actual duration should be always less then that because the rest distance\n * is always less then the full distance of the layout.\n */\nconst ANIMATION_DURATION = 500;\n\n/**\n * The gesture distance threshold to trigger the back behavior. For instance,\n * `1/2` means that moving greater than 1/2 of the width of the screen will\n * trigger a back action\n */\nconst POSITION_THRESHOLD = 1 / 2;\n\n/**\n * The threshold (in pixels) to start the gesture action.\n */\nconst RESPOND_THRESHOLD = 20;\n\n/**\n * The distance of touch start from the edge of the screen where the gesture will be recognized\n */\nconst GESTURE_RESPONSE_DISTANCE_HORIZONTAL = 25;\nconst GESTURE_RESPONSE_DISTANCE_VERTICAL = 135;\n\nconst animatedSubscribeValue = animatedValue => {\n if (!animatedValue.__isNative) {\n return;\n }\n if (Object.keys(animatedValue._listeners).length === 0) {\n animatedValue.addListener(emptyFunction);\n }\n};\n\nconst getDefaultHeaderHeight = isLandscape => {\n if (Platform.OS === 'ios') {\n if (isLandscape && !Platform.isPad) {\n return 32;\n } else if (IS_IPHONE_X) {\n return 88;\n } else {\n return 64;\n }\n } else {\n return 56;\n }\n};\n\nclass StackViewLayout extends React.Component {\n /**\n * Used to identify the starting point of the position when the gesture starts, such that it can\n * be updated according to its relative position. This means that a card can effectively be\n * \"caught\"- If a gesture starts while a card is animating, the card does not jump into a\n * corresponding location for the touch.\n */\n _gestureStartValue = 0;\n\n // tracks if a touch is currently happening\n _isResponding = false;\n\n /**\n * immediateIndex is used to represent the expected index that we will be on after a\n * transition. To achieve a smooth animation when swiping back, the action to go back\n * doesn't actually fire until the transition completes. The immediateIndex is used during\n * the transition so that gestures can be handled correctly. This is a work-around for\n * cases when the user quickly swipes back several times.\n */\n _immediateIndex = null;\n\n constructor(props) {\n super(props);\n\n this.state = {\n // Used when card's header is null and mode is float to make transition\n // between screens with headers and those without headers smooth.\n // This is not a great heuristic here. We don't know synchronously\n // on mount what the header height is so we have just used the most\n // common cases here.\n floatingHeaderHeight: getDefaultHeaderHeight(props.isLandscape)\n };\n }\n\n _renderHeader(scene, headerMode) {\n const { options } = scene.descriptor;\n const { header } = options;\n\n if (__DEV__ && typeof header === 'string') {\n throw new Error(`Invalid header value: \"${header}\". The header option must be a valid React component or null, not a string.`);\n }\n\n if (header === null && headerMode === 'screen') {\n return null;\n }\n\n // check if it's a react element\n if (React.isValidElement(header)) {\n return header;\n }\n\n // Handle the case where the header option is a function, and provide the default\n const renderHeader = header || (props =>
);\n\n const {\n headerLeftInterpolator,\n headerTitleInterpolator,\n headerRightInterpolator,\n headerBackgroundInterpolator\n } = this._getTransitionConfig();\n\n const { transitionProps, ...passProps } = this.props;\n\n return \n {renderHeader({\n ...passProps,\n ...transitionProps,\n scene,\n mode: headerMode,\n transitionPreset: this._getHeaderTransitionPreset(),\n layoutPreset: this._getHeaderLayoutPreset(),\n backTitleVisible: this._getheaderBackTitleVisible(),\n leftInterpolator: headerLeftInterpolator,\n titleInterpolator: headerTitleInterpolator,\n rightInterpolator: headerRightInterpolator,\n backgroundInterpolator: headerBackgroundInterpolator\n })}\n ;\n }\n\n _animatedSubscribe(props) {\n // Hack to make this work with native driven animations. We add a single listener\n // so the JS value of the following animated values gets updated. We rely on\n // some Animated private APIs and not doing so would require using a bunch of\n // value listeners but we'd have to remove them to not leak and I'm not sure\n // when we'd do that with the current structure we have. `stopAnimation` callback\n // is also broken with native animated values that have no listeners so if we\n // want to remove this we have to fix this too.\n animatedSubscribeValue(props.transitionProps.layout.width);\n animatedSubscribeValue(props.transitionProps.layout.height);\n animatedSubscribeValue(props.transitionProps.position);\n }\n\n _reset(resetToIndex, duration) {\n if (Platform.OS === 'ios' && supportsImprovedSpringAnimation()) {\n Animated.spring(this.props.transitionProps.position, {\n toValue: resetToIndex,\n stiffness: 5000,\n damping: 600,\n mass: 3,\n useNativeDriver: this.props.transitionProps.position.__isNative\n }).start();\n } else {\n Animated.timing(this.props.transitionProps.position, {\n toValue: resetToIndex,\n duration,\n easing: EaseInOut,\n useNativeDriver: this.props.transitionProps.position.__isNative\n }).start();\n }\n }\n\n _goBack(backFromIndex, duration) {\n const { navigation, position, scenes } = this.props.transitionProps;\n const toValue = Math.max(backFromIndex - 1, 0);\n\n // set temporary index for gesture handler to respect until the action is\n // dispatched at the end of the transition.\n this._immediateIndex = toValue;\n\n const onCompleteAnimation = () => {\n this._immediateIndex = null;\n const backFromScene = scenes.find(s => s.index === toValue + 1);\n if (!this._isResponding && backFromScene) {\n navigation.dispatch(NavigationActions.back({\n key: backFromScene.route.key,\n immediate: true\n }));\n navigation.dispatch(StackActions.completeTransition());\n }\n };\n\n if (Platform.OS === 'ios' && supportsImprovedSpringAnimation()) {\n Animated.spring(position, {\n toValue,\n stiffness: 5000,\n damping: 600,\n mass: 3,\n useNativeDriver: position.__isNative\n }).start(onCompleteAnimation);\n } else {\n Animated.timing(position, {\n toValue,\n duration,\n easing: EaseInOut,\n useNativeDriver: position.__isNative\n }).start(onCompleteAnimation);\n }\n }\n\n _panResponder = PanResponder.create({\n onPanResponderTerminate: () => {\n const { navigation } = this.props.transitionProps;\n const { index } = navigation.state;\n this._isResponding = false;\n this._reset(index, 0);\n this.props.onGestureCanceled && this.props.onGestureCanceled();\n },\n onPanResponderGrant: () => {\n const {\n transitionProps: { navigation, position, scene }\n } = this.props;\n const { index } = navigation.state;\n\n if (index !== scene.index) {\n return false;\n }\n\n position.stopAnimation(value => {\n this._isResponding = true;\n this._gestureStartValue = value;\n });\n this.props.onGestureBegin && this.props.onGestureBegin();\n },\n onMoveShouldSetPanResponder: (event, gesture) => {\n const {\n transitionProps: { navigation, layout, scene },\n mode\n } = this.props;\n const { index } = navigation.state;\n const isVertical = mode === 'modal';\n const { options } = scene.descriptor;\n const gestureDirection = options.gestureDirection;\n\n const gestureDirectionInverted = typeof gestureDirection === 'string' ? gestureDirection === 'inverted' : I18nManager.isRTL;\n\n if (index !== scene.index) {\n return false;\n }\n\n const immediateIndex = this._immediateIndex == null ? index : this._immediateIndex;\n const currentDragDistance = gesture[isVertical ? 'dy' : 'dx'];\n const currentDragPosition = event.nativeEvent[isVertical ? 'pageY' : 'pageX'];\n const axisLength = isVertical ? layout.height.__getValue() : layout.width.__getValue();\n const axisHasBeenMeasured = !!axisLength;\n\n // Measure the distance from the touch to the edge of the screen\n const screenEdgeDistance = gestureDirectionInverted ? axisLength - (currentDragPosition - currentDragDistance) : currentDragPosition - currentDragDistance;\n // Compare to the gesture distance relavant to card or modal\n\n const {\n gestureResponseDistance: userGestureResponseDistance = {}\n } = options;\n const gestureResponseDistance = isVertical ? userGestureResponseDistance.vertical || GESTURE_RESPONSE_DISTANCE_VERTICAL : userGestureResponseDistance.horizontal || GESTURE_RESPONSE_DISTANCE_HORIZONTAL;\n // GESTURE_RESPONSE_DISTANCE is about 25 or 30. Or 135 for modals\n if (screenEdgeDistance > gestureResponseDistance) {\n // Reject touches that started in the middle of the screen\n return false;\n }\n\n const hasDraggedEnough = Math.abs(currentDragDistance) > RESPOND_THRESHOLD;\n\n const isOnFirstCard = immediateIndex === 0;\n const shouldSetResponder = hasDraggedEnough && axisHasBeenMeasured && !isOnFirstCard;\n return shouldSetResponder;\n },\n onPanResponderMove: (event, gesture) => {\n const {\n transitionProps: { navigation, position, layout, scene },\n mode\n } = this.props;\n const { index } = navigation.state;\n const isVertical = mode === 'modal';\n const { options } = scene.descriptor;\n const gestureDirection = options.gestureDirection;\n\n const gestureDirectionInverted = typeof gestureDirection === 'string' ? gestureDirection === 'inverted' : I18nManager.isRTL;\n\n // Handle the moving touches for our granted responder\n const startValue = this._gestureStartValue;\n const axis = isVertical ? 'dy' : 'dx';\n const axisDistance = isVertical ? layout.height.__getValue() : layout.width.__getValue();\n const currentValue = axis === 'dx' && gestureDirectionInverted ? startValue + gesture[axis] / axisDistance : startValue - gesture[axis] / axisDistance;\n const value = clamp(index - 1, currentValue, index);\n position.setValue(value);\n },\n onPanResponderTerminationRequest: () =>\n // Returning false will prevent other views from becoming responder while\n // the navigation view is the responder (mid-gesture)\n false,\n onPanResponderRelease: (event, gesture) => {\n const {\n transitionProps: { navigation, position, layout, scene },\n mode\n } = this.props;\n const { index } = navigation.state;\n const isVertical = mode === 'modal';\n const { options } = scene.descriptor;\n const gestureDirection = options.gestureDirection;\n\n const gestureDirectionInverted = typeof gestureDirection === 'string' ? gestureDirection === 'inverted' : I18nManager.isRTL;\n\n if (!this._isResponding) {\n return;\n }\n this._isResponding = false;\n\n const immediateIndex = this._immediateIndex == null ? index : this._immediateIndex;\n\n // Calculate animate duration according to gesture speed and moved distance\n const axisDistance = isVertical ? layout.height.__getValue() : layout.width.__getValue();\n const movementDirection = gestureDirectionInverted ? -1 : 1;\n const movedDistance = movementDirection * gesture[isVertical ? 'dy' : 'dx'];\n const gestureVelocity = movementDirection * gesture[isVertical ? 'vy' : 'vx'];\n const defaultVelocity = axisDistance / ANIMATION_DURATION;\n const velocity = Math.max(Math.abs(gestureVelocity), defaultVelocity);\n const resetDuration = gestureDirectionInverted ? (axisDistance - movedDistance) / velocity : movedDistance / velocity;\n const goBackDuration = gestureDirectionInverted ? movedDistance / velocity : (axisDistance - movedDistance) / velocity;\n\n // To asyncronously get the current animated value, we need to run stopAnimation:\n position.stopAnimation(value => {\n // If the speed of the gesture release is significant, use that as the indication\n // of intent\n if (gestureVelocity < -0.5) {\n this.props.onGestureCanceled && this.props.onGestureCanceled();\n this._reset(immediateIndex, resetDuration);\n return;\n }\n if (gestureVelocity > 0.5) {\n this.props.onGestureFinish && this.props.onGestureFinish();\n this._goBack(immediateIndex, goBackDuration);\n return;\n }\n\n // Then filter based on the distance the screen was moved. Over a third of the way swiped,\n // and the back will happen.\n if (value <= index - POSITION_THRESHOLD) {\n this.props.onGestureFinish && this.props.onGestureFinish();\n this._goBack(immediateIndex, goBackDuration);\n } else {\n this.props.onGestureCanceled && this.props.onGestureCanceled();\n this._reset(immediateIndex, resetDuration);\n }\n });\n }\n });\n\n _onFloatingHeaderLayout = e => {\n this.setState({ floatingHeaderHeight: e.nativeEvent.layout.height });\n };\n\n render() {\n let floatingHeader = null;\n const headerMode = this._getHeaderMode();\n\n if (headerMode === 'float') {\n const { scene } = this.props.transitionProps;\n floatingHeader = \n {this._renderHeader(scene, headerMode)}\n ;\n }\n const {\n transitionProps: { scene, scenes }\n } = this.props;\n const { options } = scene.descriptor;\n\n const gesturesEnabled = typeof options.gesturesEnabled === 'boolean' ? options.gesturesEnabled : Platform.OS === 'ios';\n\n const responder = !gesturesEnabled ? null : this._panResponder;\n\n const handlers = gesturesEnabled ? responder.panHandlers : {};\n const containerStyle = [styles.container, this._getTransitionConfig().containerStyle];\n\n return \n \n {scenes.map(s => this._renderCard(s))}\n \n {floatingHeader}\n ;\n }\n\n _getHeaderMode() {\n if (this.props.headerMode) {\n return this.props.headerMode;\n }\n if (Platform.OS === 'android' || this.props.mode === 'modal') {\n return 'screen';\n }\n return 'float';\n }\n\n _getHeaderLayoutPreset() {\n const { headerLayoutPreset } = this.props;\n if (headerLayoutPreset) {\n if (__DEV__) {\n if (this._getHeaderTransitionPreset() === 'uikit' && headerLayoutPreset === 'left' && Platform.OS === 'ios') {\n console.warn(`headerTransitionPreset with the value 'uikit' is incompatible with headerLayoutPreset 'left'`);\n }\n }\n if (HEADER_LAYOUT_PRESET_VALUES.includes(headerLayoutPreset)) {\n return headerLayoutPreset;\n }\n\n if (__DEV__) {\n console.error(`Invalid configuration applied for headerLayoutPreset - expected one of ${HEADER_LAYOUT_PRESET_VALUES.join(', ')} but received ${JSON.stringify(headerLayoutPreset)}`);\n }\n }\n\n if (Platform.OS === 'android') {\n return 'left';\n } else {\n return 'center';\n }\n }\n\n _getHeaderTransitionPreset() {\n // On Android or with header mode screen, we always just use in-place,\n // we ignore the option entirely (at least until we have other presets)\n if (Platform.OS === 'android' || this._getHeaderMode() === 'screen') {\n return 'fade-in-place';\n }\n\n const { headerTransitionPreset } = this.props;\n if (headerTransitionPreset) {\n if (HEADER_TRANSITION_PRESET_VALUES.includes(headerTransitionPreset)) {\n return headerTransitionPreset;\n }\n\n if (__DEV__) {\n console.error(`Invalid configuration applied for headerTransitionPreset - expected one of ${HEADER_TRANSITION_PRESET_VALUES.join(', ')} but received ${JSON.stringify(headerTransitionPreset)}`);\n }\n }\n\n return 'fade-in-place';\n }\n\n _getheaderBackTitleVisible() {\n const { headerBackTitleVisible } = this.props;\n\n return headerBackTitleVisible;\n }\n\n _renderInnerScene(scene) {\n const { navigation, getComponent } = scene.descriptor;\n const SceneComponent = getComponent();\n\n const { screenProps } = this.props;\n const headerMode = this._getHeaderMode();\n if (headerMode === 'screen') {\n return \n \n \n \n {this._renderHeader(scene, headerMode)}\n ;\n }\n return ;\n }\n\n _getTransitionConfig = () => {\n const isModal = this.props.mode === 'modal';\n\n return TransitionConfigs.getTransitionConfig(this.props.transitionConfig, this.props.transitionProps, this.props.lastTransitionProps, isModal);\n };\n\n _renderCard = scene => {\n const { screenInterpolator } = this._getTransitionConfig();\n\n const style = screenInterpolator && screenInterpolator({ ...this.props.transitionProps, scene });\n\n // When using a floating header, we need to add some top\n // padding on the scene.\n const { options } = scene.descriptor;\n const hasHeader = options.header !== null;\n const headerMode = this._getHeaderMode();\n let paddingTop = 0;\n if (hasHeader && headerMode === 'float' && !options.headerTransparent) {\n paddingTop = this.state.floatingHeaderHeight;\n }\n\n return \n {this._renderInnerScene(scene)}\n ;\n };\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n // Header is physically rendered after scenes so that Header won't be\n // covered by the shadows of the scenes.\n // That said, we'd have use `flexDirection: 'column-reverse'` to move\n // Header above the scenes.\n flexDirection: 'column-reverse',\n overflow: 'hidden'\n },\n scenes: {\n flex: 1\n },\n floatingHeader: {\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0\n }\n});\n\nexport default withOrientation(StackViewLayout);","export default function clamp(min, value, max) {\n if (value < min) {\n return min;\n }\n if (value > max) {\n return max;\n }\n return value;\n}","import React from 'react';\nimport {\n Animated,\n requireNativeComponent,\n View,\n UIManager,\n StyleSheet,\n} from 'react-native';\nimport { version } from 'react-native/Libraries/Core/ReactNativeVersion';\n\nlet USE_SCREENS = false;\n\n// UIManager[`${moduleName}`] is deprecated in RN 0.58 and `getViewManagerConfig` is added.\n// We can remove this when we drop support for RN < 0.58.\nconst getViewManagerConfigCompat = name =>\n typeof UIManager.getViewManagerConfig !== 'undefined'\n ? UIManager.getViewManagerConfig(name)\n : UIManager[name];\n\nexport function useScreens(shouldUseScreens = true) {\n USE_SCREENS = shouldUseScreens;\n if (USE_SCREENS && !getViewManagerConfigCompat('RNSScreen')) {\n console.error(\n `Screen native module hasn't been linked. Please check the react-native-screens README for more details`\n );\n }\n}\n\nexport function screensEnabled() {\n return USE_SCREENS;\n}\n\nexport const NativeScreen = requireNativeComponent('RNSScreen', null);\n\nconst AnimatedNativeScreen = Animated.createAnimatedComponent(NativeScreen);\n\nexport const NativeScreenContainer = requireNativeComponent(\n 'RNSScreenContainer',\n null\n);\n\nexport class Screen extends React.Component {\n setNativeProps(props) {\n this._ref.setNativeProps(props);\n }\n setRef = ref => {\n this._ref = ref;\n this.props.onComponentRef && this.props.onComponentRef(ref);\n };\n render() {\n if (!USE_SCREENS) {\n // Filter out active prop in this case because it is unused and\n // can cause problems depending on react-native version:\n // https://github.com/react-navigation/react-navigation/issues/4886\n\n /* eslint-disable no-unused-vars */\n const { active, onComponentRef, ...props } = this.props;\n\n return ;\n } else if (version.minor >= 57) {\n return ;\n } else {\n // On RN version below 0.57 we need to wrap screen's children with an\n // additional View because of a bug fixed in react-native/pull/20658 which\n // was preventing a view from having both styles and some other props being\n // \"animated\" (using Animated native driver)\n const { style, children, ...rest } = this.props;\n return (\n \n {children}\n \n );\n }\n }\n}\n\nexport class ScreenContainer extends React.Component {\n render() {\n if (!USE_SCREENS) {\n return ;\n } else {\n return ;\n }\n }\n}\n","import React from 'react';\nimport { StyleSheet, Platform } from 'react-native';\nimport { Screen } from 'react-native-screens';\nimport createPointerEventsContainer from './createPointerEventsContainer';\n\nconst EPS = 1e-5;\n\nfunction getAccessibilityProps(isActive) {\n if (Platform.OS === 'ios') {\n return {\n accessibilityElementsHidden: !isActive\n };\n } else if (Platform.OS === 'android') {\n return {\n importantForAccessibility: isActive ? 'yes' : 'no-hide-descendants'\n };\n } else {\n return null;\n }\n}\n\n/**\n * Component that renders the scene as card for the .\n */\nclass Card extends React.Component {\n render() {\n const {\n children,\n pointerEvents,\n style,\n position,\n transparent,\n scene: { index, isActive }\n } = this.props;\n\n const active = transparent || isActive ? 1 : position.interpolate({\n inputRange: [index, index + 1 - EPS, index + 1],\n outputRange: [1, 1, 0],\n extrapolate: 'clamp'\n });\n\n return \n {children}\n ;\n }\n}\n\nconst styles = StyleSheet.create({\n main: {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: '#E9E9EF',\n shadowColor: 'black',\n shadowOffset: { width: 0, height: 0 },\n shadowOpacity: 0.2,\n shadowRadius: 5\n },\n transparent: {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: 'transparent'\n }\n});\n\nexport default createPointerEventsContainer(Card);","import React from 'react';\nimport invariant from '../../utils/invariant';\n\nconst MIN_POSITION_OFFSET = 0.01;\n\n/**\n * Create a higher-order component that automatically computes the\n * `pointerEvents` property for a component whenever navigation position\n * changes.\n */\nexport default function createPointerEventsContainer(Component) {\n class Container extends React.Component {\n constructor(props, context) {\n super(props, context);\n this._pointerEvents = this._computePointerEvents();\n }\n\n componentWillUnmount() {\n this._positionListener && this._positionListener.remove();\n }\n\n render() {\n this._bindPosition();\n this._pointerEvents = this._computePointerEvents();\n\n return ;\n }\n\n _onComponentRef = component => {\n this._component = component;\n if (component) {\n invariant(typeof component.setNativeProps === 'function', 'component must implement method `setNativeProps`');\n }\n };\n\n _bindPosition() {\n this._positionListener && this._positionListener.remove();\n this._positionListener = new AnimatedValueSubscription(this.props.position, this._onPositionChange);\n }\n\n _onPositionChange = () => {\n if (this._component) {\n const pointerEvents = this._computePointerEvents();\n if (this._pointerEvents !== pointerEvents) {\n this._pointerEvents = pointerEvents;\n this._component.setNativeProps({ pointerEvents });\n }\n }\n };\n\n _computePointerEvents() {\n const { navigation, position, scene } = this.props;\n\n if (scene.isStale || navigation.state.index !== scene.index) {\n // The scene isn't focused.\n return scene.index > navigation.state.index ? 'box-only' : 'none';\n }\n\n const offset = position.__getAnimatedValue() - navigation.state.index;\n if (Math.abs(offset) > MIN_POSITION_OFFSET) {\n // The positon is still away from scene's index.\n // Scene's children should not receive touches until the position\n // is close enough to scene's index.\n return 'box-only';\n }\n\n return 'auto';\n }\n }\n return Container;\n}\n\nclass AnimatedValueSubscription {\n constructor(value, callback) {\n this._value = value;\n this._token = value.addListener(callback);\n }\n\n remove() {\n this._value.removeListener(this._token);\n }\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nexport default function invariant(condition, format, a, b, c, d, e, f) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, () => args[argIndex++]));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}","import React from 'react';\n\nimport { Animated, Image, Platform, StyleSheet, View, I18nManager, MaskedViewIOS } from 'react-native';\n\nimport { SafeAreaView, withOrientation } from 'react-navigation';\n\nimport HeaderTitle from './HeaderTitle';\nimport HeaderBackButton from './HeaderBackButton';\nimport ModularHeaderBackButton from './ModularHeaderBackButton';\nimport HeaderStyleInterpolator from './HeaderStyleInterpolator';\n\nconst APPBAR_HEIGHT = Platform.OS === 'ios' ? 44 : 56;\nconst STATUSBAR_HEIGHT = Platform.OS === 'ios' ? 20 : 0;\n\n// These can be adjusted by using headerTitleContainerStyle on navigationOptions\nconst TITLE_OFFSET_CENTER_ALIGN = Platform.OS === 'ios' ? 70 : 56;\nconst TITLE_OFFSET_LEFT_ALIGN = Platform.OS === 'ios' ? 20 : 56;\n\nconst getTitleOffsets = (layoutPreset, forceBackTitle, hasLeftComponent, hasRightComponent) => {\n if (layoutPreset === 'left') {\n // Maybe at some point we should do something different if the back title is\n // explicitly enabled, for now people can control it manually\n\n let style = {\n left: TITLE_OFFSET_LEFT_ALIGN,\n right: TITLE_OFFSET_LEFT_ALIGN\n };\n\n if (!hasLeftComponent) {\n style.left = 0;\n }\n if (!hasRightComponent) {\n style.right = 0;\n }\n\n return style;\n } else if (layoutPreset === 'center') {\n let style = {\n left: TITLE_OFFSET_CENTER_ALIGN,\n right: TITLE_OFFSET_CENTER_ALIGN\n };\n if (!hasLeftComponent && !hasRightComponent) {\n style.left = 0;\n style.right = 0;\n }\n\n return style;\n }\n};\n\nconst getAppBarHeight = isLandscape => {\n return Platform.OS === 'ios' ? isLandscape && !Platform.isPad ? 32 : 44 : 56;\n};\n\nclass Header extends React.PureComponent {\n static get HEIGHT() {\n return APPBAR_HEIGHT + STATUSBAR_HEIGHT;\n }\n\n static defaultProps = {\n layoutInterpolator: HeaderStyleInterpolator.forLayout,\n leftInterpolator: HeaderStyleInterpolator.forLeft,\n leftButtonInterpolator: HeaderStyleInterpolator.forLeftButton,\n leftLabelInterpolator: HeaderStyleInterpolator.forLeftLabel,\n titleFromLeftInterpolator: HeaderStyleInterpolator.forCenterFromLeft,\n titleInterpolator: HeaderStyleInterpolator.forCenter,\n rightInterpolator: HeaderStyleInterpolator.forRight,\n backgroundInterpolator: HeaderStyleInterpolator.forBackground\n };\n\n state = {\n widths: {}\n };\n\n _getHeaderTitleString(scene) {\n const options = scene.descriptor.options;\n if (typeof options.headerTitle === 'string') {\n return options.headerTitle;\n }\n\n if (options.title && typeof options.title !== 'string' && __DEV__) {\n throw new Error(`Invalid title for route \"${scene.route.routeName}\" - title must be string or null, instead it was of type ${typeof options.title}`);\n }\n\n return options.title;\n }\n\n _getLastScene(scene) {\n return this.props.scenes.find(s => s.index === scene.index - 1);\n }\n\n _getBackButtonTitleString(scene) {\n const lastScene = this._getLastScene(scene);\n if (!lastScene) {\n return null;\n }\n const { headerBackTitle } = lastScene.descriptor.options;\n if (headerBackTitle || headerBackTitle === null) {\n return headerBackTitle;\n }\n return this._getHeaderTitleString(lastScene);\n }\n\n _getTruncatedBackButtonTitle(scene) {\n const lastScene = this._getLastScene(scene);\n if (!lastScene) {\n return null;\n }\n return lastScene.descriptor.options.headerTruncatedBackTitle;\n }\n\n _renderTitleComponent = props => {\n const { layoutPreset } = this.props;\n const { options } = props.scene.descriptor;\n const headerTitle = options.headerTitle;\n if (React.isValidElement(headerTitle)) {\n return headerTitle;\n }\n const titleString = this._getHeaderTitleString(props.scene);\n\n const titleStyle = options.headerTitleStyle;\n const color = options.headerTintColor;\n const allowFontScaling = options.headerTitleAllowFontScaling;\n\n // When title is centered, the width of left/right components depends on the\n // calculated size of the title.\n const onLayout = layoutPreset === 'center' ? e => {\n this.setState({\n widths: {\n ...this.state.widths,\n [props.scene.key]: e.nativeEvent.layout.width\n }\n });\n } : undefined;\n\n const HeaderTitleComponent = headerTitle && typeof headerTitle !== 'string' ? headerTitle : HeaderTitle;\n return \n {titleString}\n ;\n };\n\n _renderLeftComponent = props => {\n const { options } = props.scene.descriptor;\n if (React.isValidElement(options.headerLeft) || options.headerLeft === null) {\n return options.headerLeft;\n }\n\n if (!options.headerLeft && props.scene.index === 0) {\n return;\n }\n\n const backButtonTitle = this._getBackButtonTitleString(props.scene);\n const truncatedBackButtonTitle = this._getTruncatedBackButtonTitle(props.scene);\n const width = this.state.widths[props.scene.key] ? (this.props.layout.initWidth - this.state.widths[props.scene.key]) / 2 : undefined;\n const RenderedLeftComponent = options.headerLeft || HeaderBackButton;\n const goBack = () => {\n // Go back on next tick because button ripple effect needs to happen on Android\n requestAnimationFrame(() => {\n props.scene.descriptor.navigation.goBack(props.scene.descriptor.key);\n });\n };\n return ;\n };\n\n _renderModularLeftComponent = (props, ButtonContainerComponent, LabelContainerComponent) => {\n const { options, navigation } = props.scene.descriptor;\n const backButtonTitle = this._getBackButtonTitleString(props.scene);\n const truncatedBackButtonTitle = this._getTruncatedBackButtonTitle(props.scene);\n const width = this.state.widths[props.scene.key] ? (this.props.layout.initWidth - this.state.widths[props.scene.key]) / 2 : undefined;\n\n const goBack = () => {\n // Go back on next tick because button ripple effect needs to happen on Android\n requestAnimationFrame(() => {\n navigation.goBack(props.scene.descriptor.key);\n });\n };\n\n return ;\n };\n\n _renderRightComponent = props => {\n const { headerRight } = props.scene.descriptor.options;\n return headerRight || null;\n };\n\n _renderLeft(props) {\n const { options } = props.scene.descriptor;\n\n const { transitionPreset } = this.props;\n\n let { style } = props;\n if (options.headerLeftContainerStyle) {\n style = [style, options.headerLeftContainerStyle];\n }\n\n // On Android, or if we have a custom header left, or if we have a custom back image, we\n // do not use the modular header (which is the one that imitates UINavigationController)\n if (transitionPreset !== 'uikit' || options.headerBackImage || options.headerLeft || options.headerLeft === null) {\n return this._renderSubView({ ...props, style }, 'left', this._renderLeftComponent, this.props.leftInterpolator);\n } else {\n return this._renderModularSubView({ ...props, style }, 'left', this._renderModularLeftComponent, this.props.leftLabelInterpolator, this.props.leftButtonInterpolator);\n }\n }\n\n _renderTitle(props, options) {\n const { layoutPreset, transitionPreset } = this.props;\n let style = [{ justifyContent: layoutPreset === 'center' ? 'center' : 'flex-start' }, getTitleOffsets(layoutPreset, false, options.hasLeftComponent, options.hasRightComponent), options.headerTitleContainerStyle];\n\n return this._renderSubView({ ...props, style }, 'title', this._renderTitleComponent, transitionPreset === 'uikit' ? this.props.titleFromLeftInterpolator : this.props.titleInterpolator);\n }\n\n _renderRight(props) {\n const { options } = props.scene.descriptor;\n\n let { style } = props;\n if (options.headerRightContainerStyle) {\n style = [style, options.headerRightContainerStyle];\n }\n\n return this._renderSubView({ ...props, style }, 'right', this._renderRightComponent, this.props.rightInterpolator);\n }\n\n _renderBackground(props) {\n const {\n index,\n descriptor: { options }\n } = props.scene;\n\n const offset = this.props.navigation.state.index - index;\n\n if (Math.abs(offset) > 2) {\n // Scene is far away from the active scene. Hides it to avoid unnecessary\n // rendering.\n return null;\n }\n\n return this._renderSubView({ ...props, style: StyleSheet.absoluteFill }, 'background', () => options.headerBackground, this.props.backgroundInterpolator);\n }\n\n _renderModularSubView(props, name, renderer, labelStyleInterpolator, buttonStyleInterpolator) {\n const { scene } = props;\n const { index, isStale, key } = scene;\n\n // Never render a modular back button on the first screen in a stack.\n if (index === 0) {\n return;\n }\n\n const offset = this.props.navigation.state.index - index;\n\n if (Math.abs(offset) > 2) {\n // Scene is far away from the active scene. Hides it to avoid unnecessary\n // rendering.\n return null;\n }\n\n const ButtonContainer = ({ children }) => \n {children}\n ;\n\n const LabelContainer = ({ children }) => \n {children}\n ;\n\n const subView = renderer(props, ButtonContainer, LabelContainer);\n\n if (subView === null) {\n return subView;\n }\n\n const pointerEvents = offset !== 0 || isStale ? 'none' : 'box-none';\n\n return \n {subView}\n ;\n }\n\n _renderSubView(props, name, renderer, styleInterpolator) {\n const { scene } = props;\n const { index, isStale, key } = scene;\n\n const offset = this.props.navigation.state.index - index;\n\n if (Math.abs(offset) > 2) {\n // Scene is far away from the active scene. Hides it to avoid unnecessary\n // rendering.\n return null;\n }\n\n const subView = renderer(props);\n\n if (subView == null) {\n return null;\n }\n\n const pointerEvents = offset !== 0 || isStale ? 'none' : 'box-none';\n\n return \n {subView}\n ;\n }\n\n _renderHeader(props) {\n const { options } = props.scene.descriptor;\n if (options.header === null) {\n return null;\n }\n const left = this._renderLeft(props);\n const right = this._renderRight(props);\n const title = this._renderTitle(props, {\n hasLeftComponent: !!left,\n hasRightComponent: !!right,\n headerTitleContainerStyle: options.headerTitleContainerStyle\n });\n\n const { transitionPreset } = this.props;\n\n const wrapperProps = {\n style: styles.header,\n key: `scene_${props.scene.key}`\n };\n\n if (options.headerLeft || options.headerBackImage || Platform.OS !== 'ios' || transitionPreset !== 'uikit') {\n return \n {title}\n {left}\n {right}\n ;\n } else {\n return \n \n \n }>\n {title}\n {left}\n {right}\n ;\n }\n }\n\n render() {\n let appBar;\n let background;\n const { mode, scene, isLandscape } = this.props;\n\n if (mode === 'float') {\n const scenesByIndex = {};\n this.props.scenes.forEach(scene => {\n scenesByIndex[scene.index] = scene;\n });\n const scenesProps = Object.values(scenesByIndex).map(scene => ({\n position: this.props.position,\n progress: this.props.progress,\n scene\n }));\n appBar = scenesProps.map(this._renderHeader, this);\n background = scenesProps.map(this._renderBackground, this);\n } else {\n const headerProps = {\n position: new Animated.Value(this.props.scene.index),\n progress: new Animated.Value(0),\n scene: this.props.scene\n };\n\n appBar = this._renderHeader(headerProps);\n background = this._renderBackground(headerProps);\n }\n\n const { options } = scene.descriptor;\n const { headerStyle = {} } = options;\n const headerStyleObj = StyleSheet.flatten(headerStyle);\n const appBarHeight = getAppBarHeight(isLandscape);\n\n const {\n alignItems,\n justifyContent,\n flex,\n flexDirection,\n flexGrow,\n flexShrink,\n flexBasis,\n flexWrap,\n position,\n padding,\n paddingHorizontal,\n paddingRight,\n paddingLeft,\n // paddingVertical,\n // paddingTop,\n // paddingBottom,\n top,\n right,\n bottom,\n left,\n ...safeHeaderStyle\n } = headerStyleObj;\n\n if (__DEV__) {\n warnIfHeaderStyleDefined(alignItems, 'alignItems');\n warnIfHeaderStyleDefined(justifyContent, 'justifyContent');\n warnIfHeaderStyleDefined(flex, 'flex');\n warnIfHeaderStyleDefined(flexDirection, 'flexDirection');\n warnIfHeaderStyleDefined(flexGrow, 'flexGrow');\n warnIfHeaderStyleDefined(flexShrink, 'flexShrink');\n warnIfHeaderStyleDefined(flexBasis, 'flexBasis');\n warnIfHeaderStyleDefined(flexWrap, 'flexWrap');\n warnIfHeaderStyleDefined(padding, 'padding');\n warnIfHeaderStyleDefined(position, 'position');\n warnIfHeaderStyleDefined(paddingHorizontal, 'paddingHorizontal');\n warnIfHeaderStyleDefined(paddingRight, 'paddingRight');\n warnIfHeaderStyleDefined(paddingLeft, 'paddingLeft');\n // warnIfHeaderStyleDefined(paddingVertical, 'paddingVertical');\n // warnIfHeaderStyleDefined(paddingTop, 'paddingTop');\n // warnIfHeaderStyleDefined(paddingBottom, 'paddingBottom');\n warnIfHeaderStyleDefined(top, 'top');\n warnIfHeaderStyleDefined(right, 'right');\n warnIfHeaderStyleDefined(bottom, 'bottom');\n warnIfHeaderStyleDefined(left, 'left');\n }\n\n // TODO: warn if any unsafe styles are provided\n const containerStyles = [options.headerTransparent ? styles.transparentContainer : styles.container, { height: appBarHeight }, safeHeaderStyle];\n\n const { headerForceInset } = options;\n const forceInset = headerForceInset || { top: 'always', bottom: 'never' };\n\n return \n \n {background}\n {appBar}\n \n ;\n }\n}\n\nfunction warnIfHeaderStyleDefined(value, styleProp) {\n if (styleProp === 'position' && value === 'absolute') {\n console.warn(\"position: 'absolute' is not supported on headerStyle. If you would like to render content under the header, use the headerTransparent navigationOption.\");\n } else if (value !== undefined) {\n console.warn(`${styleProp} was given a value of ${value}, this has no effect on headerStyle.`);\n }\n}\n\nlet platformContainerStyles;\nif (Platform.OS === 'ios') {\n platformContainerStyles = {\n borderBottomWidth: StyleSheet.hairlineWidth,\n borderBottomColor: '#A7A7AA'\n };\n} else {\n platformContainerStyles = {\n shadowColor: 'black',\n shadowOpacity: 0.1,\n shadowRadius: StyleSheet.hairlineWidth,\n shadowOffset: {\n height: StyleSheet.hairlineWidth\n },\n elevation: 4\n };\n}\n\nconst DEFAULT_BACKGROUND_COLOR = '#FFF';\n\nconst styles = StyleSheet.create({\n container: {\n backgroundColor: DEFAULT_BACKGROUND_COLOR,\n ...platformContainerStyles\n },\n transparentContainer: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n ...platformContainerStyles,\n borderBottomWidth: 0,\n borderBottomColor: 'transparent',\n elevation: 0\n },\n header: {\n ...StyleSheet.absoluteFillObject,\n flexDirection: 'row'\n },\n item: {\n backgroundColor: 'transparent'\n },\n iconMaskContainer: {\n flex: 1,\n flexDirection: 'row',\n justifyContent: 'center'\n },\n iconMaskFillerRect: {\n flex: 1,\n backgroundColor: '#d8d8d8',\n marginLeft: -3\n },\n iconMask: {\n // These are mostly the same as the icon in ModularHeaderBackButton\n height: 21,\n width: 12,\n marginLeft: 9,\n marginTop: -0.5, // resizes down to 20.5\n alignSelf: 'center',\n resizeMode: 'contain',\n transform: [{ scaleX: I18nManager.isRTL ? -1 : 1 }]\n },\n // eslint-disable-next-line react-native/no-unused-styles\n title: {\n bottom: 0,\n top: 0,\n position: 'absolute',\n alignItems: 'center',\n flexDirection: 'row'\n },\n // eslint-disable-next-line react-native/no-unused-styles\n left: {\n left: 0,\n bottom: 0,\n top: 0,\n position: 'absolute',\n alignItems: 'center',\n flexDirection: 'row'\n },\n // eslint-disable-next-line react-native/no-unused-styles\n right: {\n right: 0,\n bottom: 0,\n top: 0,\n position: 'absolute',\n flexDirection: 'row',\n alignItems: 'center'\n },\n flexOne: {\n flex: 1\n }\n});\n\nexport default withOrientation(Header);","import React from 'react';\nimport { Platform, StyleSheet, Animated } from 'react-native';\n\nconst AnimatedText = Animated.Text;\n\nconst HeaderTitle = ({ style, ...rest }) => ;\n\nconst styles = StyleSheet.create({\n title: {\n fontSize: Platform.OS === 'ios' ? 17 : 20,\n fontWeight: Platform.OS === 'ios' ? '600' : '500',\n color: 'rgba(0, 0, 0, .9)',\n marginHorizontal: 16\n }\n});\n\nexport default HeaderTitle;","import React from 'react';\nimport { I18nManager, Image, Text, View, Platform, StyleSheet } from 'react-native';\n\nimport TouchableItem from '../TouchableItem';\n\nimport defaultBackImage from '../assets/back-icon.png';\n\nclass HeaderBackButton extends React.PureComponent {\n static defaultProps = {\n pressColorAndroid: 'rgba(0, 0, 0, .32)',\n tintColor: Platform.select({\n ios: '#037aff'\n }),\n truncatedTitle: 'Back'\n };\n\n state = {};\n\n _onTextLayout = e => {\n if (this.state.initialTextWidth) {\n return;\n }\n this.setState({\n initialTextWidth: e.nativeEvent.layout.x + e.nativeEvent.layout.width\n });\n };\n\n _renderBackImage() {\n const { backImage, title, tintColor } = this.props;\n\n let BackImage;\n let props;\n\n if (React.isValidElement(backImage)) {\n return backImage;\n } else if (backImage) {\n BackImage = backImage;\n props = {\n tintColor,\n title\n };\n } else {\n BackImage = Image;\n props = {\n style: [styles.icon, !!title && styles.iconWithTitle, !!tintColor && { tintColor }],\n source: defaultBackImage\n };\n }\n\n return ;\n }\n\n _maybeRenderTitle() {\n const {\n layoutPreset,\n backTitleVisible,\n width,\n title,\n titleStyle,\n tintColor,\n truncatedTitle\n } = this.props;\n\n const renderTruncated = this.state.initialTextWidth && width ? this.state.initialTextWidth > width : false;\n\n const backButtonTitle = renderTruncated ? truncatedTitle : title;\n\n // If the left preset is used and we aren't on Android, then we\n // default to disabling the label\n const titleDefaultsToDisabled = layoutPreset === 'left' || Platform.OS === 'android' || typeof backButtonTitle !== 'string';\n\n // If the title is explicitly enabled then we respect that\n if (titleDefaultsToDisabled && !backTitleVisible) {\n return null;\n }\n\n return \n {backButtonTitle}\n ;\n }\n\n render() {\n const { onPress, pressColorAndroid, title } = this.props;\n\n let button = \n \n {this._renderBackImage()}\n {this._maybeRenderTitle()}\n \n ;\n\n if (Platform.OS === 'android') {\n return {button};\n } else {\n return button;\n }\n }\n}\n\nconst styles = StyleSheet.create({\n androidButtonWrapper: {\n margin: 13,\n backgroundColor: 'transparent'\n },\n container: {\n alignItems: 'center',\n flexDirection: 'row',\n backgroundColor: 'transparent'\n },\n title: {\n fontSize: 17,\n paddingRight: 10\n },\n icon: Platform.OS === 'ios' ? {\n height: 21,\n width: 13,\n marginLeft: 9,\n marginRight: 22,\n marginVertical: 12,\n resizeMode: 'contain',\n transform: [{ scaleX: I18nManager.isRTL ? -1 : 1 }]\n } : {\n height: 24,\n width: 24,\n margin: 3,\n resizeMode: 'contain',\n transform: [{ scaleX: I18nManager.isRTL ? -1 : 1 }]\n },\n iconWithTitle: Platform.OS === 'ios' ? {\n marginRight: 6\n } : {}\n});\n\nexport default HeaderBackButton;","/**\n * TouchableItem renders a touchable that looks native on both iOS and Android.\n *\n * It provides an abstraction on top of TouchableNativeFeedback and\n * TouchableOpacity.\n *\n * On iOS you can pass the props of TouchableOpacity, on Android pass the props\n * of TouchableNativeFeedback.\n */\nimport React from 'react';\nimport { Platform, TouchableNativeFeedback, TouchableOpacity, View } from 'react-native';\n\nconst ANDROID_VERSION_LOLLIPOP = 21;\n\nexport default class TouchableItem extends React.Component {\n static defaultProps = {\n borderless: false,\n pressColor: 'rgba(0, 0, 0, .32)'\n };\n\n render() {\n /*\n * TouchableNativeFeedback.Ripple causes a crash on old Android versions,\n * therefore only enable it on Android Lollipop and above.\n *\n * All touchables on Android should have the ripple effect according to\n * platform design guidelines.\n * We need to pass the background prop to specify a borderless ripple effect.\n */\n if (Platform.OS === 'android' && Platform.Version >= ANDROID_VERSION_LOLLIPOP) {\n const { style, ...rest } = this.props;\n return \n {React.Children.only(this.props.children)}\n ;\n }\n\n return {this.props.children};\n }\n}","","import React from 'react';\nimport { I18nManager, Image, Text, View, StyleSheet } from 'react-native';\n\nimport TouchableItem from '../TouchableItem';\n\nimport defaultBackImage from '../assets/back-icon.png';\n\nclass ModularHeaderBackButton extends React.PureComponent {\n static defaultProps = {\n tintColor: '#037aff',\n truncatedTitle: 'Back'\n };\n\n state = {};\n\n _onTextLayout = e => {\n if (this.state.initialTextWidth) {\n return;\n }\n this.setState({\n initialTextWidth: e.nativeEvent.layout.x + e.nativeEvent.layout.width\n });\n };\n\n _renderBackImage() {\n const { backImage, title, tintColor } = this.props;\n\n let BackImage;\n let props;\n\n if (React.isValidElement(backImage)) {\n return backImage;\n } else if (backImage) {\n BackImage = backImage;\n props = {\n tintColor,\n title\n };\n } else {\n BackImage = Image;\n props = {\n style: [styles.icon, !!title && styles.iconWithTitle, !!tintColor && { tintColor }],\n source: defaultBackImage\n };\n }\n\n return ;\n }\n\n render() {\n const {\n onPress,\n width,\n title,\n titleStyle,\n tintColor,\n truncatedTitle\n } = this.props;\n\n const renderTruncated = this.state.initialTextWidth && width ? this.state.initialTextWidth > width : false;\n\n let backButtonTitle = renderTruncated ? truncatedTitle : title;\n\n // TODO: When we've sorted out measuring in the header, let's revisit this.\n // This is clearly a bad workaround.\n if (backButtonTitle && backButtonTitle.length > 8) {\n backButtonTitle = truncatedTitle;\n }\n\n const { ButtonContainerComponent, LabelContainerComponent } = this.props;\n\n return \n \n \n {this._renderBackImage()}\n \n {typeof backButtonTitle === 'string' && \n \n {backButtonTitle}\n \n }\n \n ;\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n flexDirection: 'row',\n backgroundColor: 'transparent'\n },\n title: {\n fontSize: 17,\n paddingRight: 10\n },\n icon: {\n height: 21,\n width: 12,\n marginLeft: 9,\n marginRight: 22,\n marginVertical: 12,\n resizeMode: 'contain',\n transform: [{ scaleX: I18nManager.isRTL ? -1 : 1 }]\n },\n iconWithTitle: {\n marginRight: 3\n }\n});\n\nexport default ModularHeaderBackButton;","import { Dimensions, I18nManager } from 'react-native';\nimport getSceneIndicesForInterpolationInputRange from '../../utils/getSceneIndicesForInterpolationInputRange';\n\nfunction hasHeader(scene) {\n if (!scene) {\n return true;\n }\n const { descriptor } = scene;\n return descriptor.options.header !== null;\n}\n\nconst crossFadeInterpolation = (scenes, first, index, last) => ({\n inputRange: [first, first + 0.001, index - 0.9, index - 0.2, index, last - 0.001, last],\n outputRange: [0, hasHeader(scenes[first]) ? 0 : 1, hasHeader(scenes[first]) ? 0 : 1, hasHeader(scenes[first]) ? 0.3 : 1, hasHeader(scenes[index]) ? 1 : 0, hasHeader(scenes[last]) ? 0 : 1, 0]\n});\n\n/**\n * Utilities that build the style for the navigation header.\n *\n * +-------------+-------------+-------------+\n * | | | |\n * | Left | Title | Right |\n * | Component | Component | Component |\n * | | | |\n * +-------------+-------------+-------------+\n */\n\nfunction isGoingBack(scenes) {\n const lastSceneIndexInScenes = scenes.length - 1;\n return !scenes[lastSceneIndexInScenes].isActive;\n}\n\nfunction forLayout(props) {\n const { layout, position, scene, scenes, mode } = props;\n if (mode !== 'float') {\n return {};\n }\n const isBack = isGoingBack(scenes);\n\n const interpolate = getSceneIndicesForInterpolationInputRange(props);\n if (!interpolate) return {};\n\n const { first, last } = interpolate;\n const index = scene.index;\n\n // We really shouldn't render the scene at all until we know the width of the\n // stack. That said, in every case that I have ever seen, this has just been\n // the full width of the window. This won't continue to be true if we support\n // layouts like iPad master-detail. For now, in order to solve\n // https://github.com/react-navigation/react-navigation/issues/4264, I have\n // opted for the heuristic that we will use the window width until we have\n // measured (and they will usually be the same).\n const width = layout.initWidth || Dimensions.get('window').width;\n\n // Make sure the header stays hidden when transitioning between 2 screens\n // with no header.\n if (isBack && !hasHeader(scenes[index]) && !hasHeader(scenes[last]) || !isBack && !hasHeader(scenes[first]) && !hasHeader(scenes[index])) {\n return {\n transform: [{ translateX: width }]\n };\n }\n\n const rtlMult = I18nManager.isRTL ? -1 : 1;\n const translateX = position.interpolate({\n inputRange: [first, index, last],\n outputRange: [rtlMult * (hasHeader(scenes[first]) ? 0 : width), rtlMult * (hasHeader(scenes[index]) ? 0 : isBack ? width : -width), rtlMult * (hasHeader(scenes[last]) ? 0 : -width)]\n });\n\n return {\n transform: [{ translateX }]\n };\n}\n\nfunction forLeft(props) {\n const { position, scene, scenes } = props;\n const interpolate = getSceneIndicesForInterpolationInputRange(props);\n\n if (!interpolate) return { opacity: 0 };\n\n const { first, last } = interpolate;\n const index = scene.index;\n\n return {\n opacity: position.interpolate(crossFadeInterpolation(scenes, first, index, last))\n };\n}\n\nfunction forCenter(props) {\n const { position, scene, scenes } = props;\n const interpolate = getSceneIndicesForInterpolationInputRange(props);\n\n if (!interpolate) return { opacity: 0 };\n\n const { first, last } = interpolate;\n const index = scene.index;\n\n return {\n opacity: position.interpolate(crossFadeInterpolation(scenes, first, index, last))\n };\n}\n\nfunction forRight(props) {\n const { position, scene, scenes } = props;\n const interpolate = getSceneIndicesForInterpolationInputRange(props);\n\n if (!interpolate) return { opacity: 0 };\n const { first, last } = interpolate;\n const index = scene.index;\n\n return {\n opacity: position.interpolate(crossFadeInterpolation(scenes, first, index, last))\n };\n}\n\n/**\n * iOS UINavigationController style interpolators\n */\n\nfunction forLeftButton(props) {\n const { position, scene, scenes } = props;\n const interpolate = getSceneIndicesForInterpolationInputRange(props);\n\n if (!interpolate) return { opacity: 0 };\n\n const { first, last } = interpolate;\n const index = scene.index;\n\n // The gist of what we're doing here is animating the left button _normally_ (fast fade)\n // when both scenes in transition have headers. When the current, next, or previous scene _don't_\n // have a header, we don't fade the button, and only set it's opacity to 0 at the last moment\n // of the transition.\n const inputRange = [first, first + 0.001, first + Math.abs(index - first) / 2, index, last - Math.abs(last - index) / 2, last - 0.001, last];\n const outputRange = [0, hasHeader(scenes[first]) ? 0 : 1, hasHeader(scenes[first]) ? 0.1 : 1, hasHeader(scenes[index]) ? 1 : 0, hasHeader(scenes[last]) ? 0.1 : 1, hasHeader(scenes[last]) ? 0 : 1, 0];\n\n return {\n opacity: position.interpolate({\n inputRange,\n outputRange\n })\n };\n}\n\n/*\n * NOTE: this offset calculation is an approximation that gives us\n * decent results in many cases, but it is ultimately a poor substitute\n * for text measurement. See the comment on title for more information.\n *\n * - 70 is the width of the left button area.\n * - 25 is the width of the left button icon (to account for label offset)\n */\nconst LEFT_LABEL_OFFSET = Dimensions.get('window').width / 2 - 70 - 25;\nfunction forLeftLabel(props) {\n const { position, scene, scenes } = props;\n const interpolate = getSceneIndicesForInterpolationInputRange(props);\n\n if (!interpolate) return { opacity: 0 };\n\n const { first, last } = interpolate;\n const index = scene.index;\n\n const offset = LEFT_LABEL_OFFSET;\n\n // Similarly to the animation of the left label, when animating to or from a scene without\n // a header, we keep the label at full opacity and in the same position for as long as possible.\n return {\n // For now we fade out the label before fading in the title, so the\n // differences between the label and title position can be hopefully not so\n // noticable to the user\n opacity: position.interpolate({\n inputRange: [first, first + 0.001, index - 0.35, index, index + 0.5, last - 0.001, last],\n outputRange: [0, hasHeader(scenes[first]) ? 0 : 1, hasHeader(scenes[first]) ? 0 : 1, hasHeader(scenes[index]) ? 1 : 0, hasHeader(scenes[last]) ? 0.5 : 1, hasHeader(scenes[last]) ? 0 : 1, 0]\n }),\n transform: [{\n translateX: position.interpolate({\n inputRange: [first, first + 0.001, index, last - 0.001, last],\n outputRange: I18nManager.isRTL ? [-offset * 1.5, hasHeader(scenes[first]) ? -offset * 1.5 : 0, 0, hasHeader(scenes[last]) ? offset : 0, offset] : [offset, hasHeader(scenes[first]) ? offset : 0, 0, hasHeader(scenes[last]) ? -offset * 1.5 : 0, -offset * 1.5]\n })\n }]\n };\n}\n\n/*\n * NOTE: this offset calculation is a an approximation that gives us\n * decent results in many cases, but it is ultimately a poor substitute\n * for text measurement. We want the back button label to transition\n * smoothly into the title text and to do this we need to understand\n * where the title is positioned within the title container (since it is\n * centered).\n *\n * - 70 is the width of the left button area.\n * - 25 is the width of the left button icon (to account for label offset)\n */\nconst TITLE_OFFSET_IOS = Dimensions.get('window').width / 2 - 70 + 25;\nfunction forCenterFromLeft(props) {\n const { position, scene, scenes } = props;\n const interpolate = getSceneIndicesForInterpolationInputRange(props);\n\n if (!interpolate) return { opacity: 0 };\n\n const { first, last } = interpolate;\n const index = scene.index;\n const offset = TITLE_OFFSET_IOS;\n\n return {\n opacity: position.interpolate({\n inputRange: [first, first + 0.001, index - 0.5, index, index + 0.7, last - 0.001, last],\n outputRange: [0, hasHeader(scenes[first]) ? 0 : 1, hasHeader(scenes[first]) ? 0 : 1, hasHeader(scenes[index]) ? 1 : 0, hasHeader(scenes[last]) ? 0 : 1, hasHeader(scenes[last]) ? 0 : 1, 0]\n }),\n transform: [{\n translateX: position.interpolate({\n inputRange: [first, first + 0.001, index, last - 0.001, last],\n outputRange: I18nManager.isRTL ? [-offset, hasHeader(scenes[first]) ? -offset : 0, 0, hasHeader(scenes[last]) ? offset : 0, offset] : [offset, hasHeader(scenes[first]) ? offset : 0, 0, hasHeader(scenes[last]) ? -offset : 0, -offset]\n })\n }]\n };\n}\n\n// Default to no transition\nfunction forBackground() {\n return null;\n}\n\n// Translate the background with the card\nconst BACKGROUND_OFFSET = Dimensions.get('window').width;\nfunction forBackgroundWithTranslation(props) {\n const { position, scene } = props;\n const interpolate = getSceneIndicesForInterpolationInputRange(props);\n if (!interpolate) return { opacity: 0 };\n const { first, last } = interpolate;\n const index = scene.index;\n const offset = BACKGROUND_OFFSET;\n const outputRange = [offset, 0, -offset];\n return {\n transform: [{\n translateX: position.interpolate({\n inputRange: [first, index, last],\n outputRange: I18nManager.isRTL ? outputRange.reverse() : outputRange\n })\n }]\n };\n}\n\nexport default {\n forLayout,\n forLeft,\n forLeftButton,\n forLeftLabel,\n forCenterFromLeft,\n forCenter,\n forRight,\n forBackground,\n forBackgroundWithTranslation\n};","function getSceneIndicesForInterpolationInputRange(props) {\n const { scene, scenes } = props;\n const index = scene.index;\n const lastSceneIndexInScenes = scenes.length - 1;\n const isBack = !scenes[lastSceneIndexInScenes].isActive;\n\n if (isBack) {\n const currentSceneIndexInScenes = scenes.findIndex(item => item === scene);\n const targetSceneIndexInScenes = scenes.findIndex(item => item.isActive);\n const targetSceneIndex = scenes[targetSceneIndexInScenes].index;\n const lastSceneIndex = scenes[lastSceneIndexInScenes].index;\n\n if (index !== targetSceneIndex && currentSceneIndexInScenes === lastSceneIndexInScenes) {\n return {\n first: Math.min(targetSceneIndex, index - 1),\n last: index + 1\n };\n } else if (index === targetSceneIndex && currentSceneIndexInScenes === targetSceneIndexInScenes) {\n return {\n first: index - 1,\n last: Math.max(lastSceneIndex, index + 1)\n };\n } else if (index === targetSceneIndex || currentSceneIndexInScenes > targetSceneIndexInScenes) {\n return null;\n } else {\n return { first: index - 1, last: index + 1 };\n }\n } else {\n return { first: index - 1, last: index + 1 };\n }\n}\n\nexport default getSceneIndicesForInterpolationInputRange;","","import { Animated, Easing, Platform } from 'react-native';\nimport StyleInterpolator from './StackViewStyleInterpolator';\nimport { supportsImprovedSpringAnimation } from '../../utils/ReactNativeFeatures';\n\nlet IOSTransitionSpec;\nif (supportsImprovedSpringAnimation()) {\n // These are the exact values from UINavigationController's animation configuration\n IOSTransitionSpec = {\n timing: Animated.spring,\n stiffness: 1000,\n damping: 500,\n mass: 3\n };\n} else {\n // This is an approximation of the IOS spring animation using a derived bezier curve\n IOSTransitionSpec = {\n duration: 500,\n easing: Easing.bezier(0.2833, 0.99, 0.31833, 0.99),\n timing: Animated.timing\n };\n}\n\n// Standard iOS navigation transition\nconst SlideFromRightIOS = {\n transitionSpec: IOSTransitionSpec,\n screenInterpolator: StyleInterpolator.forHorizontal,\n containerStyle: {\n backgroundColor: '#000'\n }\n};\n\n// Standard iOS navigation transition for modals\nconst ModalSlideFromBottomIOS = {\n transitionSpec: IOSTransitionSpec,\n screenInterpolator: StyleInterpolator.forVertical,\n containerStyle: {\n backgroundColor: '#000'\n }\n};\n\n// Standard Android navigation transition when opening an Activity\nconst FadeInFromBottomAndroid = {\n // See http://androidxref.com/7.1.1_r6/xref/frameworks/base/core/res/res/anim/activity_open_enter.xml\n transitionSpec: {\n duration: 350,\n easing: Easing.out(Easing.poly(5)), // decelerate\n timing: Animated.timing\n },\n screenInterpolator: StyleInterpolator.forFadeFromBottomAndroid\n};\n\n// Standard Android navigation transition when closing an Activity\nconst FadeOutToBottomAndroid = {\n // See http://androidxref.com/7.1.1_r6/xref/frameworks/base/core/res/res/anim/activity_close_exit.xml\n transitionSpec: {\n duration: 230,\n easing: Easing.in(Easing.poly(4)), // accelerate\n timing: Animated.timing\n },\n screenInterpolator: StyleInterpolator.forFadeFromBottomAndroid\n};\n\nfunction defaultTransitionConfig(transitionProps, prevTransitionProps, isModal) {\n if (Platform.OS === 'android') {\n // Use the default Android animation no matter if the screen is a modal.\n // Android doesn't have full-screen modals like iOS does, it has dialogs.\n if (prevTransitionProps && transitionProps.index < prevTransitionProps.index) {\n // Navigating back to the previous screen\n return FadeOutToBottomAndroid;\n }\n return FadeInFromBottomAndroid;\n }\n // iOS and other platforms\n if (isModal) {\n return ModalSlideFromBottomIOS;\n }\n return SlideFromRightIOS;\n}\n\nfunction getTransitionConfig(transitionConfigurer, transitionProps, prevTransitionProps, isModal) {\n const defaultConfig = defaultTransitionConfig(transitionProps, prevTransitionProps, isModal);\n if (transitionConfigurer) {\n return {\n ...defaultConfig,\n ...transitionConfigurer(transitionProps, prevTransitionProps, isModal)\n };\n }\n return defaultConfig;\n}\n\nexport default {\n defaultTransitionConfig,\n getTransitionConfig,\n SlideFromRightIOS,\n ModalSlideFromBottomIOS,\n FadeInFromBottomAndroid,\n FadeOutToBottomAndroid\n};","import { I18nManager } from 'react-native';\nimport getSceneIndicesForInterpolationInputRange from '../../utils/getSceneIndicesForInterpolationInputRange';\n\n/**\n * Utility that builds the style for the card in the cards stack.\n *\n * +------------+\n * +-+ |\n * +-+ | |\n * | | | |\n * | | | Focused |\n * | | | Card |\n * | | | |\n * +-+ | |\n * +-+ |\n * +------------+\n */\n\n/**\n * Render the initial style when the initial layout isn't measured yet.\n */\nfunction forInitial(props) {\n const { navigation, scene } = props;\n\n const focused = navigation.state.index === scene.index;\n const opacity = focused ? 1 : 0;\n // If not focused, move the scene far away.\n const translate = focused ? 0 : 1000000;\n return {\n opacity,\n transform: [{ translateX: translate }, { translateY: translate }]\n };\n}\n\n/**\n * Standard iOS-style slide in from the right.\n */\nfunction forHorizontal(props) {\n const { layout, position, scene } = props;\n\n if (!layout.isMeasured) {\n return forInitial(props);\n }\n const interpolate = getSceneIndicesForInterpolationInputRange(props);\n\n if (!interpolate) return { opacity: 0 };\n\n const { first, last } = interpolate;\n const index = scene.index;\n const opacity = position.interpolate({\n inputRange: [first, first + 0.01, index, last - 0.01, last],\n outputRange: [0, 1, 1, 0.85, 0],\n extrapolate: 'clamp'\n });\n\n const width = layout.initWidth;\n const translateX = position.interpolate({\n inputRange: [first, index, last],\n outputRange: I18nManager.isRTL ? [-width, 0, width * 0.3] : [width, 0, width * -0.3],\n extrapolate: 'clamp'\n });\n const translateY = 0;\n\n return {\n opacity,\n transform: [{ translateX }, { translateY }]\n };\n}\n\n/**\n * Standard iOS-style slide in from the bottom (used for modals).\n */\nfunction forVertical(props) {\n const { layout, position, scene } = props;\n\n if (!layout.isMeasured) {\n return forInitial(props);\n }\n const interpolate = getSceneIndicesForInterpolationInputRange(props);\n\n if (!interpolate) return { opacity: 0 };\n\n const { first, last } = interpolate;\n const index = scene.index;\n const opacity = position.interpolate({\n inputRange: [first, first + 0.01, index, last - 0.01, last],\n outputRange: [0, 1, 1, 0.85, 0],\n extrapolate: 'clamp'\n });\n\n const height = layout.initHeight;\n const translateY = position.interpolate({\n inputRange: [first, index, last],\n outputRange: [height, 0, 0],\n extrapolate: 'clamp'\n });\n const translateX = 0;\n\n return {\n opacity,\n transform: [{ translateX }, { translateY }]\n };\n}\n\n/**\n * Standard Android-style fade in from the bottom.\n */\nfunction forFadeFromBottomAndroid(props) {\n const { layout, position, scene } = props;\n\n if (!layout.isMeasured) {\n return forInitial(props);\n }\n const interpolate = getSceneIndicesForInterpolationInputRange(props);\n\n if (!interpolate) return { opacity: 0 };\n\n const { first, last } = interpolate;\n const index = scene.index;\n const inputRange = [first, index, last - 0.01, last];\n\n const opacity = position.interpolate({\n inputRange,\n outputRange: [0, 1, 1, 0],\n extrapolate: 'clamp'\n });\n\n const translateY = position.interpolate({\n inputRange,\n outputRange: [50, 0, 0, 0],\n extrapolate: 'clamp'\n });\n const translateX = 0;\n\n return {\n opacity,\n transform: [{ translateX }, { translateY }]\n };\n}\n\n/**\n * fadeIn and fadeOut\n */\nfunction forFade(props) {\n const { layout, position, scene } = props;\n\n if (!layout.isMeasured) {\n return forInitial(props);\n }\n const interpolate = getSceneIndicesForInterpolationInputRange(props);\n\n if (!interpolate) return { opacity: 0 };\n\n const { first, last } = interpolate;\n const index = scene.index;\n const opacity = position.interpolate({\n inputRange: [first, index, last],\n outputRange: [0, 1, 1],\n extrapolate: 'clamp'\n });\n\n return {\n opacity\n };\n}\n\nexport default {\n forHorizontal,\n forVertical,\n forFadeFromBottomAndroid,\n forFade\n};","import { NativeModules } from 'react-native';\nconst { PlatformConstants } = NativeModules;\n\nexport const supportsImprovedSpringAnimation = () => {\n if (PlatformConstants && PlatformConstants.reactNativeVersion) {\n const { major, minor } = PlatformConstants.reactNativeVersion;\n return minor >= 50 || major === 0 && minor === 0; // `master` has major + minor set to 0\n }\n return false;\n};","import React from 'react';\nimport { Animated, Easing, StyleSheet, View } from 'react-native';\nimport invariant from '../utils/invariant';\n\nimport NavigationScenesReducer from './ScenesReducer';\n\n// Used for all animations unless overriden\nconst DefaultTransitionSpec = {\n duration: 250,\n easing: Easing.inOut(Easing.ease),\n timing: Animated.timing\n};\n\nclass Transitioner extends React.Component {\n constructor(props, context) {\n super(props, context);\n\n // The initial layout isn't measured. Measured layout will be only available\n // when the component is mounted.\n const layout = {\n height: new Animated.Value(0),\n initHeight: 0,\n initWidth: 0,\n isMeasured: false,\n width: new Animated.Value(0)\n };\n\n this.state = {\n layout,\n position: new Animated.Value(this.props.navigation.state.index),\n progress: new Animated.Value(1),\n scenes: NavigationScenesReducer([], this.props.navigation.state, null, this.props.descriptors)\n };\n\n this._prevTransitionProps = null;\n this._transitionProps = buildTransitionProps(props, this.state);\n this._isMounted = false;\n this._isTransitionRunning = false;\n this._queuedTransition = null;\n }\n\n componentDidMount() {\n this._isMounted = true;\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n }\n\n // eslint-disable-next-line react/no-deprecated\n componentWillReceiveProps(nextProps) {\n let nextScenes = NavigationScenesReducer(this.state.scenes, nextProps.navigation.state, this.props.navigation.state, nextProps.descriptors);\n if (!nextProps.navigation.state.isTransitioning) {\n nextScenes = filterStale(nextScenes);\n }\n\n // Update nextScenes when we change screenProps\n // This is a workaround for https://github.com/react-navigation/react-navigation/issues/4271\n if (nextProps.screenProps !== this.props.screenProps) {\n this.setState({ nextScenes });\n }\n\n if (nextScenes === this.state.scenes) {\n return;\n }\n\n const indexHasChanged = nextProps.navigation.state.index !== this.props.navigation.state.index;\n if (this._isTransitionRunning) {\n this._queuedTransition = { nextProps, nextScenes, indexHasChanged };\n return;\n }\n\n this._startTransition(nextProps, nextScenes, indexHasChanged);\n }\n\n _startTransition(nextProps, nextScenes, indexHasChanged) {\n const nextState = {\n ...this.state,\n scenes: nextScenes\n };\n\n const { position, progress } = nextState;\n\n progress.setValue(0);\n\n this._prevTransitionProps = this._transitionProps;\n this._transitionProps = buildTransitionProps(nextProps, nextState);\n\n const toValue = nextProps.navigation.state.index;\n\n if (!this._transitionProps.navigation.state.isTransitioning) {\n this.setState(nextState, async () => {\n const result = nextProps.onTransitionStart(this._transitionProps, this._prevTransitionProps);\n if (result instanceof Promise) {\n await result;\n }\n progress.setValue(1);\n position.setValue(toValue);\n this._onTransitionEnd();\n });\n return;\n }\n\n // get the transition spec.\n const transitionUserSpec = nextProps.configureTransition ? nextProps.configureTransition(this._transitionProps, this._prevTransitionProps) : null;\n\n const transitionSpec = {\n ...DefaultTransitionSpec,\n ...transitionUserSpec\n };\n\n const { timing } = transitionSpec;\n delete transitionSpec.timing;\n\n const positionHasChanged = position.__getValue() !== toValue;\n\n // if swiped back, indexHasChanged == true && positionHasChanged == false\n const animations = indexHasChanged && positionHasChanged ? [timing(progress, {\n ...transitionSpec,\n toValue: 1\n }), timing(position, {\n ...transitionSpec,\n toValue: nextProps.navigation.state.index\n })] : [];\n\n // update scenes and play the transition\n this._isTransitionRunning = true;\n this.setState(nextState, async () => {\n if (nextProps.onTransitionStart) {\n const result = nextProps.onTransitionStart(this._transitionProps, this._prevTransitionProps);\n\n if (result instanceof Promise) {\n await result;\n }\n }\n Animated.parallel(animations).start(this._onTransitionEnd);\n });\n }\n\n render() {\n return \n {this.props.render(this._transitionProps, this._prevTransitionProps)}\n ;\n }\n\n _onLayout = event => {\n const { height, width } = event.nativeEvent.layout;\n if (this.state.layout.initWidth === width && this.state.layout.initHeight === height) {\n return;\n }\n const layout = {\n ...this.state.layout,\n initHeight: height,\n initWidth: width,\n isMeasured: true\n };\n\n layout.height.setValue(height);\n layout.width.setValue(width);\n\n const nextState = {\n ...this.state,\n layout\n };\n\n this._transitionProps = buildTransitionProps(this.props, nextState);\n this.setState(nextState);\n };\n\n _onTransitionEnd = () => {\n if (!this._isMounted) {\n return;\n }\n const prevTransitionProps = this._prevTransitionProps;\n this._prevTransitionProps = null;\n\n const scenes = filterStale(this.state.scenes);\n\n const nextState = {\n ...this.state,\n scenes\n };\n\n this._transitionProps = buildTransitionProps(this.props, nextState);\n\n this.setState(nextState, async () => {\n if (this.props.onTransitionEnd) {\n const result = this.props.onTransitionEnd(this._transitionProps, prevTransitionProps);\n\n if (result instanceof Promise) {\n await result;\n }\n }\n\n if (this._queuedTransition) {\n this._startTransition(this._queuedTransition.nextProps, this._queuedTransition.nextScenes, this._queuedTransition.indexHasChanged);\n this._queuedTransition = null;\n } else {\n this._isTransitionRunning = false;\n }\n });\n };\n}\n\nfunction buildTransitionProps(props, state) {\n const { navigation } = props;\n\n const { layout, position, progress, scenes } = state;\n\n const scene = scenes.find(isSceneActive);\n\n invariant(scene, 'Could not find active scene');\n\n return {\n layout,\n navigation,\n position,\n progress,\n scenes,\n scene,\n index: scene.index\n };\n}\n\nfunction isSceneNotStale(scene) {\n return !scene.isStale;\n}\n\nfunction filterStale(scenes) {\n const filtered = scenes.filter(isSceneNotStale);\n if (filtered.length === scenes.length) {\n return scenes;\n }\n return filtered;\n}\n\nfunction isSceneActive(scene) {\n return scene.isActive;\n}\n\nconst styles = StyleSheet.create({\n main: {\n flex: 1\n }\n});\n\nexport default Transitioner;","import invariant from '../utils/invariant';\nimport shallowEqual from '../utils/shallowEqual';\n\nconst SCENE_KEY_PREFIX = 'scene_';\n\n/**\n * Helper function to compare route keys (e.g. \"9\", \"11\").\n */\nfunction compareKey(one, two) {\n const delta = one.length - two.length;\n if (delta > 0) {\n return 1;\n }\n if (delta < 0) {\n return -1;\n }\n return one > two ? 1 : -1;\n}\n\n/**\n * Helper function to sort scenes based on their index and view key.\n */\nfunction compareScenes(one, two) {\n if (one.index > two.index) {\n return 1;\n }\n if (one.index < two.index) {\n return -1;\n }\n\n return compareKey(one.key, two.key);\n}\n\n/**\n * Whether two routes are the same.\n */\nfunction areScenesShallowEqual(one, two) {\n return one.key === two.key && one.index === two.index && one.isStale === two.isStale && one.isActive === two.isActive && areRoutesShallowEqual(one.route, two.route);\n}\n\n/**\n * Whether two routes are the same.\n */\nfunction areRoutesShallowEqual(one, two) {\n if (!one || !two) {\n return one === two;\n }\n\n if (one.key !== two.key) {\n return false;\n }\n\n return shallowEqual(one, two);\n}\n\nexport default function ScenesReducer(scenes, nextState, prevState, descriptors) {\n // Always update the descriptors\n // This is a workaround for https://github.com/react-navigation/react-navigation/issues/4271\n // It will be resolved in a better way when we re-write Transitioner\n scenes.forEach(scene => {\n const { route } = scene;\n if (descriptors && descriptors[route.key]) {\n scene.descriptor = descriptors[route.key];\n }\n });\n\n // Bail out early if we didn't update the state\n if (prevState === nextState) {\n return scenes;\n }\n\n const prevScenes = new Map();\n const freshScenes = new Map();\n const staleScenes = new Map();\n\n // Populate stale scenes from previous scenes marked as stale.\n scenes.forEach(scene => {\n const { key } = scene;\n if (scene.isStale) {\n staleScenes.set(key, scene);\n }\n prevScenes.set(key, scene);\n });\n\n const nextKeys = new Set();\n nextState.routes.forEach((route, index) => {\n const key = SCENE_KEY_PREFIX + route.key;\n\n let descriptor = descriptors && descriptors[route.key];\n\n const scene = {\n index,\n isActive: false,\n isStale: false,\n key,\n route,\n descriptor\n };\n invariant(!nextKeys.has(key), `navigation.state.routes[${index}].key \"${key}\" conflicts with ` + 'another route!');\n nextKeys.add(key);\n\n if (staleScenes.has(key)) {\n // A previously `stale` scene is now part of the nextState, so we\n // revive it by removing it from the stale scene map.\n staleScenes.delete(key);\n }\n freshScenes.set(key, scene);\n });\n\n if (prevState) {\n // Look at the previous routes and classify any removed scenes as `stale`.\n prevState.routes.forEach((route, index) => {\n const key = SCENE_KEY_PREFIX + route.key;\n if (freshScenes.has(key)) {\n return;\n }\n const lastScene = scenes.find(scene => scene.route.key === route.key);\n\n // We can get into a weird place where we have a queued transition and then clobber\n // that transition without ever actually rendering the scene, in which case\n // there is no lastScene. If the descriptor is not available on the lastScene\n // or the descriptors prop then we just skip adding it to stale scenes and it's\n // not ever rendered.\n const descriptor = lastScene ? lastScene.descriptor : descriptors[route.key];\n\n if (descriptor) {\n staleScenes.set(key, {\n index,\n isActive: false,\n isStale: true,\n key,\n route,\n descriptor\n });\n }\n });\n }\n\n const nextScenes = [];\n\n const mergeScene = nextScene => {\n const { key } = nextScene;\n const prevScene = prevScenes.has(key) ? prevScenes.get(key) : null;\n if (prevScene && areScenesShallowEqual(prevScene, nextScene)) {\n // Reuse `prevScene` as `scene` so view can avoid unnecessary re-render.\n // This assumes that the scene's navigation state is immutable.\n nextScenes.push(prevScene);\n } else {\n nextScenes.push(nextScene);\n }\n };\n\n staleScenes.forEach(mergeScene);\n freshScenes.forEach(mergeScene);\n\n nextScenes.sort(compareScenes);\n\n let activeScenesCount = 0;\n nextScenes.forEach((scene, ii) => {\n const isActive = !scene.isStale && scene.index === nextState.index;\n if (isActive !== scene.isActive) {\n nextScenes[ii] = {\n ...scene,\n isActive\n };\n }\n if (isActive) {\n activeScenesCount++;\n }\n });\n\n invariant(activeScenesCount === 1, 'there should always be only one scene active, not %s.', activeScenesCount);\n\n if (nextScenes.length !== scenes.length) {\n return nextScenes;\n }\n\n if (nextScenes.some((scene, index) => !areScenesShallowEqual(scenes[index], scene))) {\n return nextScenes;\n }\n\n // scenes haven't changed.\n return scenes;\n}","const hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (let i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nexport default shallowEqual;","import createNavigationContainer from '../createNavigationContainer';\nimport createSwitchNavigator from './createSwitchNavigator';\n\nconst SwitchNavigator = (routeConfigs, config = {}) => {\n const navigator = createSwitchNavigator(routeConfigs, config);\n return createNavigationContainer(navigator);\n};\n\nexport default SwitchNavigator;\n","import createNavigator from '../navigators/createNavigator';\nimport SwitchRouter from '../routers/SwitchRouter';\nimport SwitchView from '../views/SwitchView/SwitchView';\n\nfunction createSwitchNavigator(routeConfigMap, switchConfig = {}) {\n const router = SwitchRouter(routeConfigMap, switchConfig);\n const Navigator = createNavigator(SwitchView, router, switchConfig);\n return Navigator;\n}\n\nexport default createSwitchNavigator;\n","import invariant from '../utils/invariant';\nimport getScreenForRouteName from './getScreenForRouteName';\nimport createConfigGetter from './createConfigGetter';\n\nimport NavigationActions from '../NavigationActions';\nimport StackActions from './StackActions';\nimport validateRouteConfigMap from './validateRouteConfigMap';\nimport { createPathParser } from './pathUtils';\n\nconst defaultActionCreators = (route, navStateKey) => ({});\n\nfunction childrenUpdateWithoutSwitchingIndex(actionType) {\n return [\n NavigationActions.SET_PARAMS,\n // Todo: make SwitchRouter not depend on StackActions..\n StackActions.COMPLETE_TRANSITION,\n ].includes(actionType);\n}\n\nexport default (routeConfigs, config = {}) => {\n // Fail fast on invalid route definitions\n validateRouteConfigMap(routeConfigs);\n\n const order = config.order || Object.keys(routeConfigs);\n\n const getCustomActionCreators =\n config.getCustomActionCreators || defaultActionCreators;\n\n const initialRouteParams = config.initialRouteParams;\n const initialRouteName = config.initialRouteName || order[0];\n const backBehavior = config.backBehavior || 'none';\n const shouldBackNavigateToInitialRoute = backBehavior === 'initialRoute';\n const resetOnBlur = config.hasOwnProperty('resetOnBlur')\n ? config.resetOnBlur\n : true;\n const initialRouteIndex = order.indexOf(initialRouteName);\n const childRouters = {};\n order.forEach(routeName => {\n const routeConfig = routeConfigs[routeName];\n childRouters[routeName] = null;\n const screen = getScreenForRouteName(routeConfigs, routeName);\n if (screen.router) {\n childRouters[routeName] = screen.router;\n }\n });\n\n const {\n getPathAndParamsForRoute,\n getActionForPathAndParams,\n } = createPathParser(childRouters, routeConfigs, config);\n\n if (initialRouteIndex === -1) {\n throw new Error(\n `Invalid initialRouteName '${initialRouteName}'.` +\n `Should be one of ${order.map(n => `\"${n}\"`).join(', ')}`\n );\n }\n\n function resetChildRoute(routeName) {\n const params =\n routeName === initialRouteName ? initialRouteParams : undefined;\n const childRouter = childRouters[routeName];\n if (childRouter) {\n const childAction = NavigationActions.init();\n return {\n ...childRouter.getStateForAction(childAction),\n key: routeName,\n routeName,\n params,\n };\n }\n return {\n key: routeName,\n routeName,\n params,\n };\n }\n\n function getNextState(prevState, possibleNextState) {\n if (!prevState) {\n return possibleNextState;\n }\n\n let nextState;\n if (prevState.index !== possibleNextState.index && resetOnBlur) {\n const prevRouteName = prevState.routes[prevState.index].routeName;\n const nextRoutes = [...possibleNextState.routes];\n nextRoutes[prevState.index] = resetChildRoute(prevRouteName);\n\n return {\n ...possibleNextState,\n routes: nextRoutes,\n };\n } else {\n nextState = possibleNextState;\n }\n\n return nextState;\n }\n\n function getInitialState() {\n const routes = order.map(resetChildRoute);\n return {\n routes,\n index: initialRouteIndex,\n isTransitioning: false,\n };\n }\n\n return {\n childRouters,\n\n getActionCreators(route, stateKey) {\n return getCustomActionCreators(route, stateKey);\n },\n\n getStateForAction(action, inputState) {\n let prevState = inputState ? { ...inputState } : inputState;\n let state = inputState || getInitialState();\n let activeChildIndex = state.index;\n\n if (action.type === NavigationActions.INIT) {\n // NOTE(brentvatne): this seems weird... why are we merging these\n // params into child routes?\n // ---------------------------------------------------------------\n // Merge any params from the action into all the child routes\n const { params } = action;\n if (params) {\n state.routes = state.routes.map(route => ({\n ...route,\n params: {\n ...route.params,\n ...params,\n ...(route.routeName === initialRouteName\n ? initialRouteParams\n : null),\n },\n }));\n }\n }\n\n // Let the current child handle it\n const activeChildLastState = state.routes[state.index];\n const activeChildRouter = childRouters[order[state.index]];\n if (activeChildRouter) {\n const activeChildState = activeChildRouter.getStateForAction(\n action,\n activeChildLastState\n );\n if (!activeChildState && inputState) {\n return null;\n }\n if (activeChildState && activeChildState !== activeChildLastState) {\n const routes = [...state.routes];\n routes[state.index] = activeChildState;\n return getNextState(prevState, {\n ...state,\n routes,\n });\n }\n }\n\n // Handle tab changing. Do this after letting the current tab try to\n // handle the action, to allow inner children to change first\n const isBackEligible =\n action.key == null || action.key === activeChildLastState.key;\n if (action.type === NavigationActions.BACK) {\n if (isBackEligible && shouldBackNavigateToInitialRoute) {\n activeChildIndex = initialRouteIndex;\n } else {\n return state;\n }\n }\n\n let didNavigate = false;\n if (action.type === NavigationActions.NAVIGATE) {\n didNavigate = !!order.find((childId, i) => {\n if (childId === action.routeName) {\n activeChildIndex = i;\n return true;\n }\n return false;\n });\n if (didNavigate) {\n const childState = state.routes[activeChildIndex];\n const childRouter = childRouters[action.routeName];\n let newChildState;\n\n if (action.action) {\n newChildState = childRouter\n ? childRouter.getStateForAction(action.action, childState)\n : null;\n } else if (!action.action && action.params) {\n newChildState = {\n ...childState,\n params: {\n ...(childState.params || {}),\n ...action.params,\n },\n };\n }\n\n if (newChildState && newChildState !== childState) {\n const routes = [...state.routes];\n routes[activeChildIndex] = newChildState;\n return getNextState(prevState, {\n ...state,\n routes,\n index: activeChildIndex,\n });\n } else if (\n !newChildState &&\n state.index === activeChildIndex &&\n prevState\n ) {\n return null;\n }\n }\n }\n\n if (action.type === NavigationActions.SET_PARAMS) {\n const key = action.key;\n const lastRoute = state.routes.find(route => route.key === key);\n if (lastRoute) {\n const params = {\n ...lastRoute.params,\n ...action.params,\n };\n const routes = [...state.routes];\n routes[state.routes.indexOf(lastRoute)] = {\n ...lastRoute,\n params,\n };\n return getNextState(prevState, {\n ...state,\n routes,\n });\n }\n }\n\n if (activeChildIndex !== state.index) {\n return getNextState(prevState, {\n ...state,\n index: activeChildIndex,\n });\n } else if (didNavigate && !inputState) {\n return state;\n } else if (didNavigate) {\n return { ...state };\n }\n\n // Let other children handle it and switch to the first child that returns a new state\n let index = state.index;\n let routes = state.routes;\n order.find((childId, i) => {\n const childRouter = childRouters[childId];\n if (i === index) {\n return false;\n }\n let childState = routes[i];\n if (childRouter) {\n childState = childRouter.getStateForAction(action, childState);\n }\n if (!childState) {\n index = i;\n return true;\n }\n if (childState !== routes[i]) {\n routes = [...routes];\n routes[i] = childState;\n index = i;\n return true;\n }\n return false;\n });\n\n // Nested routers can be updated after switching children with actions such as SET_PARAMS\n // and COMPLETE_TRANSITION.\n // NOTE: This may be problematic with custom routers because we whitelist the actions\n // that can be handled by child routers without automatically changing index.\n if (childrenUpdateWithoutSwitchingIndex(action.type)) {\n index = state.index;\n }\n\n if (index !== state.index || routes !== state.routes) {\n return getNextState(prevState, {\n ...state,\n index,\n routes,\n });\n }\n return state;\n },\n\n getComponentForState(state) {\n const routeName = state.routes[state.index].routeName;\n invariant(\n routeName,\n `There is no route defined for index ${state.index}. Check that\n that you passed in a navigation state with a valid tab/screen index.`\n );\n const childRouter = childRouters[routeName];\n if (childRouter) {\n return childRouter.getComponentForState(state.routes[state.index]);\n }\n return getScreenForRouteName(routeConfigs, routeName);\n },\n\n getComponentForRouteName(routeName) {\n return getScreenForRouteName(routeConfigs, routeName);\n },\n\n getPathAndParamsForState(state) {\n const route = state.routes[state.index];\n return getPathAndParamsForRoute(route);\n },\n\n getActionForPathAndParams(path, params) {\n return getActionForPathAndParams(path, params);\n },\n\n getScreenOptions: createConfigGetter(\n routeConfigs,\n config.navigationOptions\n ),\n };\n};\n","import { isValidElementType } from 'react-is';\nimport invariant from '../utils/invariant';\n\n/**\n * Simple helper that gets a single screen (React component or navigator)\n * out of the navigator config.\n */\nexport default function getScreenForRouteName(routeConfigs, routeName) {\n const routeConfig = routeConfigs[routeName];\n\n if (!routeConfig) {\n throw new Error(\n `There is no route defined for key ${routeName}.\\n` +\n `Must be one of: ${Object.keys(routeConfigs)\n .map(a => `'${a}'`)\n .join(',')}`\n );\n }\n\n if (routeConfig.screen) {\n return routeConfig.screen;\n }\n\n if (typeof routeConfig.getScreen === 'function') {\n const screen = routeConfig.getScreen();\n invariant(\n isValidElementType(screen),\n `The getScreen defined for route '${routeName} didn't return a valid ` +\n 'screen or navigator.\\n\\n' +\n 'Please pass it like this:\\n' +\n `${routeName}: {\\n getScreen: () => require('./MyScreen').default\\n}`\n );\n return screen;\n }\n\n return routeConfig;\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.7.0\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n","import invariant from '../utils/invariant';\n\nimport getScreenForRouteName from './getScreenForRouteName';\nimport validateScreenOptions from './validateScreenOptions';\n\nfunction applyConfig(configurer, navigationOptions, configProps) {\n if (typeof configurer === 'function') {\n return {\n ...navigationOptions,\n ...configurer({\n ...configProps,\n navigationOptions,\n }),\n };\n }\n if (typeof configurer === 'object') {\n return {\n ...navigationOptions,\n ...configurer,\n };\n }\n return navigationOptions;\n}\n\nexport default (routeConfigs, navigatorScreenConfig) => (\n navigation,\n screenProps\n) => {\n const { state } = navigation;\n const route = state;\n\n invariant(\n route.routeName && typeof route.routeName === 'string',\n 'Cannot get config because the route does not have a routeName.'\n );\n\n const Component = getScreenForRouteName(routeConfigs, route.routeName);\n\n const routeConfig = routeConfigs[route.routeName];\n\n const routeScreenConfig =\n routeConfig === Component ? null : routeConfig.navigationOptions;\n const componentScreenConfig = Component.navigationOptions;\n\n const configOptions = { navigation, screenProps: screenProps || {} };\n\n let outputConfig = applyConfig(navigatorScreenConfig, {}, configOptions);\n outputConfig = applyConfig(\n componentScreenConfig,\n outputConfig,\n configOptions\n );\n outputConfig = applyConfig(routeScreenConfig, outputConfig, configOptions);\n\n validateScreenOptions(outputConfig, route);\n\n return outputConfig;\n};\n","const deprecatedKeys = ['tabBar'];\n\n/**\n * Make sure screen options returned by the `getScreenOption`\n * are valid\n */\nexport default (screenOptions, route) => {\n const keys = Object.keys(screenOptions);\n\n const deprecatedKey = keys.find(key => deprecatedKeys.includes(key));\n\n if (typeof screenOptions.title === 'function') {\n throw new Error(\n [\n `\\`title\\` cannot be defined as a function in navigation options for \\`${\n route.routeName\n }\\` screen. \\n`,\n 'Try replacing the following:',\n '{',\n ' title: ({ state }) => state...',\n '}',\n '',\n 'with:',\n '({ navigation }) => ({',\n ' title: navigation.state...',\n '})',\n ].join('\\n')\n );\n }\n\n if (deprecatedKey && typeof screenOptions[deprecatedKey] === 'function') {\n throw new Error(\n [\n `\\`${deprecatedKey}\\` cannot be defined as a function in navigation options for \\`${\n route.routeName\n }\\` screen. \\n`,\n 'Try replacing the following:',\n '{',\n ` ${deprecatedKey}: ({ state }) => ({`,\n ' key: state...',\n ' })',\n '}',\n '',\n 'with:',\n '({ navigation }) => ({',\n ` ${deprecatedKey}Key: navigation.state...`,\n '})',\n ].join('\\n')\n );\n }\n\n if (deprecatedKey && typeof screenOptions[deprecatedKey] === 'object') {\n throw new Error(\n [\n `Invalid key \\`${deprecatedKey}\\` defined in navigation options for \\`${\n route.routeName\n }\\` screen.`,\n '\\n',\n 'Try replacing the following navigation options:',\n '{',\n ` ${deprecatedKey}: {`,\n ...Object.keys(screenOptions[deprecatedKey]).map(\n key => ` ${key}: ...,`\n ),\n ' },',\n '}',\n '\\n',\n 'with:',\n '{',\n ...Object.keys(screenOptions[deprecatedKey]).map(\n key =>\n ` ${deprecatedKey + key[0].toUpperCase() + key.slice(1)}: ...,`\n ),\n '}',\n ].join('\\n')\n );\n }\n};\n","const POP = 'Navigation/POP';\nconst POP_TO_TOP = 'Navigation/POP_TO_TOP';\nconst PUSH = 'Navigation/PUSH';\nconst RESET = 'Navigation/RESET';\nconst REPLACE = 'Navigation/REPLACE';\nconst COMPLETE_TRANSITION = 'Navigation/COMPLETE_TRANSITION';\n\nconst pop = payload => ({\n type: POP,\n ...payload,\n});\n\nconst popToTop = payload => ({\n type: POP_TO_TOP,\n ...payload,\n});\n\nconst push = payload => ({\n type: PUSH,\n ...payload,\n});\n\nconst reset = payload => ({\n type: RESET,\n ...payload,\n});\n\nconst replace = payload => ({\n type: REPLACE,\n ...payload,\n});\n\nconst completeTransition = payload => ({\n type: COMPLETE_TRANSITION,\n ...payload,\n});\n\nexport default {\n POP,\n POP_TO_TOP,\n PUSH,\n RESET,\n REPLACE,\n COMPLETE_TRANSITION,\n\n pop,\n popToTop,\n push,\n reset,\n replace,\n completeTransition,\n};\n","import { isValidElementType } from 'react-is';\nimport invariant from '../utils/invariant';\n\n/**\n * Make sure the config passed e.g. to StackRouter, TabRouter has\n * the correct format, and throw a clear error if it doesn't.\n */\nfunction validateRouteConfigMap(routeConfigs) {\n const routeNames = Object.keys(routeConfigs);\n invariant(\n routeNames.length > 0,\n 'Please specify at least one route when configuring a navigator.'\n );\n\n routeNames.forEach(routeName => {\n const routeConfig = routeConfigs[routeName];\n const screenComponent = getScreenComponent(routeConfig);\n\n if (\n !screenComponent ||\n (!isValidElementType(screenComponent) && !routeConfig.getScreen)\n ) {\n throw new Error(`The component for route '${routeName}' must be a React component. For example:\n\nimport MyScreen from './MyScreen';\n...\n${routeName}: MyScreen,\n}\n\nYou can also use a navigator:\n\nimport MyNavigator from './MyNavigator';\n...\n${routeName}: MyNavigator,\n}`);\n }\n\n if (routeConfig.screen && routeConfig.getScreen) {\n throw new Error(\n `Route '${routeName}' should declare a screen or a getScreen, not both.`\n );\n }\n });\n}\n\nfunction getScreenComponent(routeConfig) {\n if (!routeConfig) {\n return null;\n }\n\n return routeConfig.screen ? routeConfig.screen : routeConfig;\n}\n\nexport default validateRouteConfigMap;\n","import React from 'react';\nimport SceneView from '../SceneView';\n\nexport default class SwitchView extends React.Component {\n render() {\n const { state } = this.props.navigation;\n const activeKey = state.routes[state.index].key;\n const descriptor = this.props.descriptors[activeKey];\n const ChildComponent = descriptor.getComponent();\n\n return (\n \n );\n }\n}\n","import React from 'react';\nimport { NavigationProvider } from './NavigationContext';\n\nexport default class SceneView extends React.PureComponent {\n render() {\n const { screenProps, component: Component, navigation } = this.props;\n return (\n \n \n \n );\n }\n}\n","/* eslint-disable import/no-commonjs */\n\nmodule.exports = {\n /**\n * Navigators\n */\n get createDrawerNavigator() {\n return require('./navigators/createDrawerNavigator').default;\n },\n\n /**\n * Router\n */\n get DrawerRouter() {\n return require('./routers/DrawerRouter').default;\n },\n get DrawerActions() {\n return require('./routers/DrawerActions').default;\n },\n\n /**\n * Views\n */\n get DrawerNavigatorItems() {\n return require('./views/DrawerNavigatorItems').default;\n },\n get DrawerSidebar() {\n return require('./views/DrawerSidebar').default;\n },\n get DrawerView() {\n return require('./views/DrawerView').default;\n }\n};","import React from 'react';\nimport { Dimensions, Platform, ScrollView } from 'react-native';\nimport { createNavigator, createNavigationContainer, SafeAreaView } from 'react-navigation';\nimport DrawerRouter from '../routers/DrawerRouter';\nimport DrawerView from '../views/DrawerView';\nimport DrawerItems from '../views/DrawerNavigatorItems';\n\n// A stack navigators props are the intersection between\n// the base navigator props (navgiation, screenProps, etc)\n// and the view's props\n\nconst defaultContentComponent = props => \n \n \n \n ;\n\nconst DefaultDrawerConfig = {\n drawerWidth: () => {\n /*\n * Default drawer width is screen width - header height\n * with a max width of 280 on mobile and 320 on tablet\n * https://material.io/guidelines/patterns/navigation-drawer.html\n */\n const { height, width } = Dimensions.get('window');\n const smallerAxisSize = Math.min(height, width);\n const isLandscape = width > height;\n const isTablet = smallerAxisSize >= 600;\n const appBarHeight = Platform.OS === 'ios' ? isLandscape ? 32 : 44 : 56;\n const maxWidth = isTablet ? 320 : 280;\n\n return Math.min(smallerAxisSize - appBarHeight, maxWidth);\n },\n contentComponent: defaultContentComponent,\n drawerPosition: 'left',\n drawerBackgroundColor: 'white',\n useNativeAnimations: true\n};\n\nconst DrawerNavigator = (routeConfigs, config = {}) => {\n const mergedConfig = { ...DefaultDrawerConfig, ...config };\n\n const {\n order,\n paths,\n initialRouteName,\n initialRouteParams,\n backBehavior,\n getCustomActionCreators,\n ...drawerConfig\n } = mergedConfig;\n\n const routerConfig = {\n order,\n paths,\n initialRouteName,\n initialRouteParams,\n backBehavior,\n getCustomActionCreators\n };\n\n const drawerRouter = DrawerRouter(routeConfigs, routerConfig);\n\n const navigator = createNavigator(DrawerView, drawerRouter, drawerConfig);\n\n return createNavigationContainer(navigator);\n};\n\nexport default DrawerNavigator;","import { SwitchRouter, NavigationActions } from 'react-navigation';\nimport DrawerActions from './DrawerActions';\n\nfunction withDefaultValue(obj, key, defaultValue) {\n if (obj.hasOwnProperty(key) && typeof obj[key] !== 'undefined') {\n return obj;\n }\n\n obj[key] = defaultValue;\n return obj;\n}\n\nconst getActiveRouteKey = route => {\n if (route.routes && route.routes[route.index]) {\n return getActiveRouteKey(route.routes[route.index]);\n }\n return route.key;\n};\n\nexport default ((routeConfigs, config = {}) => {\n config = { ...config };\n config = withDefaultValue(config, 'resetOnBlur', false);\n config = withDefaultValue(config, 'backBehavior', 'initialRoute');\n\n const switchRouter = SwitchRouter(routeConfigs, config);\n\n return {\n ...switchRouter,\n\n getActionCreators(route, navStateKey) {\n return {\n openDrawer: () => DrawerActions.openDrawer({ key: navStateKey }),\n closeDrawer: () => DrawerActions.closeDrawer({ key: navStateKey }),\n toggleDrawer: () => DrawerActions.toggleDrawer({ key: navStateKey }),\n ...switchRouter.getActionCreators(route, navStateKey)\n };\n },\n\n getStateForAction(action, state) {\n // Set up the initial state if needed\n if (!state) {\n return {\n ...switchRouter.getStateForAction(action, undefined),\n isDrawerOpen: false,\n openId: 0,\n closeId: 0,\n toggleId: 0\n };\n }\n\n const isRouterTargeted = action.key == null || action.key === state.key;\n\n if (isRouterTargeted) {\n // Only handle actions that are meant for this drawer, as specified by action.key.\n\n if (action.type === DrawerActions.DRAWER_CLOSED) {\n return {\n ...state,\n isDrawerOpen: false\n };\n }\n\n if (action.type === DrawerActions.DRAWER_OPENED) {\n return {\n ...state,\n isDrawerOpen: true\n };\n }\n\n if (action.type === DrawerActions.CLOSE_DRAWER) {\n return {\n ...state,\n closeId: state.closeId + 1\n };\n }\n\n if (action.type === NavigationActions.BACK && state.isDrawerOpen) {\n return {\n ...state,\n closeId: state.closeId + 1\n };\n }\n\n if (action.type === DrawerActions.OPEN_DRAWER) {\n return {\n ...state,\n openId: state.openId + 1\n };\n }\n\n if (action.type === DrawerActions.TOGGLE_DRAWER) {\n return {\n ...state,\n toggleId: state.toggleId + 1\n };\n }\n }\n\n // Fall back on switch router for screen switching logic, and handling of child routers\n const switchedState = switchRouter.getStateForAction(action, state);\n\n if (switchedState === null) {\n // The switch router or a child router is attempting to swallow this action. We return null to allow this.\n return null;\n }\n\n // Has the switch router changed the state?\n if (switchedState !== state) {\n if (getActiveRouteKey(switchedState) !== getActiveRouteKey(state)) {\n // If any navigation has happened, make sure to close the drawer\n return {\n ...switchedState,\n closeId: state.closeId + 1\n };\n }\n\n // At this point, return the state as defined by the switch router.\n // The active route key hasn't changed, so this most likely means that a child router has returned\n // a new state like a param change, but the same key is still active and the drawer will remain open\n return switchedState;\n }\n\n return state;\n }\n };\n});","const OPEN_DRAWER = 'Navigation/OPEN_DRAWER';\nconst CLOSE_DRAWER = 'Navigation/CLOSE_DRAWER';\nconst TOGGLE_DRAWER = 'Navigation/TOGGLE_DRAWER';\nconst DRAWER_OPENED = 'Navigation/DRAWER_OPENED';\nconst DRAWER_CLOSED = 'Navigation/DRAWER_CLOSED';\n\nconst openDrawer = payload => ({\n type: OPEN_DRAWER,\n ...payload\n});\n\nconst closeDrawer = payload => ({\n type: CLOSE_DRAWER,\n ...payload\n});\n\nconst toggleDrawer = payload => ({\n type: TOGGLE_DRAWER,\n ...payload\n});\n\nexport default {\n OPEN_DRAWER,\n CLOSE_DRAWER,\n TOGGLE_DRAWER,\n DRAWER_OPENED,\n DRAWER_CLOSED,\n\n openDrawer,\n closeDrawer,\n toggleDrawer\n};","import React from 'react';\nimport { Dimensions } from 'react-native';\nimport DrawerLayout from 'react-native-drawer-layout-polyfill';\nimport { SceneView } from 'react-navigation';\n\nimport DrawerSidebar from './DrawerSidebar';\nimport DrawerActions from '../routers/DrawerActions';\n\n/**\n * Component that renders the drawer.\n */\nexport default class DrawerView extends React.PureComponent {\n state = {\n drawerWidth: typeof this.props.navigationConfig.drawerWidth === 'function' ? this.props.navigationConfig.drawerWidth() : this.props.navigationConfig.drawerWidth\n };\n\n componentDidMount() {\n Dimensions.addEventListener('change', this._updateWidth);\n }\n\n componentDidUpdate(prevProps) {\n const {\n openId,\n closeId,\n toggleId,\n isDrawerOpen\n } = this.props.navigation.state;\n const {\n openId: prevOpenId,\n closeId: prevCloseId,\n toggleId: prevToggleId\n } = prevProps.navigation.state;\n\n if (openId !== prevOpenId) {\n this._drawer.openDrawer();\n } else if (closeId !== prevCloseId) {\n this._drawer.closeDrawer();\n } else if (toggleId !== prevToggleId) {\n if (isDrawerOpen) {\n this._drawer.closeDrawer();\n } else {\n this._drawer.openDrawer();\n }\n }\n }\n\n componentWillUnmount() {\n Dimensions.removeEventListener('change', this._updateWidth);\n }\n\n _handleDrawerOpen = () => {\n this.props.navigation.dispatch({\n type: DrawerActions.DRAWER_OPENED,\n key: this.props.navigation.state.key\n });\n };\n\n _handleDrawerClose = () => {\n this.props.navigation.dispatch({\n type: DrawerActions.DRAWER_CLOSED,\n key: this.props.navigation.state.key\n });\n };\n\n _updateWidth = () => {\n const drawerWidth = typeof this.props.navigationConfig.drawerWidth === 'function' ? this.props.navigationConfig.drawerWidth() : this.props.navigationConfig.drawerWidth;\n\n if (this.state.drawerWidth !== drawerWidth) {\n this.setState({ drawerWidth });\n }\n };\n\n _renderNavigationView = () => {\n return ;\n };\n\n render() {\n const { state } = this.props.navigation;\n const activeKey = state.routes[state.index].key;\n const descriptor = this.props.descriptors[activeKey];\n\n const { drawerLockMode } = descriptor.options;\n\n return {\n this._drawer = c;\n }} drawerLockMode={drawerLockMode || this.props.screenProps && this.props.screenProps.drawerLockMode || this.props.navigationConfig.drawerLockMode} drawerBackgroundColor={this.props.navigationConfig.drawerBackgroundColor} drawerWidth={this.state.drawerWidth} onDrawerOpen={this._handleDrawerOpen} onDrawerClose={this._handleDrawerClose} useNativeAnimations={this.props.navigationConfig.useNativeAnimations} renderNavigationView={this._renderNavigationView} drawerPosition={this.props.navigationConfig.drawerPosition === 'right' ? DrawerLayout.positions.Right : DrawerLayout.positions.Left}>\n \n ;\n }\n}","Object.defineProperty(exports, \"__esModule\", { value: true });var _reactNative = require('react-native');exports.default = _reactNative.DrawerLayoutAndroid;","import React from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport { NavigationActions, StackActions } from 'react-navigation';\nimport invariant from '../utils/invariant';\n\n/**\n * Component that renders the sidebar screen of the drawer.\n */\n\nclass DrawerSidebar extends React.PureComponent {\n _getScreenOptions = routeKey => {\n const descriptor = this.props.descriptors[routeKey];\n invariant(descriptor.options, 'Cannot access screen descriptor options from drawer sidebar');\n return descriptor.options;\n };\n\n _getLabel = ({ focused, tintColor, route }) => {\n const { drawerLabel, title } = this._getScreenOptions(route.key);\n if (drawerLabel) {\n return typeof drawerLabel === 'function' ? drawerLabel({ tintColor, focused }) : drawerLabel;\n }\n\n if (typeof title === 'string') {\n return title;\n }\n\n return route.routeName;\n };\n\n _renderIcon = ({ focused, tintColor, route }) => {\n const { drawerIcon } = this._getScreenOptions(route.key);\n if (drawerIcon) {\n return typeof drawerIcon === 'function' ? drawerIcon({ tintColor, focused }) : drawerIcon;\n }\n return null;\n };\n\n _onItemPress = ({ route, focused }) => {\n if (!focused) {\n let subAction;\n // TODO (v3): Revisit and repeal this behavior:\n // if the child screen is a StackRouter then always navigate to its first screen (see #1914)\n if (route.index != null && route.index !== 0) {\n subAction = StackActions.reset({\n index: 0,\n actions: [NavigationActions.navigate({\n routeName: route.routes[0].routeName\n })]\n });\n }\n this.props.navigation.dispatch(NavigationActions.navigate({\n routeName: route.routeName,\n action: subAction\n }));\n }\n };\n\n render() {\n const ContentComponent = this.props.contentComponent;\n if (!ContentComponent) {\n return null;\n }\n const { state } = this.props.navigation;\n invariant(typeof state.index === 'number', 'should be set');\n return \n \n ;\n }\n}\n\nexport default DrawerSidebar;\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1\n }\n});","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nexport default function invariant(condition, format, a, b, c, d, e, f) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, () => args[argIndex++]));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}","import React from 'react';\nimport { View, Text, StyleSheet } from 'react-native';\nimport { SafeAreaView } from 'react-navigation';\nimport TouchableItem from './TouchableItem';\n\n/**\n * Component that renders the navigation list in the drawer.\n */\nconst DrawerNavigatorItems = ({\n items,\n activeItemKey,\n activeTintColor,\n activeBackgroundColor,\n inactiveTintColor,\n inactiveBackgroundColor,\n getLabel,\n renderIcon,\n onItemPress,\n itemsContainerStyle,\n itemStyle,\n labelStyle,\n activeLabelStyle,\n inactiveLabelStyle,\n iconContainerStyle,\n drawerPosition\n}) => \n {items.map((route, index) => {\n const focused = activeItemKey === route.key;\n const color = focused ? activeTintColor : inactiveTintColor;\n const backgroundColor = focused ? activeBackgroundColor : inactiveBackgroundColor;\n const scene = { route, index, focused, tintColor: color };\n const icon = renderIcon(scene);\n const label = getLabel(scene);\n const extraLabelStyle = focused ? activeLabelStyle : inactiveLabelStyle;\n return {\n onItemPress({ route, focused });\n }} delayPressIn={0}>\n \n \n {icon ? \n {icon}\n : null}\n {typeof label === 'string' ? \n {label}\n : label}\n \n \n ;\n })}\n ;\n\n/* Material design specs - https://material.io/guidelines/patterns/navigation-drawer.html#navigation-drawer-specs */\nDrawerNavigatorItems.defaultProps = {\n activeTintColor: '#2196f3',\n activeBackgroundColor: 'rgba(0, 0, 0, .04)',\n inactiveTintColor: 'rgba(0, 0, 0, .87)',\n inactiveBackgroundColor: 'transparent'\n};\n\nconst styles = StyleSheet.create({\n container: {\n paddingVertical: 4\n },\n item: {\n flexDirection: 'row',\n alignItems: 'center'\n },\n icon: {\n marginHorizontal: 16,\n width: 24,\n alignItems: 'center'\n },\n inactiveIcon: {\n /*\n * Icons have 0.54 opacity according to guidelines\n * 100/87 * 54 ~= 62\n */\n opacity: 0.62\n },\n label: {\n margin: 16,\n fontWeight: 'bold'\n }\n});\n\nexport default DrawerNavigatorItems;","/**\n * TouchableItem renders a touchable that looks native on both iOS and Android.\n *\n * It provides an abstraction on top of TouchableNativeFeedback and\n * TouchableOpacity.\n *\n * On iOS you can pass the props of TouchableOpacity, on Android pass the props\n * of TouchableNativeFeedback.\n */\nimport React from 'react';\nimport { Platform, TouchableNativeFeedback, TouchableOpacity, View } from 'react-native';\n\nconst ANDROID_VERSION_LOLLIPOP = 21;\n\nexport default class TouchableItem extends React.Component {\n static defaultProps = {\n borderless: false,\n pressColor: 'rgba(0, 0, 0, .32)'\n };\n\n render() {\n /*\n * TouchableNativeFeedback.Ripple causes a crash on old Android versions,\n * therefore only enable it on Android Lollipop and above.\n *\n * All touchables on Android should have the ripple effect according to\n * platform design guidelines.\n * We need to pass the background prop to specify a borderless ripple effect.\n */\n if (Platform.OS === 'android' && Platform.Version >= ANDROID_VERSION_LOLLIPOP) {\n const { style, ...rest } = this.props;\n return \n {React.Children.only(this.props.children)}\n ;\n }\n\n return {this.props.children};\n }\n}","import createTabNavigator from './createTabNavigator';\nimport TabView from './views/TabView';\nimport TabBarBottom from './views/TabBarBottom';\nimport TabBarTop from './views/TabBarTop';\n\nmodule.exports = {\n createTabNavigator,\n TabView,\n TabBarBottom,\n TabBarTop,\n};\n","import React from 'react';\nimport { Platform } from 'react-native';\nimport {\n createNavigationContainer,\n createNavigator,\n TabRouter,\n} from 'react-navigation';\n\nimport TabView from './views/TabView';\nimport TabBarTop from './views/TabBarTop';\nimport TabBarBottom from './views/TabBarBottom';\n\nconst createTabNavigator = (routeConfigs, config = {}) => {\n // Use the look native to the platform by default\n const tabsConfig = { ...createTabNavigator.Presets.Default, ...config };\n\n const router = TabRouter(routeConfigs, tabsConfig);\n\n const navigator = createNavigator(TabView, router, tabsConfig);\n\n return createNavigationContainer(navigator);\n};\n\nconst Presets = {\n iOSBottomTabs: {\n tabBarComponent: TabBarBottom,\n tabBarPosition: 'bottom',\n swipeEnabled: false,\n animationEnabled: false,\n initialLayout: undefined,\n },\n AndroidTopTabs: {\n tabBarComponent: TabBarTop,\n tabBarPosition: 'top',\n swipeEnabled: true,\n animationEnabled: true,\n initialLayout: undefined,\n },\n};\n\n/**\n * Use these to get Android-style top tabs even on iOS or vice versa.\n *\n * Example:\n * ```\n * const HomeScreencreateTabNavigator = createTabNavigator({\n * Chat: {\n * screen: ChatScreen,\n * },\n * ...\n * }, {\n * ...createTabNavigator.Presets.AndroidTopTabs,\n * tabBarOptions: {\n * ...\n * },\n * });\n *```\n */\ncreateTabNavigator.Presets = {\n iOSBottomTabs: Presets.iOSBottomTabs,\n AndroidTopTabs: Presets.AndroidTopTabs,\n Default:\n Platform.OS === 'ios' ? Presets.iOSBottomTabs : Presets.AndroidTopTabs,\n};\n\nexport default createTabNavigator;\n","import React from 'react';\nimport { View, StyleSheet, Platform } from 'react-native';\nimport { TabViewAnimated, TabViewPagerPan } from 'react-native-tab-view';\nimport { NavigationActions, ResourceSavingSceneView } from 'react-navigation';\n\nclass TabView extends React.PureComponent {\n static defaultProps = {\n lazy: true,\n removedClippedSubviews: true,\n // fix for https://github.com/react-native-community/react-native-tab-view/issues/312\n initialLayout: Platform.select({\n android: { width: 1, height: 0 },\n }),\n };\n\n _handlePageChanged = index => {\n let { routeName } = this.props.navigation.state.routes[index];\n this.props.navigation.dispatch(NavigationActions.navigate({ routeName }));\n };\n\n _renderScene = ({ route }) => {\n const { screenProps, navigation, descriptors } = this.props;\n const {\n lazy,\n removeClippedSubviews,\n animationEnabled,\n swipeEnabled,\n } = this.props.navigationConfig;\n const descriptor = descriptors[route.key];\n const focusedIndex = navigation.state.index;\n const focusedKey = navigation.state.routes[focusedIndex].key;\n const key = route.key;\n const TabComponent = descriptor.getComponent();\n return (\n \n );\n };\n\n _getLabel = ({ route, tintColor, focused }) => {\n const { screenProps, descriptors } = this.props;\n const descriptor = descriptors[route.key];\n const options = descriptor.options;\n\n if (options.tabBarLabel) {\n return typeof options.tabBarLabel === 'function'\n ? options.tabBarLabel({ tintColor, focused })\n : options.tabBarLabel;\n }\n\n if (typeof options.title === 'string') {\n return options.title;\n }\n\n return route.routeName;\n };\n\n _getOnPress = (previousScene, { route }) => {\n const { descriptors } = this.props;\n const descriptor = descriptors[route.key];\n const options = descriptor.options;\n\n return options.tabBarOnPress;\n };\n\n _getTestIDProps = ({ route }) => {\n const { descriptors } = this.props;\n const descriptor = descriptors[route.key];\n const options = descriptor.options;\n\n return typeof options.tabBarTestIDProps === 'function'\n ? options.tabBarTestIDProps({ focused })\n : options.tabBarTestIDProps;\n };\n\n _renderIcon = ({ focused, route, tintColor }) => {\n const { descriptors } = this.props;\n const descriptor = descriptors[route.key];\n const options = descriptor.options;\n\n if (options.tabBarIcon) {\n return typeof options.tabBarIcon === 'function'\n ? options.tabBarIcon({ tintColor, focused })\n : options.tabBarIcon;\n }\n return null;\n };\n\n _renderTabBar = props => {\n const {\n tabBarOptions,\n tabBarComponent: TabBarComponent,\n animationEnabled,\n tabBarPosition,\n } = this.props.navigationConfig;\n if (typeof TabBarComponent === 'undefined') {\n return null;\n }\n\n return (\n \n );\n };\n\n _renderPager = props => ;\n\n render() {\n const {\n tabBarComponent,\n tabBarPosition,\n animationEnabled,\n configureTransition,\n initialLayout,\n } = this.props.navigationConfig;\n\n let renderHeader;\n let renderFooter;\n let renderPager;\n\n const { state } = this.props.navigation;\n const route = state.routes[state.index];\n const { descriptors } = this.props;\n const descriptor = descriptors[route.key];\n const options = descriptor.options;\n\n const tabBarVisible =\n options.tabBarVisible == null ? true : options.tabBarVisible;\n\n let swipeEnabled =\n options.swipeEnabled == null\n ? this.props.navigationConfig.swipeEnabled\n : options.swipeEnabled;\n\n if (typeof swipeEnabled === 'function') {\n swipeEnabled = swipeEnabled(state);\n }\n\n if (tabBarComponent !== undefined && tabBarVisible) {\n if (tabBarPosition === 'bottom') {\n renderFooter = this._renderTabBar;\n } else {\n renderHeader = this._renderTabBar;\n }\n }\n\n if (\n (animationEnabled === false && swipeEnabled === false) ||\n typeof configureTransition === 'function'\n ) {\n renderPager = this._renderPager;\n }\n\n const props = {\n initialLayout,\n animationEnabled,\n configureTransition,\n swipeEnabled,\n renderPager,\n renderHeader,\n renderFooter,\n renderScene: this._renderScene,\n onIndexChange: this._handlePageChanged,\n navigationState: this.props.navigation.state,\n style: styles.container,\n };\n\n return ;\n }\n}\n\nexport default TabView;\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n});\n","/* @flow */\n/* eslint-disable import/no-commonjs */\n\nmodule.exports = {\n get TabViewAnimated() {\n return require('./TabViewAnimated').default;\n },\n get TabViewPagerPan() {\n return require('./TabViewPagerPan').default;\n },\n get TabViewPagerScroll() {\n return require('./TabViewPagerScroll').default;\n },\n get TabViewPagerAndroid() {\n return require('./TabViewPagerAndroid').default;\n },\n get TabViewPagerExperimental() {\n return require('./TabViewPagerExperimental').default;\n },\n get TabBar() {\n return require('./TabBar').default;\n },\n get SceneMap() {\n return require('./SceneMap').default;\n },\n};\n","/* @flow */\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Animated, Platform, View, StyleSheet } from 'react-native';\nimport { NavigationStatePropType } from './TabViewPropTypes';\nimport type {\n Scene,\n SceneRendererProps,\n NavigationState,\n Layout,\n PagerCommonProps,\n PagerExtraProps,\n Style,\n} from './TabViewTypeDefinitions';\n\ntype Props = PagerCommonProps &\n PagerExtraProps & {\n navigationState: NavigationState,\n onIndexChange: (index: number) => mixed,\n initialLayout?: Layout,\n renderPager: (props: *) => React.Element,\n renderScene: (\n props: SceneRendererProps & Scene\n ) => ?React.Element,\n renderHeader?: (props: SceneRendererProps) => ?React.Element,\n renderFooter?: (props: SceneRendererProps) => ?React.Element,\n useNativeDriver?: boolean,\n style?: Style,\n };\n\ntype State = {|\n layout: Layout & { measured: boolean },\n layoutXY: Animated.ValueXY,\n panX: Animated.Value,\n offsetX: Animated.Value,\n position: any,\n|};\n\nlet TabViewPager;\n\nswitch (Platform.OS) {\n case 'android':\n TabViewPager = require('./TabViewPagerAndroid').default;\n break;\n case 'ios':\n TabViewPager = require('./TabViewPagerScroll').default;\n break;\n default:\n TabViewPager = require('./TabViewPagerPan').default;\n break;\n}\n\nexport default class TabViewAnimated extends React.Component<\n Props,\n State\n> {\n static propTypes = {\n navigationState: NavigationStatePropType.isRequired,\n onIndexChange: PropTypes.func.isRequired,\n initialLayout: PropTypes.shape({\n height: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n }),\n canJumpToTab: PropTypes.func.isRequired,\n renderPager: PropTypes.func.isRequired,\n renderScene: PropTypes.func.isRequired,\n renderHeader: PropTypes.func,\n renderFooter: PropTypes.func,\n };\n\n static defaultProps = {\n canJumpToTab: () => true,\n renderPager: props => ,\n initialLayout: {\n height: 0,\n width: 0,\n },\n useNativeDriver: false,\n };\n\n constructor(props: Props) {\n super(props);\n\n const { navigationState } = this.props;\n const layout = {\n ...this.props.initialLayout,\n measured: false,\n };\n\n const panX = new Animated.Value(0);\n const offsetX = new Animated.Value(-navigationState.index * layout.width);\n const layoutXY = new Animated.ValueXY({\n // This is hacky, but we need to make sure that the value is never 0\n x: layout.width || 0.001,\n y: layout.height || 0.001,\n });\n const position = Animated.multiply(\n Animated.divide(Animated.add(panX, offsetX), layoutXY.x),\n -1\n );\n\n this.state = {\n layout,\n layoutXY,\n panX,\n offsetX,\n position,\n };\n }\n\n componentDidMount() {\n this._mounted = true;\n }\n\n componentWillUnmount() {\n this._mounted = false;\n }\n\n _mounted: boolean = false;\n _nextIndex: ?number;\n\n _renderScene = (props: SceneRendererProps & Scene) => {\n return this.props.renderScene(props);\n };\n\n _handleLayout = (e: any) => {\n const { height, width } = e.nativeEvent.layout;\n\n if (\n this.state.layout.width === width &&\n this.state.layout.height === height\n ) {\n return;\n }\n\n this.state.offsetX.setValue(-this.props.navigationState.index * width);\n this.state.layoutXY.setValue({\n // This is hacky, but we need to make sure that the value is never 0\n x: width || 0.001,\n y: height || 0.001,\n });\n this.setState({\n layout: {\n measured: true,\n height,\n width,\n },\n });\n };\n\n _buildSceneRendererProps = (): SceneRendererProps<*> => ({\n panX: this.state.panX,\n offsetX: this.state.offsetX,\n position: this.state.position,\n layout: this.state.layout,\n navigationState: this.props.navigationState,\n jumpTo: this._jumpTo,\n jumpToIndex: this._jumpToIndex,\n useNativeDriver: this.props.useNativeDriver === true,\n });\n\n _jumpToIndex = (index: number) => {\n const { key } = this.props.navigationState.routes[index];\n\n console.warn(\n 'Method `jumpToIndex` is deprecated. Please upgrade your code to use `jumpTo` instead.',\n `Change your code from \\`jumpToIndex(${index})\\` to \\`jumpTo('${key}').\\``\n );\n\n this._jumpTo(key);\n };\n\n _jumpTo = (key: string) => {\n if (!this._mounted) {\n // We are no longer mounted, this is a no-op\n return;\n }\n\n const { canJumpToTab, navigationState } = this.props;\n const index = navigationState.routes.findIndex(route => route.key === key);\n\n if (!canJumpToTab(navigationState.routes[index])) {\n return;\n }\n\n if (index !== navigationState.index) {\n this.props.onIndexChange(index);\n }\n };\n\n render() {\n const {\n /* eslint-disable no-unused-vars */\n navigationState,\n onIndexChange,\n initialLayout,\n renderScene,\n /* eslint-enable no-unused-vars */\n renderPager,\n renderHeader,\n renderFooter,\n ...rest\n } = this.props;\n\n const props = this._buildSceneRendererProps();\n\n return (\n \n {renderHeader && renderHeader(props)}\n \n {renderPager({\n ...props,\n ...rest,\n panX: this.state.panX,\n offsetX: this.state.offsetX,\n children: navigationState.routes.map((route, index) => {\n const scene = this._renderScene({\n ...props,\n route,\n index,\n focused: index === navigationState.index,\n });\n\n if (scene) {\n return React.cloneElement(scene, { key: route.key });\n }\n\n return scene;\n }),\n })}\n \n {renderFooter && renderFooter(props)}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n overflow: 'hidden',\n },\n pager: {\n flex: 1,\n },\n});\n","/* @flow */\n\nimport PropTypes from 'prop-types';\nimport { Animated } from 'react-native';\n\nexport const NavigationRoutePropType = PropTypes.shape({\n title: PropTypes.string,\n key: PropTypes.string.isRequired,\n});\n\nexport const NavigationStatePropType = PropTypes.shape({\n routes: PropTypes.arrayOf(NavigationRoutePropType).isRequired,\n index: PropTypes.number.isRequired,\n});\n\nexport const SceneRendererPropType = {\n panX: PropTypes.object.isRequired,\n offsetX: PropTypes.object.isRequired,\n layout: PropTypes.shape({\n measured: PropTypes.bool.isRequired,\n height: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n }).isRequired,\n navigationState: NavigationStatePropType.isRequired,\n position: PropTypes.object.isRequired,\n jumpTo: PropTypes.func.isRequired,\n jumpToIndex: PropTypes.func.isRequired, // Deprecated, use `jumpTo` instead\n useNativeDriver: PropTypes.bool,\n};\n\nexport const PagerRendererPropType = {\n layout: PropTypes.shape({\n measured: PropTypes.bool.isRequired,\n height: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n }).isRequired,\n navigationState: NavigationStatePropType.isRequired,\n panX: PropTypes.instanceOf(Animated.Value).isRequired,\n offsetX: PropTypes.instanceOf(Animated.Value).isRequired,\n canJumpToTab: PropTypes.func.isRequired,\n jumpTo: PropTypes.func.isRequired,\n animationEnabled: PropTypes.bool,\n swipeEnabled: PropTypes.bool,\n useNativeDriver: PropTypes.bool,\n onSwipeStart: PropTypes.func,\n onSwipeEnd: PropTypes.func,\n onAnimationEnd: PropTypes.func,\n children: PropTypes.node.isRequired,\n};\n","/* @flow */\n\nimport * as React from 'react';\nimport { View, ViewPagerAndroid, StyleSheet, I18nManager } from 'react-native';\nimport { PagerRendererPropType } from './TabViewPropTypes';\nimport type { PagerRendererProps } from './TabViewTypeDefinitions';\n\ntype PageScrollEvent = {\n nativeEvent: {\n position: number,\n offset: number,\n },\n};\n\ntype PageScrollState = 'dragging' | 'settling' | 'idle';\n\ntype Props = PagerRendererProps & {\n keyboardDismissMode: 'none' | 'on-drag',\n};\n\nexport default class TabViewPagerAndroid extends React.Component<\n Props\n> {\n static propTypes = PagerRendererPropType;\n\n static defaultProps = {\n canJumpToTab: () => true,\n keyboardDismissMode: 'on-drag',\n };\n\n constructor(props: Props) {\n super(props);\n this._currentIndex = this.props.navigationState.index;\n }\n\n componentDidUpdate(prevProps: Props) {\n if (\n prevProps.navigationState.routes !== this.props.navigationState.routes ||\n prevProps.layout.width !== this.props.layout.width\n ) {\n this._handlePageChange(this.props.navigationState.index, false);\n } else if (\n prevProps.navigationState.index !== this.props.navigationState.index\n ) {\n this._handlePageChange(this.props.navigationState.index);\n }\n }\n\n _pageChangeCallabck: any;\n _viewPager: ?ViewPagerAndroid;\n _isIdle: boolean = true;\n _currentIndex = 0;\n\n _getPageIndex = (index: number) =>\n I18nManager.isRTL\n ? this.props.navigationState.routes.length - (index + 1)\n : index;\n\n _setPage = (index: number, animated = true) => {\n const pager = this._viewPager;\n\n if (pager) {\n const page = this._getPageIndex(index);\n\n if (this.props.animationEnabled === false || animated === false) {\n pager.setPageWithoutAnimation(page);\n } else {\n pager.setPage(page);\n }\n }\n };\n\n _handlePageChange = (index: number, animated?: boolean) => {\n if (this._isIdle && this._currentIndex !== index) {\n this._setPage(index, animated);\n this._currentIndex = index;\n }\n };\n\n _handlePageScroll = (e: PageScrollEvent) => {\n this.props.offsetX.setValue(\n e.nativeEvent.position *\n this.props.layout.width *\n (I18nManager.isRTL ? 1 : -1)\n );\n this.props.panX.setValue(\n e.nativeEvent.offset *\n this.props.layout.width *\n (I18nManager.isRTL ? 1 : -1)\n );\n };\n\n _handlePageScrollStateChanged = (e: PageScrollState) => {\n this._isIdle = e === 'idle';\n\n let nextIndex = this._currentIndex;\n\n const nextRoute = this.props.navigationState.routes[nextIndex];\n\n if (this.props.canJumpToTab(nextRoute)) {\n this.props.jumpTo(nextRoute.key);\n } else {\n this._setPage(this.props.navigationState.index);\n this._currentIndex = this.props.navigationState.index;\n }\n\n switch (e) {\n case 'dragging':\n this.props.onSwipeStart && this.props.onSwipeStart();\n break;\n case 'settling':\n this.props.onSwipeEnd && this.props.onSwipeEnd();\n break;\n case 'idle':\n this.props.onAnimationEnd && this.props.onAnimationEnd();\n break;\n }\n };\n\n _handlePageSelected = (e: PageScrollEvent) => {\n const index = this._getPageIndex(e.nativeEvent.position);\n this._currentIndex = index;\n };\n\n _setRef = (el: ?ViewPagerAndroid) => (this._viewPager = el);\n\n render() {\n const {\n children,\n navigationState,\n swipeEnabled,\n keyboardDismissMode,\n } = this.props;\n const content = React.Children.map(children, (child, i) => (\n \n {child}\n \n ));\n\n if (I18nManager.isRTL) {\n content.reverse();\n }\n\n const initialPage = this._getPageIndex(navigationState.index);\n\n return (\n \n {content}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flexGrow: 1,\n },\n\n page: {\n overflow: 'hidden',\n },\n});\n","/* @flow */\n\nimport * as React from 'react';\nimport { View, ScrollView, StyleSheet } from 'react-native';\nimport { PagerRendererPropType } from './TabViewPropTypes';\nimport type { PagerRendererProps } from './TabViewTypeDefinitions';\n\ntype ScrollEvent = {\n nativeEvent: {\n contentOffset: {\n x: number,\n y: number,\n },\n contentSize: {\n height: number,\n width: number,\n },\n },\n};\n\ntype State = {|\n initialOffset: {| x: number, y: number |},\n|};\n\ntype Props = PagerRendererProps;\n\nexport default class TabViewPagerScroll extends React.Component<\n Props,\n State\n> {\n static propTypes = PagerRendererPropType;\n\n static defaultProps = {\n canJumpToTab: () => true,\n };\n\n constructor(props: Props) {\n super(props);\n\n const { navigationState, layout } = this.props;\n\n this.state = {\n initialOffset: {\n x: navigationState.index * layout.width,\n y: 0,\n },\n };\n }\n\n componentDidMount() {\n this._setInitialPage();\n }\n\n componentDidUpdate(prevProps: Props) {\n const amount = this.props.navigationState.index * this.props.layout.width;\n\n if (\n prevProps.navigationState.routes !== this.props.navigationState.routes ||\n prevProps.layout.width !== this.props.layout.width\n ) {\n this._scrollTo(amount, false);\n } else if (\n prevProps.navigationState.index !== this.props.navigationState.index\n ) {\n this._scrollTo(amount);\n }\n }\n\n _scrollView: ?ScrollView;\n _idleCallback: any;\n _isIdle: boolean = true;\n _isInitial: boolean = true;\n\n _setInitialPage = () => {\n if (this.props.layout.width) {\n this._isInitial = true;\n this._scrollTo(\n this.props.navigationState.index * this.props.layout.width,\n false\n );\n }\n\n setTimeout(() => {\n this._isInitial = false;\n }, 50);\n };\n\n _scrollTo = (x: number, animated = true) => {\n if (this._isIdle && this._scrollView) {\n this._scrollView.scrollTo({\n x,\n animated: animated && this.props.animationEnabled !== false,\n });\n }\n };\n\n _handleMomentumScrollEnd = (e: ScrollEvent) => {\n let nextIndex = Math.round(\n e.nativeEvent.contentOffset.x / this.props.layout.width\n );\n\n const nextRoute = this.props.navigationState.routes[nextIndex];\n\n if (this.props.canJumpToTab(nextRoute)) {\n this.props.jumpTo(nextRoute.key);\n this.props.onAnimationEnd && this.props.onAnimationEnd();\n } else {\n global.requestAnimationFrame(() => {\n this._scrollTo(\n this.props.navigationState.index * this.props.layout.width\n );\n });\n }\n };\n\n _handleScroll = (e: ScrollEvent) => {\n if (this._isInitial || e.nativeEvent.contentSize.width === 0) {\n return;\n }\n\n const { navigationState, layout } = this.props;\n const offset = navigationState.index * layout.width;\n\n this.props.offsetX.setValue(-offset);\n this.props.panX.setValue(offset - e.nativeEvent.contentOffset.x);\n\n global.cancelAnimationFrame(this._idleCallback);\n\n this._isIdle = false;\n this._idleCallback = global.requestAnimationFrame(() => {\n this._isIdle = true;\n });\n };\n\n render() {\n const {\n children,\n layout,\n navigationState,\n onSwipeStart,\n onSwipeEnd,\n } = this.props;\n\n return (\n (this._scrollView = el)}\n >\n {React.Children.map(children, (child, i) => (\n \n {i === navigationState.index || layout.width ? child : null}\n \n ))}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n page: {\n flex: 1,\n overflow: 'hidden',\n },\n});\n","/* @flow */\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Animated,\n PanResponder,\n StyleSheet,\n View,\n Platform,\n} from 'react-native';\nimport { PagerRendererPropType } from './TabViewPropTypes';\nimport type { PagerRendererProps } from './TabViewTypeDefinitions';\n\ntype GestureEvent = {\n nativeEvent: {\n changedTouches: Array<*>,\n identifier: number,\n locationX: number,\n locationY: number,\n pageX: number,\n pageY: number,\n target: number,\n timestamp: number,\n touches: Array<*>,\n },\n};\n\ntype GestureState = {\n stateID: number,\n moveX: number,\n moveY: number,\n x0: number,\n y0: number,\n dx: number,\n dy: number,\n vx: number,\n vy: number,\n numberActiveTouches: number,\n};\n\ntype Props = PagerRendererProps & {\n swipeDistanceThreshold?: number,\n swipeVelocityThreshold?: number,\n onSwipeStart?: () => mixed,\n onSwipeEnd?: () => mixed,\n onAnimationEnd?: () => mixed,\n};\n\nconst DEAD_ZONE = 12;\n\nconst DefaultTransitionSpec = {\n timing: Animated.spring,\n tension: 300,\n friction: 35,\n};\n\nexport default class TabViewPagerPan extends React.Component> {\n static propTypes = {\n ...PagerRendererPropType,\n swipeDistanceThreshold: PropTypes.number,\n swipeVelocityThreshold: PropTypes.number,\n };\n\n static defaultProps = {\n canJumpToTab: () => true,\n initialLayout: {\n height: 0,\n width: 0,\n },\n };\n\n constructor(props: Props) {\n super(props);\n this._currentIndex = this.props.navigationState.index;\n }\n\n componentWillMount() {\n this._panResponder = PanResponder.create({\n onMoveShouldSetPanResponder: this._canMoveScreen,\n onMoveShouldSetPanResponderCapture: this._canMoveScreen,\n onPanResponderGrant: this._startGesture,\n onPanResponderMove: this._respondToGesture,\n onPanResponderTerminate: this._finishGesture,\n onPanResponderRelease: this._finishGesture,\n onPanResponderTerminationRequest: () => true,\n });\n }\n\n componentDidUpdate(prevProps: Props) {\n this._currentIndex = this.props.navigationState.index;\n\n if (\n prevProps.navigationState.routes !== this.props.navigationState.routes ||\n prevProps.layout.width !== this.props.layout.width\n ) {\n this._transitionTo(this.props.navigationState.index, false);\n } else if (\n prevProps.navigationState.index !== this.props.navigationState.index\n ) {\n this._transitionTo(this.props.navigationState.index);\n }\n }\n\n _currentIndex: number;\n\n _isMovingHorizontally = (evt: GestureEvent, gestureState: GestureState) => {\n return (\n Math.abs(gestureState.dx) > Math.abs(gestureState.dy * 2) &&\n Math.abs(gestureState.vx) > Math.abs(gestureState.vy * 2)\n );\n };\n\n _canMoveScreen = (evt: GestureEvent, gestureState: GestureState) => {\n if (this.props.swipeEnabled === false) {\n return false;\n }\n\n const { navigationState: { routes } } = this.props;\n\n return (\n this._isMovingHorizontally(evt, gestureState) &&\n ((gestureState.dx >= DEAD_ZONE && this._currentIndex > 0) ||\n (gestureState.dx <= -DEAD_ZONE &&\n this._currentIndex < routes.length - 1))\n );\n };\n\n _startGesture = () => {\n this.props.onSwipeStart && this.props.onSwipeStart();\n this.props.panX.stopAnimation();\n };\n\n _respondToGesture = (evt: GestureEvent, gestureState: GestureState) => {\n const { navigationState: { routes, index } } = this.props;\n\n if (\n // swiping left\n (gestureState.dx > 0 && index <= 0) ||\n // swiping right\n (gestureState.dx < 0 && index >= routes.length - 1)\n ) {\n return;\n }\n\n this.props.panX.setValue(gestureState.dx);\n };\n\n _finishGesture = (evt: GestureEvent, gestureState: GestureState) => {\n const {\n navigationState,\n layout,\n swipeDistanceThreshold = layout.width / 1.75,\n } = this.props;\n\n let { swipeVelocityThreshold = 0.15 } = this.props;\n\n this.props.onSwipeEnd && this.props.onSwipeEnd();\n\n if (Platform.OS === 'android') {\n // on Android, velocity is way lower due to timestamp being in nanosecond\n // normalize it to have the same velocity on both iOS and Android\n swipeVelocityThreshold /= 1000000;\n }\n\n const currentIndex =\n typeof this._pendingIndex === 'number'\n ? this._pendingIndex\n : this._currentIndex;\n\n let nextIndex = currentIndex;\n\n if (\n Math.abs(gestureState.dx) > Math.abs(gestureState.dy) &&\n Math.abs(gestureState.vx) > Math.abs(gestureState.vy) &&\n (Math.abs(gestureState.dx) > swipeDistanceThreshold ||\n Math.abs(gestureState.vx) > swipeVelocityThreshold)\n ) {\n nextIndex = Math.round(\n Math.min(\n Math.max(\n 0,\n currentIndex - gestureState.dx / Math.abs(gestureState.dx)\n ),\n navigationState.routes.length - 1\n )\n );\n\n this._currentIndex = nextIndex;\n }\n\n if (\n !isFinite(nextIndex) ||\n !this.props.canJumpToTab(this.props.navigationState.routes[nextIndex])\n ) {\n nextIndex = currentIndex;\n }\n\n this._transitionTo(nextIndex);\n };\n\n _transitionTo = (index: number, animated: boolean = true) => {\n const offset = -index * this.props.layout.width;\n\n if (this.props.animationEnabled === false || animated === false) {\n this.props.panX.setValue(0);\n this.props.offsetX.setValue(offset);\n return;\n }\n\n const { timing, ...transitionConfig } = DefaultTransitionSpec;\n\n Animated.parallel([\n timing(this.props.panX, {\n ...transitionConfig,\n toValue: 0,\n }),\n timing(this.props.offsetX, {\n ...transitionConfig,\n toValue: offset,\n }),\n ]).start(({ finished }) => {\n if (finished) {\n const route = this.props.navigationState.routes[index];\n this.props.jumpTo(route.key);\n this.props.onAnimationEnd && this.props.onAnimationEnd();\n this._pendingIndex = null;\n }\n });\n\n this._pendingIndex = index;\n };\n\n _panResponder: any;\n _pendingIndex: ?number;\n\n render() {\n const { panX, offsetX, navigationState, layout, children } = this.props;\n const { width } = layout;\n const { routes } = navigationState;\n const maxTranslate = width * (routes.length - 1);\n const translateX = Animated.add(panX, offsetX).interpolate({\n inputRange: [-maxTranslate, 0],\n outputRange: [-maxTranslate, 0],\n extrapolate: 'clamp',\n });\n\n return (\n \n {React.Children.map(children, (child, i) => (\n \n {i === navigationState.index || width ? child : null}\n \n ))}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n sheet: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'stretch',\n },\n});\n","/* @flow */\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Animated, StyleSheet, View } from 'react-native';\nimport { PagerRendererPropType } from './TabViewPropTypes';\nimport type { PagerRendererProps } from './TabViewTypeDefinitions';\n\ntype Props = PagerRendererProps & {\n swipeDistanceThreshold?: number,\n swipeVelocityThreshold?: number,\n GestureHandler: any,\n};\n\nconst DefaultTransitionSpec = {\n timing: Animated.spring,\n tension: 75,\n friction: 25,\n};\n\nexport default class TabViewPagerExperimental extends React.Component<\n Props\n> {\n static propTypes = {\n ...PagerRendererPropType,\n swipeDistanceThreshold: PropTypes.number,\n swipeVelocityThreshold: PropTypes.number,\n GestureHandler: PropTypes.object,\n };\n\n static defaultProps = {\n GestureHandler:\n global.__expo && global.__expo.DangerZone\n ? global.__expo.DangerZone.GestureHandler\n : undefined,\n canJumpToTab: () => true,\n };\n\n componentDidUpdate(prevProps: Props) {\n if (\n prevProps.navigationState.routes !== this.props.navigationState.routes ||\n prevProps.layout.width !== this.props.layout.width\n ) {\n this._transitionTo(this.props.navigationState.index, undefined, false);\n } else if (\n prevProps.navigationState.index !== this.props.navigationState.index\n ) {\n this._transitionTo(this.props.navigationState.index);\n }\n }\n\n _handleHandlerStateChange = event => {\n const { GestureHandler } = this.props;\n\n if (event.nativeEvent.state === GestureHandler.State.BEGIN) {\n this.props.onSwipeStart && this.props.onSwipeStart();\n } else if (event.nativeEvent.state === GestureHandler.State.END) {\n this.props.onSwipeEnd && this.props.onSwipeEnd();\n\n const {\n navigationState,\n layout,\n swipeDistanceThreshold = layout.width / 1.75,\n swipeVelocityThreshold = 150,\n } = this.props;\n const {\n translationX,\n translationY,\n velocityX,\n velocityY,\n } = event.nativeEvent;\n const currentIndex =\n typeof this._pendingIndex === 'number'\n ? this._pendingIndex\n : navigationState.index;\n\n let nextIndex = currentIndex;\n\n if (\n Math.abs(translationX) > Math.abs(translationY) &&\n Math.abs(velocityX) > Math.abs(velocityY) &&\n (Math.abs(translationX) > swipeDistanceThreshold ||\n Math.abs(velocityX) > swipeVelocityThreshold)\n ) {\n nextIndex = Math.round(\n Math.min(\n Math.max(0, currentIndex - translationX / Math.abs(translationX)),\n navigationState.routes.length - 1\n )\n );\n }\n\n if (\n !isFinite(nextIndex) ||\n !this.props.canJumpToTab(this.props.navigationState.routes[nextIndex])\n ) {\n nextIndex = currentIndex;\n }\n\n this._transitionTo(nextIndex, velocityX);\n }\n };\n\n _transitionTo = (\n index: number,\n velocity?: number,\n animated?: boolean = true\n ) => {\n const offset = -index * this.props.layout.width;\n\n if (this.props.animationEnabled === false || animated === false) {\n this.props.panX.setValue(0);\n this.props.offsetX.setValue(offset);\n return;\n }\n\n const { timing, ...transitionConfig } = DefaultTransitionSpec;\n const { useNativeDriver } = this.props;\n\n Animated.parallel([\n timing(this.props.panX, {\n ...transitionConfig,\n toValue: 0,\n velocity,\n useNativeDriver,\n }),\n timing(this.props.offsetX, {\n ...transitionConfig,\n toValue: offset,\n velocity,\n useNativeDriver,\n }),\n ]).start(({ finished }) => {\n if (finished) {\n const route = this.props.navigationState.routes[index];\n this.props.jumpTo(route.key);\n this.props.onAnimationEnd && this.props.onAnimationEnd();\n this._pendingIndex = null;\n }\n });\n\n this._pendingIndex = index;\n };\n\n _pendingIndex: ?number;\n\n render() {\n const {\n GestureHandler,\n panX,\n offsetX,\n layout,\n navigationState,\n swipeEnabled,\n children,\n } = this.props;\n const { width } = layout;\n const { routes } = navigationState;\n const maxTranslate = width * (routes.length - 1);\n const translateX = Animated.add(panX, offsetX).interpolate({\n inputRange: [-maxTranslate, 0],\n outputRange: [-maxTranslate, 0],\n extrapolate: 'clamp',\n });\n\n return (\n \n \n {React.Children.map(children, (child, i) => (\n \n {i === navigationState.index || width ? child : null}\n \n ))}\n \n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n sheet: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'stretch',\n },\n});\n","/* @flow */\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Animated,\n NativeModules,\n StyleSheet,\n View,\n ScrollView,\n Platform,\n I18nManager,\n} from 'react-native';\nimport TouchableItem from './TouchableItem';\nimport { SceneRendererPropType } from './TabViewPropTypes';\nimport type {\n Scene,\n SceneRendererProps,\n Style,\n} from './TabViewTypeDefinitions';\n\ntype IndicatorProps = SceneRendererProps & {\n width: number,\n};\n\ntype Props = SceneRendererProps & {\n scrollEnabled?: boolean,\n bounces?: boolean,\n pressColor?: string,\n pressOpacity?: number,\n getLabelText: (scene: Scene) => ?string,\n renderLabel?: (scene: Scene) => ?React.Element,\n renderIcon?: (scene: Scene) => ?React.Element,\n renderBadge?: (scene: Scene) => ?React.Element,\n renderIndicator?: (props: IndicatorProps) => ?React.Element,\n onTabPress?: (scene: Scene) => mixed,\n tabStyle?: Style,\n indicatorStyle?: Style,\n labelStyle?: Style,\n style?: Style,\n};\n\ntype State = {|\n visibility: Animated.Value,\n scrollAmount: Animated.Value,\n initialOffset: ?{| x: number, y: number |},\n|};\n\nconst useNativeDriver = Boolean(NativeModules.NativeAnimatedModule);\n\nexport default class TabBar extends React.Component, State> {\n static propTypes = {\n ...SceneRendererPropType,\n scrollEnabled: PropTypes.bool,\n bounces: PropTypes.bool,\n pressColor: TouchableItem.propTypes.pressColor,\n pressOpacity: TouchableItem.propTypes.pressOpacity,\n getLabelText: PropTypes.func,\n renderIcon: PropTypes.func,\n renderLabel: PropTypes.func,\n renderIndicator: PropTypes.func,\n onTabPress: PropTypes.func,\n labelStyle: PropTypes.any,\n style: PropTypes.any,\n };\n\n static defaultProps = {\n getLabelText: ({ route }) =>\n typeof route.title === 'string' ? route.title.toUpperCase() : route.title,\n };\n\n constructor(props: Props) {\n super(props);\n\n let initialVisibility = 1;\n\n if (this.props.scrollEnabled) {\n const tabWidth = this._getTabWidth(this.props);\n if (!tabWidth) {\n initialVisibility = 0;\n }\n }\n\n const initialOffset =\n this.props.scrollEnabled && this.props.layout.width\n ? {\n x: this._getScrollAmount(\n this.props,\n this.props.navigationState.index\n ),\n y: 0,\n }\n : undefined;\n\n this.state = {\n visibility: new Animated.Value(initialVisibility),\n scrollAmount: new Animated.Value(0),\n initialOffset,\n };\n }\n\n componentDidMount() {\n this.props.scrollEnabled && this._startTrackingPosition();\n }\n\n componentDidUpdate(prevProps: Props) {\n const prevTabWidth = this._getTabWidth(prevProps);\n const currentTabWidth = this._getTabWidth(this.props);\n\n if (prevTabWidth !== currentTabWidth && currentTabWidth) {\n this.state.visibility.setValue(1);\n }\n\n if (\n (prevProps.navigationState !== this.props.navigationState ||\n prevProps.layout !== this.props.layout ||\n prevTabWidth !== currentTabWidth) &&\n this.props.navigationState.index !== this._pendingIndex\n ) {\n this._resetScroll(\n this.props.navigationState.index,\n Boolean(prevProps.layout.width)\n );\n this._pendingIndex = null;\n }\n }\n\n componentWillUnmount() {\n this._stopTrackingPosition();\n }\n\n _scrollView: ?ScrollView;\n _isIntial: boolean = true;\n _isManualScroll: boolean = false;\n _isMomentumScroll: boolean = false;\n _pendingIndex: ?number;\n _scrollResetCallback: any;\n _lastPanX: ?number;\n _lastOffsetX: ?number;\n _panXListener: string;\n _offsetXListener: string;\n\n _startTrackingPosition = () => {\n this._offsetXListener = this.props.offsetX.addListener(({ value }) => {\n this._lastOffsetX = value;\n this._handlePosition();\n });\n this._panXListener = this.props.panX.addListener(({ value }) => {\n this._lastPanX = value;\n this._handlePosition();\n });\n };\n\n _stopTrackingPosition = () => {\n this.props.offsetX.removeListener(this._offsetXListener);\n this.props.panX.removeListener(this._panXListener);\n };\n\n _handlePosition = () => {\n const { navigationState, layout } = this.props;\n\n if (layout.width === 0) {\n // Don't do anything if we don't have layout yet\n return;\n }\n\n const panX = typeof this._lastPanX === 'number' ? this._lastPanX : 0;\n const offsetX =\n typeof this._lastOffsetX === 'number'\n ? this._lastOffsetX\n : -navigationState.index * layout.width;\n\n const value = (panX + offsetX) / -(layout.width || 0.001);\n\n this._adjustScroll(value);\n };\n\n _renderLabel = (scene: Scene<*>) => {\n if (typeof this.props.renderLabel !== 'undefined') {\n return this.props.renderLabel(scene);\n }\n const label = this.props.getLabelText(scene);\n if (typeof label !== 'string') {\n return null;\n }\n return (\n \n {label}\n \n );\n };\n\n _renderIndicator = (props: IndicatorProps) => {\n if (typeof this.props.renderIndicator !== 'undefined') {\n return this.props.renderIndicator(props);\n }\n const { width, position, navigationState } = props;\n const translateX = Animated.multiply(\n Animated.multiply(\n position.interpolate({\n inputRange: [0, navigationState.routes.length - 1],\n outputRange: [0, navigationState.routes.length - 1],\n extrapolate: 'clamp',\n }),\n width\n ),\n I18nManager.isRTL ? -1 : 1\n );\n return (\n \n );\n };\n\n _getTabWidth = props => {\n const { layout, navigationState, tabStyle } = props;\n const flattened = StyleSheet.flatten(tabStyle);\n\n if (flattened) {\n switch (typeof flattened.width) {\n case 'number':\n return flattened.width;\n case 'string':\n if (flattened.width.endsWith('%')) {\n const width = parseFloat(flattened.width);\n if (Number.isFinite(width)) {\n return layout.width * (width / 100);\n }\n }\n }\n }\n\n if (props.scrollEnabled) {\n return layout.width / 5 * 2;\n }\n\n return layout.width / navigationState.routes.length;\n };\n\n _handleTabPress = (scene: Scene<*>) => {\n this._pendingIndex = scene.index;\n this.props.jumpTo(scene.route.key);\n if (this.props.onTabPress) {\n this.props.onTabPress(scene);\n }\n };\n\n _normalizeScrollValue = (props, value) => {\n const { layout, navigationState } = props;\n const tabWidth = this._getTabWidth(props);\n const tabBarWidth = Math.max(\n tabWidth * navigationState.routes.length,\n layout.width\n );\n const maxDistance = tabBarWidth - layout.width;\n\n return Math.max(Math.min(value, maxDistance), 0);\n };\n\n _getScrollAmount = (props, i) => {\n const { layout } = props;\n const tabWidth = this._getTabWidth(props);\n const centerDistance = tabWidth * (i + 1 / 2);\n const scrollAmount = centerDistance - layout.width / 2;\n\n return this._normalizeScrollValue(props, scrollAmount);\n };\n\n _adjustScroll = (value: number) => {\n if (this.props.scrollEnabled) {\n global.cancelAnimationFrame(this._scrollResetCallback);\n this._scrollView &&\n this._scrollView.scrollTo({\n x: this._normalizeScrollValue(\n this.props,\n this._getScrollAmount(this.props, value)\n ),\n animated: !this._isIntial, // Disable animation for the initial render\n });\n\n this._isIntial = false;\n }\n };\n\n _resetScroll = (value: number, animated = true) => {\n if (this.props.scrollEnabled) {\n global.cancelAnimationFrame(this._scrollResetCallback);\n this._scrollResetCallback = global.requestAnimationFrame(() => {\n this._scrollView &&\n this._scrollView.scrollTo({\n x: this._getScrollAmount(this.props, value),\n animated,\n });\n });\n }\n };\n\n _handleBeginDrag = () => {\n // onScrollBeginDrag fires when user touches the ScrollView\n this._isManualScroll = true;\n this._isMomentumScroll = false;\n };\n\n _handleEndDrag = () => {\n // onScrollEndDrag fires when user lifts his finger\n // onMomentumScrollBegin fires after touch end\n // run the logic in next frame so we get onMomentumScrollBegin first\n global.requestAnimationFrame(() => {\n if (this._isMomentumScroll) {\n return;\n }\n this._isManualScroll = false;\n });\n };\n\n _handleMomentumScrollBegin = () => {\n // onMomentumScrollBegin fires on flick, as well as programmatic scroll\n this._isMomentumScroll = true;\n };\n\n _handleMomentumScrollEnd = () => {\n // onMomentumScrollEnd fires when the scroll finishes\n this._isMomentumScroll = false;\n this._isManualScroll = false;\n };\n\n _setRef = (el: ?Animated.ScrollView) =>\n (this._scrollView = el && el._component);\n\n render() {\n const { position, navigationState, scrollEnabled, bounces } = this.props;\n const { routes, index } = navigationState;\n const tabWidth = this._getTabWidth(this.props);\n const tabBarWidth = tabWidth * routes.length;\n\n // Prepend '-1', so there are always at least 2 items in inputRange\n const inputRange = [-1, ...routes.map((x, i) => i)];\n const translateX = Animated.multiply(this.state.scrollAmount, -1);\n\n return (\n \n \n {this._renderIndicator({\n ...this.props,\n width: tabWidth,\n })}\n \n \n \n {routes.map((route, i) => {\n const focused = index === i;\n const outputRange = inputRange.map(\n inputIndex => (inputIndex === i ? 1 : 0.7)\n );\n const opacity = Animated.multiply(\n this.state.visibility,\n position.interpolate({\n inputRange,\n outputRange,\n })\n );\n const scene = {\n route,\n focused,\n index: i,\n };\n const label = this._renderLabel(scene);\n const icon = this.props.renderIcon\n ? this.props.renderIcon(scene)\n : null;\n const badge = this.props.renderBadge\n ? this.props.renderBadge(scene)\n : null;\n\n const tabStyle = {};\n\n tabStyle.opacity = opacity;\n\n if (icon) {\n if (label) {\n tabStyle.paddingTop = 8;\n } else {\n tabStyle.padding = 12;\n }\n }\n\n const passedTabStyle = StyleSheet.flatten(this.props.tabStyle);\n const isWidthSet =\n (passedTabStyle &&\n typeof passedTabStyle.width !== 'undefined') ||\n scrollEnabled === true;\n const tabContainerStyle = {};\n\n if (isWidthSet) {\n tabStyle.width = tabWidth;\n }\n\n if (passedTabStyle && typeof passedTabStyle.flex === 'number') {\n tabContainerStyle.flex = passedTabStyle.flex;\n } else if (!isWidthSet) {\n tabContainerStyle.flex = 1;\n }\n\n const accessibilityLabel =\n route.accessibilityLabel || route.title;\n\n return (\n this._handleTabPress(scene)}\n style={tabContainerStyle}\n >\n \n \n {icon}\n {label}\n \n {badge ? (\n \n {badge}\n \n ) : null}\n \n \n );\n })}\n \n \n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n scroll: {\n overflow: Platform.OS === 'web' ? 'auto' : 'scroll',\n },\n tabBar: {\n backgroundColor: '#2196f3',\n elevation: 4,\n shadowColor: 'black',\n shadowOpacity: 0.1,\n shadowRadius: StyleSheet.hairlineWidth,\n shadowOffset: {\n height: StyleSheet.hairlineWidth,\n },\n // We don't need zIndex on Android, disable it since it's buggy\n zIndex: Platform.OS === 'android' ? 0 : 1,\n },\n tabContent: {\n flexDirection: 'row',\n flexWrap: 'nowrap',\n },\n tabLabel: {\n backgroundColor: 'transparent',\n color: 'white',\n margin: 8,\n },\n tabItem: {\n flex: 1,\n padding: 8,\n alignItems: 'center',\n justifyContent: 'center',\n },\n badge: {\n position: 'absolute',\n top: 0,\n right: 0,\n },\n indicatorContainer: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n indicator: {\n backgroundColor: '#ffeb3b',\n position: 'absolute',\n left: 0,\n bottom: 0,\n right: 0,\n height: 2,\n },\n});\n","/* @flow */\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n TouchableNativeFeedback,\n TouchableOpacity,\n Platform,\n View,\n} from 'react-native';\nimport type { Style } from './TabViewTypeDefinitions';\n\nconst LOLLIPOP = 21;\n\ntype Props = {\n onPress: Function,\n delayPressIn?: number,\n borderless?: boolean,\n pressColor?: string,\n pressOpacity?: number,\n children?: React.Node,\n style?: Style,\n};\n\nexport default class TouchableItem extends React.Component {\n static propTypes = {\n onPress: PropTypes.func.isRequired,\n delayPressIn: PropTypes.number,\n borderless: PropTypes.bool,\n pressColor: PropTypes.string,\n pressOpacity: PropTypes.number,\n children: PropTypes.node.isRequired,\n };\n\n static defaultProps = {\n pressColor: 'rgba(255, 255, 255, .4)',\n };\n\n _handlePress = () => {\n global.requestAnimationFrame(this.props.onPress);\n };\n\n render() {\n const { style, pressOpacity, pressColor, borderless, ...rest } = this.props;\n\n if (Platform.OS === 'android' && Platform.Version >= LOLLIPOP) {\n return (\n \n {React.Children.only(this.props.children)}\n \n );\n } else {\n return (\n \n {this.props.children}\n \n );\n }\n }\n}\n","/* @flow */\n\nimport * as React from 'react';\n\nexport default function SceneMap(scenes: { [key: string]: Function }) {\n class SceneComponent extends React.PureComponent<*> {\n render() {\n return React.createElement(scenes[this.props.route.key], this.props);\n }\n }\n\n return ({ route, jumpTo, jumpToIndex }: *) => (\n \n );\n}\n","import React from 'react';\nimport { Animated, StyleSheet } from 'react-native';\nimport { TabBar } from 'react-native-tab-view';\nimport TabBarIcon from './TabBarIcon';\n\nexport default class TabBarTop extends React.PureComponent {\n static defaultProps = {\n activeTintColor: '#fff',\n inactiveTintColor: '#fff',\n showIcon: false,\n showLabel: true,\n upperCaseLabel: true,\n allowFontScaling: true,\n };\n\n _renderLabel = scene => {\n const {\n position,\n tabBarPosition,\n navigation,\n activeTintColor,\n inactiveTintColor,\n showLabel,\n upperCaseLabel,\n labelStyle,\n allowFontScaling,\n } = this.props;\n if (showLabel === false) {\n return null;\n }\n const { index } = scene;\n const { routes } = navigation.state;\n // Prepend '-1', so there are always at least 2 items in inputRange\n const inputRange = [-1, ...routes.map((x, i) => i)];\n const outputRange = inputRange.map(\n inputIndex => (inputIndex === index ? activeTintColor : inactiveTintColor)\n );\n const color = position.interpolate({\n inputRange,\n outputRange: outputRange,\n });\n\n const tintColor = scene.focused ? activeTintColor : inactiveTintColor;\n const label = this.props.getLabel({ ...scene, tintColor });\n if (typeof label === 'string') {\n return (\n \n {upperCaseLabel ? label.toUpperCase() : label}\n \n );\n }\n if (typeof label === 'function') {\n return label({ ...scene, tintColor });\n }\n\n return label;\n };\n\n _renderIcon = scene => {\n const {\n position,\n navigation,\n activeTintColor,\n inactiveTintColor,\n renderIcon,\n showIcon,\n iconStyle,\n } = this.props;\n if (showIcon === false) {\n return null;\n }\n return (\n \n );\n };\n\n _handleOnPress = scene => {\n const { getOnPress, jumpToIndex, navigation } = this.props;\n const previousScene = navigation.state.routes[navigation.state.index];\n const onPress = getOnPress(previousScene, scene);\n\n if (onPress) {\n // To maintain the same API as `TabbarBottom`, we pass in a `defaultHandler`\n // even though I don't believe in this case it should be any different\n // than `jumpToIndex`.\n onPress({\n previousScene,\n scene,\n jumpToIndex,\n defaultHandler: jumpToIndex,\n });\n } else {\n jumpToIndex(scene.index);\n }\n };\n\n render() {\n // TODO: Define full proptypes\n const props = this.props;\n\n return (\n {}}\n renderIcon={this._renderIcon}\n renderLabel={this._renderLabel}\n />\n );\n }\n}\n\nconst styles = StyleSheet.create({\n icon: {\n height: 24,\n width: 24,\n },\n label: {\n textAlign: 'center',\n fontSize: 13,\n margin: 8,\n backgroundColor: 'transparent',\n },\n});\n","import React from 'react';\nimport { Animated, View, StyleSheet } from 'react-native';\n\nexport default class TabBarIcon extends React.PureComponent {\n render() {\n const {\n position,\n scene,\n navigation,\n activeTintColor,\n inactiveTintColor,\n style,\n } = this.props;\n const { route, index } = scene;\n const { routes } = navigation.state;\n // Prepend '-1', so there are always at least 2 items in inputRange\n const inputRange = [-1, ...routes.map((x, i) => i)];\n const activeOpacity = position.interpolate({\n inputRange,\n outputRange: inputRange.map(i => (i === index ? 1 : 0)),\n });\n const inactiveOpacity = position.interpolate({\n inputRange,\n outputRange: inputRange.map(i => (i === index ? 0 : 1)),\n });\n\n // We render the icon twice at the same position on top of each other:\n // active and inactive one, so we can fade between them.\n return (\n \n \n {this.props.renderIcon({\n route,\n index,\n focused: true,\n tintColor: activeTintColor,\n })}\n \n \n {this.props.renderIcon({\n route,\n index,\n focused: false,\n tintColor: inactiveTintColor,\n })}\n \n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n icon: {\n // We render the icon twice at the same position on top of each other:\n // active and inactive one, so we can fade between them:\n // Cover the whole iconContainer:\n position: 'absolute',\n alignSelf: 'center',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n width: '100%',\n minWidth: 30,\n },\n});\n","import React from 'react';\nimport {\n Animated,\n TouchableWithoutFeedback,\n StyleSheet,\n View,\n Platform,\n Keyboard,\n} from 'react-native';\nimport {\n SafeAreaView,\n NavigationActions,\n withOrientation,\n StackActions,\n} from 'react-navigation';\n\nimport TabBarIcon from './TabBarIcon';\n\nconst majorVersion = parseInt(Platform.Version, 10);\nconst isIos = Platform.OS === 'ios';\nconst isIOS11 = majorVersion >= 11 && isIos;\nconst defaultMaxTabBarItemWidth = 125;\n\nclass TabBarBottom extends React.PureComponent {\n // See https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/UIKitUICatalog/UITabBar.html\n static defaultProps = {\n activeTintColor: '#3478f6', // Default active tint color in iOS 10\n activeBackgroundColor: 'transparent',\n inactiveTintColor: '#929292', // Default inactive tint color in iOS 10\n inactiveBackgroundColor: 'transparent',\n showLabel: true,\n showIcon: true,\n allowFontScaling: true,\n adaptive: isIOS11,\n };\n\n _renderLabel = scene => {\n const {\n position,\n navigation,\n activeTintColor,\n inactiveTintColor,\n labelStyle,\n showLabel,\n showIcon,\n isLandscape,\n allowFontScaling,\n } = this.props;\n if (showLabel === false) {\n return null;\n }\n const { index } = scene;\n const { routes } = navigation.state;\n // Prepend '-1', so there are always at least 2 items in inputRange\n const inputRange = [-1, ...routes.map((x, i) => i)];\n const outputRange = inputRange.map(\n inputIndex => (inputIndex === index ? activeTintColor : inactiveTintColor)\n );\n const color = position.interpolate({\n inputRange,\n outputRange: outputRange,\n });\n\n const tintColor = scene.focused ? activeTintColor : inactiveTintColor;\n const label = this.props.getLabel({ ...scene, tintColor });\n\n if (typeof label === 'string') {\n return (\n \n {label}\n \n );\n }\n\n if (typeof label === 'function') {\n return label({ ...scene, tintColor });\n }\n\n return label;\n };\n\n _renderIcon = scene => {\n const {\n position,\n navigation,\n activeTintColor,\n inactiveTintColor,\n renderIcon,\n showIcon,\n showLabel,\n } = this.props;\n if (showIcon === false) {\n return null;\n }\n\n const horizontal = this._shouldUseHorizontalTabs();\n\n return (\n \n );\n };\n\n _renderTestIDProps = scene => {\n const testIDProps =\n this.props.getTestIDProps && this.props.getTestIDProps(scene);\n return testIDProps;\n };\n\n _tabItemMaxWidth() {\n const { tabStyle, layout } = this.props;\n let maxTabBarItemWidth;\n\n const flattenedTabStyle = StyleSheet.flatten(tabStyle);\n\n if (flattenedTabStyle) {\n if (typeof flattenedTabStyle.width === 'number') {\n maxTabBarItemWidth = flattenedTabStyle.width;\n } else if (\n typeof flattenedTabStyle.width === 'string' &&\n flattenedTabStyle.width.endsWith('%')\n ) {\n const width = parseFloat(flattenedTabStyle.width);\n if (Number.isFinite(width)) {\n maxTabBarItemWidth = layout.width * (width / 100);\n }\n } else if (typeof flattenedTabStyle.maxWidth === 'number') {\n maxTabBarItemWidth = flattenedTabStyle.maxWidth;\n } else if (\n typeof flattenedTabStyle.maxWidth === 'string' &&\n flattenedTabStyle.width.endsWith('%')\n ) {\n const width = parseFloat(flattenedTabStyle.maxWidth);\n if (Number.isFinite(width)) {\n maxTabBarItemWidth = layout.width * (width / 100);\n }\n }\n }\n\n if (!maxTabBarItemWidth) {\n maxTabBarItemWidth = defaultMaxTabBarItemWidth;\n }\n\n return maxTabBarItemWidth;\n }\n\n _shouldUseHorizontalTabs() {\n const { routes } = this.props.navigation.state;\n const { isLandscape, layout, adaptive, tabStyle } = this.props;\n\n if (!adaptive) {\n return false;\n }\n\n let tabBarWidth = layout.width;\n if (tabBarWidth === 0) {\n return Platform.isPad;\n }\n\n if (!Platform.isPad) {\n return isLandscape;\n } else {\n const maxTabBarItemWidth = this._tabItemMaxWidth();\n return routes.length * maxTabBarItemWidth <= tabBarWidth;\n }\n }\n\n _handleTabPress = index => {\n const { jumpToIndex, navigation } = this.props;\n const currentIndex = navigation.state.index;\n\n if (currentIndex === index) {\n let childRoute = navigation.state.routes[index];\n if (childRoute.hasOwnProperty('index') && childRoute.index > 0) {\n navigation.dispatch(\n StackActions.popToTop({ key: childRoute.key })\n );\n } else {\n // TODO: do something to scroll to top\n }\n } else {\n jumpToIndex(index);\n }\n };\n\n render() {\n const {\n position,\n navigation,\n jumpToIndex,\n getOnPress,\n getTestIDProps,\n activeBackgroundColor,\n inactiveBackgroundColor,\n style,\n animateStyle,\n tabStyle,\n isLandscape,\n } = this.props;\n const { routes } = navigation.state;\n const previousScene = routes[navigation.state.index];\n // Prepend '-1', so there are always at least 2 items in inputRange\n const inputRange = [-1, ...routes.map((x, i) => i)];\n\n const tabBarStyle = [\n styles.tabBar,\n this._shouldUseHorizontalTabs() && !Platform.isPad\n ? styles.tabBarCompact\n : styles.tabBarRegular,\n style,\n ];\n\n return (\n \n \n {routes.map((route, index) => {\n const focused = index === navigation.state.index;\n const scene = { route, index, focused };\n const onPress = getOnPress(previousScene, scene);\n const outputRange = inputRange.map(\n inputIndex =>\n inputIndex === index\n ? activeBackgroundColor\n : inactiveBackgroundColor\n );\n const backgroundColor = position.interpolate({\n inputRange,\n outputRange: outputRange,\n });\n\n const justifyContent = this.props.showIcon ? 'flex-end' : 'center';\n const extraProps = this._renderTestIDProps(scene) || {};\n const { testID, accessibilityLabel } = extraProps;\n\n return (\n \n onPress\n ? onPress({\n previousScene,\n scene,\n jumpToIndex,\n defaultHandler: this._handleTabPress,\n })\n : this._handleTabPress(index)\n }\n >\n \n \n {this._renderIcon(scene)}\n {this._renderLabel(scene)}\n \n \n \n );\n })}\n \n \n );\n }\n}\n\nconst DEFAULT_HEIGHT = 49;\nconst COMPACT_HEIGHT = 29;\n\nconst styles = StyleSheet.create({\n tabBar: {\n backgroundColor: '#F7F7F7', // Default background color in iOS 10\n borderTopWidth: StyleSheet.hairlineWidth,\n borderTopColor: 'rgba(0, 0, 0, .3)',\n flexDirection: 'row',\n },\n tabBarCompact: {\n height: COMPACT_HEIGHT,\n },\n tabBarRegular: {\n height: DEFAULT_HEIGHT,\n },\n tab: {\n flex: 1,\n alignItems: isIos ? 'center' : 'stretch',\n },\n tabPortrait: {\n justifyContent: 'flex-end',\n flexDirection: 'column',\n },\n tabLandscape: {\n justifyContent: 'center',\n flexDirection: 'row',\n },\n iconWithoutLabel: {\n flex: 1,\n },\n iconWithLabel: {\n flex: 1,\n },\n iconWithExplicitHeight: {\n height: Platform.isPad ? DEFAULT_HEIGHT : COMPACT_HEIGHT,\n },\n label: {\n textAlign: 'center',\n backgroundColor: 'transparent',\n },\n labelBeneath: {\n fontSize: 10,\n marginBottom: 1.5,\n },\n labelBeside: {\n fontSize: 13,\n marginLeft: 20,\n },\n});\n\nexport default withOrientation(TabBarBottom);\n","/* @flow */\n/* eslint-disable import/no-commonjs */\n\nmodule.exports = {\n /**\n * Navigators\n */\n get createBottomTabNavigator() {\n return require('./navigators/createBottomTabNavigator').default;\n },\n get createMaterialTopTabNavigator() {\n return require('./navigators/createMaterialTopTabNavigator').default;\n },\n\n /**\n * Views\n */\n get BottomTabBar() {\n return require('./views/BottomTabBar').default;\n },\n get MaterialTopTabBar() {\n return require('./views/MaterialTopTabBar').default;\n },\n\n /**\n * Utils\n */\n get createTabNavigator() {\n return require('./utils/createTabNavigator').default;\n },\n};\n","/* @flow */\n\nimport * as React from 'react';\nimport { View, StyleSheet } from 'react-native';\nimport { ScreenContainer } from 'react-native-screens';\nimport { polyfill } from 'react-lifecycles-compat';\nimport createTabNavigator, {\n type InjectedProps,\n} from '../utils/createTabNavigator';\nimport BottomTabBar, { type TabBarOptions } from '../views/BottomTabBar';\nimport ResourceSavingScene from '../views/ResourceSavingScene';\n\ntype Props = InjectedProps & {\n lazy?: boolean,\n tabBarComponent?: React.ComponentType<*>,\n tabBarOptions?: TabBarOptions,\n};\n\ntype State = {\n loaded: number[],\n};\n\nclass TabNavigationView extends React.PureComponent {\n static defaultProps = {\n lazy: true,\n };\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const { index } = nextProps.navigation.state;\n\n return {\n // Set the current tab to be loaded if it was not loaded before\n loaded: prevState.loaded.includes(index)\n ? prevState.loaded\n : [...prevState.loaded, index],\n };\n }\n\n state = {\n loaded: [this.props.navigation.state.index],\n };\n\n _renderTabBar = () => {\n const {\n tabBarComponent: TabBarComponent = BottomTabBar,\n tabBarOptions,\n navigation,\n screenProps,\n getLabelText,\n getAccessibilityLabel,\n getButtonComponent,\n getTestID,\n renderIcon,\n onTabPress,\n } = this.props;\n\n const { descriptors } = this.props;\n const { state } = this.props.navigation;\n const route = state.routes[state.index];\n const descriptor = descriptors[route.key];\n const options = descriptor.options;\n\n if (options.tabBarVisible === false) {\n return null;\n }\n\n return (\n \n );\n };\n\n _jumpTo = (key: string) => {\n const { navigation, onIndexChange } = this.props;\n\n const index = navigation.state.routes.findIndex(route => route.key === key);\n\n onIndexChange(index);\n };\n\n render() {\n const { navigation, renderScene, lazy } = this.props;\n const { routes } = navigation.state;\n const { loaded } = this.state;\n\n return (\n \n \n {routes.map((route, index) => {\n if (lazy && !loaded.includes(index)) {\n // Don't render a screen if we've never navigated to it\n return null;\n }\n\n const isFocused = navigation.state.index === index;\n\n return (\n \n {renderScene({ route })}\n \n );\n })}\n \n {this._renderTabBar()}\n \n );\n }\n}\n\npolyfill(TabNavigationView);\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n overflow: 'hidden',\n },\n pages: {\n flex: 1,\n },\n});\n\nexport default createTabNavigator(TabNavigationView);\n","/* @flow */\n\nimport * as React from 'react';\nimport {\n TabRouter,\n StackActions,\n SceneView,\n createNavigator,\n createNavigationContainer,\n NavigationActions,\n} from 'react-navigation';\n\nexport type InjectedProps = {\n getLabelText: (props: { route: any }) => any,\n getAccessibilityLabel: (props: { route: any }) => string,\n getTestID: (props: { route: any }) => string,\n getButtonComponent: (props: { route: any }) => ?React.Component<*>,\n renderIcon: (props: {\n route: any,\n focused: boolean,\n tintColor: string,\n horizontal: boolean,\n }) => React.Node,\n renderScene: (props: { route: any }) => ?React.Node,\n onIndexChange: (index: number) => any,\n onTabPress: (props: { route: any }) => mixed,\n navigation: any,\n descriptors: any,\n screenProps?: any,\n};\n\nexport default function createTabNavigator(TabView: React.ComponentType<*>) {\n class NavigationView extends React.Component<*, *> {\n _renderScene = ({ route }) => {\n const { screenProps, descriptors } = this.props;\n const descriptor = descriptors[route.key];\n const TabComponent = descriptor.getComponent();\n return (\n \n );\n };\n\n _renderIcon = ({\n route,\n focused = true,\n tintColor,\n horizontal = false,\n }) => {\n const { descriptors } = this.props;\n const descriptor = descriptors[route.key];\n const options = descriptor.options;\n\n if (options.tabBarIcon) {\n return typeof options.tabBarIcon === 'function'\n ? options.tabBarIcon({ focused, tintColor, horizontal })\n : options.tabBarIcon;\n }\n\n return null;\n };\n\n _getButtonComponent = ({ route }) => {\n const { descriptors } = this.props;\n const descriptor = descriptors[route.key];\n const options = descriptor.options;\n\n if (options.tabBarButtonComponent) {\n return options.tabBarButtonComponent;\n }\n\n return null;\n };\n\n _getLabelText = ({ route }) => {\n const { descriptors } = this.props;\n const descriptor = descriptors[route.key];\n const options = descriptor.options;\n\n if (options.tabBarLabel) {\n return options.tabBarLabel;\n }\n\n if (typeof options.title === 'string') {\n return options.title;\n }\n\n return route.routeName;\n };\n\n _getAccessibilityLabel = ({ route }) => {\n const { descriptors } = this.props;\n const descriptor = descriptors[route.key];\n const options = descriptor.options;\n\n if (typeof options.tabBarAccessibilityLabel !== 'undefined') {\n return options.tabBarAccessibilityLabel;\n }\n\n const label = this._getLabelText({ route });\n\n if (typeof label === 'string') {\n return label;\n }\n };\n\n _getTestID = ({ route }) => {\n const { descriptors } = this.props;\n const descriptor = descriptors[route.key];\n const options = descriptor.options;\n\n return options.tabBarTestID;\n };\n\n _handleTabPress = ({ route }) => {\n this._isTabPress = true;\n\n const { descriptors } = this.props;\n const descriptor = descriptors[route.key];\n const { navigation, options } = descriptor;\n\n const defaultHandler = () => {\n if (navigation.isFocused()) {\n if (route.hasOwnProperty('index') && route.index > 0) {\n // If current tab has a nested navigator, pop to top\n navigation.dispatch(StackActions.popToTop({ key: route.key }));\n } else {\n // TODO: do something to scroll to top\n }\n } else {\n this._jumpTo(route.routeName);\n }\n };\n\n if (options.tabBarOnPress) {\n options.tabBarOnPress({ navigation, defaultHandler });\n } else {\n defaultHandler();\n }\n };\n\n _handleIndexChange = index => {\n if (this._isTabPress) {\n this._isTabPress = false;\n return;\n }\n\n this._jumpTo(this.props.navigation.state.routes[index].routeName);\n };\n\n _handleSwipeStart = () => {\n this.setState({ isSwiping: true });\n };\n\n _handleSwipeEnd = () => {\n this.setState({ isSwiping: false });\n };\n\n _jumpTo = routeName =>\n this.props.navigation.dispatch(NavigationActions.navigate({ routeName }));\n\n _isTabPress: boolean = false;\n\n render() {\n const { descriptors, navigation, screenProps } = this.props;\n const { state } = navigation;\n const route = state.routes[state.index];\n const descriptor = descriptors[route.key];\n const options = {\n ...this.props.navigationConfig,\n ...descriptor.options,\n };\n\n return (\n \n );\n }\n }\n\n return (routes: *, config: * = {}) => {\n const router = TabRouter(routes, config);\n const navigator = createNavigator(NavigationView, router, config);\n\n return createNavigationContainer(navigator);\n };\n}\n","/* @flow */\n\nimport React from 'react';\nimport {\n Animated,\n TouchableWithoutFeedback,\n StyleSheet,\n View,\n Platform,\n} from 'react-native';\nimport { SafeAreaView } from 'react-navigation';\n\nimport CrossFadeIcon from './CrossFadeIcon';\nimport withDimensions from '../utils/withDimensions';\n\nexport type TabBarOptions = {\n activeTintColor?: string,\n inactiveTintColor?: string,\n activeBackgroundColor?: string,\n inactiveBackgroundColor?: string,\n allowFontScaling: boolean,\n showLabel: boolean,\n showIcon: boolean,\n labelStyle: any,\n tabStyle: any,\n adaptive?: boolean,\n style: any,\n};\n\ntype Props = TabBarOptions & {\n navigation: any,\n descriptors: any,\n jumpTo: any,\n onTabPress: any,\n getAccessibilityLabel: (props: { route: any }) => string,\n getButtonComponent: ({ route: any }) => any,\n getLabelText: ({ route: any }) => any,\n getTestID: (props: { route: any }) => string,\n renderIcon: any,\n dimensions: { width: number, height: number },\n isLandscape: boolean,\n safeAreaInset: { top: string, right: string, bottom: string, left: string },\n};\n\nconst majorVersion = parseInt(Platform.Version, 10);\nconst isIos = Platform.OS === 'ios';\nconst isIOS11 = majorVersion >= 11 && isIos;\n\nconst DEFAULT_MAX_TAB_ITEM_WIDTH = 125;\n\nclass TouchableWithoutFeedbackWrapper extends React.Component<*> {\n render() {\n const { onPress, testID, accessibilityLabel, ...props } = this.props;\n\n return (\n \n \n \n );\n }\n}\n\nclass TabBarBottom extends React.Component {\n static defaultProps = {\n activeTintColor: '#3478f6', // Default active tint color in iOS 10\n activeBackgroundColor: 'transparent',\n inactiveTintColor: '#929292', // Default inactive tint color in iOS 10\n inactiveBackgroundColor: 'transparent',\n showLabel: true,\n showIcon: true,\n allowFontScaling: true,\n adaptive: isIOS11,\n safeAreaInset: { bottom: 'always', top: 'never' },\n };\n\n _renderLabel = ({ route, focused }) => {\n const {\n activeTintColor,\n inactiveTintColor,\n labelStyle,\n showLabel,\n showIcon,\n allowFontScaling,\n } = this.props;\n\n if (showLabel === false) {\n return null;\n }\n\n const label = this.props.getLabelText({ route });\n const tintColor = focused ? activeTintColor : inactiveTintColor;\n\n if (typeof label === 'string') {\n return (\n \n {label}\n \n );\n }\n\n if (typeof label === 'function') {\n return label({ route, focused, tintColor });\n }\n\n return label;\n };\n\n _renderIcon = ({ route, focused }) => {\n const {\n navigation,\n activeTintColor,\n inactiveTintColor,\n renderIcon,\n showIcon,\n showLabel,\n } = this.props;\n if (showIcon === false) {\n return null;\n }\n\n const horizontal = this._shouldUseHorizontalLabels();\n\n const activeOpacity = focused ? 1 : 0;\n const inactiveOpacity = focused ? 0 : 1;\n\n return (\n \n );\n };\n\n _shouldUseHorizontalLabels = () => {\n const { routes } = this.props.navigation.state;\n const { isLandscape, dimensions, adaptive, tabStyle } = this.props;\n\n if (!adaptive) {\n return false;\n }\n\n if (Platform.isPad) {\n let maxTabItemWidth = DEFAULT_MAX_TAB_ITEM_WIDTH;\n\n const flattenedStyle = StyleSheet.flatten(tabStyle);\n\n if (flattenedStyle) {\n if (typeof flattenedStyle.width === 'number') {\n maxTabItemWidth = flattenedStyle.width;\n } else if (typeof flattenedStyle.maxWidth === 'number') {\n maxTabItemWidth = flattenedStyle.maxWidth;\n }\n }\n\n return routes.length * maxTabItemWidth <= dimensions.width;\n } else {\n return isLandscape;\n }\n };\n\n render() {\n const {\n navigation,\n activeBackgroundColor,\n inactiveBackgroundColor,\n onTabPress,\n safeAreaInset,\n style,\n tabStyle,\n } = this.props;\n\n const { routes } = navigation.state;\n\n const tabBarStyle = [\n styles.tabBar,\n this._shouldUseHorizontalLabels() && !Platform.isPad\n ? styles.tabBarCompact\n : styles.tabBarRegular,\n style,\n ];\n\n return (\n \n {routes.map((route, index) => {\n const focused = index === navigation.state.index;\n const scene = { route, focused };\n const accessibilityLabel = this.props.getAccessibilityLabel({\n route,\n });\n const testID = this.props.getTestID({ route });\n\n const backgroundColor = focused\n ? activeBackgroundColor\n : inactiveBackgroundColor;\n\n const ButtonComponent =\n this.props.getButtonComponent({ route }) ||\n TouchableWithoutFeedbackWrapper;\n\n return (\n onTabPress({ route })}\n testID={testID}\n accessibilityLabel={accessibilityLabel}\n style={[\n styles.tab,\n { backgroundColor },\n this._shouldUseHorizontalLabels()\n ? styles.tabLandscape\n : styles.tabPortrait,\n tabStyle,\n ]}\n >\n {this._renderIcon(scene)}\n {this._renderLabel(scene)}\n \n );\n })}\n \n );\n }\n}\n\nconst DEFAULT_HEIGHT = 49;\nconst COMPACT_HEIGHT = 29;\n\nconst styles = StyleSheet.create({\n tabBar: {\n backgroundColor: '#fff',\n borderTopWidth: StyleSheet.hairlineWidth,\n borderTopColor: 'rgba(0, 0, 0, .3)',\n flexDirection: 'row',\n },\n tabBarCompact: {\n height: COMPACT_HEIGHT,\n },\n tabBarRegular: {\n height: DEFAULT_HEIGHT,\n },\n tab: {\n flex: 1,\n alignItems: isIos ? 'center' : 'stretch',\n },\n tabPortrait: {\n justifyContent: 'flex-end',\n flexDirection: 'column',\n },\n tabLandscape: {\n justifyContent: 'center',\n flexDirection: 'row',\n },\n iconWithoutLabel: {\n flex: 1,\n },\n iconWithLabel: {\n flex: 1,\n },\n iconWithExplicitHeight: {\n height: Platform.isPad ? DEFAULT_HEIGHT : COMPACT_HEIGHT,\n },\n label: {\n textAlign: 'center',\n backgroundColor: 'transparent',\n },\n labelBeneath: {\n fontSize: 11,\n marginBottom: 1.5,\n },\n labelBeside: {\n fontSize: 12,\n marginLeft: 15,\n },\n});\n\nexport default withDimensions(TabBarBottom);\n","/* @flow */\n\nimport React from 'react';\nimport { Animated, View, StyleSheet } from 'react-native';\n\ntype Props = {\n route: any,\n horizontal?: boolean,\n activeOpacity: any,\n inactiveOpacity: any,\n activeTintColor: any,\n inactiveTintColor: any,\n renderIcon: any,\n style: any,\n};\n\nexport default class TabBarIcon extends React.Component {\n render() {\n const {\n route,\n activeOpacity,\n inactiveOpacity,\n activeTintColor,\n inactiveTintColor,\n renderIcon,\n horizontal,\n style,\n } = this.props;\n\n // We render the icon twice at the same position on top of each other:\n // active and inactive one, so we can fade between them.\n return (\n \n \n {renderIcon({\n route,\n focused: true,\n horizontal,\n tintColor: activeTintColor,\n })}\n \n \n {renderIcon({\n route,\n focused: false,\n horizontal,\n tintColor: inactiveTintColor,\n })}\n \n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n icon: {\n // We render the icon twice at the same position on top of each other:\n // active and inactive one, so we can fade between them:\n // Cover the whole iconContainer:\n position: 'absolute',\n alignSelf: 'center',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n width: '100%',\n // Workaround for react-native >= 0.54 layout bug\n minWidth: 25,\n },\n});\n","import * as React from 'react';\nimport { Dimensions } from 'react-native';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\n\nexport const isOrientationLandscape = ({ width, height }) => width > height;\n\nexport default function withDimensions(WrappedComponent) {\n const { width, height } = Dimensions.get('window');\n\n class EnhancedComponent extends React.Component {\n static displayName = `withDimensions(${WrappedComponent.displayName})`;\n\n state = {\n dimensions: { width, height },\n isLandscape: isOrientationLandscape({ width, height }),\n };\n\n componentDidMount() {\n Dimensions.addEventListener('change', this.handleOrientationChange);\n }\n\n componentWillUnmount() {\n Dimensions.removeEventListener('change', this.handleOrientationChange);\n }\n\n handleOrientationChange = ({ window }) => {\n const isLandscape = isOrientationLandscape(window);\n this.setState({ isLandscape });\n };\n\n render() {\n return ;\n }\n }\n\n return hoistNonReactStatic(EnhancedComponent, WrappedComponent);\n}\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try { // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/* @flow */\n\nimport * as React from 'react';\nimport { Platform, StyleSheet, View } from 'react-native';\nimport { Screen, screensEnabled } from 'react-native-screens';\n\ntype Props = {\n isVisible: boolean,\n children: React.Node,\n style?: any,\n};\n\nconst FAR_FAR_AWAY = 3000; // this should be big enough to move the whole view out of its container\n\nexport default class ResourceSavingScene extends React.Component {\n render() {\n if (screensEnabled && screensEnabled()) {\n const { isVisible, ...rest } = this.props;\n return ;\n }\n const { isVisible, children, style, ...rest } = this.props;\n\n return (\n \n \n {children}\n \n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n overflow: 'hidden',\n },\n attached: {\n flex: 1,\n },\n detached: {\n flex: 1,\n top: FAR_FAR_AWAY,\n },\n});\n","/* @flow */\n\nimport * as React from 'react';\nimport { View, Platform } from 'react-native';\nimport { polyfill } from 'react-lifecycles-compat';\nimport { TabView, PagerPan } from 'react-native-tab-view';\nimport createTabNavigator, {\n type InjectedProps,\n} from '../utils/createTabNavigator';\nimport MaterialTopTabBar, {\n type TabBarOptions,\n} from '../views/MaterialTopTabBar';\nimport ResourceSavingScene from '../views/ResourceSavingScene';\n\ntype Props = InjectedProps & {\n animationEnabled?: boolean,\n lazy?: boolean,\n optimizationsEnabled?: boolean,\n swipeEnabled?: boolean,\n tabBarComponent?: React.ComponentType<*>,\n tabBarOptions?: TabBarOptions,\n tabBarPosition?: 'top' | 'bottom',\n};\n\ntype State = {\n index: number,\n isSwiping: boolean,\n loaded: Array,\n transitioningFromIndex: ?number,\n};\n\nclass MaterialTabView extends React.PureComponent {\n static defaultProps = {\n // fix for https://github.com/react-native-community/react-native-tab-view/issues/312\n initialLayout: Platform.select({\n android: { width: 1, height: 0 },\n }),\n animationEnabled: true,\n lazy: false,\n optimizationsEnabled: false,\n };\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const { index } = nextProps.navigation.state;\n\n if (prevState.index === index) {\n return null;\n }\n\n return {\n loaded: prevState.loaded.includes(index)\n ? prevState.loaded\n : [...prevState.loaded, index],\n index,\n };\n }\n\n state = {\n index: 0,\n isSwiping: false,\n loaded: [this.props.navigation.state.index],\n transitioningFromIndex: null,\n };\n\n _renderIcon = ({ focused, route, tintColor }) => {\n const { descriptors } = this.props;\n const descriptor = descriptors[route.key];\n const options = descriptor.options;\n\n if (options.tabBarIcon) {\n return typeof options.tabBarIcon === 'function'\n ? options.tabBarIcon({ tintColor, focused })\n : options.tabBarIcon;\n }\n\n return null;\n };\n\n _renderTabBar = props => {\n const { state } = this.props.navigation;\n const route = state.routes[state.index];\n const { descriptors } = this.props;\n const descriptor = descriptors[route.key];\n const options = descriptor.options;\n\n const tabBarVisible =\n options.tabBarVisible == null ? true : options.tabBarVisible;\n\n const {\n tabBarComponent: TabBarComponent = MaterialTopTabBar,\n tabBarPosition,\n tabBarOptions,\n } = this.props;\n\n if (TabBarComponent === null || !tabBarVisible) {\n return null;\n }\n\n return (\n /* $FlowFixMe */\n \n );\n };\n\n _renderPanPager = props => ;\n\n _handleAnimationEnd = () => {\n const { lazy } = this.props;\n\n if (lazy) {\n this.setState({\n transitioningFromIndex: null,\n isSwiping: false,\n });\n }\n };\n\n _handleSwipeStart = () => {\n const { navigation, lazy } = this.props;\n\n if (lazy) {\n this.setState({\n isSwiping: true,\n loaded: [\n ...new Set([\n ...this.state.loaded,\n Math.max(navigation.state.index - 1, 0),\n Math.min(\n navigation.state.index + 1,\n navigation.state.routes.length - 1\n ),\n ]),\n ],\n });\n }\n };\n\n _handleIndexChange = index => {\n const { animationEnabled, navigation, onIndexChange, lazy } = this.props;\n\n if (lazy && animationEnabled) {\n this.setState({\n transitioningFromIndex: navigation.state.index || 0,\n });\n }\n\n onIndexChange(index);\n };\n\n _mustBeVisible = ({ index, focused }) => {\n const { animationEnabled, navigation } = this.props;\n const { isSwiping, transitioningFromIndex } = this.state;\n\n if (isSwiping) {\n const isSibling =\n navigation.state.index === index - 1 ||\n navigation.state.index === index + 1;\n\n if (isSibling) {\n return true;\n }\n }\n\n // The previous tab should remain visible while transitioning\n if (animationEnabled && transitioningFromIndex === index) {\n return true;\n }\n\n return focused;\n };\n\n _renderScene = ({ route }) => {\n const { renderScene, descriptors, lazy, optimizationsEnabled } = this.props;\n\n if (lazy) {\n const { loaded } = this.state;\n const { routes } = this.props.navigation.state;\n const index = routes.findIndex(({ key }) => key === route.key);\n const { navigation } = descriptors[route.key];\n\n const mustBeVisible = this._mustBeVisible({\n index,\n focused: navigation.isFocused(),\n });\n\n if (!loaded.includes(index) && !mustBeVisible) {\n return ;\n }\n\n if (optimizationsEnabled) {\n return (\n \n {renderScene({ route })}\n \n );\n }\n }\n\n return renderScene({ route });\n };\n\n render() {\n const {\n navigation,\n animationEnabled,\n // eslint-disable-next-line no-unused-vars\n renderScene,\n // eslint-disable-next-line no-unused-vars\n onIndexChange,\n ...rest\n } = this.props;\n\n let renderPager;\n\n const { state } = this.props.navigation;\n const route = state.routes[state.index];\n const { descriptors } = this.props;\n const descriptor = descriptors[route.key];\n const options = descriptor.options;\n\n let swipeEnabled =\n options.swipeEnabled == null\n ? this.props.swipeEnabled\n : options.swipeEnabled;\n\n if (typeof swipeEnabled === 'function') {\n swipeEnabled = swipeEnabled(state);\n }\n\n if (animationEnabled === false && swipeEnabled === false) {\n renderPager = this._renderPanPager;\n }\n\n return (\n \n );\n }\n}\n\npolyfill(MaterialTabView);\n\nexport default createTabNavigator(MaterialTabView);\n","/* @flow */\n\nexport { default as TabView } from './TabView';\nexport { default as TabBar } from './TabBar';\nexport { default as PagerDefault } from './PagerDefault';\nexport { default as PagerPan } from './PagerPan';\nexport { default as PagerScroll } from './PagerScroll';\nexport { default as PagerAndroid } from './PagerAndroid';\nexport { default as PagerExperimental } from './PagerExperimental';\nexport { default as SceneMap } from './SceneMap';\n\nexport type { Route } from './TypeDefinitions';\nexport type { Scene } from './TypeDefinitions';\nexport type { NavigationState } from './TypeDefinitions';\nexport type { SceneRendererProps } from './TypeDefinitions';\n","/* @flow */\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Animated, View, StyleSheet } from 'react-native';\nimport TabBar from './TabBar';\nimport PagerDefault from './PagerDefault';\nimport { NavigationStatePropType } from './PropTypes';\nimport type {\n Scene,\n SceneRendererProps,\n NavigationState,\n Layout,\n PagerCommonProps,\n PagerExtraProps,\n} from './TypeDefinitions';\nimport type { ViewStyleProp } from 'react-native/Libraries/StyleSheet/StyleSheet';\n\ntype Props = PagerCommonProps &\n PagerExtraProps & {\n navigationState: NavigationState,\n onIndexChange: (index: number) => mixed,\n initialLayout?: Layout,\n renderPager: (props: *) => React.Node,\n renderScene: (props: SceneRendererProps & Scene) => React.Node,\n renderTabBar: (props: SceneRendererProps) => React.Node,\n tabBarPosition: 'top' | 'bottom',\n useNativeDriver?: boolean,\n style?: ViewStyleProp,\n };\n\ntype State = {|\n layout: Layout & { measured: boolean },\n layoutXY: Animated.ValueXY,\n panX: Animated.Value,\n offsetX: Animated.Value,\n position: any,\n renderUnfocusedScenes: boolean,\n|};\n\nexport default class TabView extends React.Component, State> {\n static propTypes = {\n navigationState: NavigationStatePropType.isRequired,\n onIndexChange: PropTypes.func.isRequired,\n initialLayout: PropTypes.shape({\n height: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n }),\n canJumpToTab: PropTypes.func.isRequired,\n renderPager: PropTypes.func.isRequired,\n renderScene: PropTypes.func.isRequired,\n renderTabBar: PropTypes.func,\n tabBarPosition: PropTypes.oneOf(['top', 'bottom']),\n };\n\n static defaultProps = {\n canJumpToTab: () => true,\n tabBarPosition: 'top',\n renderTabBar: (props: *) => ,\n renderPager: (props: *) => ,\n getTestID: ({ route }: Scene<*>) =>\n typeof route.testID === 'string' ? route.testID : undefined,\n initialLayout: {\n height: 0,\n width: 0,\n },\n useNativeDriver: false,\n };\n\n constructor(props: Props) {\n super(props);\n\n const { navigationState } = this.props;\n const layout = {\n ...this.props.initialLayout,\n measured: false,\n };\n\n const panX = new Animated.Value(0);\n const offsetX = new Animated.Value(-navigationState.index * layout.width);\n const layoutXY = new Animated.ValueXY({\n // This is hacky, but we need to make sure that the value is never 0\n x: layout.width || 0.001,\n y: layout.height || 0.001,\n });\n const position = Animated.multiply(\n Animated.divide(Animated.add(panX, offsetX), layoutXY.x),\n -1\n );\n\n this.state = {\n layout,\n layoutXY,\n panX,\n offsetX,\n position,\n renderUnfocusedScenes: false,\n };\n }\n\n componentDidMount() {\n this._mounted = true;\n\n // Delay rendering of unfocused scenes for improved startup\n setTimeout(() => this.setState({ renderUnfocusedScenes: true }), 0);\n }\n\n componentWillUnmount() {\n this._mounted = false;\n }\n\n _mounted: boolean = false;\n _nextIndex: ?number;\n\n _renderScene = (props: SceneRendererProps & Scene) => {\n return this.props.renderScene(props);\n };\n\n _handleLayout = (e: any) => {\n const { height, width } = e.nativeEvent.layout;\n\n if (\n this.state.layout.width === width &&\n this.state.layout.height === height\n ) {\n return;\n }\n\n this.state.offsetX.setValue(-this.props.navigationState.index * width);\n this.state.layoutXY.setValue({\n // This is hacky, but we need to make sure that the value is never 0\n x: width || 0.001,\n y: height || 0.001,\n });\n this.setState({\n layout: {\n measured: true,\n height,\n width,\n },\n });\n };\n\n _buildSceneRendererProps = (): SceneRendererProps<*> => ({\n panX: this.state.panX,\n offsetX: this.state.offsetX,\n position: this.state.position,\n layout: this.state.layout,\n navigationState: this.props.navigationState,\n jumpTo: this._jumpTo,\n useNativeDriver: this.props.useNativeDriver === true,\n });\n\n _jumpTo = (key: string) => {\n if (!this._mounted) {\n // We are no longer mounted, this is a no-op\n return;\n }\n\n const { canJumpToTab, navigationState } = this.props;\n const index = navigationState.routes.findIndex(route => route.key === key);\n\n if (!canJumpToTab(navigationState.routes[index])) {\n return;\n }\n\n if (index !== navigationState.index) {\n this.props.onIndexChange(index);\n }\n };\n\n render() {\n const {\n /* eslint-disable no-unused-vars */\n navigationState,\n onIndexChange,\n initialLayout,\n renderScene,\n /* eslint-enable no-unused-vars */\n renderPager,\n renderTabBar,\n tabBarPosition,\n ...rest\n } = this.props;\n\n const props = this._buildSceneRendererProps();\n\n return (\n \n {tabBarPosition === 'top' && renderTabBar(props)}\n \n {renderPager({\n ...props,\n ...rest,\n panX: this.state.panX,\n offsetX: this.state.offsetX,\n children: navigationState.routes.map((route, index) => {\n const isFocused = this.props.navigationState.index === index;\n\n let scene;\n\n if (isFocused || this.state.renderUnfocusedScenes) {\n scene = this._renderScene({\n ...props,\n route,\n });\n } else {\n scene = ;\n }\n\n if (React.isValidElement(scene)) {\n /* $FlowFixMe: https://github.com/facebook/flow/issues/4775 */\n scene = React.cloneElement(scene, { key: route.key });\n }\n\n return scene;\n }),\n })}\n \n {tabBarPosition === 'bottom' && renderTabBar(props)}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n overflow: 'hidden',\n },\n pager: {\n flex: 1,\n },\n});\n","/* @flow */\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Animated,\n NativeModules,\n StyleSheet,\n View,\n ScrollView,\n Platform,\n I18nManager,\n} from 'react-native';\nimport TouchableItem from './TouchableItem';\nimport { SceneRendererPropType } from './PropTypes';\nimport type { Scene, SceneRendererProps } from './TypeDefinitions';\nimport type {\n ViewStyleProp,\n TextStyleProp,\n} from 'react-native/Libraries/StyleSheet/StyleSheet';\n\ntype IndicatorProps = SceneRendererProps & {\n width: number,\n};\n\ntype Props = SceneRendererProps & {\n scrollEnabled?: boolean,\n bounces?: boolean,\n pressColor?: string,\n pressOpacity?: number,\n getLabelText: (scene: Scene) => ?string,\n getAccessible: (scene: Scene) => ?boolean,\n getAccessibilityLabel: (scene: Scene) => ?string,\n getTestID: (scene: Scene) => ?string,\n renderLabel?: (scene: Scene) => React.Node,\n renderIcon?: (scene: Scene) => React.Node,\n renderBadge?: (scene: Scene) => React.Node,\n renderIndicator?: (props: IndicatorProps) => React.Node,\n onTabPress?: (scene: Scene) => mixed,\n onTabLongPress?: (scene: Scene) => mixed,\n tabStyle?: ViewStyleProp,\n indicatorStyle?: ViewStyleProp,\n labelStyle?: TextStyleProp,\n style?: ViewStyleProp,\n};\n\ntype State = {|\n visibility: Animated.Value,\n scrollAmount: Animated.Value,\n initialOffset: ?{| x: number, y: number |},\n|};\n\nconst useNativeDriver = Boolean(NativeModules.NativeAnimatedModule);\n\nexport default class TabBar extends React.Component, State> {\n static propTypes = {\n ...SceneRendererPropType,\n scrollEnabled: PropTypes.bool,\n bounces: PropTypes.bool,\n pressColor: TouchableItem.propTypes.pressColor,\n pressOpacity: TouchableItem.propTypes.pressOpacity,\n getLabelText: PropTypes.func,\n getAccessible: PropTypes.func,\n getAccessibilityLabel: PropTypes.func,\n getTestID: PropTypes.func,\n renderIcon: PropTypes.func,\n renderLabel: PropTypes.func,\n renderIndicator: PropTypes.func,\n onTabPress: PropTypes.func,\n onTabLongPress: PropTypes.func,\n labelStyle: PropTypes.any,\n style: PropTypes.any,\n };\n\n static defaultProps = {\n getLabelText: ({ route }: Scene) =>\n typeof route.title === 'string' ? route.title.toUpperCase() : route.title,\n getAccessible: ({ route }: Scene) =>\n typeof route.accessible !== 'undefined' ? route.accessible : true,\n getAccessibilityLabel: ({ route }: Scene) => route.accessibilityLabel,\n getTestID: ({ route }: Scene) => route.testID,\n };\n\n constructor(props: Props) {\n super(props);\n\n let initialVisibility = 1;\n\n if (this.props.scrollEnabled) {\n const tabWidth = this._getTabWidth(this.props);\n if (!tabWidth) {\n initialVisibility = 0;\n }\n }\n\n const initialOffset =\n this.props.scrollEnabled && this.props.layout.width\n ? {\n x: this._getScrollAmount(\n this.props,\n this.props.navigationState.index\n ),\n y: 0,\n }\n : undefined;\n\n this.state = {\n visibility: new Animated.Value(initialVisibility),\n scrollAmount: new Animated.Value(0),\n initialOffset,\n };\n }\n\n componentDidMount() {\n this.props.scrollEnabled && this._startTrackingPosition();\n }\n\n componentDidUpdate(prevProps: Props) {\n const prevTabWidth = this._getTabWidth(prevProps);\n const currentTabWidth = this._getTabWidth(this.props);\n const pendingIndex =\n typeof this._pendingIndex === 'number'\n ? this._pendingIndex\n : this.props.navigationState.index;\n\n this._pendingIndex = null;\n\n if (prevTabWidth !== currentTabWidth && currentTabWidth) {\n this.state.visibility.setValue(1);\n }\n\n if (\n prevProps.navigationState.routes.length !==\n this.props.navigationState.routes.length ||\n prevProps.layout.width !== this.props.layout.width\n ) {\n this._resetScroll(this.props.navigationState.index, false);\n } else if (prevProps.navigationState.index !== pendingIndex) {\n this._resetScroll(this.props.navigationState.index);\n }\n }\n\n componentWillUnmount() {\n this._stopTrackingPosition();\n }\n\n _scrollView: ?ScrollView;\n _isIntial: boolean = true;\n _isManualScroll: boolean = false;\n _isMomentumScroll: boolean = false;\n _pendingIndex: ?number;\n _scrollResetCallback: any;\n _lastPanX: ?number;\n _lastOffsetX: ?number;\n _panXListener: string;\n _offsetXListener: string;\n\n _startTrackingPosition = () => {\n this._offsetXListener = this.props.offsetX.addListener(({ value }) => {\n this._lastOffsetX = value;\n this._handlePosition();\n });\n this._panXListener = this.props.panX.addListener(({ value }) => {\n this._lastPanX = value;\n this._handlePosition();\n });\n };\n\n _stopTrackingPosition = () => {\n this.props.offsetX.removeListener(this._offsetXListener);\n this.props.panX.removeListener(this._panXListener);\n };\n\n _handlePosition = () => {\n const { navigationState, layout } = this.props;\n\n if (layout.width === 0) {\n // Don't do anything if we don't have layout yet\n return;\n }\n\n const panX = typeof this._lastPanX === 'number' ? this._lastPanX : 0;\n const offsetX =\n typeof this._lastOffsetX === 'number'\n ? this._lastOffsetX\n : -navigationState.index * layout.width;\n\n const value = (panX + offsetX) / -(layout.width || 0.001);\n\n this._adjustScroll(value);\n };\n\n _renderLabel = (scene: Scene<*>) => {\n if (typeof this.props.renderLabel !== 'undefined') {\n return this.props.renderLabel(scene);\n }\n const label = this.props.getLabelText(scene);\n if (typeof label !== 'string') {\n return null;\n }\n return (\n \n {label}\n \n );\n };\n\n _renderIndicator = (props: IndicatorProps) => {\n if (typeof this.props.renderIndicator !== 'undefined') {\n return this.props.renderIndicator(props);\n }\n const { width, position, navigationState } = props;\n const translateX = Animated.multiply(\n Animated.multiply(\n position.interpolate({\n inputRange: [0, navigationState.routes.length - 1],\n outputRange: [0, navigationState.routes.length - 1],\n extrapolate: 'clamp',\n }),\n width\n ),\n I18nManager.isRTL ? -1 : 1\n );\n return (\n \n );\n };\n\n _getTabWidth = props => {\n const { layout, navigationState, tabStyle } = props;\n const flattened = StyleSheet.flatten(tabStyle);\n\n if (flattened) {\n switch (typeof flattened.width) {\n case 'number':\n return flattened.width;\n case 'string':\n if (flattened.width.endsWith('%')) {\n const width = parseFloat(flattened.width);\n if (Number.isFinite(width)) {\n return layout.width * (width / 100);\n }\n }\n }\n }\n\n if (props.scrollEnabled) {\n return (layout.width / 5) * 2;\n }\n\n return layout.width / navigationState.routes.length;\n };\n\n _handleTabPress = ({ route }: Scene<*>) => {\n this._pendingIndex = this.props.navigationState.routes.indexOf(route);\n\n if (this.props.onTabPress) {\n this.props.onTabPress({ route });\n }\n\n this.props.jumpTo(route.key);\n };\n\n _handleTabLongPress = ({ route }: Scene<*>) => {\n if (this.props.onTabLongPress) {\n this.props.onTabLongPress({ route });\n }\n };\n\n _normalizeScrollValue = (props, value) => {\n const { layout, navigationState } = props;\n const tabWidth = this._getTabWidth(props);\n const tabBarWidth = Math.max(\n tabWidth * navigationState.routes.length,\n layout.width\n );\n const maxDistance = tabBarWidth - layout.width;\n\n return Math.max(Math.min(value, maxDistance), 0);\n };\n\n _getScrollAmount = (props, i) => {\n const { layout } = props;\n const tabWidth = this._getTabWidth(props);\n const centerDistance = tabWidth * (i + 1 / 2);\n const scrollAmount = centerDistance - layout.width / 2;\n\n return this._normalizeScrollValue(props, scrollAmount);\n };\n\n _adjustScroll = (value: number) => {\n if (this.props.scrollEnabled) {\n global.cancelAnimationFrame(this._scrollResetCallback);\n this._scrollView &&\n this._scrollView.scrollTo({\n x: this._normalizeScrollValue(\n this.props,\n this._getScrollAmount(this.props, value)\n ),\n animated: !this._isIntial, // Disable animation for the initial render\n });\n\n this._isIntial = false;\n }\n };\n\n _resetScroll = (value: number, animated = true) => {\n if (this.props.scrollEnabled) {\n global.cancelAnimationFrame(this._scrollResetCallback);\n this._scrollResetCallback = global.requestAnimationFrame(() => {\n this._scrollView &&\n this._scrollView.scrollTo({\n x: this._getScrollAmount(this.props, value),\n animated,\n });\n });\n }\n };\n\n _handleBeginDrag = () => {\n // onScrollBeginDrag fires when user touches the ScrollView\n this._isManualScroll = true;\n this._isMomentumScroll = false;\n };\n\n _handleEndDrag = () => {\n // onScrollEndDrag fires when user lifts his finger\n // onMomentumScrollBegin fires after touch end\n // run the logic in next frame so we get onMomentumScrollBegin first\n global.requestAnimationFrame(() => {\n if (this._isMomentumScroll) {\n return;\n }\n this._isManualScroll = false;\n });\n };\n\n _handleMomentumScrollBegin = () => {\n // onMomentumScrollBegin fires on flick, as well as programmatic scroll\n this._isMomentumScroll = true;\n };\n\n _handleMomentumScrollEnd = () => {\n // onMomentumScrollEnd fires when the scroll finishes\n this._isMomentumScroll = false;\n this._isManualScroll = false;\n };\n\n render() {\n const { position, navigationState, scrollEnabled, bounces } = this.props;\n const { routes } = navigationState;\n const tabWidth = this._getTabWidth(this.props);\n const tabBarWidth = tabWidth * routes.length;\n\n // Prepend '-1', so there are always at least 2 items in inputRange\n const inputRange = [-1, ...routes.map((x, i) => i)];\n const translateX = Animated.multiply(this.state.scrollAmount, -1);\n\n return (\n \n \n {this._renderIndicator({\n ...this.props,\n width: tabWidth,\n })}\n \n \n (this._scrollView = el && el.getNode())}\n >\n {routes.map((route, i) => {\n const outputRange = inputRange.map(\n inputIndex => (inputIndex === i ? 1 : 0.7)\n );\n const opacity = Animated.multiply(\n this.state.visibility,\n position.interpolate({\n inputRange,\n outputRange,\n })\n );\n const label = this._renderLabel({ route });\n const icon = this.props.renderIcon\n ? this.props.renderIcon({ route })\n : null;\n const badge = this.props.renderBadge\n ? this.props.renderBadge({ route })\n : null;\n\n const tabStyle = {};\n\n tabStyle.opacity = opacity;\n\n if (icon) {\n if (label) {\n tabStyle.paddingTop = 8;\n } else {\n tabStyle.padding = 12;\n }\n }\n\n const passedTabStyle = StyleSheet.flatten(this.props.tabStyle);\n const isWidthSet =\n (passedTabStyle &&\n typeof passedTabStyle.width !== 'undefined') ||\n scrollEnabled === true;\n const tabContainerStyle = {};\n\n if (isWidthSet) {\n tabStyle.width = tabWidth;\n }\n\n if (passedTabStyle && typeof passedTabStyle.flex === 'number') {\n tabContainerStyle.flex = passedTabStyle.flex;\n } else if (!isWidthSet) {\n tabContainerStyle.flex = 1;\n }\n\n let accessibilityLabel = this.props.getAccessibilityLabel({\n route,\n });\n\n accessibilityLabel =\n typeof accessibilityLabel !== 'undefined'\n ? accessibilityLabel\n : this.props.getLabelText({ route });\n\n const isFocused = i === navigationState.index;\n\n return (\n this._handleTabPress({ route })}\n onLongPress={() => this._handleTabLongPress({ route })}\n style={tabContainerStyle}\n >\n \n \n {icon}\n {label}\n \n {badge ? (\n \n {badge}\n \n ) : null}\n \n \n );\n })}\n \n \n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n scroll: {\n overflow: Platform.OS === 'web' ? ('auto': any) : 'scroll',\n },\n tabBar: {\n backgroundColor: '#2196f3',\n elevation: 4,\n shadowColor: 'black',\n shadowOpacity: 0.1,\n shadowRadius: StyleSheet.hairlineWidth,\n shadowOffset: {\n height: StyleSheet.hairlineWidth,\n },\n // We don't need zIndex on Android, disable it since it's buggy\n zIndex: Platform.OS === 'android' ? 0 : 1,\n },\n tabContent: {\n flexDirection: 'row',\n flexWrap: 'nowrap',\n },\n tabLabel: {\n backgroundColor: 'transparent',\n color: 'white',\n margin: 8,\n },\n tabItem: {\n flex: 1,\n padding: 8,\n alignItems: 'center',\n justifyContent: 'center',\n },\n badge: {\n position: 'absolute',\n top: 0,\n right: 0,\n },\n indicatorContainer: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n indicator: {\n backgroundColor: '#ffeb3b',\n position: 'absolute',\n left: 0,\n bottom: 0,\n right: 0,\n height: 2,\n },\n});\n","/* @flow */\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n TouchableNativeFeedback,\n TouchableOpacity,\n Platform,\n View,\n} from 'react-native';\nimport type { ViewStyleProp } from 'react-native/Libraries/StyleSheet/StyleSheet';\n\nconst LOLLIPOP = 21;\n\ntype Props = {\n onPress: () => mixed,\n delayPressIn?: number,\n borderless?: boolean,\n pressColor?: string,\n pressOpacity?: number,\n children?: React.Node,\n style?: ViewStyleProp,\n};\n\nexport default class TouchableItem extends React.Component {\n static propTypes = {\n onPress: PropTypes.func.isRequired,\n delayPressIn: PropTypes.number,\n borderless: PropTypes.bool,\n pressColor: PropTypes.string,\n pressOpacity: PropTypes.number,\n children: PropTypes.node.isRequired,\n };\n\n static defaultProps = {\n pressColor: 'rgba(255, 255, 255, .4)',\n };\n\n render() {\n const { style, pressOpacity, pressColor, borderless, ...rest } = this.props;\n\n if (Platform.OS === 'android' && Platform.Version >= LOLLIPOP) {\n return (\n \n {React.Children.only(this.props.children)}\n \n );\n } else {\n return (\n \n {this.props.children}\n \n );\n }\n }\n}\n","/* @flow */\n\nimport PropTypes from 'prop-types';\nimport { Animated } from 'react-native';\n\nexport const NavigationRoutePropType = PropTypes.shape({\n title: PropTypes.string,\n key: PropTypes.string.isRequired,\n});\n\nexport const NavigationStatePropType = PropTypes.shape({\n routes: PropTypes.arrayOf(NavigationRoutePropType).isRequired,\n index: PropTypes.number.isRequired,\n});\n\nexport const SceneRendererPropType = {\n panX: PropTypes.object.isRequired,\n offsetX: PropTypes.object.isRequired,\n layout: PropTypes.shape({\n measured: PropTypes.bool.isRequired,\n height: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n }).isRequired,\n navigationState: NavigationStatePropType.isRequired,\n position: PropTypes.object.isRequired,\n jumpTo: PropTypes.func.isRequired,\n useNativeDriver: PropTypes.bool,\n};\n\nexport const PagerRendererPropType = {\n layout: PropTypes.shape({\n measured: PropTypes.bool.isRequired,\n height: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n }).isRequired,\n navigationState: NavigationStatePropType.isRequired,\n panX: PropTypes.instanceOf(Animated.Value).isRequired,\n offsetX: PropTypes.instanceOf(Animated.Value).isRequired,\n canJumpToTab: PropTypes.func.isRequired,\n jumpTo: PropTypes.func.isRequired,\n animationEnabled: PropTypes.bool,\n swipeEnabled: PropTypes.bool,\n useNativeDriver: PropTypes.bool,\n onSwipeStart: PropTypes.func,\n onSwipeEnd: PropTypes.func,\n onAnimationEnd: PropTypes.func,\n children: PropTypes.node.isRequired,\n};\n","/* @flow */\n\nimport { Platform } from 'react-native';\n\nlet Pager;\n\nswitch (Platform.OS) {\n case 'android':\n Pager = require('./PagerAndroid').default;\n break;\n case 'ios':\n Pager = require('./PagerScroll').default;\n break;\n default:\n Pager = require('./PagerPan').default;\n break;\n}\n\nexport default Pager;\n","/* @flow */\n\nimport * as React from 'react';\nimport { View, ViewPagerAndroid, StyleSheet, I18nManager } from 'react-native';\nimport { PagerRendererPropType } from './PropTypes';\nimport type { PagerRendererProps } from './TypeDefinitions';\n\ntype PageScrollEvent = {\n nativeEvent: {\n position: number,\n offset: number,\n },\n};\n\ntype PageScrollState = 'dragging' | 'settling' | 'idle';\n\ntype Props = PagerRendererProps & {\n keyboardDismissMode: 'none' | 'on-drag',\n};\n\nexport default class PagerAndroid extends React.Component> {\n static propTypes = PagerRendererPropType;\n\n static defaultProps = {\n canJumpToTab: () => true,\n keyboardDismissMode: 'on-drag',\n };\n\n constructor(props: Props) {\n super(props);\n this._currentIndex = this.props.navigationState.index;\n }\n\n componentDidUpdate(prevProps: Props) {\n if (\n prevProps.navigationState.routes.length !==\n this.props.navigationState.routes.length ||\n prevProps.layout.width !== this.props.layout.width\n ) {\n this._handlePageChange(this.props.navigationState.index, false);\n } else if (\n prevProps.navigationState.index !== this.props.navigationState.index\n ) {\n this._handlePageChange(this.props.navigationState.index);\n }\n }\n\n _pageChangeCallabck: any;\n _viewPager: ?ViewPagerAndroid;\n _isIdle: boolean = true;\n _currentIndex = 0;\n\n _getPageIndex = (index: number) =>\n I18nManager.isRTL\n ? this.props.navigationState.routes.length - (index + 1)\n : index;\n\n _setPage = (index: number, animated = true) => {\n const pager = this._viewPager;\n\n if (pager) {\n const page = this._getPageIndex(index);\n\n if (this.props.animationEnabled === false || animated === false) {\n pager.setPageWithoutAnimation(page);\n } else {\n pager.setPage(page);\n }\n }\n };\n\n _handlePageChange = (index: number, animated?: boolean) => {\n if (this._isIdle && this._currentIndex !== index) {\n this._setPage(index, animated);\n this._currentIndex = index;\n }\n };\n\n _handlePageScroll = (e: PageScrollEvent) => {\n this.props.offsetX.setValue(\n this._getPageIndex(e.nativeEvent.position) * this.props.layout.width * -1\n );\n this.props.panX.setValue(\n e.nativeEvent.offset *\n this.props.layout.width *\n (I18nManager.isRTL ? 1 : -1)\n );\n };\n\n _handlePageScrollStateChanged = (e: PageScrollState) => {\n this._isIdle = e === 'idle';\n\n let nextIndex = this._currentIndex;\n\n const nextRoute = this.props.navigationState.routes[nextIndex];\n\n if (this.props.canJumpToTab({ route: nextRoute })) {\n this.props.jumpTo(nextRoute.key);\n } else {\n this._setPage(this.props.navigationState.index);\n this._currentIndex = this.props.navigationState.index;\n }\n\n switch (e) {\n case 'dragging':\n this.props.onSwipeStart && this.props.onSwipeStart();\n break;\n case 'settling':\n this.props.onSwipeEnd && this.props.onSwipeEnd();\n break;\n case 'idle':\n this.props.onAnimationEnd && this.props.onAnimationEnd();\n break;\n }\n };\n\n _handlePageSelected = (e: PageScrollEvent) => {\n const index = this._getPageIndex(e.nativeEvent.position);\n this._currentIndex = index;\n };\n\n render() {\n const { navigationState, swipeEnabled, keyboardDismissMode } = this.props;\n const children = I18nManager.isRTL\n ? React.Children.toArray(this.props.children).reverse()\n : React.Children.toArray(this.props.children);\n\n const content = children.map((child, i) => {\n const route = navigationState.routes[i];\n const focused = i === navigationState.index;\n\n return (\n \n {child}\n \n );\n });\n\n const initialPage = this._getPageIndex(navigationState.index);\n\n return (\n (this._viewPager = el)}\n >\n {content}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flexGrow: 1,\n },\n\n page: {\n overflow: 'hidden',\n },\n});\n","/* @flow */\n\nimport * as React from 'react';\nimport { View, ScrollView, StyleSheet } from 'react-native';\nimport { PagerRendererPropType } from './PropTypes';\nimport type { PagerRendererProps } from './TypeDefinitions';\n\ntype ScrollEvent = {\n nativeEvent: {\n contentOffset: {\n x: number,\n y: number,\n },\n contentSize: {\n height: number,\n width: number,\n },\n },\n};\n\ntype State = {|\n initialOffset: {| x: number, y: number |},\n|};\n\ntype Props = PagerRendererProps;\n\nexport default class PagerScroll extends React.Component<\n Props,\n State\n> {\n static propTypes = PagerRendererPropType;\n\n static defaultProps = {\n canJumpToTab: () => true,\n };\n\n constructor(props: Props) {\n super(props);\n\n const { navigationState, layout } = this.props;\n\n this.state = {\n initialOffset: {\n x: navigationState.index * layout.width,\n y: 0,\n },\n };\n }\n\n componentDidMount() {\n this._setInitialPage();\n }\n\n componentDidUpdate(prevProps: Props) {\n const amount = this.props.navigationState.index * this.props.layout.width;\n\n if (\n prevProps.navigationState.routes.length !==\n this.props.navigationState.routes.length ||\n prevProps.layout.width !== this.props.layout.width\n ) {\n this._scrollTo(amount, false);\n } else if (\n prevProps.navigationState.index !== this.props.navigationState.index\n ) {\n this._scrollTo(amount);\n }\n }\n\n _scrollView: ?ScrollView;\n _idleCallback: any;\n _isIdle: boolean = true;\n _isInitial: boolean = true;\n\n _setInitialPage = () => {\n if (this.props.layout.width) {\n this._isInitial = true;\n this._scrollTo(\n this.props.navigationState.index * this.props.layout.width,\n false\n );\n }\n\n setTimeout(() => {\n this._isInitial = false;\n }, 50);\n };\n\n _scrollTo = (x: number, animated = true) => {\n if (this._isIdle && this._scrollView) {\n this._scrollView.scrollTo({\n x,\n animated: animated && this.props.animationEnabled !== false,\n });\n }\n };\n\n _handleMomentumScrollEnd = (e: ScrollEvent) => {\n let nextIndex = Math.round(\n e.nativeEvent.contentOffset.x / this.props.layout.width\n );\n\n const nextRoute = this.props.navigationState.routes[nextIndex];\n\n if (this.props.canJumpToTab({ route: nextRoute })) {\n this.props.jumpTo(nextRoute.key);\n this.props.onAnimationEnd && this.props.onAnimationEnd();\n } else {\n global.requestAnimationFrame(() => {\n this._scrollTo(\n this.props.navigationState.index * this.props.layout.width\n );\n });\n }\n };\n\n _handleScroll = (e: ScrollEvent) => {\n if (this._isInitial || e.nativeEvent.contentSize.width === 0) {\n return;\n }\n\n const { navigationState, layout } = this.props;\n const offset = navigationState.index * layout.width;\n\n this.props.offsetX.setValue(-offset);\n this.props.panX.setValue(offset - e.nativeEvent.contentOffset.x);\n\n global.cancelAnimationFrame(this._idleCallback);\n\n this._isIdle = false;\n this._idleCallback = global.requestAnimationFrame(() => {\n this._isIdle = true;\n });\n };\n\n render() {\n const {\n children,\n layout,\n navigationState,\n onSwipeStart,\n onSwipeEnd,\n } = this.props;\n\n return (\n (this._scrollView = el)}\n >\n {React.Children.map(children, (child, i) => {\n const route = navigationState.routes[i];\n const focused = i === navigationState.index;\n\n return (\n \n {focused || layout.width ? child : null}\n \n );\n })}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n page: {\n flex: 1,\n overflow: 'hidden',\n },\n});\n","/* @flow */\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Animated,\n I18nManager,\n PanResponder,\n StyleSheet,\n View,\n Platform,\n} from 'react-native';\nimport { PagerRendererPropType } from './PropTypes';\nimport type { PagerRendererProps } from './TypeDefinitions';\n\ntype GestureEvent = {\n nativeEvent: {\n changedTouches: Array<*>,\n identifier: number,\n locationX: number,\n locationY: number,\n pageX: number,\n pageY: number,\n target: number,\n timestamp: number,\n touches: Array<*>,\n },\n};\n\ntype GestureState = {\n stateID: number,\n moveX: number,\n moveY: number,\n x0: number,\n y0: number,\n dx: number,\n dy: number,\n vx: number,\n vy: number,\n numberActiveTouches: number,\n};\n\ntype Props = PagerRendererProps & {\n swipeDistanceThreshold?: number,\n swipeVelocityThreshold?: number,\n};\n\nconst DEAD_ZONE = 12;\n\nconst DefaultTransitionSpec = {\n timing: Animated.spring,\n tension: 300,\n friction: 35,\n};\n\nexport default class PagerPan extends React.Component> {\n static propTypes = {\n ...PagerRendererPropType,\n swipeDistanceThreshold: PropTypes.number,\n swipeVelocityThreshold: PropTypes.number,\n };\n\n static defaultProps = {\n canJumpToTab: () => true,\n initialLayout: {\n height: 0,\n width: 0,\n },\n };\n\n componentDidUpdate(prevProps: Props) {\n this._currentIndex = this.props.navigationState.index;\n\n if (\n prevProps.navigationState.routes.length !==\n this.props.navigationState.routes.length ||\n prevProps.layout.width !== this.props.layout.width\n ) {\n this._transitionTo(this.props.navigationState.index, false);\n } else if (\n prevProps.navigationState.index !== this.props.navigationState.index\n ) {\n this._transitionTo(this.props.navigationState.index);\n }\n }\n\n _currentIndex = this.props.navigationState.index;\n _pendingIndex: ?number;\n\n _isMovingHorizontally = (evt: GestureEvent, gestureState: GestureState) => {\n return (\n Math.abs(gestureState.dx) > Math.abs(gestureState.dy * 2) &&\n Math.abs(gestureState.vx) > Math.abs(gestureState.vy * 2)\n );\n };\n\n _canMoveScreen = (evt: GestureEvent, gestureState: GestureState) => {\n if (this.props.swipeEnabled === false) {\n return false;\n }\n\n const {\n navigationState: { routes },\n } = this.props;\n\n return (\n this._isMovingHorizontally(evt, gestureState) &&\n ((gestureState.dx >= DEAD_ZONE && this._currentIndex > 0) ||\n (gestureState.dx <= -DEAD_ZONE &&\n this._currentIndex < routes.length - 1))\n );\n };\n\n _startGesture = () => {\n this.props.onSwipeStart && this.props.onSwipeStart();\n this.props.panX.stopAnimation();\n };\n\n _respondToGesture = (evt: GestureEvent, gestureState: GestureState) => {\n const {\n navigationState: { routes, index },\n } = this.props;\n\n if (\n // swiping left\n (gestureState.dx > 0 && index <= 0) ||\n // swiping right\n (gestureState.dx < 0 && index >= routes.length - 1)\n ) {\n return;\n }\n\n this.props.panX.setValue(gestureState.dx);\n };\n\n _finishGesture = (evt: GestureEvent, gestureState: GestureState) => {\n const {\n navigationState,\n layout,\n swipeDistanceThreshold = layout.width / 1.75,\n } = this.props;\n\n let { swipeVelocityThreshold = 0.15 } = this.props;\n\n this.props.onSwipeEnd && this.props.onSwipeEnd();\n\n if (Platform.OS === 'android') {\n // on Android, velocity is way lower due to timestamp being in nanosecond\n // normalize it to have the same velocity on both iOS and Android\n swipeVelocityThreshold /= 1000000;\n }\n\n const currentIndex =\n typeof this._pendingIndex === 'number'\n ? this._pendingIndex\n : this._currentIndex;\n\n let nextIndex = currentIndex;\n\n if (\n Math.abs(gestureState.dx) > Math.abs(gestureState.dy) &&\n Math.abs(gestureState.vx) > Math.abs(gestureState.vy) &&\n (Math.abs(gestureState.dx) > swipeDistanceThreshold ||\n Math.abs(gestureState.vx) > swipeVelocityThreshold)\n ) {\n nextIndex = Math.round(\n Math.min(\n Math.max(\n 0,\n currentIndex - gestureState.dx / Math.abs(gestureState.dx)\n ),\n navigationState.routes.length - 1\n )\n );\n\n this._currentIndex = nextIndex;\n }\n\n if (\n !isFinite(nextIndex) ||\n !this.props.canJumpToTab({\n route: this.props.navigationState.routes[nextIndex],\n })\n ) {\n nextIndex = currentIndex;\n }\n\n this._transitionTo(nextIndex);\n };\n\n _transitionTo = (index: number, animated: boolean = true) => {\n const offset = -index * this.props.layout.width;\n const route = this.props.navigationState.routes[index];\n\n if (this.props.animationEnabled === false || animated === false) {\n this.props.panX.setValue(0);\n this.props.offsetX.setValue(offset);\n this.props.jumpTo(route.key);\n return;\n }\n\n const { timing, ...transitionConfig } = DefaultTransitionSpec;\n\n Animated.parallel([\n timing(this.props.panX, {\n ...transitionConfig,\n toValue: 0,\n }),\n timing(this.props.offsetX, {\n ...transitionConfig,\n toValue: offset,\n }),\n ]).start(({ finished }) => {\n if (finished) {\n this.props.jumpTo(route.key);\n this.props.onAnimationEnd && this.props.onAnimationEnd();\n this._pendingIndex = null;\n }\n });\n\n this._pendingIndex = index;\n };\n\n _panResponder = PanResponder.create({\n onMoveShouldSetPanResponder: this._canMoveScreen,\n onMoveShouldSetPanResponderCapture: this._canMoveScreen,\n onPanResponderGrant: this._startGesture,\n onPanResponderMove: this._respondToGesture,\n onPanResponderTerminate: this._finishGesture,\n onPanResponderRelease: this._finishGesture,\n onPanResponderTerminationRequest: () => true,\n });\n\n render() {\n const { panX, offsetX, navigationState, layout, children } = this.props;\n const { width } = layout;\n const { routes } = navigationState;\n const maxTranslate = width * (routes.length - 1);\n const translateX = Animated.multiply(\n Animated.add(panX, offsetX).interpolate({\n inputRange: [-maxTranslate, 0],\n outputRange: [-maxTranslate, 0],\n extrapolate: 'clamp',\n }),\n I18nManager.isRTL ? -1 : 1\n );\n\n return (\n \n {React.Children.map(children, (child, i) => {\n const route = navigationState.routes[i];\n const focused = i === navigationState.index;\n\n return (\n \n {focused || width ? child : null}\n \n );\n })}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n sheet: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'stretch',\n },\n});\n","/* @flow */\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Animated, StyleSheet, View } from 'react-native';\nimport { PagerRendererPropType } from './PropTypes';\nimport type { PagerRendererProps } from './TypeDefinitions';\n\ntype Props = PagerRendererProps & {\n swipeDistanceThreshold?: number,\n swipeVelocityThreshold?: number,\n GestureHandler: any,\n};\n\nconst DefaultTransitionSpec = {\n timing: Animated.spring,\n tension: 68,\n friction: 12,\n};\n\nexport default class PagerExperimental extends React.Component> {\n static propTypes = {\n ...PagerRendererPropType,\n swipeDistanceThreshold: PropTypes.number,\n swipeVelocityThreshold: PropTypes.number,\n GestureHandler: PropTypes.object,\n };\n\n static defaultProps = {\n canJumpToTab: () => true,\n };\n\n componentDidUpdate(prevProps: Props) {\n if (\n prevProps.navigationState.routes.length !==\n this.props.navigationState.routes.length ||\n prevProps.layout.width !== this.props.layout.width\n ) {\n this._transitionTo(this.props.navigationState.index, undefined, false);\n } else if (\n prevProps.navigationState.index !== this.props.navigationState.index &&\n this.props.navigationState.index !== this._pendingIndex\n ) {\n this._transitionTo(this.props.navigationState.index);\n }\n }\n\n _handleHandlerStateChange = event => {\n const { GestureHandler } = this.props;\n\n if (event.nativeEvent.state === GestureHandler.State.BEGAN) {\n this.props.onSwipeStart && this.props.onSwipeStart();\n } else if (event.nativeEvent.state === GestureHandler.State.END) {\n this.props.onSwipeEnd && this.props.onSwipeEnd();\n\n const {\n navigationState,\n layout,\n swipeDistanceThreshold = layout.width / 1.75,\n swipeVelocityThreshold = 150,\n } = this.props;\n const {\n translationX,\n translationY,\n velocityX,\n velocityY,\n } = event.nativeEvent;\n const currentIndex =\n typeof this._pendingIndex === 'number'\n ? this._pendingIndex\n : navigationState.index;\n\n let nextIndex = currentIndex;\n\n if (\n Math.abs(translationX) > Math.abs(translationY) &&\n Math.abs(velocityX) > Math.abs(velocityY) &&\n (Math.abs(translationX) > swipeDistanceThreshold ||\n Math.abs(velocityX) > swipeVelocityThreshold)\n ) {\n nextIndex = Math.round(\n Math.min(\n Math.max(0, currentIndex - translationX / Math.abs(translationX)),\n navigationState.routes.length - 1\n )\n );\n }\n\n if (\n !isFinite(nextIndex) ||\n !this.props.canJumpToTab(this.props.navigationState.routes[nextIndex])\n ) {\n nextIndex = currentIndex;\n }\n\n this._transitionTo(nextIndex, velocityX);\n }\n };\n\n _transitionTo = (\n index: number,\n velocity?: number,\n animated?: boolean = true\n ) => {\n const offset = -index * this.props.layout.width;\n\n if (this.props.animationEnabled === false || animated === false) {\n this.props.panX.setValue(0);\n this.props.offsetX.setValue(offset);\n return;\n }\n\n const { timing, ...transitionConfig } = DefaultTransitionSpec;\n const { useNativeDriver } = this.props;\n\n Animated.parallel([\n timing(this.props.panX, {\n ...transitionConfig,\n toValue: 0,\n velocity,\n useNativeDriver,\n }),\n timing(this.props.offsetX, {\n ...transitionConfig,\n toValue: offset,\n velocity,\n useNativeDriver,\n }),\n ]).start(({ finished }) => {\n if (finished) {\n const route = this.props.navigationState.routes[index];\n this.props.jumpTo(route.key);\n this.props.onAnimationEnd && this.props.onAnimationEnd();\n this._pendingIndex = null;\n }\n });\n\n this._pendingIndex = index;\n };\n\n _pendingIndex: ?number;\n\n render() {\n const {\n GestureHandler,\n panX,\n offsetX,\n layout,\n navigationState,\n swipeEnabled,\n children,\n } = this.props;\n const { width } = layout;\n const { routes } = navigationState;\n const maxTranslate = width * (routes.length - 1);\n const translateX =\n routes.length > 1\n ? Animated.add(panX, offsetX).interpolate({\n inputRange: [-maxTranslate, 0],\n outputRange: [-maxTranslate, 0],\n extrapolate: 'clamp',\n })\n : 0;\n\n return (\n \n \n {React.Children.map(children, (child, i) => {\n const route = navigationState.routes[i];\n const focused = i === navigationState.index;\n\n return (\n \n {focused || width ? child : null}\n \n );\n })}\n \n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n sheet: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'stretch',\n },\n});\n","/* @flow */\n\nimport * as React from 'react';\n\nclass SceneComponent extends React.PureComponent<*> {\n render() {\n const { component, ...rest } = this.props;\n return React.createElement(component, rest);\n }\n}\n\nexport default function SceneMap(scenes: {\n [key: string]: React.ComponentType,\n}) {\n return ({ route, jumpTo }: T) => (\n \n );\n}\n","/* @flow */\n\nimport * as React from 'react';\nimport { Animated, StyleSheet } from 'react-native';\nimport { TabBar } from 'react-native-tab-view';\nimport CrossFadeIcon from './CrossFadeIcon';\n\nexport type TabBarOptions = {\n activeTintColor?: string,\n inactiveTintColor?: string,\n showLabel?: boolean,\n showIcon?: boolean,\n upperCaseLabel?: boolean,\n labelStyle?: any,\n iconStyle?: any,\n allowFontScaling?: boolean,\n};\n\ntype Props = TabBarOptions & {\n position: Animated.Value,\n offsetX: Animated.Value,\n panX: Animated.Value,\n layout: any,\n navigation: any,\n renderIcon: (props: {\n route: any,\n focused: boolean,\n tintColor: string,\n }) => React.Node,\n getLabelText: (props: { route: any }) => any,\n getAccessibilityLabel: (props: { route: any }) => string,\n getTestID: (props: { route: any }) => string,\n useNativeDriver?: boolean,\n jumpTo: (key: string) => any,\n};\n\nexport default class TabBarTop extends React.PureComponent {\n static defaultProps = {\n activeTintColor: '#fff',\n inactiveTintColor: '#fff',\n showIcon: false,\n showLabel: true,\n upperCaseLabel: true,\n allowFontScaling: true,\n };\n\n _renderLabel = ({ route }) => {\n const {\n position,\n navigation,\n activeTintColor,\n inactiveTintColor,\n showLabel,\n upperCaseLabel,\n labelStyle,\n allowFontScaling,\n } = this.props;\n\n if (showLabel === false) {\n return null;\n }\n\n const { routes } = navigation.state;\n const index = routes.indexOf(route);\n const focused = index === navigation.state.index;\n\n // Prepend '-1', so there are always at least 2 items in inputRange\n const inputRange = [-1, ...routes.map((x, i) => i)];\n const outputRange = inputRange.map(\n inputIndex => (inputIndex === index ? activeTintColor : inactiveTintColor)\n );\n const color = position.interpolate({\n inputRange,\n outputRange: outputRange,\n });\n\n const tintColor = focused ? activeTintColor : inactiveTintColor;\n const label = this.props.getLabelText({ route });\n\n if (typeof label === 'string') {\n return (\n \n {upperCaseLabel ? label.toUpperCase() : label}\n \n );\n }\n if (typeof label === 'function') {\n return label({ focused, tintColor });\n }\n\n return label;\n };\n\n _renderIcon = ({ route }) => {\n const {\n position,\n navigation,\n activeTintColor,\n inactiveTintColor,\n renderIcon,\n showIcon,\n iconStyle,\n } = this.props;\n\n if (showIcon === false) {\n return null;\n }\n\n const index = navigation.state.routes.indexOf(route);\n\n // Prepend '-1', so there are always at least 2 items in inputRange\n const inputRange = [-1, ...navigation.state.routes.map((x, i) => i)];\n const activeOpacity = position.interpolate({\n inputRange,\n outputRange: inputRange.map(i => (i === index ? 1 : 0)),\n });\n const inactiveOpacity = position.interpolate({\n inputRange,\n outputRange: inputRange.map(i => (i === index ? 0 : 1)),\n });\n\n return (\n \n );\n };\n\n render() {\n /* eslint-disable no-unused-vars */\n const { navigation, renderIcon, getLabelText, ...rest } = this.props;\n\n return (\n /* $FlowFixMe */\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n icon: {\n height: 24,\n width: 24,\n },\n label: {\n textAlign: 'center',\n fontSize: 13,\n margin: 8,\n backgroundColor: 'transparent',\n },\n});\n","import NavigationActions from '../NavigationActions';\nimport StackActions from './StackActions';\nimport createConfigGetter from './createConfigGetter';\nimport getScreenForRouteName from './getScreenForRouteName';\nimport StateUtils from '../StateUtils';\nimport validateRouteConfigMap from './validateRouteConfigMap';\nimport invariant from '../utils/invariant';\nimport { generateKey } from './KeyGenerator';\nimport { createPathParser } from './pathUtils';\n\nfunction behavesLikePushAction(action) {\n return (\n action.type === NavigationActions.NAVIGATE ||\n action.type === StackActions.PUSH\n );\n}\n\nconst defaultActionCreators = (route, navStateKey) => ({});\n\nfunction isResetToRootStack(action) {\n return action.type === StackActions.RESET && action.key === null;\n}\n\nexport default (routeConfigs, stackConfig = {}) => {\n // Fail fast on invalid route definitions\n validateRouteConfigMap(routeConfigs);\n\n const childRouters = {};\n const routeNames = Object.keys(routeConfigs);\n\n // Loop through routes and find child routers\n routeNames.forEach(routeName => {\n const screen = getScreenForRouteName(routeConfigs, routeName);\n if (screen && screen.router) {\n // If it has a router it's a navigator.\n childRouters[routeName] = screen.router;\n } else {\n // If it doesn't have router it's an ordinary React component.\n childRouters[routeName] = null;\n }\n });\n\n const { initialRouteParams } = stackConfig;\n const getCustomActionCreators =\n stackConfig.getCustomActionCreators || defaultActionCreators;\n\n const initialRouteName = stackConfig.initialRouteName || routeNames[0];\n\n const initialChildRouter = childRouters[initialRouteName];\n\n function getInitialState(action) {\n let route = {};\n const childRouter = childRouters[action.routeName];\n\n // This is a push-like action, and childRouter will be a router or null if we are responsible for this routeName\n if (behavesLikePushAction(action) && childRouter !== undefined) {\n let childState = {};\n // The router is null for normal leaf routes\n if (childRouter !== null) {\n const childAction =\n action.action || NavigationActions.init({ params: action.params });\n childState = childRouter.getStateForAction(childAction);\n }\n return {\n key: 'StackRouterRoot',\n isTransitioning: false,\n index: 0,\n routes: [\n {\n params: action.params,\n ...childState,\n key: action.key || generateKey(),\n routeName: action.routeName,\n },\n ],\n };\n }\n\n if (initialChildRouter) {\n route = initialChildRouter.getStateForAction(\n NavigationActions.navigate({\n routeName: initialRouteName,\n params: initialRouteParams,\n })\n );\n }\n const params = (route.params || action.params || initialRouteParams) && {\n ...(route.params || {}),\n ...(action.params || {}),\n ...(initialRouteParams || {}),\n };\n const { initialRouteKey } = stackConfig;\n route = {\n ...route,\n ...(params ? { params } : {}),\n routeName: initialRouteName,\n key: action.key || (initialRouteKey || generateKey()),\n };\n return {\n key: 'StackRouterRoot',\n isTransitioning: false,\n index: 0,\n routes: [route],\n };\n }\n\n const {\n getPathAndParamsForRoute,\n getActionForPathAndParams,\n } = createPathParser(childRouters, routeConfigs, stackConfig);\n\n return {\n childRouters,\n\n getComponentForState(state) {\n const activeChildRoute = state.routes[state.index];\n const { routeName } = activeChildRoute;\n if (childRouters[routeName]) {\n return childRouters[routeName].getComponentForState(activeChildRoute);\n }\n return getScreenForRouteName(routeConfigs, routeName);\n },\n\n getComponentForRouteName(routeName) {\n return getScreenForRouteName(routeConfigs, routeName);\n },\n\n getActionCreators(route, navStateKey) {\n return {\n ...getCustomActionCreators(route, navStateKey),\n pop: (n, params) =>\n StackActions.pop({\n n,\n ...params,\n }),\n popToTop: params => StackActions.popToTop(params),\n push: (routeName, params, action) =>\n StackActions.push({\n routeName,\n params,\n action,\n }),\n replace: (replaceWith, params, action, newKey) => {\n if (typeof replaceWith === 'string') {\n return StackActions.replace({\n routeName: replaceWith,\n params,\n action,\n key: route.key,\n newKey,\n });\n }\n invariant(\n typeof replaceWith === 'object',\n 'Must replaceWith an object or a string'\n );\n invariant(\n params == null,\n 'Params must not be provided to .replace() when specifying an object'\n );\n invariant(\n action == null,\n 'Child action must not be provided to .replace() when specifying an object'\n );\n invariant(\n newKey == null,\n 'Child action must not be provided to .replace() when specifying an object'\n );\n return StackActions.replace(replaceWith);\n },\n reset: (actions, index) =>\n StackActions.reset({\n actions,\n index: index == null ? actions.length - 1 : index,\n key: navStateKey,\n }),\n dismiss: () =>\n NavigationActions.back({\n key: navStateKey,\n }),\n };\n },\n\n getStateForAction(action, state) {\n // Set up the initial state if needed\n if (!state) {\n return getInitialState(action);\n }\n\n const activeChildRoute = state.routes[state.index];\n\n if (\n !isResetToRootStack(action) &&\n action.type !== NavigationActions.NAVIGATE\n ) {\n // Let the active child router handle the action\n const activeChildRouter = childRouters[activeChildRoute.routeName];\n if (activeChildRouter) {\n const route = activeChildRouter.getStateForAction(\n action,\n activeChildRoute\n );\n if (route !== null && route !== activeChildRoute) {\n return StateUtils.replaceAt(\n state,\n activeChildRoute.key,\n route,\n // the following tells replaceAt to NOT change the index to this route for the setParam action, because people don't expect param-setting actions to switch the active route\n action.type === NavigationActions.SET_PARAMS\n );\n }\n }\n } else if (action.type === NavigationActions.NAVIGATE) {\n // Traverse routes from the top of the stack to the bottom, so the\n // active route has the first opportunity, then the one before it, etc.\n for (let childRoute of state.routes.slice().reverse()) {\n let childRouter = childRouters[childRoute.routeName];\n let childAction =\n action.routeName === childRoute.routeName && action.action\n ? action.action\n : action;\n\n if (childRouter) {\n const nextRouteState = childRouter.getStateForAction(\n childAction,\n childRoute\n );\n\n if (nextRouteState === null || nextRouteState !== childRoute) {\n const newState = StateUtils.replaceAndPrune(\n state,\n nextRouteState ? nextRouteState.key : childRoute.key,\n nextRouteState ? nextRouteState : childRoute\n );\n return {\n ...newState,\n isTransitioning:\n state.index !== newState.index\n ? action.immediate !== true\n : state.isTransitioning,\n };\n }\n }\n }\n }\n\n // Handle explicit push navigation action. This must happen after the\n // focused child router has had a chance to handle the action.\n if (\n behavesLikePushAction(action) &&\n childRouters[action.routeName] !== undefined\n ) {\n const childRouter = childRouters[action.routeName];\n let route;\n\n invariant(\n action.type !== StackActions.PUSH || action.key == null,\n 'StackRouter does not support key on the push action'\n );\n\n // Before pushing a new route we first try to find one in the existing route stack\n // More information on this: https://github.com/react-navigation/rfcs/blob/master/text/0004-less-pushy-navigate.md\n const lastRouteIndex = state.routes.findIndex(r => {\n if (action.key) {\n return r.key === action.key;\n } else {\n return r.routeName === action.routeName;\n }\n });\n\n if (action.type !== StackActions.PUSH && lastRouteIndex !== -1) {\n // If index is unchanged and params are not being set, leave state identity intact\n if (state.index === lastRouteIndex && !action.params) {\n return null;\n }\n\n // Remove the now unused routes at the tail of the routes array\n const routes = state.routes.slice(0, lastRouteIndex + 1);\n\n // Apply params if provided, otherwise leave route identity intact\n if (action.params) {\n const route = state.routes[lastRouteIndex];\n routes[lastRouteIndex] = {\n ...route,\n params: {\n ...route.params,\n ...action.params,\n },\n };\n }\n // Return state with new index. Change isTransitioning only if index has changed\n return {\n ...state,\n isTransitioning:\n state.index !== lastRouteIndex\n ? action.immediate !== true\n : state.isTransitioning,\n index: lastRouteIndex,\n routes,\n };\n }\n\n if (childRouter) {\n const childAction =\n action.action || NavigationActions.init({ params: action.params });\n route = {\n params: action.params,\n // merge the child state in this order to allow params override\n ...childRouter.getStateForAction(childAction),\n routeName: action.routeName,\n key: action.key || generateKey(),\n };\n } else {\n route = {\n params: action.params,\n routeName: action.routeName,\n key: action.key || generateKey(),\n };\n }\n return {\n ...StateUtils.push(state, route),\n isTransitioning: action.immediate !== true,\n };\n } else if (\n action.type === StackActions.PUSH &&\n childRouters[action.routeName] === undefined\n ) {\n // Return the state identity to bubble the action up\n return state;\n }\n\n // Handle navigation to other child routers that are not yet pushed\n if (behavesLikePushAction(action)) {\n const childRouterNames = Object.keys(childRouters);\n for (let i = 0; i < childRouterNames.length; i++) {\n const childRouterName = childRouterNames[i];\n const childRouter = childRouters[childRouterName];\n if (childRouter) {\n // For each child router, start with a blank state\n const initChildRoute = childRouter.getStateForAction(\n NavigationActions.init()\n );\n // Then check to see if the router handles our navigate action\n const navigatedChildRoute = childRouter.getStateForAction(\n action,\n initChildRoute\n );\n let routeToPush = null;\n if (navigatedChildRoute === null) {\n // Push the route if the router has 'handled' the action and returned null\n routeToPush = initChildRoute;\n } else if (navigatedChildRoute !== initChildRoute) {\n // Push the route if the state has changed in response to this navigation\n routeToPush = navigatedChildRoute;\n }\n if (routeToPush) {\n const route = {\n ...routeToPush,\n routeName: childRouterName,\n key: action.key || generateKey(),\n };\n return {\n ...StateUtils.push(state, route),\n isTransitioning: action.immediate !== true,\n };\n }\n }\n }\n }\n\n // Handle pop-to-top behavior. Make sure this happens after children have had a chance to handle the action, so that the inner stack pops to top first.\n if (action.type === StackActions.POP_TO_TOP) {\n // Refuse to handle pop to top if a key is given that doesn't correspond\n // to this router\n if (action.key && state.key !== action.key) {\n return state;\n }\n\n // If we're already at the top, then we return the state with a new\n // identity so that the action is handled by this router.\n if (state.index > 0) {\n return {\n ...state,\n isTransitioning: action.immediate !== true,\n index: 0,\n routes: [state.routes[0]],\n };\n }\n return state;\n }\n\n // Handle replace action\n if (action.type === StackActions.REPLACE) {\n let routeIndex;\n\n // If the key param is undefined, set the index to the last route in the stack\n if (action.key === undefined && state.routes.length) {\n routeIndex = state.routes.length - 1;\n } else {\n routeIndex = state.routes.findIndex(r => r.key === action.key);\n }\n\n // Only replace if the key matches one of our routes\n if (routeIndex !== -1) {\n const childRouter = childRouters[action.routeName];\n let childState = {};\n if (childRouter) {\n const childAction =\n action.action ||\n NavigationActions.init({ params: action.params });\n childState = childRouter.getStateForAction(childAction);\n }\n const routes = [...state.routes];\n routes[routeIndex] = {\n params: action.params,\n // merge the child state in this order to allow params override\n ...childState,\n routeName: action.routeName,\n key: action.newKey || generateKey(),\n };\n return { ...state, routes };\n }\n }\n\n // Update transitioning state\n if (\n action.type === StackActions.COMPLETE_TRANSITION &&\n (action.key == null || action.key === state.key) &&\n state.isTransitioning\n ) {\n return {\n ...state,\n isTransitioning: false,\n };\n }\n\n if (action.type === NavigationActions.SET_PARAMS) {\n const key = action.key;\n const lastRoute = state.routes.find(route => route.key === key);\n if (lastRoute) {\n const params = {\n ...lastRoute.params,\n ...action.params,\n };\n const routes = [...state.routes];\n routes[state.routes.indexOf(lastRoute)] = {\n ...lastRoute,\n params,\n };\n return {\n ...state,\n routes,\n };\n }\n }\n\n if (action.type === StackActions.RESET) {\n // Only handle reset actions that are unspecified or match this state key\n if (action.key != null && action.key != state.key) {\n // Deliberately use != instead of !== so we can match null with\n // undefined on either the state or the action\n return state;\n }\n const newStackActions = action.actions;\n\n return {\n ...state,\n routes: newStackActions.map(newStackAction => {\n const router = childRouters[newStackAction.routeName];\n\n let childState = {};\n\n if (router) {\n const childAction =\n newStackAction.action ||\n NavigationActions.init({ params: newStackAction.params });\n\n childState = router.getStateForAction(childAction);\n }\n\n return {\n params: newStackAction.params,\n ...childState,\n routeName: newStackAction.routeName,\n key: newStackAction.key || generateKey(),\n };\n }),\n index: action.index,\n };\n }\n\n if (\n action.type === NavigationActions.BACK ||\n action.type === StackActions.POP\n ) {\n const { key, n, immediate } = action;\n let backRouteIndex = state.index;\n if (action.type === StackActions.POP && n != null) {\n // determine the index to go back *from*. In this case, n=1 means to go\n // back from state.index, as if it were a normal \"BACK\" action\n backRouteIndex = Math.max(1, state.index - n + 1);\n } else if (key) {\n const backRoute = state.routes.find(route => route.key === key);\n backRouteIndex = state.routes.indexOf(backRoute);\n }\n\n if (backRouteIndex > 0) {\n return {\n ...state,\n routes: state.routes.slice(0, backRouteIndex),\n index: backRouteIndex - 1,\n isTransitioning: immediate !== true,\n };\n }\n }\n\n // By this point in the router's state handling logic, we have handled the behavior of the active route, and handled any stack actions.\n // If we haven't returned by now, we should allow non-active child routers to handle this action, and switch to that index if the child state (route) does change..\n\n const keyIndex = action.key ? StateUtils.indexOf(state, action.key) : -1;\n\n // Traverse routes from the top of the stack to the bottom, so the\n // active route has the first opportunity, then the one before it, etc.\n for (let childRoute of state.routes.slice().reverse()) {\n if (childRoute.key === activeChildRoute.key) {\n // skip over the active child because we let it attempt to handle the action earlier\n continue;\n }\n // If a key is provided and in routes state then let's use that\n // knowledge to skip extra getStateForAction calls on other child\n // routers\n if (keyIndex >= 0 && childRoute.key !== action.key) {\n continue;\n }\n let childRouter = childRouters[childRoute.routeName];\n if (childRouter) {\n const route = childRouter.getStateForAction(action, childRoute);\n\n if (route === null) {\n return state;\n } else if (route && route !== childRoute) {\n return StateUtils.replaceAt(\n state,\n childRoute.key,\n route,\n // the following tells replaceAt to NOT change the index to this route for the setParam action or complete transition action,\n // because people don't expect these actions to switch the active route\n action.type === NavigationActions.SET_PARAMS ||\n action.type === StackActions.COMPLETE_TRANSITION\n );\n }\n }\n }\n\n return state;\n },\n\n getPathAndParamsForState(state) {\n const route = state.routes[state.index];\n return getPathAndParamsForRoute(route);\n },\n\n getActionForPathAndParams(path, params) {\n return getActionForPathAndParams(path, params);\n },\n\n getScreenOptions: createConfigGetter(\n routeConfigs,\n stackConfig.navigationOptions\n ),\n };\n};\n","let uniqueBaseId = `id-${Date.now()}`;\nlet uuidCount = 0;\n\nexport function _TESTING_ONLY_normalize_keys() {\n uniqueBaseId = 'id';\n uuidCount = 0;\n}\n\nexport function generateKey() {\n return `${uniqueBaseId}-${uuidCount++}`;\n}\n","import SwitchRouter from './SwitchRouter';\nimport withDefaultValue from '../utils/withDefaultValue';\n\nexport default (routeConfigs, config = {}) => {\n config = { ...config };\n config = withDefaultValue(config, 'resetOnBlur', false);\n config = withDefaultValue(config, 'backBehavior', 'initialRoute');\n\n const switchRouter = SwitchRouter(routeConfigs, config);\n return switchRouter;\n};\n","export default (obj, key, defaultValue) => {\n if (obj.hasOwnProperty(key) && typeof obj[key] !== 'undefined') {\n return obj;\n }\n\n obj[key] = defaultValue;\n return obj;\n};\n","const getActiveChildNavigationOptions = (navigation, screenProps) => {\n const { state, router, getChildNavigation } = navigation;\n const activeRoute = state.routes[state.index];\n const activeNavigation = getChildNavigation(activeRoute.key);\n const options = router.getScreenOptions(activeNavigation, screenProps);\n return options;\n};\n\nexport default getActiveChildNavigationOptions;\n","import React, { Component } from 'react';\nimport {\n Dimensions,\n InteractionManager,\n NativeModules,\n Platform,\n StyleSheet,\n Animated,\n} from 'react-native';\nimport hoistStatics from 'hoist-non-react-statics';\n\nimport withOrientation from './withOrientation';\n\n// See https://mydevice.io/devices/ for device dimensions\nconst X_WIDTH = 375;\nconst X_HEIGHT = 812;\nconst XSMAX_WIDTH = 414;\nconst XSMAX_HEIGHT = 896;\nconst PAD_WIDTH = 768;\nconst PAD_HEIGHT = 1024;\n\nconst { height: D_HEIGHT, width: D_WIDTH } = Dimensions.get('window');\n\nconst { PlatformConstants = {} } = NativeModules;\nconst { minor = 0 } = PlatformConstants.reactNativeVersion || {};\n\nconst isIPhoneX = (() => {\n if (Platform.OS === 'web') return false;\n\n return (\n Platform.OS === 'ios' &&\n ((D_HEIGHT === X_HEIGHT && D_WIDTH === X_WIDTH) ||\n (D_HEIGHT === X_WIDTH && D_WIDTH === X_HEIGHT)) ||\n ((D_HEIGHT === XSMAX_HEIGHT && D_WIDTH === XSMAX_WIDTH) ||\n (D_HEIGHT === XSMAX_WIDTH && D_WIDTH === XSMAX_HEIGHT))\n );\n})();\n\nconst isIPad = (() => {\n if (Platform.OS !== 'ios' || isIPhoneX) return false;\n\n // if portrait and width is smaller than iPad width\n if (D_HEIGHT > D_WIDTH && D_WIDTH < PAD_WIDTH) {\n return false;\n }\n\n // if landscape and height is smaller that iPad height\n if (D_WIDTH > D_HEIGHT && D_HEIGHT < PAD_WIDTH) {\n return false;\n }\n\n return true;\n})();\n\nlet _customStatusBarHeight = null;\nconst statusBarHeight = isLandscape => {\n if (_customStatusBarHeight !== null) {\n return _customStatusBarHeight;\n }\n\n /**\n * This is a temporary workaround because we don't have a way to detect\n * if the status bar is translucent or opaque. If opaque, we don't need to\n * factor in the height here; if translucent (content renders under it) then\n * we do.\n */\n if (Platform.OS === 'android') {\n if (global.Expo) {\n return global.Expo.Constants.statusBarHeight;\n } else {\n return 0;\n }\n }\n\n if (isIPhoneX) {\n return isLandscape ? 0 : 44;\n }\n\n if (isIPad) {\n return 20;\n }\n\n return isLandscape ? 0 : 20;\n};\n\nconst doubleFromPercentString = percent => {\n if (!percent.includes('%')) {\n return 0;\n }\n\n const dbl = parseFloat(percent) / 100;\n\n if (isNaN(dbl)) return 0;\n\n return dbl;\n};\n\nclass SafeView extends Component {\n static setStatusBarHeight = height => {\n _customStatusBarHeight = height;\n };\n\n state = {\n touchesTop: true,\n touchesBottom: true,\n touchesLeft: true,\n touchesRight: true,\n orientation: null,\n viewWidth: 0,\n viewHeight: 0,\n };\n\n componentDidMount() {\n this._isMounted = true;\n InteractionManager.runAfterInteractions(() => {\n this._onLayout();\n });\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n }\n\n componentWillReceiveProps() {\n this._onLayout();\n }\n\n render() {\n const { forceInset = false, isLandscape, style, ...props } = this.props;\n\n const safeAreaStyle = this._getSafeAreaStyle();\n\n return (\n (this.view = c)}\n pointerEvents='box-none'\n {...props}\n onLayout={this._onLayout}\n style={safeAreaStyle}\n />\n );\n }\n\n _onLayout = (...args) => {\n if (!this._isMounted) return;\n if (!this.view) return;\n\n const { isLandscape } = this.props;\n const { orientation } = this.state;\n const newOrientation = isLandscape ? 'landscape' : 'portrait';\n if (orientation && orientation === newOrientation) {\n return;\n }\n\n const WIDTH = isLandscape ? X_HEIGHT : X_WIDTH;\n const HEIGHT = isLandscape ? X_WIDTH : X_HEIGHT;\n\n this.view._component.measureInWindow((winX, winY, winWidth, winHeight) => {\n if (!this.view) {\n return;\n }\n let realY = winY;\n let realX = winX;\n\n if (realY >= HEIGHT) {\n realY = realY % HEIGHT;\n } else if (realY < 0) {\n realY = realY % HEIGHT + HEIGHT;\n }\n\n if (realX >= WIDTH) {\n realX = realX % WIDTH;\n } else if (realX < 0) {\n realX = realX % WIDTH + WIDTH;\n }\n\n const touchesTop = realY === 0;\n const touchesBottom = realY + winHeight >= HEIGHT;\n const touchesLeft = realX === 0;\n const touchesRight = realX + winWidth >= WIDTH;\n\n this.setState({\n touchesTop,\n touchesBottom,\n touchesLeft,\n touchesRight,\n orientation: newOrientation,\n viewWidth: winWidth,\n viewHeight: winHeight,\n });\n\n if (this.props.onLayout) this.props.onLayout(...args);\n });\n };\n\n _getSafeAreaStyle = () => {\n const { touchesTop, touchesBottom, touchesLeft, touchesRight } = this.state;\n const { forceInset, isLandscape } = this.props;\n\n const {\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n viewStyle,\n } = this._getViewStyles();\n\n const style = {\n ...viewStyle,\n paddingTop: touchesTop ? this._getInset('top') : 0,\n paddingBottom: touchesBottom ? this._getInset('bottom') : 0,\n paddingLeft: touchesLeft ? this._getInset('left') : 0,\n paddingRight: touchesRight ? this._getInset('right') : 0,\n };\n\n if (forceInset) {\n Object.keys(forceInset).forEach(key => {\n let inset = forceInset[key];\n\n if (inset === 'always') {\n inset = this._getInset(key);\n }\n\n if (inset === 'never') {\n inset = 0;\n }\n\n switch (key) {\n case 'horizontal': {\n style.paddingLeft = inset;\n style.paddingRight = inset;\n break;\n }\n case 'vertical': {\n style.paddingTop = inset;\n style.paddingBottom = inset;\n break;\n }\n case 'left':\n case 'right':\n case 'top':\n case 'bottom': {\n const padding = `padding${key[0].toUpperCase()}${key.slice(1)}`;\n style[padding] = inset;\n break;\n }\n }\n });\n }\n\n // new height/width should only include padding from insets\n // height/width should not be affected by padding from style obj\n if (style.height && typeof style.height === 'number') {\n style.height += style.paddingTop + style.paddingBottom;\n }\n\n if (style.width && typeof style.width === 'number') {\n style.width += style.paddingLeft + style.paddingRight;\n }\n\n style.paddingTop = Math.max(style.paddingTop, paddingTop);\n style.paddingBottom = Math.max(style.paddingBottom, paddingBottom);\n style.paddingLeft = Math.max(style.paddingLeft, paddingLeft);\n style.paddingRight = Math.max(style.paddingRight, paddingRight);\n\n return style;\n };\n\n _getViewStyles = () => {\n const { viewWidth } = this.state;\n // get padding values from style to add back in after insets are determined\n // default precedence: padding[Side] -> vertical | horizontal -> padding -> 0\n let {\n padding = 0,\n paddingVertical = padding,\n paddingHorizontal = padding,\n paddingTop = paddingVertical,\n paddingBottom = paddingVertical,\n paddingLeft = paddingHorizontal,\n paddingRight = paddingHorizontal,\n ...viewStyle\n } = StyleSheet.flatten(this.props.style || {});\n\n if (typeof paddingTop !== 'number') {\n paddingTop = doubleFromPercentString(paddingTop) * viewWidth;\n }\n\n if (typeof paddingBottom !== 'number') {\n paddingBottom = doubleFromPercentString(paddingBottom) * viewWidth;\n }\n\n if (typeof paddingLeft !== 'number') {\n paddingLeft = doubleFromPercentString(paddingLeft) * viewWidth;\n }\n\n if (typeof paddingRight !== 'number') {\n paddingRight = doubleFromPercentString(paddingRight) * viewWidth;\n }\n\n return {\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n viewStyle,\n };\n };\n\n _getInset = key => {\n const { isLandscape } = this.props;\n switch (key) {\n case 'horizontal':\n case 'right':\n case 'left': {\n return isLandscape ? (isIPhoneX ? 44 : 0) : 0;\n }\n case 'vertical':\n case 'top': {\n return statusBarHeight(isLandscape);\n }\n case 'bottom': {\n return isIPhoneX ? (isLandscape ? 24 : 34) : 0;\n }\n }\n };\n}\n\nconst SafeAreaView = withOrientation(SafeView);\n\nexport default SafeAreaView;\n\nconst withSafeArea = function (forceInset = {}) {\n return (WrappedComponent) => {\n class withSafeArea extends Component {\n render() {\n return (\n \n \n \n );\n }\n }\n\n return hoistStatics(withSafeArea, WrappedComponent);\n };\n}\n\nexport { withSafeArea };\n","// @flow\n\nimport * as React from 'react';\nimport { Dimensions } from 'react-native';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\n\ntype WindowDimensions = {\n width: number,\n height: number,\n};\n\ntype InjectedProps = {\n isLandscape: boolean,\n};\n\ntype State = {\n isLandscape: boolean,\n};\n\nexport const isOrientationLandscape = ({\n width,\n height,\n}: WindowDimensions): boolean => width > height;\n\nexport default function(\n WrappedComponent: React.ComponentType\n) {\n class withOrientation extends React.Component {\n constructor() {\n super();\n\n const isLandscape = isOrientationLandscape(Dimensions.get('window'));\n this.state = { isLandscape };\n }\n\n componentDidMount() {\n if (typeof Dimensions.addEventListener === 'function') {\n Dimensions.addEventListener('change', this.handleOrientationChange);\n }\n }\n\n componentWillUnmount() {\n if (typeof Dimensions.removeEventListener === 'function') {\n Dimensions.removeEventListener('change', this.handleOrientationChange); \n }\n }\n\n handleOrientationChange = ({ window }: { window: WindowDimensions }) => {\n const isLandscape = isOrientationLandscape(window);\n this.setState({ isLandscape });\n };\n\n render() {\n return ;\n }\n }\n\n return hoistNonReactStatic(withOrientation, WrappedComponent);\n}\n","import React from 'react';\nimport { Platform, StyleSheet, View } from 'react-native';\nimport { polyfill } from 'react-lifecycles-compat';\n\nimport SceneView from './SceneView';\n\nconst FAR_FAR_AWAY = 3000; // this should be big enough to move the whole view out of its container\n\nclass ResourceSavingSceneView extends React.PureComponent {\n static getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.isFocused && !prevState.awake) {\n return { awake: true };\n } else {\n return null;\n }\n }\n\n constructor(props) {\n super();\n\n this.state = {\n awake: props.lazy ? props.isFocused : true,\n };\n }\n\n render() {\n const { awake } = this.state;\n const {\n isFocused,\n childNavigation,\n navigation,\n removeClippedSubviews,\n lazy,\n ...rest\n } = this.props;\n\n return (\n \n \n {awake ? : null}\n \n \n );\n }\n\n _mustAlwaysBeVisible = () => {\n return this.props.animationEnabled || this.props.swipeEnabled;\n };\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n overflow: 'hidden',\n },\n innerAttached: {\n flex: 1,\n },\n innerDetached: {\n flex: 1,\n top: FAR_FAR_AWAY,\n },\n});\n\nexport default polyfill(ResourceSavingSceneView);\n","import React from 'react';\nimport withNavigation from './withNavigation';\n\nconst EventNameToPropName = {\n willFocus: 'onWillFocus',\n didFocus: 'onDidFocus',\n willBlur: 'onWillBlur',\n didBlur: 'onDidBlur',\n};\n\nconst EventNames = Object.keys(EventNameToPropName);\n\nclass NavigationEvents extends React.Component {\n componentDidMount() {\n this.subscriptions = {};\n EventNames.forEach(this.addListener);\n }\n\n componentDidUpdate(prevProps) {\n EventNames.forEach(eventName => {\n const listenerHasChanged =\n this.props[EventNameToPropName[eventName]] !==\n prevProps[EventNameToPropName[eventName]];\n if (listenerHasChanged) {\n this.removeListener(eventName);\n this.addListener(eventName);\n }\n });\n }\n\n componentWillUnmount() {\n EventNames.forEach(this.removeListener);\n }\n\n addListener = eventName => {\n const listener = this.props[EventNameToPropName[eventName]];\n if (listener) {\n this.subscriptions[eventName] = this.props.navigation.addListener(\n eventName,\n listener\n );\n }\n };\n\n removeListener = eventName => {\n if (this.subscriptions[eventName]) {\n this.subscriptions[eventName].remove();\n this.subscriptions[eventName] = undefined;\n }\n };\n\n render() {\n return null;\n }\n}\n\nexport default withNavigation(NavigationEvents);\n","import React from 'react';\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from '../utils/invariant';\nimport { NavigationConsumer } from './NavigationContext';\n\nexport default function withNavigation(Component) {\n class ComponentWithNavigation extends React.Component {\n static displayName = `withNavigation(${Component.displayName ||\n Component.name})`;\n\n render() {\n const navigationProp = this.props.navigation;\n return (\n \n {navigationContext => {\n const navigation = navigationProp || navigationContext;\n invariant(\n !!navigation,\n 'withNavigation can only be used on a view hierarchy of a navigator. The wrapped component is unable to get access to navigation from props or context.'\n );\n return (\n \n );\n }}\n \n );\n }\n }\n\n return hoistStatics(ComponentWithNavigation, Component);\n}\n","import React from 'react';\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from '../utils/invariant';\nimport withNavigation from './withNavigation';\n\nexport default function withNavigationFocus(Component) {\n class ComponentWithNavigationFocus extends React.Component {\n static displayName = `withNavigationFocus(${Component.displayName ||\n Component.name})`;\n\n constructor(props) {\n super(props);\n\n this.state = {\n isFocused: props.navigation ? props.navigation.isFocused() : false,\n };\n }\n\n componentDidMount() {\n const { navigation } = this.props;\n invariant(\n !!navigation,\n 'withNavigationFocus can only be used on a view hierarchy of a navigator. The wrapped component is unable to get access to navigation from props or context.'\n );\n\n this.subscriptions = [\n navigation.addListener('didFocus', () =>\n this.setState({ isFocused: true })\n ),\n navigation.addListener('willBlur', () =>\n this.setState({ isFocused: false })\n ),\n ];\n }\n\n componentWillUnmount() {\n this.subscriptions.forEach(sub => sub.remove());\n }\n\n render() {\n return (\n \n );\n }\n }\n\n return hoistStatics(withNavigation(ComponentWithNavigationFocus), Component);\n}\n","import React from 'react';\nimport { Dimensions } from 'react-native';\nimport hoistNonReactStatic from 'hoist-non-react-statics';\n\nexport const isOrientationLandscape = ({ width, height }) => width > height;\n\nexport default function(WrappedComponent) {\n class withOrientation extends React.Component {\n constructor() {\n super();\n\n const isLandscape = isOrientationLandscape(Dimensions.get('window'));\n this.state = { isLandscape };\n }\n\n componentDidMount() {\n Dimensions.addEventListener('change', this.handleOrientationChange);\n }\n\n componentWillUnmount() {\n Dimensions.removeEventListener('change', this.handleOrientationChange);\n }\n\n handleOrientationChange = ({ window }) => {\n const isLandscape = isOrientationLandscape(window);\n this.setState({ isLandscape });\n };\n\n render() {\n return ;\n }\n }\n\n return hoistNonReactStatic(withOrientation, WrappedComponent);\n}\n","import React, {Component} from 'react';\nimport {Text} from 'react-native';\nimport {createBottomTabNavigator} from 'react-navigation';\nimport Assets from './Assets/Assets';\nimport Staking from './Staking/Staking';\nimport Democracy from './Democracy/Democracy';\nimport Profile from './Profile/Profile';\nimport Diceng from '../components/bottom';\nimport i18n from '../locales/i18n';\nconst TabRouteConfigs = {\n Assets: {\n screen: Assets,\n navigationOptions: ({navigation}) => ({\n tabBarLabel: ({tintColor}) => {\n return (\n \n {i18n.t ('TAB.Assets')}\n \n );\n },\n tabBarIcon: ({b, tintColor}) => (\n \n ),\n tabBarOnPress: () => {\n route (navigation, 'Assets');\n },\n }),\n },\n Staking: {\n screen: Staking,\n navigationOptions: ({navigation}) => ({\n tabBarLabel: ({tintColor}) => {\n return (\n \n {i18n.t ('TAB.Staking')}\n \n );\n },\n tabBarIcon: ({b, tintColor}) => (\n \n ),\n tabBarOnPress: () => {\n route (navigation, 'Staking');\n },\n }),\n },\n Democracy: {\n screen: Democracy,\n navigationOptions: ({navigation}) => ({\n tabBarLabel: ({tintColor}) => {\n return (\n \n {i18n.t ('TAB.Democracy')}\n \n );\n },\n tabBarIcon: ({b, tintColor}) => (\n \n ),\n tabBarOnPress: () => {\n route (navigation, 'Democracy');\n },\n }),\n },\n Profile: {\n screen: Profile,\n navigationOptions: ({navigation}) => ({\n tabBarLabel: ({tintColor}) => {\n return (\n \n {i18n.t ('TAB.Profile')}\n \n );\n },\n tabBarIcon: ({b, tintColor}) => (\n \n ),\n tabBarOnPress: () => {\n route (navigation, 'Profile');\n },\n }),\n },\n};\nconst TabNavigatorConfigs = {\n tabBarOptions: {\n activeTintColor: '#E64874',\n labelStyle: {\n fontSize: 10,\n justifyContent: 'center',\n alignItems: 'center',\n },\n tabStyle:{\n fontSize: 10,\n justifyContent: 'center',\n alignItems: 'center',\n },\n },\n initialRouteName: 'Assets',\n tabBarPosition: 'bottom',\n lazy: false,\n};\nconst Tab = createBottomTabNavigator (TabRouteConfigs, TabNavigatorConfigs);\nmodule.exports = Tab;\nexport default class Navigation extends Component {\n static navigationOptions = {\n header: null,\n };\n constructor (props) {\n super (props);\n }\n render () {\n return ;\n }\n}\nconst route = (navigation, path) => {\n if (!navigation.isFocused () && !global.LoadingTip) {\n navigation.navigate (path);\n }\n};\n","import React, {Component} from 'react';\nimport {\n Text,\n View,\n Image,\n TouchableOpacity,\n SafeAreaView,\n StatusBar,\n AsyncStorage,\n AppState,\n Alert,\n Animated,\n Platform,\n ImageBackground,\n StyleSheet,\n Modal,\n} from 'react-native';\nimport i18n from '../../locales/i18n';\nimport {\n isFirstTime,\n isRolledBack,\n packageVersion,\n currentVersion,\n checkUpdate,\n downloadUpdate,\n switchVersion,\n switchVersionLater,\n markSuccess,\n} from 'react-native-update';\nimport Api from '@polkadot/api/promise';\nimport WsProvider from '@polkadot/rpc-provider/ws';\nimport _updateConfig from '../../../update.json';\nimport {NavigationActions, StackActions} from 'react-navigation';\nimport Identicon from 'polkadot-identicon-react-native';\nimport moment from 'moment/moment';\nimport SInfo from 'react-native-sensitive-info';\nimport Right_menu from './secondary/RightMenu';\nimport {formatBalance} from '@polkadot/util';\nimport {ScreenWidth, ScreenHeight} from '../../util/Common';\nimport {observer, inject} from 'mobx-react';\nimport polkadotAPI from '../../util/polkadotAPI.js';\nimport Loading from '../../components/Loading';\nimport LoadingUtil from '../../components/LoadingUtil';\nimport DataRepository from '../../util/DataRepository';\n@inject ('rootStore')\n@observer\nexport default class Assets extends Component {\n constructor (props) {\n super (props);\n this.state = {\n is: false,\n name: '0',\n address: '0',\n isfirst: 0,\n isrefresh: false,\n color: 'rgb(0,255,0)',\n };\n this.QR_Code = this.QR_Code.bind (this);\n this.Coin_details = this.Coin_details.bind (this);\n this.refresh = this.refresh.bind (this);\n this.Loading = this.Loading.bind (this);\n this.checkApi = this.checkApi.bind (this);\n this.interval = null;\n this.handleAppStateChange = this.handleAppStateChange.bind (this);\n this.doUpdate = this.doUpdate.bind (this);\n\n this.animatedValue = new Animated.Value (0);\n this.movingMargin = this.animatedValue.interpolate ({\n inputRange: [0, 1],\n outputRange: [ScreenWidth * 0.57, 0],\n });\n }\n\n // 跳转二维码页面\n QR_Code () {\n this.props.navigation.navigate ('QR_Code');\n }\n\n Coin_details () {\n this.props.navigation.navigate ('Coin_details');\n }\n checkApi () {\n (async () => {\n new DataRepository ()\n .fetchLocalRepository ('localLanguage')\n .then (res => {\n i18n.locale = res;\n })\n .catch (error => {\n i18n.locale = 'en';\n });\n if (JSON.stringify (this.props.rootStore.stateStore.API) == '{}') {\n LoadingUtil.showLoading ();\n const api = await Api.create (\n new WsProvider (this.props.rootStore.stateStore.ENDPOINT)\n );\n this.props.rootStore.stateStore.API = api;\n LoadingUtil.dismissLoading ();\n }\n }) ();\n }\n // 初始加载函数\n Loading () {\n SInfo.getAllItems ({\n sharedPreferencesName: 'Polkawallet',\n keychainService: 'PolkawalletKey',\n }).then (result => {\n if (JSON.stringify (result).length < 10) {\n let resetAction = StackActions.reset ({\n index: 0,\n actions: [\n NavigationActions.navigate (\n {routeName: 'Create_Account'},\n {t: this}\n ),\n ],\n });\n this.props.navigation.dispatch (resetAction);\n } else {\n this.setState ({\n isfirst: 1,\n });\n this.props.rootStore.stateStore.refreshBefore = this.props.rootStore.stateStore.Account;\n this.props.rootStore.stateStore.balanceIndex = 0;\n this.props.rootStore.stateStore.Account = 0;\n this.props.rootStore.stateStore.Accountnum = 0;\n this.props.rootStore.stateStore.isfirst = 1;\n this.props.rootStore.stateStore.Accounts = [\n {account: 'NeedCreate', address: 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'},\n ];\n this.props.rootStore.stateStore.balances = [\n {address: 'xxxxxxxxxxxxxxxxxxxxxxxxxxx', balance: 0},\n ];\n if (Platform.OS == 'android') {\n //android\n for (var o in result) {\n this.props.rootStore.stateStore.Accounts.push ({\n account: JSON.parse (result[o]).meta.name,\n address: JSON.parse (result[o]).address,\n });\n this.props.rootStore.stateStore.Account++;\n this.props.rootStore.stateStore.Accountnum++;\n //创建查询每个账户的进程\n (async () => {\n let _address = o;\n await polkadotAPI.freeBalance (_address, balance => {\n this.props.rootStore.stateStore.have = 0;\n this.props.rootStore.stateStore.balances.map ((item, index) => {\n if (item.address != _address) {\n } else {\n this.props.rootStore.stateStore.have = 1;\n this.props.rootStore.stateStore.balances[\n index\n ].balance = balance;\n }\n });\n if (this.props.rootStore.stateStore.have == 0) {\n this.props.rootStore.stateStore.balances.push ({\n address: _address,\n balance: balance,\n });\n }\n });\n }) ();\n }\n } else {\n //ios\n result.map ((item, index) => {\n item.map ((item, index) => {\n // 添加用户到mobx\n this.props.rootStore.stateStore.Accounts.push ({\n account: JSON.parse (item.value).meta.name,\n address: item.key,\n });\n this.props.rootStore.stateStore.Account++;\n this.props.rootStore.stateStore.Accountnum++;\n //创建查询每个账户的进程\n (async () => {\n await polkadotAPI.freeBalance (item.key, balance => {\n let _address = item.key;\n this.props.rootStore.stateStore.have = 0;\n this.props.rootStore.stateStore.balances.map (\n (item, index) => {\n if (item.address != _address) {\n } else {\n this.props.rootStore.stateStore.have = 1;\n this.props.rootStore.stateStore.balances[\n index\n ].balance = balance;\n }\n }\n );\n if (this.props.rootStore.stateStore.have == 0) {\n this.props.rootStore.stateStore.balances.push ({\n address: _address,\n balance: balance,\n });\n }\n });\n }) ();\n });\n });\n }\n }\n });\n setTimeout (() => {\n if (this.props.rootStore.stateStore.isfirst == 1) {\n this.props.rootStore.stateStore.Account = 1;\n }\n this.props.rootStore.stateStore.Account = this.props.rootStore.stateStore\n .refreshBefore == 0 && this.props.rootStore.stateStore.isfirst == 1\n ? 1\n : this.props.rootStore.stateStore.refreshBefore;\n if (this.props.rootStore.stateStore.Account != 0) {\n // Query Balance\n (async () => {\n const props = await polkadotAPI.properties ();\n fees = await polkadotAPI.fees ();\n this.props.rootStore.stateStore.balances.map ((item, index) => {\n if (\n item.address ==\n this.props.rootStore.stateStore.Accounts[\n this.props.rootStore.stateStore.Account\n ].address\n ) {\n this.props.rootStore.stateStore.balanceIndex = index;\n }\n });\n formatBalance.setDefaults ({\n decimals: props.get ('tokenDecimals'),\n unit: props.get ('tokenSymbol'),\n });\n clearInterval (this.interval);\n this.interval = setInterval (async () => {\n myDate = new Date ();\n blockdate = await polkadotAPI.timestampNow ();\n lastBlockTime = Number (myDate) - Number (blockdate);\n if (lastBlockTime > 120000) {\n (a = 192), (b = 192), (c = 192);\n } else {\n colorPara = lastBlockTime / 1000 * (255 / 18);\n a = 0;\n b = 255;\n c = 0;\n for (i = 0; i < colorPara; i++) {\n if (b >= 255 && a < 255) {\n a++;\n }\n if (a >= 255) b--;\n if (a >= 255 && b <= 0) {\n a = 255;\n b = 0;\n }\n }\n }\n this.setState ({\n color: 'rgb(' + a + ',' + b + ',' + c + ')',\n });\n }, 500);\n }) ();\n }\n\n //清除缓存\n let REQUEST_URL = 'https://api.polkawallet.io:8080/tx_list_for_redis';\n let map = {\n method: 'POST',\n };\n let privateHeaders = {\n 'Content-Type': 'application/json',\n };\n map.headers = privateHeaders;\n map.follow = 20;\n map.timeout = 0;\n map.body =\n '{\"user_address\":\"' +\n this.props.rootStore.stateStore.Accounts[\n this.props.rootStore.stateStore.Account\n ].address +\n '\",\"pageNum\":\"1\",\"pageSize\":\"10\"}';\n fetch (REQUEST_URL, map).then ().catch ();\n //获取网络订单\n REQUEST_URL = 'https://api.polkawallet.io:8080/tx_list';\n map = {\n method: 'POST',\n };\n privateHeaders = {\n 'Content-Type': 'application/json',\n };\n map.headers = privateHeaders;\n map.follow = 20;\n map.timeout = 0;\n map.body =\n '{\"user_address\":\"' +\n this.props.rootStore.stateStore.Accounts[\n this.props.rootStore.stateStore.Account\n ].address +\n '\",\"pageNum\":\"1\",\"pageSize\":\"10\"}';\n fetch (REQUEST_URL, map)\n .then (result => {\n this.props.rootStore.stateStore.hasNextPage = JSON.parse (\n result._bodyInit\n ).tx_list.hasNextPage;\n this.props.rootStore.stateStore.transactions = JSON.parse (\n result._bodyInit\n );\n })\n .catch ();\n }, 100);\n }\n // 刷新\n refresh () {\n this.setState ({\n isrefresh: true,\n });\n this.checkApi ();\n this.Loading ();\n setTimeout (() => {\n this.setState ({\n isrefresh: false,\n });\n }, 2000);\n }\n handleAppStateChange (appState) {\n if (\n appState == 'background' &&\n this.props.rootStore.stateStore.GestureState == 2\n ) {\n let resetAction = StackActions.reset ({\n index: 0,\n actions: [NavigationActions.navigate ({routeName: 'Gesture'})],\n });\n this.props.navigation.dispatch (resetAction);\n }\n }\n doUpdate (info) {\n downloadUpdate (info)\n .then (hash => {\n Alert.alert ('', i18n.t ('Profile.restartApp'), [\n {\n text: 'Yes',\n onPress: () => {\n switchVersion (hash);\n },\n },\n {text: 'No'},\n {\n text: i18n.t ('Profile.nextTime'),\n onPress: () => {\n switchVersionLater (hash);\n },\n },\n ]);\n })\n .catch (err => {\n Alert.alert ('', i18n.t ('Profile.UpdateFailed'));\n });\n }\n checkUpdate = () => {\n const {appKey} = _updateConfig[Platform.OS];\n checkUpdate (appKey)\n .then (info => {\n if (info.expired) {\n Alert.alert ('', i18n.t ('Profile.toAppStore'), [\n {\n text: 'OK',\n onPress: () => {\n info.downloadUrl && Linking.openURL (info.downloadUrl);\n },\n },\n ]);\n } else if (info.upToDate) {\n // Alert.alert('提示', '您的应用版本已是最新.');\n } else {\n Alert.alert (\n '',\n i18n.t ('Profile.checkNewV') +\n info.name +\n ',' +\n i18n.t ('Profile.download') +\n '\\n' +\n info.description,\n [\n {\n text: 'OK',\n onPress: () => {\n this.doUpdate (info);\n },\n },\n ]\n );\n }\n })\n .catch (err => {\n Alert.alert ('', i18n.t ('Profile.UpdateFailed'));\n });\n };\n // 侧边栏Modal显示\n show () {\n this.setState ({\n is: true,\n });\n this.animatedValue.setValue (0);\n Animated.timing (this.animatedValue, {\n toValue: 1,\n duration: 600,\n }).start ();\n }\n // 侧边栏Modal隐藏\n hide () {\n Animated.timing (this.animatedValue, {\n toValue: 0,\n duration: 600,\n }).start ();\n setTimeout (\n function () {\n this.changeAccount ();\n this.setState ({is: false});\n }.bind (this),\n 600\n );\n }\n\n changeAccount () {\n this.props.rootStore.stateStore.balances.map ((item, index) => {\n if (\n item.address ==\n this.props.rootStore.stateStore.Accounts[\n this.props.rootStore.stateStore.Account\n ].address\n ) {\n this.props.rootStore.stateStore.balanceIndex = index;\n }\n });\n }\n componentDidMount () {\n // 通过addListener开启监听,可以使用上面的四个属性\n this._didBlurSubscription = this.props.navigation.addListener (\n 'didFocus',\n payload => {\n StatusBar.setBackgroundColor ('#F14B79');\n StatusBar.setBarStyle (\n Platform.OS == 'android' ? 'light-content' : 'dark-content'\n );\n this.checkApi ();\n this.Loading ();\n this.changeAccount ();\n }\n );\n }\n componentWillUnmount () {\n // 在页面消失的时候,取消监听\n this._didBlurSubscription && this._didBlurSubscription.remove ();\n }\n componentWillMount () {\n this.checkApi ();\n if (isFirstTime) {\n markSuccess ();\n }\n\n StatusBar.setBackgroundColor ('#F14B79');\n StatusBar.setBarStyle (\n Platform.OS == 'android' ? 'light-content' : 'dark-content'\n );\n AppState.addEventListener ('change', this.handleAppStateChange);\n // 判断用户是否设置手势密码\n AsyncStorage.getItem ('Gesture').then (result => {\n if (result == null) {\n // 没有设置\n this.checkUpdate()\n this.props.rootStore.stateStore.GestureState = 0;\n } else {\n // 设置了手势密码\n if (this.props.rootStore.stateStore.GestureState != 2) {\n this.props.rootStore.stateStore.Gesture = result;\n this.props.rootStore.stateStore.GestureState = 2;\n let resetAction = StackActions.reset ({\n index: 0,\n actions: [NavigationActions.navigate ({routeName: 'Gesture'})],\n });\n this.props.navigation.dispatch (resetAction);\n } else {\n this.checkUpdate ();\n }\n }\n });\n this.Loading ();\n }\n render () {\n return (\n \n \n \n \n \n \n \n {/* Assets list TIP */}\n \n \n \n \n\n {i18n.t ('Assets.AssetsList')}\n \n \n \n {/* Assets list */}\n \n \n \n \n \n \n \n \n \n DOT\n \n \n \n \n {i18n.t ('Assets.Alexander')}\n \n \n \n \n {formatBalance (\n this.props.rootStore.stateStore.balances[\n this.props.rootStore.stateStore.balanceIndex\n ].balance\n )}\n \n \n \n \n \n \n \n\n {\n this.setState ({is: false});\n }}\n visible={this.state.is}\n >\n \n {\n this.hide ();\n }}\n />\n \n \n \n \n \n\n {\n global.mLoadingComponentRef = ref;\n }}\n />\n \n \n \n );\n }\n}\nconst styles = StyleSheet.create ({\n container: {\n flex: 1,\n paddingBottom: 98,\n backgroundColor: '#F6F6F6',\n },\n navBar: {\n height: 44,\n width: ScreenWidth,\n justifyContent: 'center',\n alignItems: 'center',\n top: 0,\n },\n\n navContent: {\n width: ScreenWidth,\n height: 157,\n alignItems: 'center',\n flex: 1,\n paddingTop: 15,\n },\n TopBar: {\n borderRadius: 16,\n width: ScreenWidth - 40,\n height: 140,\n backgroundColor: 'white',\n marginTop: 32,\n },\n});\n","import i18n from 'react-native-i18n';\nimport en from './en-US/index';\nimport zh from './zh-CN/index';\nimport DataRepository from '../util/DataRepository';\ni18n.defaultLocale = 'en';\ni18n.fallbacks = true;\ni18n.translations = {\n zh,\n en,\n};\ni18n.localeLanguage = () => {\n new DataRepository ()\n .fetchLocalRepository ('localLanguage')\n .then (res => {\n i18n.locale = res;\n })\n .catch (error => {\n i18n.locale = 'en';\n });\n\n return i18n.locale;\n};\ni18n.locale = 'en';\nexport default i18n;\n","// @flow\n\n'use strict';\n\nconst RNI18n = require('react-native').NativeModules.RNI18n;\nconst I18nJs = require('i18n-js');\n\nif (typeof RNI18n !== 'undefined') {\n I18nJs.locale = RNI18n.languages[0];\n} else if (__DEV__) {\n console.warn('react-native-i18n module is not correctly linked');\n}\n\nexport const getLanguages = () => RNI18n.getLanguages();\nexport default I18nJs;\n","// I18n.js\n// =======\n//\n// This small library provides the Rails I18n API on the Javascript.\n// You don't actually have to use Rails (or even Ruby) to use I18n.js.\n// Just make sure you export all translations in an object like this:\n//\n// I18n.translations.en = {\n// hello: \"Hello World\"\n// };\n//\n// See tests for specific formatting like numbers and dates.\n//\n\n// Using UMD pattern from\n// https://github.com/umdjs/umd#regular-module\n// `returnExports.js` version\n;(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(\"i18n\", function(){ return factory(root);});\n } else if (typeof module === 'object' && module.exports) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory(root);\n } else {\n // Browser globals (root is window)\n root.I18n = factory(root);\n }\n}(this, function(global) {\n \"use strict\";\n\n // Use previously defined object if exists in current scope\n var I18n = global && global.I18n || {};\n\n // Just cache the Array#slice function.\n var slice = Array.prototype.slice;\n\n // Apply number padding.\n var padding = function(number) {\n return (\"0\" + number.toString()).substr(-2);\n };\n\n // Improved toFixed number rounding function with support for unprecise floating points\n // JavaScript's standard toFixed function does not round certain numbers correctly (for example 0.105 with precision 2).\n var toFixed = function(number, precision) {\n return decimalAdjust('round', number, -precision).toFixed(precision);\n };\n\n // Is a given variable an object?\n // Borrowed from Underscore.js\n var isObject = function(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object'\n };\n\n var isFunction = function(func) {\n var type = typeof func;\n return type === 'function'\n };\n\n // Check if value is different than undefined and null;\n var isSet = function(value) {\n return typeof(value) !== 'undefined' && value !== null;\n };\n\n // Is a given value an array?\n // Borrowed from Underscore.js\n var isArray = function(val) {\n if (Array.isArray) {\n return Array.isArray(val);\n }\n return Object.prototype.toString.call(val) === '[object Array]';\n };\n\n var isString = function(val) {\n return typeof val === 'string' || Object.prototype.toString.call(val) === '[object String]';\n };\n\n var isNumber = function(val) {\n return typeof val === 'number' || Object.prototype.toString.call(val) === '[object Number]';\n };\n\n var isBoolean = function(val) {\n return val === true || val === false;\n };\n\n var isNull = function(val) {\n return val === null;\n };\n\n var decimalAdjust = function(type, value, exp) {\n // If the exp is undefined or zero...\n if (typeof exp === 'undefined' || +exp === 0) {\n return Math[type](value);\n }\n value = +value;\n exp = +exp;\n // If the value is not a number or the exp is not an integer...\n if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {\n return NaN;\n }\n // Shift\n value = value.toString().split('e');\n value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));\n // Shift back\n value = value.toString().split('e');\n return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));\n }\n\n var lazyEvaluate = function(message, scope) {\n if (isFunction(message)) {\n return message(scope);\n } else {\n return message;\n }\n }\n\n var merge = function (dest, obj) {\n var key, value;\n for (key in obj) if (obj.hasOwnProperty(key)) {\n value = obj[key];\n if (isString(value) || isNumber(value) || isBoolean(value) || isArray(value) || isNull(value)) {\n dest[key] = value;\n } else {\n if (dest[key] == null) dest[key] = {};\n merge(dest[key], value);\n }\n }\n return dest;\n };\n\n // Set default days/months translations.\n var DATE = {\n day_names: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n , abbr_day_names: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\n , month_names: [null, \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\n , abbr_month_names: [null, \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n , meridian: [\"AM\", \"PM\"]\n };\n\n // Set default number format.\n var NUMBER_FORMAT = {\n precision: 3\n , separator: \".\"\n , delimiter: \",\"\n , strip_insignificant_zeros: false\n };\n\n // Set default currency format.\n var CURRENCY_FORMAT = {\n unit: \"$\"\n , precision: 2\n , format: \"%u%n\"\n , sign_first: true\n , delimiter: \",\"\n , separator: \".\"\n };\n\n // Set default percentage format.\n var PERCENTAGE_FORMAT = {\n unit: \"%\"\n , precision: 3\n , format: \"%n%u\"\n , separator: \".\"\n , delimiter: \"\"\n };\n\n // Set default size units.\n var SIZE_UNITS = [null, \"kb\", \"mb\", \"gb\", \"tb\"];\n\n // Other default options\n var DEFAULT_OPTIONS = {\n // Set default locale. This locale will be used when fallback is enabled and\n // the translation doesn't exist in a particular locale.\n defaultLocale: \"en\"\n // Set the current locale to `en`.\n , locale: \"en\"\n // Set the translation key separator.\n , defaultSeparator: \".\"\n // Set the placeholder format. Accepts `{{placeholder}}` and `%{placeholder}`.\n , placeholder: /(?:\\{\\{|%\\{)(.*?)(?:\\}\\}?)/gm\n // Set if engine should fallback to the default locale when a translation\n // is missing.\n , fallbacks: false\n // Set the default translation object.\n , translations: {}\n // Set missing translation behavior. 'message' will display a message\n // that the translation is missing, 'guess' will try to guess the string\n , missingBehaviour: 'message'\n // if you use missingBehaviour with 'message', but want to know that the\n // string is actually missing for testing purposes, you can prefix the\n // guessed string by setting the value here. By default, no prefix!\n , missingTranslationPrefix: ''\n };\n\n // Set default locale. This locale will be used when fallback is enabled and\n // the translation doesn't exist in a particular locale.\n I18n.reset = function() {\n var key;\n for (key in DEFAULT_OPTIONS) {\n this[key] = DEFAULT_OPTIONS[key];\n }\n };\n\n // Much like `reset`, but only assign options if not already assigned\n I18n.initializeOptions = function() {\n var key;\n for (key in DEFAULT_OPTIONS) if (!isSet(this[key])) {\n this[key] = DEFAULT_OPTIONS[key];\n }\n };\n I18n.initializeOptions();\n\n // Return a list of all locales that must be tried before returning the\n // missing translation message. By default, this will consider the inline option,\n // current locale and fallback locale.\n //\n // I18n.locales.get(\"de-DE\");\n // // [\"de-DE\", \"de\", \"en\"]\n //\n // You can define custom rules for any locale. Just make sure you return a array\n // containing all locales.\n //\n // // Default the Wookie locale to English.\n // I18n.locales[\"wk\"] = function(locale) {\n // return [\"en\"];\n // };\n //\n I18n.locales = {};\n\n // Retrieve locales based on inline locale, current locale or default to\n // I18n's detection.\n I18n.locales.get = function(locale) {\n var result = this[locale] || this[I18n.locale] || this[\"default\"];\n\n if (isFunction(result)) {\n result = result(locale);\n }\n\n if (isArray(result) === false) {\n result = [result];\n }\n\n return result;\n };\n\n // The default locale list.\n I18n.locales[\"default\"] = function(locale) {\n var locales = []\n , list = []\n ;\n\n // Handle the inline locale option that can be provided to\n // the `I18n.t` options.\n if (locale) {\n locales.push(locale);\n }\n\n // Add the current locale to the list.\n if (!locale && I18n.locale) {\n locales.push(I18n.locale);\n }\n\n // Add the default locale if fallback strategy is enabled.\n if (I18n.fallbacks && I18n.defaultLocale) {\n locales.push(I18n.defaultLocale);\n }\n\n // Locale code format 1:\n // According to RFC4646 (http://www.ietf.org/rfc/rfc4646.txt)\n // language codes for Traditional Chinese should be `zh-Hant`\n //\n // But due to backward compatibility\n // We use older version of IETF language tag\n // @see http://www.w3.org/TR/html401/struct/dirlang.html\n // @see http://en.wikipedia.org/wiki/IETF_language_tag\n //\n // Format: `language-code = primary-code ( \"-\" subcode )*`\n //\n // primary-code uses ISO639-1\n // @see http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\n // @see http://www.iso.org/iso/home/standards/language_codes.htm\n //\n // subcode uses ISO 3166-1 alpha-2\n // @see http://en.wikipedia.org/wiki/ISO_3166\n // @see http://www.iso.org/iso/country_codes.htm\n //\n // @note\n // subcode can be in upper case or lower case\n // defining it in upper case is a convention only\n\n\n // Locale code format 2:\n // Format: `code = primary-code ( \"-\" region-code )*`\n // primary-code uses ISO 639-1\n // script-code uses ISO 15924\n // region-code uses ISO 3166-1 alpha-2\n // Example: zh-Hant-TW, en-HK, zh-Hant-CN\n //\n // It is similar to RFC4646 (or actually the same),\n // but seems to be limited to language, script, region\n\n // Compute each locale with its country code.\n // So this will return an array containing\n // `de-DE` and `de`\n // or\n // `zh-hans-tw`, `zh-hans`, `zh`\n // locales.\n locales.forEach(function(locale) {\n var localeParts = locale.split(\"-\");\n var firstFallback = null;\n var secondFallback = null;\n if (localeParts.length === 3) {\n firstFallback = [\n localeParts[0],\n localeParts[1]\n ].join(\"-\");\n secondFallback = localeParts[0];\n }\n else if (localeParts.length === 2) {\n firstFallback = localeParts[0];\n }\n\n if (list.indexOf(locale) === -1) {\n list.push(locale);\n }\n\n if (! I18n.fallbacks) {\n return;\n }\n\n [\n firstFallback,\n secondFallback\n ].forEach(function(nullableFallbackLocale) {\n // We don't want null values\n if (typeof nullableFallbackLocale === \"undefined\") { return; }\n if (nullableFallbackLocale === null) { return; }\n // We don't want duplicate values\n //\n // Comparing with `locale` first is faster than\n // checking whether value's presence in the list\n if (nullableFallbackLocale === locale) { return; }\n if (list.indexOf(nullableFallbackLocale) !== -1) { return; }\n\n list.push(nullableFallbackLocale);\n });\n });\n\n // No locales set? English it is.\n if (!locales.length) {\n locales.push(\"en\");\n }\n\n return list;\n };\n\n // Hold pluralization rules.\n I18n.pluralization = {};\n\n // Return the pluralizer for a specific locale.\n // If no specify locale is found, then I18n's default will be used.\n I18n.pluralization.get = function(locale) {\n return this[locale] || this[I18n.locale] || this[\"default\"];\n };\n\n // The default pluralizer rule.\n // It detects the `zero`, `one`, and `other` scopes.\n I18n.pluralization[\"default\"] = function(count) {\n switch (count) {\n case 0: return [\"zero\", \"other\"];\n case 1: return [\"one\"];\n default: return [\"other\"];\n }\n };\n\n // Return current locale. If no locale has been set, then\n // the current locale will be the default locale.\n I18n.currentLocale = function() {\n return this.locale || this.defaultLocale;\n };\n\n // Check if value is different than undefined and null;\n I18n.isSet = isSet;\n\n // Find and process the translation using the provided scope and options.\n // This is used internally by some functions and should not be used as an\n // public API.\n I18n.lookup = function(scope, options) {\n options = options || {}\n\n var locales = this.locales.get(options.locale).slice()\n , locale\n , scopes\n , fullScope\n , translations\n ;\n\n fullScope = this.getFullScope(scope, options);\n\n while (locales.length) {\n locale = locales.shift();\n scopes = fullScope.split(this.defaultSeparator);\n translations = this.translations[locale];\n\n if (!translations) {\n continue;\n }\n while (scopes.length) {\n translations = translations[scopes.shift()];\n\n if (translations === undefined || translations === null) {\n break;\n }\n }\n\n if (translations !== undefined && translations !== null) {\n return translations;\n }\n }\n\n if (isSet(options.defaultValue)) {\n return lazyEvaluate(options.defaultValue, scope);\n }\n };\n\n // lookup pluralization rule key into translations\n I18n.pluralizationLookupWithoutFallback = function(count, locale, translations) {\n var pluralizer = this.pluralization.get(locale)\n , pluralizerKeys = pluralizer(count)\n , pluralizerKey\n , message;\n\n if (isObject(translations)) {\n while (pluralizerKeys.length) {\n pluralizerKey = pluralizerKeys.shift();\n if (isSet(translations[pluralizerKey])) {\n message = translations[pluralizerKey];\n break;\n }\n }\n }\n\n return message;\n };\n\n // Lookup dedicated to pluralization\n I18n.pluralizationLookup = function(count, scope, options) {\n options = options || {}\n var locales = this.locales.get(options.locale).slice()\n , locale\n , scopes\n , translations\n , message\n ;\n scope = this.getFullScope(scope, options);\n\n while (locales.length) {\n locale = locales.shift();\n scopes = scope.split(this.defaultSeparator);\n translations = this.translations[locale];\n\n if (!translations) {\n continue;\n }\n\n while (scopes.length) {\n translations = translations[scopes.shift()];\n if (!isObject(translations)) {\n break;\n }\n if (scopes.length == 0) {\n message = this.pluralizationLookupWithoutFallback(count, locale, translations);\n }\n }\n if (message != null && message != undefined) {\n break;\n }\n }\n\n if (message == null || message == undefined) {\n if (isSet(options.defaultValue)) {\n if (isObject(options.defaultValue)) {\n message = this.pluralizationLookupWithoutFallback(count, options.locale, options.defaultValue);\n } else {\n message = options.defaultValue;\n }\n translations = options.defaultValue;\n }\n }\n\n return { message: message, translations: translations };\n };\n\n // Rails changed the way the meridian is stored.\n // It started with `date.meridian` returning an array,\n // then it switched to `time.am` and `time.pm`.\n // This function abstracts this difference and returns\n // the correct meridian or the default value when none is provided.\n I18n.meridian = function() {\n var time = this.lookup(\"time\");\n var date = this.lookup(\"date\");\n\n if (time && time.am && time.pm) {\n return [time.am, time.pm];\n } else if (date && date.meridian) {\n return date.meridian;\n } else {\n return DATE.meridian;\n }\n };\n\n // Merge serveral hash options, checking if value is set before\n // overwriting any value. The precedence is from left to right.\n //\n // I18n.prepareOptions({name: \"John Doe\"}, {name: \"Mary Doe\", role: \"user\"});\n // #=> {name: \"John Doe\", role: \"user\"}\n //\n I18n.prepareOptions = function() {\n var args = slice.call(arguments)\n , options = {}\n , subject\n ;\n\n while (args.length) {\n subject = args.shift();\n\n if (typeof(subject) != \"object\") {\n continue;\n }\n\n for (var attr in subject) {\n if (!subject.hasOwnProperty(attr)) {\n continue;\n }\n\n if (isSet(options[attr])) {\n continue;\n }\n\n options[attr] = subject[attr];\n }\n }\n\n return options;\n };\n\n // Generate a list of translation options for default fallbacks.\n // `defaultValue` is also deleted from options as it is returned as part of\n // the translationOptions array.\n I18n.createTranslationOptions = function(scope, options) {\n var translationOptions = [{scope: scope}];\n\n // Defaults should be an array of hashes containing either\n // fallback scopes or messages\n if (isSet(options.defaults)) {\n translationOptions = translationOptions.concat(options.defaults);\n }\n\n // Maintain support for defaultValue. Since it is always a message\n // insert it in to the translation options as such.\n if (isSet(options.defaultValue)) {\n translationOptions.push({ message: options.defaultValue });\n }\n\n return translationOptions;\n };\n\n // Translate the given scope with the provided options.\n I18n.translate = function(scope, options) {\n options = options || {}\n\n var translationOptions = this.createTranslationOptions(scope, options);\n\n var translation;\n\n var optionsWithoutDefault = this.prepareOptions(options)\n delete optionsWithoutDefault.defaultValue\n\n // Iterate through the translation options until a translation\n // or message is found.\n var translationFound =\n translationOptions.some(function(translationOption) {\n if (isSet(translationOption.scope)) {\n translation = this.lookup(translationOption.scope, optionsWithoutDefault);\n } else if (isSet(translationOption.message)) {\n translation = lazyEvaluate(translationOption.message, scope);\n }\n\n if (translation !== undefined && translation !== null) {\n return true;\n }\n }, this);\n\n if (!translationFound) {\n return this.missingTranslation(scope, options);\n }\n\n if (typeof(translation) === \"string\") {\n translation = this.interpolate(translation, options);\n } else if (isArray(translation)) {\n translation = translation.map(function(t) {\n return (typeof(t) === \"string\" ? this.interpolate(t, options) : t);\n }, this);\n } else if (isObject(translation) && isSet(options.count)) {\n translation = this.pluralize(options.count, scope, options);\n }\n\n return translation;\n };\n\n // This function interpolates the all variables in the given message.\n I18n.interpolate = function(message, options) {\n if (message === null) {\n return message;\n }\n\n options = options || {}\n var matches = message.match(this.placeholder)\n , placeholder\n , value\n , name\n , regex\n ;\n\n if (!matches) {\n return message;\n }\n\n var value;\n\n while (matches.length) {\n placeholder = matches.shift();\n name = placeholder.replace(this.placeholder, \"$1\");\n\n if (isSet(options[name])) {\n value = options[name].toString().replace(/\\$/gm, \"_#$#_\");\n } else if (name in options) {\n value = this.nullPlaceholder(placeholder, message, options);\n } else {\n value = this.missingPlaceholder(placeholder, message, options);\n }\n\n regex = new RegExp(placeholder.replace(/\\{/gm, \"\\\\{\").replace(/\\}/gm, \"\\\\}\"));\n message = message.replace(regex, value);\n }\n\n return message.replace(/_#\\$#_/g, \"$\");\n };\n\n // Pluralize the given scope using the `count` value.\n // The pluralized translation may have other placeholders,\n // which will be retrieved from `options`.\n I18n.pluralize = function(count, scope, options) {\n options = this.prepareOptions({count: String(count)}, options)\n var pluralizer, message, result;\n\n result = this.pluralizationLookup(count, scope, options);\n if (result.translations == undefined || result.translations == null) {\n return this.missingTranslation(scope, options);\n }\n\n if (result.message != undefined && result.message != null) {\n return this.interpolate(result.message, options);\n }\n else {\n pluralizer = this.pluralization.get(options.locale);\n return this.missingTranslation(scope + '.' + pluralizer(count)[0], options);\n }\n };\n\n // Return a missing translation message for the given parameters.\n I18n.missingTranslation = function(scope, options) {\n //guess intended string\n if(this.missingBehaviour == 'guess'){\n //get only the last portion of the scope\n var s = scope.split('.').slice(-1)[0];\n //replace underscore with space && camelcase with space and lowercase letter\n return (this.missingTranslationPrefix.length > 0 ? this.missingTranslationPrefix : '') +\n s.replace('_',' ').replace(/([a-z])([A-Z])/g,\n function(match, p1, p2) {return p1 + ' ' + p2.toLowerCase()} );\n }\n\n var localeForTranslation = (options != null && options.locale != null) ? options.locale : this.currentLocale();\n var fullScope = this.getFullScope(scope, options);\n var fullScopeWithLocale = [localeForTranslation, fullScope].join(this.defaultSeparator);\n\n return '[missing \"' + fullScopeWithLocale + '\" translation]';\n };\n\n // Return a missing placeholder message for given parameters\n I18n.missingPlaceholder = function(placeholder, message, options) {\n return \"[missing \" + placeholder + \" value]\";\n };\n\n I18n.nullPlaceholder = function() {\n return I18n.missingPlaceholder.apply(I18n, arguments);\n };\n\n // Format number using localization rules.\n // The options will be retrieved from the `number.format` scope.\n // If this isn't present, then the following options will be used:\n //\n // - `precision`: `3`\n // - `separator`: `\".\"`\n // - `delimiter`: `\",\"`\n // - `strip_insignificant_zeros`: `false`\n //\n // You can also override these options by providing the `options` argument.\n //\n I18n.toNumber = function(number, options) {\n options = this.prepareOptions(\n options\n , this.lookup(\"number.format\")\n , NUMBER_FORMAT\n );\n\n var negative = number < 0\n , string = toFixed(Math.abs(number), options.precision).toString()\n , parts = string.split(\".\")\n , precision\n , buffer = []\n , formattedNumber\n , format = options.format || \"%n\"\n , sign = negative ? \"-\" : \"\"\n ;\n\n number = parts[0];\n precision = parts[1];\n\n while (number.length > 0) {\n buffer.unshift(number.substr(Math.max(0, number.length - 3), 3));\n number = number.substr(0, number.length -3);\n }\n\n formattedNumber = buffer.join(options.delimiter);\n\n if (options.strip_insignificant_zeros && precision) {\n precision = precision.replace(/0+$/, \"\");\n }\n\n if (options.precision > 0 && precision) {\n formattedNumber += options.separator + precision;\n }\n\n if (options.sign_first) {\n format = \"%s\" + format;\n }\n else {\n format = format.replace(\"%n\", \"%s%n\");\n }\n\n formattedNumber = format\n .replace(\"%u\", options.unit)\n .replace(\"%n\", formattedNumber)\n .replace(\"%s\", sign)\n ;\n\n return formattedNumber;\n };\n\n // Format currency with localization rules.\n // The options will be retrieved from the `number.currency.format` and\n // `number.format` scopes, in that order.\n //\n // Any missing option will be retrieved from the `I18n.toNumber` defaults and\n // the following options:\n //\n // - `unit`: `\"$\"`\n // - `precision`: `2`\n // - `format`: `\"%u%n\"`\n // - `delimiter`: `\",\"`\n // - `separator`: `\".\"`\n //\n // You can also override these options by providing the `options` argument.\n //\n I18n.toCurrency = function(number, options) {\n options = this.prepareOptions(\n options\n , this.lookup(\"number.currency.format\")\n , this.lookup(\"number.format\")\n , CURRENCY_FORMAT\n );\n\n return this.toNumber(number, options);\n };\n\n // Localize several values.\n // You can provide the following scopes: `currency`, `number`, or `percentage`.\n // If you provide a scope that matches the `/^(date|time)/` regular expression\n // then the `value` will be converted by using the `I18n.toTime` function.\n //\n // It will default to the value's `toString` function.\n //\n I18n.localize = function(scope, value, options) {\n options || (options = {});\n\n switch (scope) {\n case \"currency\":\n return this.toCurrency(value);\n case \"number\":\n scope = this.lookup(\"number.format\");\n return this.toNumber(value, scope);\n case \"percentage\":\n return this.toPercentage(value);\n default:\n var localizedValue;\n\n if (scope.match(/^(date|time)/)) {\n localizedValue = this.toTime(scope, value);\n } else {\n localizedValue = value.toString();\n }\n\n return this.interpolate(localizedValue, options);\n }\n };\n\n // Parse a given `date` string into a JavaScript Date object.\n // This function is time zone aware.\n //\n // The following string formats are recognized:\n //\n // yyyy-mm-dd\n // yyyy-mm-dd[ T]hh:mm::ss\n // yyyy-mm-dd[ T]hh:mm::ss\n // yyyy-mm-dd[ T]hh:mm::ssZ\n // yyyy-mm-dd[ T]hh:mm::ss+0000\n // yyyy-mm-dd[ T]hh:mm::ss+00:00\n // yyyy-mm-dd[ T]hh:mm::ss.123Z\n //\n I18n.parseDate = function(date) {\n var matches, convertedDate, fraction;\n // we have a date, so just return it.\n if (typeof(date) == \"object\") {\n return date;\n };\n\n matches = date.toString().match(/(\\d{4})-(\\d{2})-(\\d{2})(?:[ T](\\d{2}):(\\d{2}):(\\d{2})([\\.,]\\d{1,3})?)?(Z|\\+00:?00)?/);\n\n if (matches) {\n for (var i = 1; i <= 6; i++) {\n matches[i] = parseInt(matches[i], 10) || 0;\n }\n\n // month starts on 0\n matches[2] -= 1;\n\n fraction = matches[7] ? 1000 * (\"0\" + matches[7]) : null;\n\n if (matches[8]) {\n convertedDate = new Date(Date.UTC(matches[1], matches[2], matches[3], matches[4], matches[5], matches[6], fraction));\n } else {\n convertedDate = new Date(matches[1], matches[2], matches[3], matches[4], matches[5], matches[6], fraction);\n }\n } else if (typeof(date) == \"number\") {\n // UNIX timestamp\n convertedDate = new Date();\n convertedDate.setTime(date);\n } else if (date.match(/([A-Z][a-z]{2}) ([A-Z][a-z]{2}) (\\d+) (\\d+:\\d+:\\d+) ([+-]\\d+) (\\d+)/)) {\n // This format `Wed Jul 20 13:03:39 +0000 2011` is parsed by\n // webkit/firefox, but not by IE, so we must parse it manually.\n convertedDate = new Date();\n convertedDate.setTime(Date.parse([\n RegExp.$1, RegExp.$2, RegExp.$3, RegExp.$6, RegExp.$4, RegExp.$5\n ].join(\" \")));\n } else if (date.match(/\\d+ \\d+:\\d+:\\d+ [+-]\\d+ \\d+/)) {\n // a valid javascript format with timezone info\n convertedDate = new Date();\n convertedDate.setTime(Date.parse(date));\n } else {\n // an arbitrary javascript string\n convertedDate = new Date();\n convertedDate.setTime(Date.parse(date));\n }\n\n return convertedDate;\n };\n\n // Formats time according to the directives in the given format string.\n // The directives begins with a percent (%) character. Any text not listed as a\n // directive will be passed through to the output string.\n //\n // The accepted formats are:\n //\n // %a - The abbreviated weekday name (Sun)\n // %A - The full weekday name (Sunday)\n // %b - The abbreviated month name (Jan)\n // %B - The full month name (January)\n // %c - The preferred local date and time representation\n // %d - Day of the month (01..31)\n // %-d - Day of the month (1..31)\n // %H - Hour of the day, 24-hour clock (00..23)\n // %-H - Hour of the day, 24-hour clock (0..23)\n // %I - Hour of the day, 12-hour clock (01..12)\n // %-I - Hour of the day, 12-hour clock (1..12)\n // %m - Month of the year (01..12)\n // %-m - Month of the year (1..12)\n // %M - Minute of the hour (00..59)\n // %-M - Minute of the hour (0..59)\n // %p - Meridian indicator (AM or PM)\n // %S - Second of the minute (00..60)\n // %-S - Second of the minute (0..60)\n // %w - Day of the week (Sunday is 0, 0..6)\n // %y - Year without a century (00..99)\n // %-y - Year without a century (0..99)\n // %Y - Year with century\n // %z - Timezone offset (+0545)\n //\n I18n.strftime = function(date, format) {\n var options = this.lookup(\"date\")\n , meridianOptions = I18n.meridian()\n ;\n\n if (!options) {\n options = {};\n }\n\n options = this.prepareOptions(options, DATE);\n\n if (isNaN(date.getTime())) {\n throw new Error('I18n.strftime() requires a valid date object, but received an invalid date.');\n }\n\n var weekDay = date.getDay()\n , day = date.getDate()\n , year = date.getFullYear()\n , month = date.getMonth() + 1\n , hour = date.getHours()\n , hour12 = hour\n , meridian = hour > 11 ? 1 : 0\n , secs = date.getSeconds()\n , mins = date.getMinutes()\n , offset = date.getTimezoneOffset()\n , absOffsetHours = Math.floor(Math.abs(offset / 60))\n , absOffsetMinutes = Math.abs(offset) - (absOffsetHours * 60)\n , timezoneoffset = (offset > 0 ? \"-\" : \"+\") +\n (absOffsetHours.toString().length < 2 ? \"0\" + absOffsetHours : absOffsetHours) +\n (absOffsetMinutes.toString().length < 2 ? \"0\" + absOffsetMinutes : absOffsetMinutes)\n ;\n\n if (hour12 > 12) {\n hour12 = hour12 - 12;\n } else if (hour12 === 0) {\n hour12 = 12;\n }\n\n format = format.replace(\"%a\", options.abbr_day_names[weekDay]);\n format = format.replace(\"%A\", options.day_names[weekDay]);\n format = format.replace(\"%b\", options.abbr_month_names[month]);\n format = format.replace(\"%B\", options.month_names[month]);\n format = format.replace(\"%d\", padding(day));\n format = format.replace(\"%e\", day);\n format = format.replace(\"%-d\", day);\n format = format.replace(\"%H\", padding(hour));\n format = format.replace(\"%-H\", hour);\n format = format.replace(\"%I\", padding(hour12));\n format = format.replace(\"%-I\", hour12);\n format = format.replace(\"%m\", padding(month));\n format = format.replace(\"%-m\", month);\n format = format.replace(\"%M\", padding(mins));\n format = format.replace(\"%-M\", mins);\n format = format.replace(\"%p\", meridianOptions[meridian]);\n format = format.replace(\"%S\", padding(secs));\n format = format.replace(\"%-S\", secs);\n format = format.replace(\"%w\", weekDay);\n format = format.replace(\"%y\", padding(year));\n format = format.replace(\"%-y\", padding(year).replace(/^0+/, \"\"));\n format = format.replace(\"%Y\", year);\n format = format.replace(\"%z\", timezoneoffset);\n\n return format;\n };\n\n // Convert the given dateString into a formatted date.\n I18n.toTime = function(scope, dateString) {\n var date = this.parseDate(dateString)\n , format = this.lookup(scope)\n ;\n\n if (date.toString().match(/invalid/i)) {\n return date.toString();\n }\n\n if (!format) {\n return date.toString();\n }\n\n return this.strftime(date, format);\n };\n\n // Convert a number into a formatted percentage value.\n I18n.toPercentage = function(number, options) {\n options = this.prepareOptions(\n options\n , this.lookup(\"number.percentage.format\")\n , this.lookup(\"number.format\")\n , PERCENTAGE_FORMAT\n );\n\n return this.toNumber(number, options);\n };\n\n // Convert a number into a readable size representation.\n I18n.toHumanSize = function(number, options) {\n var kb = 1024\n , size = number\n , iterations = 0\n , unit\n , precision\n ;\n\n while (size >= kb && iterations < 4) {\n size = size / kb;\n iterations += 1;\n }\n\n if (iterations === 0) {\n unit = this.t(\"number.human.storage_units.units.byte\", {count: size});\n precision = 0;\n } else {\n unit = this.t(\"number.human.storage_units.units.\" + SIZE_UNITS[iterations]);\n precision = (size - Math.floor(size) === 0) ? 0 : 1;\n }\n\n options = this.prepareOptions(\n options\n , {unit: unit, precision: precision, format: \"%n%u\", delimiter: \"\"}\n );\n\n return this.toNumber(size, options);\n };\n\n I18n.getFullScope = function(scope, options) {\n options = options || {}\n\n // Deal with the scope as an array.\n if (isArray(scope)) {\n scope = scope.join(this.defaultSeparator);\n }\n\n // Deal with the scope option provided through the second argument.\n //\n // I18n.t('hello', {scope: 'greetings'});\n //\n if (options.scope) {\n scope = [options.scope, scope].join(this.defaultSeparator);\n }\n\n return scope;\n };\n /**\n * Merge obj1 with obj2 (shallow merge), without modifying inputs\n * @param {Object} obj1\n * @param {Object} obj2\n * @returns {Object} Merged values of obj1 and obj2\n *\n * In order to support ES3, `Object.prototype.hasOwnProperty.call` is used\n * Idea is from:\n * https://stackoverflow.com/questions/8157700/object-has-no-hasownproperty-method-i-e-its-undefined-ie8\n */\n I18n.extend = function ( obj1, obj2 ) {\n if (typeof(obj1) === \"undefined\" && typeof(obj2) === \"undefined\") {\n return {};\n }\n return merge(obj1, obj2);\n };\n\n // Set aliases, so we can save some typing.\n I18n.t = I18n.translate;\n I18n.l = I18n.localize;\n I18n.p = I18n.pluralize;\n\n return I18n;\n}));\n","import Assets from './Assets/index';\nimport Staking from './Staking/index';\nimport Democracy from './Democracy/index';\nimport Profile from './Profile/index';\nexport default {\n TAB: {\n Assets: 'Assets',\n Staking: 'Staking',\n Democracy: 'Democracy',\n Profile: 'Profile',\n ChangeLanguages: 'Change Languages',\n PasswordMistake: 'Password mistake.',\n PasswordCorrect: 'Password is correct.',\n Reset: 'Reset',\n Save: 'Save',\n Exit: 'Exit',\n Copy: 'Copy',\n Continue: 'Continue',\n Cancel: 'Cancel',\n StakingOption: 'Assets change record, Unit(xxx) ',\n Receive: 'Receive',\n Received: 'Received',\n Send: 'Send',\n loadMore: 'To load more ~',\n Bottom: '~ Bottom',\n noResponse: 'Long time no response, please try again.',\n enterInformation: 'Please enter relevant information.',\n signMess: 'You are about to sign a message from',\n unlockPassword: 'unlock account using password',\n loading: 'loading',\n CopySuccess: 'Copy success',\n },\n Assets: {\n ...Assets,\n },\n Staking: {\n ...Staking,\n },\n Democracy: {\n ...Democracy,\n },\n Profile: {\n ...Profile,\n },\n};\n","export default {\n Alexander: 'Alexander TestNet',\n Receive: 'Receive',\n Account: 'Account',\n AssetsList: 'Assets list',\n Scan: 'Scan',\n Menu: 'Menu',\n CreateAccount: 'Create Account',\n // Create_Account 页面\n balance: 'balance',\n Createfrom: 'Create from mnemonic,seed or import keystore',\n WordMnemonic12: '12 Word Mnemonic',\n WordMnemonic24: '24 Word Mnemonic',\n RawSeed: 'Raw Seed',\n ImportKeystore: 'import keystore',\n NameTheAccount: 'name the account',\n Password: 'encrypt it using a password',\n EnterName: 'Please enter your name',\n EnterPassword: 'Please enter your password',\n EnterPassword_d: 'Please confirm the password',\n CheckPassword: 'The two passwords do not match. Please re-enter them',\n ExistingAddress: 'The address already exists!',\n // Backup_Account 页面\n Warning: 'Warning',\n BeforeSafe: 'Before you continue,make sure you have properly backed up your seed in a safe place as',\n Restore: 'It is needed ro restore your account',\n // camera 页面\n QRCodeTip: 'Put the QR code into the box you can scan it automatically',\n Flashlight: 'Click on/off the flashlight',\n // coin_details 页面\n AssetsOption: 'Assets change record, Unit(xxx)',\n AssetsOption_new: 'Assets change record, Unit',\n // make_transfer 页面\n Transfer: 'Transfer DOT',\n TransferFailed: 'Transfer Failed.',\n TransferSuccess: 'Transfer Success.',\n SubmitTransaction: 'Submit Transaction',\n recipientAddress: 'to the recipient address',\n sendOf: 'send a value of ',\n send: 'Send',\n PleaseEnterAddress: 'Please enter address',\n creationFee: 'creationFee',\n existentialDeposit: 'existentialDeposit',\n transactionBaseFee: 'transactionBaseFee',\n transactionByteFee: 'transactionByteFee',\n transferFee: 'transferFee',\n MakeTransfer: 'Make Transfer',\n //Transfer 页面\n enterValue: 'Please enter Send a value',\n enterInformation: 'Please enter the correct information.',\n // Transfer_details 页面\n Successed: 'Successed',\n Balance: 'Balance',\n Fees: 'Fees',\n To: 'To',\n From: 'From',\n Block: 'Block',\n BlockHash: 'BlockHash',\n // make_transfer 页面\n TransferDOT: 'Transfer DOT',\n calling: 'calling',\n withIndex: 'with an index of ',\n SignAndSubmit: 'Sign and Submit',\n // Receive\n CopyAddress: 'Copy address',\n //MnemonicWord.js\n MWTitle: 'Backup prom',\n MWTip1: 'Getting a mnemonic equals ownership of a wallet asset',\n MWTip2: 'Backup mnemonic',\n MWTip3: 'Use paper and pen to correctly copy mnemonics',\n MWTip4: 'If your phone is lost, stolen or damaged, the mnemonic will restore your assets.',\n MWTip5: 'Offline storage',\n MWTip6: 'Keep it safe to a safe place on the isolated network',\n MWTip7: 'Do not share and store mnemonics in a networked environment, such as emails, photo albums, social applications',\n MWTip9: 'Do not take screenshots',\n MWTip10: 'Do not screen capture and storage, which may be collected by third-party malware, resulting in asset loss',\n MWTip11: 'cancel',\n MWTip12: 'Got it',\n MWTip13: 'Please accurately copy and safely backup the mnemonic',\n MWTip14: 'Please click on mnemonics in order to confirm that you have backed up correctly',\n MWTip15: 'The order of the mnemonic is incorrect,please proofread',\n};\n","export default {\n // Staking.js\n stakingOverview: 'Staking Overview',\n AccountActions: 'Account Actions',\n // Staking Overview 版块\n validatorsNum: 'validators',\n intentions: 'intentions',\n session: 'session',\n era: 'era',\n validators: 'Validators',\n nextUp: 'Next up',\n NoValidator: '- Not have Validator.',\n NoNextUp: 'Not have Next up',\n // Account Actions 版块\n stakingOption: 'Staking slash record, Unit(xxx)',\n stakingOption_new: 'Staking slash record, Unit',\n controller: 'controller',\n stash: 'stash',\n balance: 'balance',\n locked: 'locked',\n eraLeft: 'era left',\n BondAdditional: 'Bond Additional',\n BondFunds: 'Bond Funds',\n validate: 'validate',\n Nominate: 'Nominate',\n Unvalidate: 'Unvalidate',\n Unnominate: 'Unnominate',\n SlashRecords: 'Slash Records',\n Nominating: 'Nominating',\n MyNominators: 'MyNominators',\n noNominating: '-You are not nominating.',\n noNominee: \"-You don't have nominee\",\n SetSessionKey: 'SetSessionKey',\n Unbond: 'Unbond',\n PleaseChoose: 'Please choose',\n // Validator_Info.js\n Nominators: 'Nominators',\n ValidatorInfo: 'Validator Info',\n V_no_Nominator: '- Not have Nominator.',\n V_no_SR: '- Not have Slash Record.',\n // BondAdditional.js\n BondExtraFailed: 'Bond Extra Failed',\n BondExtraSuccess: 'Bond Extra success',\n BondExtra: 'Bond Extra',\n BondingPreferences: 'Bonding Preferences',\n calling: 'calling',\n additionalValue: 'max additional value',\n // BondFunds.js\n BondSuccess: 'Bond success',\n BondFailed: 'Bond Failed',\n Bonding: 'Bonding',\n Controller: 'Controller',\n payee: 'payee',\n valueBonded: 'value bonded',\n // nominate.js\n NominateSuccess: 'Nominate success',\n NominateFailed: 'Nominate Failed',\n NominateValidator: 'Nominate Validator',\n Nominate: 'Nominate',\n multipleAddresses: 'If there are multiple addresses, separate them with a \",\"',\n nominateAddress: 'nominate the following address (validator or intention) ',\n // setSessionKey.js\n SessionKeyFailed: 'Set SessionKey Failed',\n SessionKeySuccess: 'Set SessionKey success',\n setSessionKey: 'Set SessionKey',\n SessionKey: 'SessionKey',\n Set: 'Set',\n // stake.js\n ValidateSuccess: 'Validate success',\n ValidateFailed: 'Validate Failed',\n Validate: 'Validate',\n unstakeThreshold: 'unstake Threshold',\n validatorPayment: 'validator Payment',\n // Unbond.js\n UnbondFailed: 'Unbond Failed',\n UnbondSuccess: 'Unbond success',\n unbondAmount: 'unbond amount',\n UnBond: 'UnBond',\n // unniminate.js\n UnnominateFailed: 'Unnominate Failed',\n UnnominateSuccess: 'Unnominate success',\n Unnominate: 'Unnominate',\n nominateTip: \"Will panic if called when source isn't currently nominating target. Updates Nominating, NominatorsFor and NominationBalance.\",\n // unstake.js\n UnvalidateSuccess: 'Unvalidate success',\n UnvalidateFailed: 'Unvalidate Failed',\n Unvalidate: 'Unvalidate',\n UnvalidateTip: 'Retract the desire to stake for the transactor. Effects will be felt at the beginning of the next era.',\n};\n","export default {\n // Democracy.js\n proposals: 'proposals',\n referendums: 'referendums',\n // proposals.js\n noProposals: 'no available proposals',\n depositors: 'depositors',\n balance: 'balance',\n blocksLaunch: 'blocks launch',\n // referendums.js\n Active: 'Active',\n // referendums/Active.js\n noReferendums: 'no available referendums',\n blocksEnd: 'blocks end',\n Threshold: 'Threshold',\n Aye: 'Aye',\n Nay: 'Nay',\n // secondary/NayorAye.js\n VoteSuccess: 'Vote success',\n VoteFailed: 'Vote Failed',\n Voting: 'Voting',\n vote: 'vote',\n referendumIndex: 'referendum index',\n};\n","export default {\n Setting: 'Setting',\n ManageAccount: 'Manage Account',\n // secondary/About.js\n About: 'About',\n PolkadotApp: 'Mobile wallet for Polkadot.',\n Version: 'Version',\n // secondary/add_address.js\n addAddresses: 'Add addresses',\n Addresses: 'Addresses',\n Save: 'Save',\n SaveSuccess: 'Save Success',\n\n // secondary/address_information.js\n DeleteAddress: 'Delete Address',\n Name: 'Name',\n Memo: 'Memo',\n Address: 'Address',\n\n // secondary/Addressed.js\n Addresses: 'Addresses',\n\n // secondary/Manage_Account.js\n deleteTip: 'Confirm deleting this account ?',\n DeleteSuccess: 'Delete success',\n ChangeName: 'Change name',\n ChangePassword: 'Change password',\n ExportKeystore: 'Export Keystore',\n DeleteAccount: 'Delete Account',\n unlockPassword: 'Please enter your password to unlock',\n saveInformation: 'Please save your information',\n Continue: 'Continue',\n Copy: 'Copy',\n\n // secondary/Setting.js\n restartApp: 'Download finished, whether to restart the application?',\n UpdateFailed: 'Update failed.',\n toAppStore: 'Your application version has been updated, please go to the app store to download the new version',\n appV: 'Your application version is up to date.',\n checkNewV: 'Check the new version:',\n download: 'whether to download?',\n nextTime:\"Next startup time\",\n gestureCanceled: 'The gesture password has been canceled',\n Settings: 'Settings',\n Gesture: 'Gesture',\n RemoteNode: 'Remote Node',\n CheckUpdate: 'Check Update',\n deleteGP: 'Delete gesture password ?',\n // secondary/Change/Change_Name.js\n CurrentPassword: 'Current password',\n NewName: 'New name',\n entPwd: 'Please enter your current password',\n entName: 'Please enter your new name',\n\n // secondary/Change/Change_Password.js\n\n CurrentPassword: 'Current password',\n NewPassword: 'New password',\n RepratPassword: 'Reprat password',\n differentPassword: 'The two passwords are different',\n Modify: 'Modify the success',\n PasswordMistake: 'Password mistake',\n ChangePassword: 'Change Password',\n Change: 'Change',\n\n // secondary/Settings/Gesture.js\n setGesture: 'Please set the gesture password.',\n confirmGesture: 'Please confirm the gesture password.',\n gestureSuccess: 'Confirmed, password set successfully.',\n gestureFailed: 'Confirmation failed, please reset.',\n inputPWD: 'Please input your password.',\n inputPWD_d: 'Please input your password (again).',\n\n // secondary/Settings/Set_Node.js\n SetNode: 'Set Node',\n SelectNode: 'Select your Node',\n Custom: 'Custom',\n changeNode: 'Make sure you change Node to:',\n Confirm: 'Confirm',\n Cancel: 'Cancel',\n NOTETip_1: 'import remote node,if not is Alexander,not have the chart function',\n NOTETip_2: 'NOTE: Exit the app,will return to the default (wss://poc3-rpc.polkadot.io/)',\n enterNode: 'Please enter your custom Node',\n};\n","import Assets from './Assets/index';\nimport Staking from './Staking/index';\nimport Democracy from './Democracy/index';\nimport Profile from './Profile/index';\nexport default {\n TAB: {\n Assets: '资产',\n Staking: '抵押',\n Democracy: '民主',\n Profile: '设置',\n ChangeLanguages: '更换语言',\n PasswordMistake: '密码错误',\n PasswordCorrect: '密码正确',\n Reset: '重置',\n Save: '保存',\n Continue: '继续',\n Cancel: '取消',\n StakingOption: '资产变化记录,单位(xxx) ',\n Receive: '接收',\n Received: '接收',\n Send: '发送',\n loadMore: '加载更多',\n Bottom: '到底啦',\n noResponse: '反应超时,请再次尝试。',\n enterInformation: '请输入相关信息',\n signMess: '正在用该账户进行签名',\n unlockPassword: '输入密码解锁账户',\n loading: '加载中',\n CopySuccess: '复制成功',\n Copy: '复制',\n },\n Assets: {\n ...Assets,\n },\n Staking: {\n ...Staking,\n },\n Democracy: {\n ...Democracy,\n },\n Profile: {\n ...Profile,\n },\n};\n","export default {\n Alexander: 'Alexander 测试网',\n Receive: '接收',\n Account: '账户',\n AssetsList: '资产列表',\n Menu: '菜单',\n Scan: '扫描',\n CreateAccount: '创建账户',\n // Create_Account 页面\n balance: '余额',\n Createfrom: '用助记词、种子创建,或导入keystore',\n WordMnemonic12: '12词助记词',\n WordMnemonic24: '24词助记词',\n RawSeed: '密钥种子',\n ImportKeystore: '导入keystore',\n NameTheAccount: '账户名字',\n Password: '密码',\n EnterName: '请输入名称',\n EnterPassword: '请输入密码',\n EnterPassword_d: '请确认密码',\n CheckPassword: '两次密码不一致,请再次输入',\n ExistingAddress: '该地址已存在!',\n // Backup_Account 页面\n Warning: '注意',\n BeforeSafe: '请确保已经备份了信息在安全的地方。',\n Restore: '用于以后恢复账户',\n // camera 页面\n QRCodeTip: '将二维码放入框中,即可自动扫描',\n Flashlight: '照明开关',\n // coin_details 页面\n AssetsOption: '资产变化记录,单位(xxx)',\n AssetsOption_new: '资产变化记录,单位',\n // make_transfer 页面\n \n Transfer: 'DOT 交易',\n TransferFailed: '交易失败',\n TransferSuccess: '交易成功',\n SubmitTransaction: '发起交易',\n recipientAddress: '接收地址',\n sendOf: '发送数量',\n send: '发送',\n PleaseEnterAddress: '请输入地址',\n creationFee: '创建账户手续费',\n existentialDeposit: '账户存在最低存额',\n transactionBaseFee: '交易基础手续费',\n transactionByteFee: '交易字节费',\n transferFee: '转账费',\n MakeTransfer: '发送交易',\n \n //Transfer 页面\n enterValue: '请输入发送数量',\n enterInformation: '请输入正确的信息',\n // Transfer_details 页面\n Successed: '成功',\n Balance: '金额',\n Fees: '手续费',\n To: '接收方',\n From: '发送方',\n Block: '区块高度',\n BlockHash: '区块哈希',\n // make_transfer 页面\n calling: '调用',\n withIndex: '账户交易编号',\n SignAndSubmit: '签名并提交',\n // Receive\n CopyAddress: '复制地址',\n //MnemonicWord.js\n MWTitle: '备份提示',\n MWTip1: '获得助记词等于拥有钱包资产所有权',\n MWTip2: '备份助记词',\n MWTip3: '使用纸和笔正确抄写助记词',\n MWTip4: '如果你的手机丢失、被盗、损坏,助记词将可以恢复你的资产',\n MWTip5: '离线保存',\n MWTip6: '妥善保管至隔离网络的安全地方',\n MWTip7: '请勿将助记词在联网环境下分享和储存,比如邮件、相册、社交应用等',\n MWTip9: '请勿截屏',\n MWTip10: '请勿截屏分享和存储,这将可能被第三方恶意软件手机,造成资产损坏',\n MWTip11: '取消',\n MWTip12: '知道了',\n MWTip13: '请准确抄写并安全备份助记词。',\n MWTip14: '请按顺序点击助记词,以确认您正确备份。',\n MWTip15: '助记词顺序不正确,请校对',\n};\n","export default {\n // Staking.js\n stakingOverview: '抵押概况',\n AccountActions: '账户操作',\n // Staking Overview 版块\n validatorsNum: '验证者数量',\n intentions: '意图者数量',\n session: '会话周期',\n era: '时代周期',\n validators: '验证者',\n nextUp: '候选人',\n NoValidator: '没有验证者,或网络延时',\n NoNextUp: '没有候选人,或网络延时',\n // Account Actions 版块\n stakingOption: '削减历史记录,单位(xxx)',\n stakingOption_new: '削减历史记录,单位',\n controller: '控制账户',\n stash: '存储账户',\n balance: '余额',\n locked: '锁定',\n eraLeft: '剩下时代数',\n BondAdditional: '追加绑定',\n BondFunds: '绑定',\n validate: '验证',\n Nominate: '提名',\n Unvalidate: '取消验证',\n Unnominate: '取消提名',\n SlashRecords: '削减记录',\n Nominating: '我正在提名',\n MyNominators: '提名我的',\n noNominating: '没有正在提名',\n noNominee: '没有提名者',\n SetSessionKey: '设置会话账户',\n Unbond: '解绑',\n PleaseChoose: '请选择',\n // Validator_Info.js\n Nominators: '提名者',\n ValidatorInfo: '验证者详情',\n V_no_Nominator: '没有提名人',\n V_no_SR: '没有削减记录',\n // BondAdditional.js\n BondExtraFailed: '追加绑定失败!',\n BondExtraSuccess: '追加绑定成功!',\n BondExtra: '追加绑定',\n BondingPreferences: '绑定参数',\n calling: '调用',\n additionalValue: '追加金额',\n // BondFunds.js\n BondSuccess: '绑定成功!',\n BondFailed: '绑定失败!',\n Bonding: '绑定',\n Controller: '控制账户',\n payee: '受益人',\n valueBonded: '绑定金额',\n // nominate.js\n NominateSuccess: '提名成功!',\n NominateFailed: '提名失败!',\n NominateValidator: '提名验证者',\n nominateAddress: '提名地址(验证者或意图者)',\n multipleAddresses: '如果有多个地址,请用\",\"隔开',\n // setSessionKey.js\n SessionKeyFailed: '设置会话账户失败!',\n SessionKeySuccess: '设置会话账户成功!',\n setSessionKey: '设置会话账户',\n SessionKey: '会话账户',\n Set: '设置',\n // stake.js\n ValidateSuccess: '发起验证成功!',\n ValidateFailed: '发起验证失败!',\n Validate: '验证',\n unstakeThreshold: '自动取消阀值',\n validatorPayment: '保留奖励',\n // Unbond.js\n UnbondFailed: '解绑失败!',\n UnbondSuccess: '解绑成功!',\n unbondAmount: '解绑总额',\n UnBond: '解绑',\n // unniminate.js\n UnnominateFailed: '取消提名失败!',\n UnnominateSuccess: '取消提名成功!',\n Unnominate: '取消提名',\n nominateTip: '如果没有正在提名却调用该方法会引起错误。',\n // unstake.js\n UnvalidateSuccess: '取消验证成功!',\n UnvalidateFailed: '取消验证失败!',\n Unvalidate: '取消验证',\n UnvalidateTip: '撤回验证意愿,将在下一个时代生效。',\n};\n","export default {\n // Democracy.js\n proposals: '提案',\n referendums: '公投',\n // proposals.js\n noProposals: '没有可用的提案',\n depositors: '寄托人',\n balance: '金额',\n blocksLaunch: '区块后发起',\n // referendums.js\n Active: '正在进行',\n // referendums/Active.js\n noReferendums: '没有正在进行的公投',\n blocksEnd: '区块后结束',\n Threshold: '阀值',\n Aye: '赞成',\n Nay: '反对',\n // secondary/NayorAye.js\n VoteSuccess: '投票成功!',\n VoteFailed: '投票失败!',\n Voting: '投票',\n vote: '投票',\n referendumIndex: '公投编号',\n};\n","export default {\n ManageAccount: '账户管理',\n Setting: '设置',\n // secondary/About.js\n About: '关于',\n PolkadotApp: 'Polkadot生态移动端钱包。',\n Version: '版本',\n // secondary/add_address.js\n Addresses: '地址薄',\n Save: '保存',\n Save: '保存成功',\n\n // secondary/address_information.js\n\n addAddresses: '添加地址',\n DeleteAddress: '删除地址',\n Name: '名称',\n Memo: '备注',\n Address: '地址',\n\n // secondary/Addressed.js\n\n // secondary/Manage_Account.js\n deleteTip: '确认删除此账户?',\n DeleteSuccess: '账户删除成功!',\n ChangeName: '修改名称',\n ChangePassword: '修改密码',\n ExportKeystore: '导出 Keystore',\n DeleteAccount: '删除账户',\n unlockPassword: '请输入密码解锁账户',\n saveInformation: '请保存你的信息',\n Continue: '继续',\n Copy: '复制',\n\n // secondary/Setting.js\n restartApp: '下载完成,是否重启应用?',\n UpdateFailed: '更新失败',\n toAppStore: '应用版本有更新,请去app store下载新版本',\n appV: '已经是最新版本',\n checkNewV: '检查到新版本',\n download: '是否下载?',\n nextTime:\"下次再说\",\n gestureCanceled: '手势密码修改成功',\n Settings: '配置',\n Gesture: '手势',\n RemoteNode: '远程节点',\n CheckUpdate: '检查更新',\n deleteGP: '删除手势密码?',\n // secondary/Change/Change_Name.js\n CurrentPassword: '输入密码',\n NewName: '新名称',\n entPwd: '请输入当前密码',\n entName: '请输入新名称',\n // secondary/Change/Change_Password.js\n\n CurrentPassword: '当前密码',\n NewPassword: '新密码',\n RepratPassword: '确认密码',\n differentPassword: '两次密码输入不一致',\n Modify: '修改成功!',\n PasswordMistake: '密码错误',\n ChangePassword: '修改密码',\n Change: '修改',\n\n // secondary/Settings/Gesture.js\n setGesture: '请设置手势密码',\n confirmGesture: '请确认手势密码',\n gestureSuccess: '手势密码设置成功!',\n gestureFailed: '手势密码设置失败,请重新设置',\n inputPWD: '请输入手势密码',\n inputPWD_d: '请再次输入手势密码',\n\n // secondary/Settings/Set_Node.js\n SetNode: '设置节点',\n SelectNode: '选择连接节点',\n Custom: '自定义',\n changeNode: '确认节点连接:',\n Confirm: '确认',\n Cancel: '取消',\n NOTETip_1: '导入节点连接,如果不是Alexander,则没有图表功能。',\n NOTETip_2: '注:退出app,将返回默认值(wss://poc3-rpc.polkadot.io/)',\n enterNode: '请输入自定义节点',\n};\n","import {\n AsyncStorage,\n} from 'react-native';\n\n/**\n * 数据持久化类\n */\nexport default class DataRepository {\n\n /**\n * 保存本地数据\n * @param key key\n * @param items value\n * @param callback 回调函数\n */\n saveLocalRepository(key, items, callback) {\n if (!items || !key)return;\n\n AsyncStorage.setItem(key, JSON.stringify(items), callback);\n\n }\n\n\n\n /**\n * 获取本地的数据\n * @param key\n * @returns {Promise}\n */\n fetchLocalRepository(key) {\n return new Promise((resolve, reject)=> {\n AsyncStorage.getItem(key, (error, result)=> {\n if (!error) {\n try {\n resolve(JSON.parse(result));\n } catch (e) {\n reject(e);\n console.log(e);\n }\n } else {\n reject(error);\n console.log(error);\n }\n })\n })\n }\n\n /**\n * 移除本地存存的key\n * @param key\n * @returns {*}\n */\n removeLocalRepository(key, callback) {\n\n if (!key)return;\n\n AsyncStorage.removeItem(key, callback);\n\n }\n\n /**\n * 移除本地存存的keys\n * @param keys\n * @returns {*}\n */\n removeMultiLocalRepository(keys, callback) {\n\n if (!keys)return;\n\n AsyncStorage.multiRemove(keys, callback);\n\n }\n\n /**\n * 获取网络的数据\n * @param key\n * @returns {Promise}\n */\n fetchNetRepository(key) {\n return new Promise((resolve, reject)=> {\n fetch(key)\n .then((response)=>response.json())\n .then((responseData)=> {\n if (responseData) {\n this.saveRepository(key, responseData);\n resolve(responseData);\n }else {\n reject(new Error('responseData is null'));\n }\n })\n .catch((error)=> {\n reject(error);\n })\n\n })\n }\n}","/**\n * Created by tdzl2003 on 4/4/16.\n */\n\nconst HotUpdate = require('react-native').NativeModules.HotUpdate;\nimport {NativeAppEventEmitter} from 'react-native';\n\nlet host = 'http://update.reactnative.cn/api';\n\nexport const downloadRootDir = HotUpdate.downloadRootDir;\nexport const packageVersion = HotUpdate.packageVersion;\nexport const currentVersion = HotUpdate.currentVersion;\nexport const isFirstTime = HotUpdate.isFirstTime;\nexport const isRolledBack = HotUpdate.isRolledBack;\n\n/*\nReturn json:\nPackage was expired:\n{\n expired: true,\n downloadUrl: 'http://appstore/downloadUrl',\n}\nPackage is up to date:\n{\n upToDate: true,\n}\nThere is available update:\n{\n update: true,\n name: '1.0.3-rc',\n hash: 'hash',\n description: '添加聊天功能\\n修复商城页面BUG',\n metaInfo: '{\"silent\":true}',\n updateUrl: 'http://update-packages.reactnative.cn/hash',\n pdiffUrl: 'http://update-packages.reactnative.cn/hash',\n diffUrl: 'http://update-packages.reactnative.cn/hash',\n}\n */\nexport async function checkUpdate(APPKEY) {\n const resp = await fetch(`${host}/checkUpdate/${APPKEY}`, {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n packageVersion: packageVersion,\n hash: currentVersion,\n }),\n });\n\n if (resp.status !== 200) {\n throw new Error((await resp.json()).message);\n }\n\n return await resp.json();\n}\n\nexport async function downloadUpdate(options) {\n if (!options.update) {\n return;\n }\n\n if (options.diffUrl) {\n await HotUpdate.downloadPatchFromPpk({\n updateUrl: options.diffUrl,\n hashName: options.hash,\n originHashName: currentVersion,\n });\n } else if (options.pdiffUrl) {\n await HotUpdate.downloadPatchFromPackage({\n updateUrl: options.pdiffUrl,\n hashName: options.hash,\n });\n } else {\n await HotUpdate.downloadUpdate({\n updateUrl: options.updateUrl,\n hashName: options.hash,\n });\n }\n return options.hash;\n}\n\nexport async function switchVersion(hash) {\n HotUpdate.reloadUpdate({hashName:hash});\n}\n\nexport async function switchVersionLater(hash) {\n HotUpdate.setNeedUpdate({hashName:hash});\n}\n\nexport function markSuccess() {\n HotUpdate.markSuccess();\n}\n\n\nNativeAppEventEmitter.addListener('RCTHotUpdateDownloadProgress',(params)=>{\n\n})\n\nNativeAppEventEmitter.addListener('RCTHotUpdateUnzipProgress',(params)=>{\n\n})","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Api = _interopRequireDefault(require(\"./Api\"));\n\n// Copyright 2017-2019 @polkadot/api authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nvar _default = _Api.default;\nexports.default = _default;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _rxjs = require(\"rxjs\");\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Base = _interopRequireDefault(require(\"../Base\"));\n\nvar _Combinator = _interopRequireDefault(require(\"./Combinator\"));\n\n// Copyright 2017-2019 @polkadot/api authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * # @polkadot/api/promise\n *\n * ## Overview\n *\n * @name ApiPromise\n *\n * @description\n * ApiPromise is a standard JavaScript wrapper around the RPC and interfaces on the Polkadot network. As a full Promise-based, all interface calls return Promises, including the static `.create(...)`. Subscription calls utilise `(value) => {}` callbacks to pass through the latest values.\n *\n * The API is well suited to real-time applications where either the single-shot state is needed or use is to be made of the subscription-based features of Polkadot (and Substrate) clients.\n *\n * @see [[ApiRx]]\n *\n * ## Usage\n *\n * Making rpc calls -\n *
\n *\n * ```javascript\n * import ApiPromise from '@polkadot/api/promise';\n *\n * // initialise via static create\n * const api = await ApiPromise.create();\n *\n * // make a subscription to the network head\n * api.rpc.chain.subscribeNewHead((header) => {\n * console.log(`Chain is at #${header.blockNumber}`);\n * });\n * ```\n *
\n *\n * Subscribing to chain state -\n *
\n *\n * ```javascript\n * import { ApiPromise, WsProvider } from '@polkadot/api';\n *\n * // initialise a provider with a specific endpoint\n * const provider = new WsProvider('wss://example.com:9944')\n *\n * // initialise via isReady & new with specific provider\n * const api = await new ApiPromise(provider).isReady;\n *\n * // retrieve the block target time\n * const blockPeriod = await api.query.timestamp.blockPeriod().toNumber();\n * let last = 0;\n *\n * // subscribe to the current block timestamp, updates automatically (callback provided)\n * api.query.timestamp.now((timestamp) => {\n * const elapsed = last\n * ? `, ${timestamp.toNumber() - last}s since last`\n * : '';\n *\n * last = timestamp.toNumber();\n * console.log(`timestamp ${timestamp}${elapsed} (${blockPeriod}s target)`);\n * });\n * ```\n *
\n *\n * Submitting a transaction -\n *
\n *\n * ```javascript\n * import ApiPromise from '@polkadot/api/promise';\n *\n * ApiPromise.create().then((api) => {\n * const nonce = await api.query.system.accountNonce(keyring.alice.address());\n *\n * api.tx.balances\n * // create transfer\n * transfer(keyring.bob.address(), 12345)\n * // sign the transcation\n * .sign(keyring.alice, { nonce })\n * // send the transaction (optional status callback)\n * .send((status) => {\n * console.log(`current status ${status.type}`);\n * })\n * // retrieve the submitted extrinsic hash\n * .then((hash) => {\n * console.log(`submitted with hash ${hash}`);\n * });\n * });\n * ```\n */\nclass ApiPromise extends _Base.default {\n /**\n * @description Creates an ApiPromise instance using the supplied provider. Returns an Promise containing the actual Api instance.\n *\n * @param options options that is passed to the class contructor. Can be either [[ApiOptions]] or a\n * provider (see the constructor arguments)\n *\n * @example\n *
\n *\n * ```javascript\n * import Api from '@polkadot/api/promise';\n *\n * Api.create().then(async (api) => {\n * const timestamp = await api.query.timestamp.now();\n *\n * console.log(`lastest block timestamp ${timestamp}`);\n * });\n * ```\n */\n static create() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return new ApiPromise(options).isReady;\n }\n /**\n * @description Creates an instance of the ApiPromise class\n *\n * @param options Options to create an instance. This can be either [[ApiOptions]] or\n * an [[WsProvider]].\n *\n * @example\n *
\n *\n * ```javascript\n * import Api from '@polkadot/api/promise';\n *\n * new Api().isReady.then((api) => {\n * api.rpc.subscribeNewHead((header) => {\n * console.log(`new block #${header.blockNumber.toNumber()}`);\n * });\n * });\n * ```\n */\n\n\n constructor(options) {\n super(options, 'promise');\n this._isReadyPromise = void 0;\n this._isReadyPromise = new Promise(resolveReady => super.once('ready', () => resolveReady(this)));\n }\n /**\n * @description Promise that returns the first time we are connected and loaded\n */\n\n\n get isReady() {\n return this._isReadyPromise;\n }\n /**\n * @description Returns a clone of this ApiPromise instance (new underlying provider connection)\n */\n\n\n clone() {\n return new ApiPromise((0, _objectSpread2.default)({}, this._options, {\n source: this\n }));\n }\n /**\n * @description Creates a combinator that can be used to combine the latest results from multiple subscriptions\n * @param fns An array of function to combine, each in the form of `(cb: (value: void)) => void`\n * @param callback A callback that will return an Array of all the values this combinator has been applied to\n * @example\n *
\n *\n * ```javascript\n * const address = '5DTestUPts3kjeXSTMyerHihn1uwMfLj8vU8sqF7qYrFacT7';\n *\n * // combines values from balance & nonce as it updates\n * api.combineLatest([\n * api.rpc.chain.subscribeNewHead,\n * [api.query.balances.freeBalance, address],\n * (cb) => api.query.system.accountNonce(address, cb)\n * ], ([head, balance, nonce]) => {\n * console.log(`#${head.number}: You have ${balance} units, with ${nonce} transactions sent`);\n * });\n * ```\n */\n\n\n async combineLatest(fns, callback) {\n const combinator = new _Combinator.default(fns, callback);\n return () => {\n combinator.unsubscribe();\n };\n }\n\n onCall(method) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n let callback = arguments.length > 2 ? arguments[2] : undefined;\n let needsCallback = arguments.length > 3 ? arguments[3] : undefined;\n // When we need a subscription, ensure that a valid callback is actually passed\n (0, _util.assert)(!needsCallback || (0, _util.isFunction)(callback), 'Expected a callback to be passed with subscriptions');\n\n if (!callback) {\n return method(...params).pipe((0, _operators.first)()).toPromise();\n } // FIXME TSLint shouts that type assertion is unnecessary, but tsc shouts\n // when I remove it...\n // tslint:disable-next-line\n\n\n return new Promise((resolve, reject) => {\n let isCompleted = false;\n const subscription = method(...params).pipe( // if we find an error (invalid params, etc), reject the promise\n (0, _operators.catchError)(error => {\n if (!isCompleted) {\n isCompleted = true;\n reject(error);\n } // we don't want to continue, so empty observable it is\n\n\n return _rxjs.EMPTY;\n }), // upon the first result, resolve the with the unsub function\n (0, _operators.tap)(() => {\n if (!isCompleted) {\n isCompleted = true;\n resolve(() => subscription.unsubscribe());\n }\n })).subscribe(callback);\n });\n }\n\n}\n\nexports.default = ApiPromise;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","module.exports = require(\"regenerator-runtime\");\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 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 GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\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 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 if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\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) {\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 Promise.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 Promise.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 Promise(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) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\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 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","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar superPropBase = require(\"./superPropBase\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"./internal/Observable\");\nexports.Observable = Observable_1.Observable;\nvar ConnectableObservable_1 = require(\"./internal/observable/ConnectableObservable\");\nexports.ConnectableObservable = ConnectableObservable_1.ConnectableObservable;\nvar groupBy_1 = require(\"./internal/operators/groupBy\");\nexports.GroupedObservable = groupBy_1.GroupedObservable;\nvar observable_1 = require(\"./internal/symbol/observable\");\nexports.observable = observable_1.observable;\nvar Subject_1 = require(\"./internal/Subject\");\nexports.Subject = Subject_1.Subject;\nvar BehaviorSubject_1 = require(\"./internal/BehaviorSubject\");\nexports.BehaviorSubject = BehaviorSubject_1.BehaviorSubject;\nvar ReplaySubject_1 = require(\"./internal/ReplaySubject\");\nexports.ReplaySubject = ReplaySubject_1.ReplaySubject;\nvar AsyncSubject_1 = require(\"./internal/AsyncSubject\");\nexports.AsyncSubject = AsyncSubject_1.AsyncSubject;\nvar asap_1 = require(\"./internal/scheduler/asap\");\nexports.asapScheduler = asap_1.asap;\nvar async_1 = require(\"./internal/scheduler/async\");\nexports.asyncScheduler = async_1.async;\nvar queue_1 = require(\"./internal/scheduler/queue\");\nexports.queueScheduler = queue_1.queue;\nvar animationFrame_1 = require(\"./internal/scheduler/animationFrame\");\nexports.animationFrameScheduler = animationFrame_1.animationFrame;\nvar VirtualTimeScheduler_1 = require(\"./internal/scheduler/VirtualTimeScheduler\");\nexports.VirtualTimeScheduler = VirtualTimeScheduler_1.VirtualTimeScheduler;\nexports.VirtualAction = VirtualTimeScheduler_1.VirtualAction;\nvar Scheduler_1 = require(\"./internal/Scheduler\");\nexports.Scheduler = Scheduler_1.Scheduler;\nvar Subscription_1 = require(\"./internal/Subscription\");\nexports.Subscription = Subscription_1.Subscription;\nvar Subscriber_1 = require(\"./internal/Subscriber\");\nexports.Subscriber = Subscriber_1.Subscriber;\nvar Notification_1 = require(\"./internal/Notification\");\nexports.Notification = Notification_1.Notification;\nexports.NotificationKind = Notification_1.NotificationKind;\nvar pipe_1 = require(\"./internal/util/pipe\");\nexports.pipe = pipe_1.pipe;\nvar noop_1 = require(\"./internal/util/noop\");\nexports.noop = noop_1.noop;\nvar identity_1 = require(\"./internal/util/identity\");\nexports.identity = identity_1.identity;\nvar isObservable_1 = require(\"./internal/util/isObservable\");\nexports.isObservable = isObservable_1.isObservable;\nvar ArgumentOutOfRangeError_1 = require(\"./internal/util/ArgumentOutOfRangeError\");\nexports.ArgumentOutOfRangeError = ArgumentOutOfRangeError_1.ArgumentOutOfRangeError;\nvar EmptyError_1 = require(\"./internal/util/EmptyError\");\nexports.EmptyError = EmptyError_1.EmptyError;\nvar ObjectUnsubscribedError_1 = require(\"./internal/util/ObjectUnsubscribedError\");\nexports.ObjectUnsubscribedError = ObjectUnsubscribedError_1.ObjectUnsubscribedError;\nvar UnsubscriptionError_1 = require(\"./internal/util/UnsubscriptionError\");\nexports.UnsubscriptionError = UnsubscriptionError_1.UnsubscriptionError;\nvar TimeoutError_1 = require(\"./internal/util/TimeoutError\");\nexports.TimeoutError = TimeoutError_1.TimeoutError;\nvar bindCallback_1 = require(\"./internal/observable/bindCallback\");\nexports.bindCallback = bindCallback_1.bindCallback;\nvar bindNodeCallback_1 = require(\"./internal/observable/bindNodeCallback\");\nexports.bindNodeCallback = bindNodeCallback_1.bindNodeCallback;\nvar combineLatest_1 = require(\"./internal/observable/combineLatest\");\nexports.combineLatest = combineLatest_1.combineLatest;\nvar concat_1 = require(\"./internal/observable/concat\");\nexports.concat = concat_1.concat;\nvar defer_1 = require(\"./internal/observable/defer\");\nexports.defer = defer_1.defer;\nvar empty_1 = require(\"./internal/observable/empty\");\nexports.empty = empty_1.empty;\nvar forkJoin_1 = require(\"./internal/observable/forkJoin\");\nexports.forkJoin = forkJoin_1.forkJoin;\nvar from_1 = require(\"./internal/observable/from\");\nexports.from = from_1.from;\nvar fromEvent_1 = require(\"./internal/observable/fromEvent\");\nexports.fromEvent = fromEvent_1.fromEvent;\nvar fromEventPattern_1 = require(\"./internal/observable/fromEventPattern\");\nexports.fromEventPattern = fromEventPattern_1.fromEventPattern;\nvar generate_1 = require(\"./internal/observable/generate\");\nexports.generate = generate_1.generate;\nvar iif_1 = require(\"./internal/observable/iif\");\nexports.iif = iif_1.iif;\nvar interval_1 = require(\"./internal/observable/interval\");\nexports.interval = interval_1.interval;\nvar merge_1 = require(\"./internal/observable/merge\");\nexports.merge = merge_1.merge;\nvar never_1 = require(\"./internal/observable/never\");\nexports.never = never_1.never;\nvar of_1 = require(\"./internal/observable/of\");\nexports.of = of_1.of;\nvar onErrorResumeNext_1 = require(\"./internal/observable/onErrorResumeNext\");\nexports.onErrorResumeNext = onErrorResumeNext_1.onErrorResumeNext;\nvar pairs_1 = require(\"./internal/observable/pairs\");\nexports.pairs = pairs_1.pairs;\nvar partition_1 = require(\"./internal/observable/partition\");\nexports.partition = partition_1.partition;\nvar race_1 = require(\"./internal/observable/race\");\nexports.race = race_1.race;\nvar range_1 = require(\"./internal/observable/range\");\nexports.range = range_1.range;\nvar throwError_1 = require(\"./internal/observable/throwError\");\nexports.throwError = throwError_1.throwError;\nvar timer_1 = require(\"./internal/observable/timer\");\nexports.timer = timer_1.timer;\nvar using_1 = require(\"./internal/observable/using\");\nexports.using = using_1.using;\nvar zip_1 = require(\"./internal/observable/zip\");\nexports.zip = zip_1.zip;\nvar scheduled_1 = require(\"./internal/scheduled/scheduled\");\nexports.scheduled = scheduled_1.scheduled;\nvar empty_2 = require(\"./internal/observable/empty\");\nexports.EMPTY = empty_2.EMPTY;\nvar never_2 = require(\"./internal/observable/never\");\nexports.NEVER = never_2.NEVER;\nvar config_1 = require(\"./internal/config\");\nexports.config = config_1.config;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar canReportError_1 = require(\"./util/canReportError\");\nvar toSubscriber_1 = require(\"./util/toSubscriber\");\nvar observable_1 = require(\"./symbol/observable\");\nvar pipe_1 = require(\"./util/pipe\");\nvar config_1 = require(\"./config\");\nvar Observable = (function () {\n function Observable(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var operator = this.operator;\n var sink = toSubscriber_1.toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config_1.config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError_1.canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscription;\n subscription = _this.subscribe(function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var source = this.source;\n return source && source.subscribe(subscriber);\n };\n Observable.prototype[observable_1.observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n if (operations.length === 0) {\n return this;\n }\n return pipe_1.pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexports.Observable = Observable;\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config_1.config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n//# sourceMappingURL=Observable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction canReportError(observer) {\n while (observer) {\n var _a = observer, closed_1 = _a.closed, destination = _a.destination, isStopped = _a.isStopped;\n if (closed_1 || isStopped) {\n return false;\n }\n else if (destination && destination instanceof Subscriber_1.Subscriber) {\n observer = destination;\n }\n else {\n observer = null;\n }\n }\n return true;\n}\nexports.canReportError = canReportError;\n//# sourceMappingURL=canReportError.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar isFunction_1 = require(\"./util/isFunction\");\nvar Observer_1 = require(\"./Observer\");\nvar Subscription_1 = require(\"./Subscription\");\nvar rxSubscriber_1 = require(\"../internal/symbol/rxSubscriber\");\nvar config_1 = require(\"./config\");\nvar hostReportError_1 = require(\"./util/hostReportError\");\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destinationOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this.syncErrorValue = null;\n _this.syncErrorThrown = false;\n _this.syncErrorThrowable = false;\n _this.isStopped = false;\n switch (arguments.length) {\n case 0:\n _this.destination = Observer_1.empty;\n break;\n case 1:\n if (!destinationOrNext) {\n _this.destination = Observer_1.empty;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n _this.destination = destinationOrNext;\n destinationOrNext.add(_this);\n }\n else {\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext);\n }\n break;\n }\n default:\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete);\n break;\n }\n return _this;\n }\n Subscriber.prototype[rxSubscriber_1.rxSubscriber] = function () { return this; };\n Subscriber.create = function (next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n Subscriber.prototype.next = function (value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n Subscriber.prototype._complete = function () {\n this.destination.complete();\n this.unsubscribe();\n };\n Subscriber.prototype._unsubscribeAndRecycle = function () {\n var _parentOrParents = this._parentOrParents;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n };\n return Subscriber;\n}(Subscription_1.Subscription));\nexports.Subscriber = Subscriber;\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this._parentSubscriber = _parentSubscriber;\n var next;\n var context = _this;\n if (isFunction_1.isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== Observer_1.empty) {\n context = Object.create(observerOrNext);\n if (isFunction_1.isFunction(context.unsubscribe)) {\n _this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = _this.unsubscribe.bind(_this);\n }\n }\n _this._context = context;\n _this._next = next;\n _this._error = error;\n _this._complete = complete;\n return _this;\n }\n SafeSubscriber.prototype.next = function (value) {\n if (!this.isStopped && this._next) {\n var _parentSubscriber = this._parentSubscriber;\n if (!config_1.config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n var useDeprecatedSynchronousErrorHandling = config_1.config.useDeprecatedSynchronousErrorHandling;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError_1.hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError_1.hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.complete = function () {\n var _this = this;\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._complete) {\n var wrappedComplete = function () { return _this._complete.call(_this._context); };\n if (!config_1.config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError_1.hostReportError(err);\n }\n }\n };\n SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n if (!config_1.config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError_1.hostReportError(err);\n return true;\n }\n }\n return false;\n };\n SafeSubscriber.prototype._unsubscribe = function () {\n var _parentSubscriber = this._parentSubscriber;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n };\n return SafeSubscriber;\n}(Subscriber));\nexports.SafeSubscriber = SafeSubscriber;\n//# sourceMappingURL=Subscriber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isFunction(x) {\n return typeof x === 'function';\n}\nexports.isFunction = isFunction;\n//# sourceMappingURL=isFunction.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar config_1 = require(\"./config\");\nvar hostReportError_1 = require(\"./util/hostReportError\");\nexports.empty = {\n closed: true,\n next: function (value) { },\n error: function (err) {\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError_1.hostReportError(err);\n }\n },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _enable_super_gross_mode_that_will_cause_bad_things = false;\nexports.config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n var error = new Error();\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n//# sourceMappingURL=config.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction hostReportError(err) {\n setTimeout(function () { throw err; }, 0);\n}\nexports.hostReportError = hostReportError;\n//# sourceMappingURL=hostReportError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar isArray_1 = require(\"./util/isArray\");\nvar isObject_1 = require(\"./util/isObject\");\nvar isFunction_1 = require(\"./util/isFunction\");\nvar UnsubscriptionError_1 = require(\"./util/UnsubscriptionError\");\nvar Subscription = (function () {\n function Subscription(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._unsubscribe = unsubscribe;\n }\n }\n Subscription.prototype.unsubscribe = function () {\n var errors;\n if (this.closed) {\n return;\n }\n var _a = this, _parentOrParents = _a._parentOrParents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (var index = 0; index < _parentOrParents.length; ++index) {\n var parent_1 = _parentOrParents[index];\n parent_1.remove(this);\n }\n }\n if (isFunction_1.isFunction(_unsubscribe)) {\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError_1.UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray_1.isArray(_subscriptions)) {\n var index = -1;\n var len = _subscriptions.length;\n while (++index < len) {\n var sub = _subscriptions[index];\n if (isObject_1.isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError_1.UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError_1.UnsubscriptionError(errors);\n }\n };\n Subscription.prototype.add = function (teardown) {\n var subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n var tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n var _parentOrParents = subscription._parentOrParents;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n var subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n };\n Subscription.prototype.remove = function (subscription) {\n var subscriptions = this._subscriptions;\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n Subscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n return Subscription;\n}());\nexports.Subscription = Subscription;\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError_1.UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isArray = Array.isArray || (function (x) { return x && typeof x.length === 'number'; });\n//# sourceMappingURL=isArray.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isObject(x) {\n return x !== null && typeof x === 'object';\n}\nexports.isObject = isObject;\n//# sourceMappingURL=isObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ?\n errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ') : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n}\nUnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);\nexports.UnsubscriptionError = UnsubscriptionErrorImpl;\n//# sourceMappingURL=UnsubscriptionError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rxSubscriber = typeof Symbol === 'function'\n ? Symbol('rxSubscriber')\n : '@@rxSubscriber_' + Math.random();\nexports.$$rxSubscriber = exports.rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nvar rxSubscriber_1 = require(\"../symbol/rxSubscriber\");\nvar Observer_1 = require(\"../Observer\");\nfunction toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber_1.Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriber_1.rxSubscriber]) {\n return nextOrObserver[rxSubscriber_1.rxSubscriber]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber_1.Subscriber(Observer_1.empty);\n }\n return new Subscriber_1.Subscriber(nextOrObserver, error, complete);\n}\nexports.toSubscriber = toSubscriber;\n//# sourceMappingURL=toSubscriber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.observable = typeof Symbol === 'function' && Symbol.observable || '@@observable';\n//# sourceMappingURL=observable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar noop_1 = require(\"./noop\");\nfunction pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexports.pipe = pipe;\nfunction pipeFromArray(fns) {\n if (!fns) {\n return noop_1.noop;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\nexports.pipeFromArray = pipeFromArray;\n//# sourceMappingURL=pipe.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction noop() { }\nexports.noop = noop;\n//# sourceMappingURL=noop.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subject_1 = require(\"../Subject\");\nvar Observable_1 = require(\"../Observable\");\nvar Subscriber_1 = require(\"../Subscriber\");\nvar Subscription_1 = require(\"../Subscription\");\nvar refCount_1 = require(\"../operators/refCount\");\nvar ConnectableObservable = (function (_super) {\n __extends(ConnectableObservable, _super);\n function ConnectableObservable(source, subjectFactory) {\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.subjectFactory = subjectFactory;\n _this._refCount = 0;\n _this._isComplete = false;\n return _this;\n }\n ConnectableObservable.prototype._subscribe = function (subscriber) {\n return this.getSubject().subscribe(subscriber);\n };\n ConnectableObservable.prototype.getSubject = function () {\n var subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n };\n ConnectableObservable.prototype.connect = function () {\n var connection = this._connection;\n if (!connection) {\n this._isComplete = false;\n connection = this._connection = new Subscription_1.Subscription();\n connection.add(this.source\n .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription_1.Subscription.EMPTY;\n }\n }\n return connection;\n };\n ConnectableObservable.prototype.refCount = function () {\n return refCount_1.refCount()(this);\n };\n return ConnectableObservable;\n}(Observable_1.Observable));\nexports.ConnectableObservable = ConnectableObservable;\nvar connectableProto = ConnectableObservable.prototype;\nexports.connectableObservableDescriptor = {\n operator: { value: null },\n _refCount: { value: 0, writable: true },\n _subject: { value: null, writable: true },\n _connection: { value: null, writable: true },\n _subscribe: { value: connectableProto._subscribe },\n _isComplete: { value: connectableProto._isComplete, writable: true },\n getSubject: { value: connectableProto.getSubject },\n connect: { value: connectableProto.connect },\n refCount: { value: connectableProto.refCount }\n};\nvar ConnectableSubscriber = (function (_super) {\n __extends(ConnectableSubscriber, _super);\n function ConnectableSubscriber(destination, connectable) {\n var _this = _super.call(this, destination) || this;\n _this.connectable = connectable;\n return _this;\n }\n ConnectableSubscriber.prototype._error = function (err) {\n this._unsubscribe();\n _super.prototype._error.call(this, err);\n };\n ConnectableSubscriber.prototype._complete = function () {\n this.connectable._isComplete = true;\n this._unsubscribe();\n _super.prototype._complete.call(this);\n };\n ConnectableSubscriber.prototype._unsubscribe = function () {\n var connectable = this.connectable;\n if (connectable) {\n this.connectable = null;\n var connection = connectable._connection;\n connectable._refCount = 0;\n connectable._subject = null;\n connectable._connection = null;\n if (connection) {\n connection.unsubscribe();\n }\n }\n };\n return ConnectableSubscriber;\n}(Subject_1.SubjectSubscriber));\nvar RefCountOperator = (function () {\n function RefCountOperator(connectable) {\n this.connectable = connectable;\n }\n RefCountOperator.prototype.call = function (subscriber, source) {\n var connectable = this.connectable;\n connectable._refCount++;\n var refCounter = new RefCountSubscriber(subscriber, connectable);\n var subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n };\n return RefCountOperator;\n}());\nvar RefCountSubscriber = (function (_super) {\n __extends(RefCountSubscriber, _super);\n function RefCountSubscriber(destination, connectable) {\n var _this = _super.call(this, destination) || this;\n _this.connectable = connectable;\n return _this;\n }\n RefCountSubscriber.prototype._unsubscribe = function () {\n var connectable = this.connectable;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n var refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n var connection = this.connection;\n var sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n };\n return RefCountSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=ConnectableObservable.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"./Observable\");\nvar Subscriber_1 = require(\"./Subscriber\");\nvar Subscription_1 = require(\"./Subscription\");\nvar ObjectUnsubscribedError_1 = require(\"./util/ObjectUnsubscribedError\");\nvar SubjectSubscription_1 = require(\"./SubjectSubscription\");\nvar rxSubscriber_1 = require(\"../internal/symbol/rxSubscriber\");\nvar SubjectSubscriber = (function (_super) {\n __extends(SubjectSubscriber, _super);\n function SubjectSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n return _this;\n }\n return SubjectSubscriber;\n}(Subscriber_1.Subscriber));\nexports.SubjectSubscriber = SubjectSubscriber;\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.observers = [];\n _this.closed = false;\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype[rxSubscriber_1.rxSubscriber] = function () {\n return new SubjectSubscriber(this);\n };\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype.next = function (value) {\n if (this.closed) {\n throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n };\n Subject.prototype.error = function (err) {\n if (this.closed) {\n throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n };\n Subject.prototype.complete = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();\n }\n this.isStopped = true;\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n };\n Subject.prototype._trySubscribe = function (subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();\n }\n else {\n return _super.prototype._trySubscribe.call(this, subscriber);\n }\n };\n Subject.prototype._subscribe = function (subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();\n }\n else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription_1.Subscription.EMPTY;\n }\n else if (this.isStopped) {\n subscriber.complete();\n return Subscription_1.Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n return new SubjectSubscription_1.SubjectSubscription(this, subscriber);\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable_1.Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable_1.Observable));\nexports.Subject = Subject;\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var destination = this.destination;\n if (destination && destination.next) {\n destination.next(value);\n }\n };\n AnonymousSubject.prototype.error = function (err) {\n var destination = this.destination;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n };\n AnonymousSubject.prototype.complete = function () {\n var destination = this.destination;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var source = this.source;\n if (source) {\n return this.source.subscribe(subscriber);\n }\n else {\n return Subscription_1.Subscription.EMPTY;\n }\n };\n return AnonymousSubject;\n}(Subject));\nexports.AnonymousSubject = AnonymousSubject;\n//# sourceMappingURL=Subject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction ObjectUnsubscribedErrorImpl() {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n}\nObjectUnsubscribedErrorImpl.prototype = Object.create(Error.prototype);\nexports.ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscription_1 = require(\"./Subscription\");\nvar SubjectSubscription = (function (_super) {\n __extends(SubjectSubscription, _super);\n function SubjectSubscription(subject, subscriber) {\n var _this = _super.call(this) || this;\n _this.subject = subject;\n _this.subscriber = subscriber;\n _this.closed = false;\n return _this;\n }\n SubjectSubscription.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.closed = true;\n var subject = this.subject;\n var observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n var subscriberIndex = observers.indexOf(this.subscriber);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n };\n return SubjectSubscription;\n}(Subscription_1.Subscription));\nexports.SubjectSubscription = SubjectSubscription;\n//# sourceMappingURL=SubjectSubscription.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction refCount() {\n return function refCountOperatorFunction(source) {\n return source.lift(new RefCountOperator(source));\n };\n}\nexports.refCount = refCount;\nvar RefCountOperator = (function () {\n function RefCountOperator(connectable) {\n this.connectable = connectable;\n }\n RefCountOperator.prototype.call = function (subscriber, source) {\n var connectable = this.connectable;\n connectable._refCount++;\n var refCounter = new RefCountSubscriber(subscriber, connectable);\n var subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n };\n return RefCountOperator;\n}());\nvar RefCountSubscriber = (function (_super) {\n __extends(RefCountSubscriber, _super);\n function RefCountSubscriber(destination, connectable) {\n var _this = _super.call(this, destination) || this;\n _this.connectable = connectable;\n return _this;\n }\n RefCountSubscriber.prototype._unsubscribe = function () {\n var connectable = this.connectable;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n var refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n var connection = this.connection;\n var sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n };\n return RefCountSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=refCount.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nvar Subscription_1 = require(\"../Subscription\");\nvar Observable_1 = require(\"../Observable\");\nvar Subject_1 = require(\"../Subject\");\nfunction groupBy(keySelector, elementSelector, durationSelector, subjectSelector) {\n return function (source) {\n return source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector));\n };\n}\nexports.groupBy = groupBy;\nvar GroupByOperator = (function () {\n function GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector) {\n this.keySelector = keySelector;\n this.elementSelector = elementSelector;\n this.durationSelector = durationSelector;\n this.subjectSelector = subjectSelector;\n }\n GroupByOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new GroupBySubscriber(subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector));\n };\n return GroupByOperator;\n}());\nvar GroupBySubscriber = (function (_super) {\n __extends(GroupBySubscriber, _super);\n function GroupBySubscriber(destination, keySelector, elementSelector, durationSelector, subjectSelector) {\n var _this = _super.call(this, destination) || this;\n _this.keySelector = keySelector;\n _this.elementSelector = elementSelector;\n _this.durationSelector = durationSelector;\n _this.subjectSelector = subjectSelector;\n _this.groups = null;\n _this.attemptedToUnsubscribe = false;\n _this.count = 0;\n return _this;\n }\n GroupBySubscriber.prototype._next = function (value) {\n var key;\n try {\n key = this.keySelector(value);\n }\n catch (err) {\n this.error(err);\n return;\n }\n this._group(value, key);\n };\n GroupBySubscriber.prototype._group = function (value, key) {\n var groups = this.groups;\n if (!groups) {\n groups = this.groups = new Map();\n }\n var group = groups.get(key);\n var element;\n if (this.elementSelector) {\n try {\n element = this.elementSelector(value);\n }\n catch (err) {\n this.error(err);\n }\n }\n else {\n element = value;\n }\n if (!group) {\n group = (this.subjectSelector ? this.subjectSelector() : new Subject_1.Subject());\n groups.set(key, group);\n var groupedObservable = new GroupedObservable(key, group, this);\n this.destination.next(groupedObservable);\n if (this.durationSelector) {\n var duration = void 0;\n try {\n duration = this.durationSelector(new GroupedObservable(key, group));\n }\n catch (err) {\n this.error(err);\n return;\n }\n this.add(duration.subscribe(new GroupDurationSubscriber(key, group, this)));\n }\n }\n if (!group.closed) {\n group.next(element);\n }\n };\n GroupBySubscriber.prototype._error = function (err) {\n var groups = this.groups;\n if (groups) {\n groups.forEach(function (group, key) {\n group.error(err);\n });\n groups.clear();\n }\n this.destination.error(err);\n };\n GroupBySubscriber.prototype._complete = function () {\n var groups = this.groups;\n if (groups) {\n groups.forEach(function (group, key) {\n group.complete();\n });\n groups.clear();\n }\n this.destination.complete();\n };\n GroupBySubscriber.prototype.removeGroup = function (key) {\n this.groups.delete(key);\n };\n GroupBySubscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.attemptedToUnsubscribe = true;\n if (this.count === 0) {\n _super.prototype.unsubscribe.call(this);\n }\n }\n };\n return GroupBySubscriber;\n}(Subscriber_1.Subscriber));\nvar GroupDurationSubscriber = (function (_super) {\n __extends(GroupDurationSubscriber, _super);\n function GroupDurationSubscriber(key, group, parent) {\n var _this = _super.call(this, group) || this;\n _this.key = key;\n _this.group = group;\n _this.parent = parent;\n return _this;\n }\n GroupDurationSubscriber.prototype._next = function (value) {\n this.complete();\n };\n GroupDurationSubscriber.prototype._unsubscribe = function () {\n var _a = this, parent = _a.parent, key = _a.key;\n this.key = this.parent = null;\n if (parent) {\n parent.removeGroup(key);\n }\n };\n return GroupDurationSubscriber;\n}(Subscriber_1.Subscriber));\nvar GroupedObservable = (function (_super) {\n __extends(GroupedObservable, _super);\n function GroupedObservable(key, groupSubject, refCountSubscription) {\n var _this = _super.call(this) || this;\n _this.key = key;\n _this.groupSubject = groupSubject;\n _this.refCountSubscription = refCountSubscription;\n return _this;\n }\n GroupedObservable.prototype._subscribe = function (subscriber) {\n var subscription = new Subscription_1.Subscription();\n var _a = this, refCountSubscription = _a.refCountSubscription, groupSubject = _a.groupSubject;\n if (refCountSubscription && !refCountSubscription.closed) {\n subscription.add(new InnerRefCountSubscription(refCountSubscription));\n }\n subscription.add(groupSubject.subscribe(subscriber));\n return subscription;\n };\n return GroupedObservable;\n}(Observable_1.Observable));\nexports.GroupedObservable = GroupedObservable;\nvar InnerRefCountSubscription = (function (_super) {\n __extends(InnerRefCountSubscription, _super);\n function InnerRefCountSubscription(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n parent.count++;\n return _this;\n }\n InnerRefCountSubscription.prototype.unsubscribe = function () {\n var parent = this.parent;\n if (!parent.closed && !this.closed) {\n _super.prototype.unsubscribe.call(this);\n parent.count -= 1;\n if (parent.count === 0 && parent.attemptedToUnsubscribe) {\n parent.unsubscribe();\n }\n }\n };\n return InnerRefCountSubscription;\n}(Subscription_1.Subscription));\n//# sourceMappingURL=groupBy.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subject_1 = require(\"./Subject\");\nvar ObjectUnsubscribedError_1 = require(\"./util/ObjectUnsubscribedError\");\nvar BehaviorSubject = (function (_super) {\n __extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: true,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n if (subscription && !subscription.closed) {\n subscriber.next(this._value);\n }\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n if (this.hasError) {\n throw this.thrownError;\n }\n else if (this.closed) {\n throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();\n }\n else {\n return this._value;\n }\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, this._value = value);\n };\n return BehaviorSubject;\n}(Subject_1.Subject));\nexports.BehaviorSubject = BehaviorSubject;\n//# sourceMappingURL=BehaviorSubject.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subject_1 = require(\"./Subject\");\nvar queue_1 = require(\"./scheduler/queue\");\nvar Subscription_1 = require(\"./Subscription\");\nvar observeOn_1 = require(\"./operators/observeOn\");\nvar ObjectUnsubscribedError_1 = require(\"./util/ObjectUnsubscribedError\");\nvar SubjectSubscription_1 = require(\"./SubjectSubscription\");\nvar ReplaySubject = (function (_super) {\n __extends(ReplaySubject, _super);\n function ReplaySubject(bufferSize, windowTime, scheduler) {\n if (bufferSize === void 0) { bufferSize = Number.POSITIVE_INFINITY; }\n if (windowTime === void 0) { windowTime = Number.POSITIVE_INFINITY; }\n var _this = _super.call(this) || this;\n _this.scheduler = scheduler;\n _this._events = [];\n _this._infiniteTimeWindow = false;\n _this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n _this._windowTime = windowTime < 1 ? 1 : windowTime;\n if (windowTime === Number.POSITIVE_INFINITY) {\n _this._infiniteTimeWindow = true;\n _this.next = _this.nextInfiniteTimeWindow;\n }\n else {\n _this.next = _this.nextTimeWindow;\n }\n return _this;\n }\n ReplaySubject.prototype.nextInfiniteTimeWindow = function (value) {\n var _events = this._events;\n _events.push(value);\n if (_events.length > this._bufferSize) {\n _events.shift();\n }\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype.nextTimeWindow = function (value) {\n this._events.push(new ReplayEvent(this._getNow(), value));\n this._trimBufferThenGetEvents();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n var _infiniteTimeWindow = this._infiniteTimeWindow;\n var _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();\n var scheduler = this.scheduler;\n var len = _events.length;\n var subscription;\n if (this.closed) {\n throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();\n }\n else if (this.isStopped || this.hasError) {\n subscription = Subscription_1.Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n subscription = new SubjectSubscription_1.SubjectSubscription(this, subscriber);\n }\n if (scheduler) {\n subscriber.add(subscriber = new observeOn_1.ObserveOnSubscriber(subscriber, scheduler));\n }\n if (_infiniteTimeWindow) {\n for (var i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i]);\n }\n }\n else {\n for (var i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i].value);\n }\n }\n if (this.hasError) {\n subscriber.error(this.thrownError);\n }\n else if (this.isStopped) {\n subscriber.complete();\n }\n return subscription;\n };\n ReplaySubject.prototype._getNow = function () {\n return (this.scheduler || queue_1.queue).now();\n };\n ReplaySubject.prototype._trimBufferThenGetEvents = function () {\n var now = this._getNow();\n var _bufferSize = this._bufferSize;\n var _windowTime = this._windowTime;\n var _events = this._events;\n var eventsCount = _events.length;\n var spliceCount = 0;\n while (spliceCount < eventsCount) {\n if ((now - _events[spliceCount].time) < _windowTime) {\n break;\n }\n spliceCount++;\n }\n if (eventsCount > _bufferSize) {\n spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n }\n if (spliceCount > 0) {\n _events.splice(0, spliceCount);\n }\n return _events;\n };\n return ReplaySubject;\n}(Subject_1.Subject));\nexports.ReplaySubject = ReplaySubject;\nvar ReplayEvent = (function () {\n function ReplayEvent(time, value) {\n this.time = time;\n this.value = value;\n }\n return ReplayEvent;\n}());\n//# sourceMappingURL=ReplaySubject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar QueueAction_1 = require(\"./QueueAction\");\nvar QueueScheduler_1 = require(\"./QueueScheduler\");\nexports.queue = new QueueScheduler_1.QueueScheduler(QueueAction_1.QueueAction);\n//# sourceMappingURL=queue.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar QueueAction = (function (_super) {\n __extends(QueueAction, _super);\n function QueueAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n QueueAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay > 0) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n };\n QueueAction.prototype.execute = function (state, delay) {\n return (delay > 0 || this.closed) ?\n _super.prototype.execute.call(this, state, delay) :\n this._execute(state, delay);\n };\n QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n return scheduler.flush(this);\n };\n return QueueAction;\n}(AsyncAction_1.AsyncAction));\nexports.QueueAction = QueueAction;\n//# sourceMappingURL=QueueAction.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Action_1 = require(\"./Action\");\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n clearInterval(id);\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, delay) {\n var errored = false;\n var errorValue = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype._unsubscribe = function () {\n var id = this.id;\n var scheduler = this.scheduler;\n var actions = scheduler.actions;\n var index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n };\n return AsyncAction;\n}(Action_1.Action));\nexports.AsyncAction = AsyncAction;\n//# sourceMappingURL=AsyncAction.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscription_1 = require(\"../Subscription\");\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription_1.Subscription));\nexports.Action = Action;\n//# sourceMappingURL=Action.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nvar QueueScheduler = (function (_super) {\n __extends(QueueScheduler, _super);\n function QueueScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return QueueScheduler;\n}(AsyncScheduler_1.AsyncScheduler));\nexports.QueueScheduler = QueueScheduler;\n//# sourceMappingURL=QueueScheduler.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Scheduler_1 = require(\"../Scheduler\");\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler_1.Scheduler.now; }\n var _this = _super.call(this, SchedulerAction, function () {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== _this) {\n return AsyncScheduler.delegate.now();\n }\n else {\n return now();\n }\n }) || this;\n _this.actions = [];\n _this.active = false;\n _this.scheduled = undefined;\n return _this;\n }\n AsyncScheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n }\n else {\n return _super.prototype.schedule.call(this, work, delay, state);\n }\n };\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this.active) {\n actions.push(action);\n return;\n }\n var error;\n this.active = true;\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift());\n this.active = false;\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler_1.Scheduler));\nexports.AsyncScheduler = AsyncScheduler;\n//# sourceMappingURL=AsyncScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Scheduler = (function () {\n function Scheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.SchedulerAction = SchedulerAction;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.SchedulerAction(this, work).schedule(state, delay);\n };\n Scheduler.now = function () { return Date.now(); };\n return Scheduler;\n}());\nexports.Scheduler = Scheduler;\n//# sourceMappingURL=Scheduler.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nvar Notification_1 = require(\"../Notification\");\nfunction observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return function observeOnOperatorFunction(source) {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\nexports.observeOn = observeOn;\nvar ObserveOnOperator = (function () {\n function ObserveOnOperator(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n this.scheduler = scheduler;\n this.delay = delay;\n }\n ObserveOnOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n };\n return ObserveOnOperator;\n}());\nexports.ObserveOnOperator = ObserveOnOperator;\nvar ObserveOnSubscriber = (function (_super) {\n __extends(ObserveOnSubscriber, _super);\n function ObserveOnSubscriber(destination, scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n var _this = _super.call(this, destination) || this;\n _this.scheduler = scheduler;\n _this.delay = delay;\n return _this;\n }\n ObserveOnSubscriber.dispatch = function (arg) {\n var notification = arg.notification, destination = arg.destination;\n notification.observe(destination);\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype.scheduleMessage = function (notification) {\n var destination = this.destination;\n destination.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n };\n ObserveOnSubscriber.prototype._next = function (value) {\n this.scheduleMessage(Notification_1.Notification.createNext(value));\n };\n ObserveOnSubscriber.prototype._error = function (err) {\n this.scheduleMessage(Notification_1.Notification.createError(err));\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype._complete = function () {\n this.scheduleMessage(Notification_1.Notification.createComplete());\n this.unsubscribe();\n };\n return ObserveOnSubscriber;\n}(Subscriber_1.Subscriber));\nexports.ObserveOnSubscriber = ObserveOnSubscriber;\nvar ObserveOnMessage = (function () {\n function ObserveOnMessage(notification, destination) {\n this.notification = notification;\n this.destination = destination;\n }\n return ObserveOnMessage;\n}());\nexports.ObserveOnMessage = ObserveOnMessage;\n//# sourceMappingURL=observeOn.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar empty_1 = require(\"./observable/empty\");\nvar of_1 = require(\"./observable/of\");\nvar throwError_1 = require(\"./observable/throwError\");\nvar NotificationKind;\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind = exports.NotificationKind || (exports.NotificationKind = {}));\nvar Notification = (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n Notification.prototype.observe = function (observer) {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n };\n Notification.prototype.do = function (next, error, complete) {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n };\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n return this.observe(nextOrObserver);\n }\n else {\n return this.do(nextOrObserver, error, complete);\n }\n };\n Notification.prototype.toObservable = function () {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return of_1.of(this.value);\n case 'E':\n return throwError_1.throwError(this.error);\n case 'C':\n return empty_1.empty();\n }\n throw new Error('unexpected notification kind value');\n };\n Notification.createNext = function (value) {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n };\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n Notification.undefinedValueNotification = new Notification('N', undefined);\n return Notification;\n}());\nexports.Notification = Notification;\n//# sourceMappingURL=Notification.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nexports.EMPTY = new Observable_1.Observable(function (subscriber) { return subscriber.complete(); });\nfunction empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : exports.EMPTY;\n}\nexports.empty = empty;\nfunction emptyScheduled(scheduler) {\n return new Observable_1.Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar isScheduler_1 = require(\"../util/isScheduler\");\nvar fromArray_1 = require(\"./fromArray\");\nvar scheduleArray_1 = require(\"../scheduled/scheduleArray\");\nfunction of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args[args.length - 1];\n if (isScheduler_1.isScheduler(scheduler)) {\n args.pop();\n return scheduleArray_1.scheduleArray(args, scheduler);\n }\n else {\n return fromArray_1.fromArray(args);\n }\n}\nexports.of = of;\n//# sourceMappingURL=of.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isScheduler(value) {\n return value && typeof value.schedule === 'function';\n}\nexports.isScheduler = isScheduler;\n//# sourceMappingURL=isScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar subscribeToArray_1 = require(\"../util/subscribeToArray\");\nvar scheduleArray_1 = require(\"../scheduled/scheduleArray\");\nfunction fromArray(input, scheduler) {\n if (!scheduler) {\n return new Observable_1.Observable(subscribeToArray_1.subscribeToArray(input));\n }\n else {\n return scheduleArray_1.scheduleArray(input, scheduler);\n }\n}\nexports.fromArray = fromArray;\n//# sourceMappingURL=fromArray.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subscribeToArray = function (array) { return function (subscriber) {\n for (var i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n}; };\n//# sourceMappingURL=subscribeToArray.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar Subscription_1 = require(\"../Subscription\");\nfunction scheduleArray(input, scheduler) {\n return new Observable_1.Observable(function (subscriber) {\n var sub = new Subscription_1.Subscription();\n var i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\nexports.scheduleArray = scheduleArray;\n//# sourceMappingURL=scheduleArray.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nfunction throwError(error, scheduler) {\n if (!scheduler) {\n return new Observable_1.Observable(function (subscriber) { return subscriber.error(error); });\n }\n else {\n return new Observable_1.Observable(function (subscriber) { return scheduler.schedule(dispatch, 0, { error: error, subscriber: subscriber }); });\n }\n}\nexports.throwError = throwError;\nfunction dispatch(_a) {\n var error = _a.error, subscriber = _a.subscriber;\n subscriber.error(error);\n}\n//# sourceMappingURL=throwError.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subject_1 = require(\"./Subject\");\nvar Subscription_1 = require(\"./Subscription\");\nvar AsyncSubject = (function (_super) {\n __extends(AsyncSubject, _super);\n function AsyncSubject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.value = null;\n _this.hasNext = false;\n _this.hasCompleted = false;\n return _this;\n }\n AsyncSubject.prototype._subscribe = function (subscriber) {\n if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription_1.Subscription.EMPTY;\n }\n else if (this.hasCompleted && this.hasNext) {\n subscriber.next(this.value);\n subscriber.complete();\n return Subscription_1.Subscription.EMPTY;\n }\n return _super.prototype._subscribe.call(this, subscriber);\n };\n AsyncSubject.prototype.next = function (value) {\n if (!this.hasCompleted) {\n this.value = value;\n this.hasNext = true;\n }\n };\n AsyncSubject.prototype.error = function (error) {\n if (!this.hasCompleted) {\n _super.prototype.error.call(this, error);\n }\n };\n AsyncSubject.prototype.complete = function () {\n this.hasCompleted = true;\n if (this.hasNext) {\n _super.prototype.next.call(this, this.value);\n }\n _super.prototype.complete.call(this);\n };\n return AsyncSubject;\n}(Subject_1.Subject));\nexports.AsyncSubject = AsyncSubject;\n//# sourceMappingURL=AsyncSubject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AsapAction_1 = require(\"./AsapAction\");\nvar AsapScheduler_1 = require(\"./AsapScheduler\");\nexports.asap = new AsapScheduler_1.AsapScheduler(AsapAction_1.AsapAction);\n//# sourceMappingURL=asap.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Immediate_1 = require(\"../util/Immediate\");\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar AsapAction = (function (_super) {\n __extends(AsapAction, _super);\n function AsapAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler.scheduled || (scheduler.scheduled = Immediate_1.Immediate.setImmediate(scheduler.flush.bind(scheduler, null)));\n };\n AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n Immediate_1.Immediate.clearImmediate(id);\n scheduler.scheduled = undefined;\n }\n return undefined;\n };\n return AsapAction;\n}(AsyncAction_1.AsyncAction));\nexports.AsapAction = AsapAction;\n//# sourceMappingURL=AsapAction.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar nextHandle = 1;\nvar tasksByHandle = {};\nfunction runIfPresent(handle) {\n var cb = tasksByHandle[handle];\n if (cb) {\n cb();\n }\n}\nexports.Immediate = {\n setImmediate: function (cb) {\n var handle = nextHandle++;\n tasksByHandle[handle] = cb;\n Promise.resolve().then(function () { return runIfPresent(handle); });\n return handle;\n },\n clearImmediate: function (handle) {\n delete tasksByHandle[handle];\n },\n};\n//# sourceMappingURL=Immediate.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nvar AsapScheduler = (function (_super) {\n __extends(AsapScheduler, _super);\n function AsapScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AsapScheduler.prototype.flush = function (action) {\n this.active = true;\n this.scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n var count = actions.length;\n action = action || actions.shift();\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this.active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsapScheduler;\n}(AsyncScheduler_1.AsyncScheduler));\nexports.AsapScheduler = AsapScheduler;\n//# sourceMappingURL=AsapScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nexports.async = new AsyncScheduler_1.AsyncScheduler(AsyncAction_1.AsyncAction);\n//# sourceMappingURL=async.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AnimationFrameAction_1 = require(\"./AnimationFrameAction\");\nvar AnimationFrameScheduler_1 = require(\"./AnimationFrameScheduler\");\nexports.animationFrame = new AnimationFrameScheduler_1.AnimationFrameScheduler(AnimationFrameAction_1.AnimationFrameAction);\n//# sourceMappingURL=animationFrame.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar AnimationFrameAction = (function (_super) {\n __extends(AnimationFrameAction, _super);\n function AnimationFrameAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(function () { return scheduler.flush(null); }));\n };\n AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n cancelAnimationFrame(id);\n scheduler.scheduled = undefined;\n }\n return undefined;\n };\n return AnimationFrameAction;\n}(AsyncAction_1.AsyncAction));\nexports.AnimationFrameAction = AnimationFrameAction;\n//# sourceMappingURL=AnimationFrameAction.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nvar AnimationFrameScheduler = (function (_super) {\n __extends(AnimationFrameScheduler, _super);\n function AnimationFrameScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnimationFrameScheduler.prototype.flush = function (action) {\n this.active = true;\n this.scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n var count = actions.length;\n action = action || actions.shift();\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this.active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AnimationFrameScheduler;\n}(AsyncScheduler_1.AsyncScheduler));\nexports.AnimationFrameScheduler = AnimationFrameScheduler;\n//# sourceMappingURL=AnimationFrameScheduler.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nvar VirtualTimeScheduler = (function (_super) {\n __extends(VirtualTimeScheduler, _super);\n function VirtualTimeScheduler(SchedulerAction, maxFrames) {\n if (SchedulerAction === void 0) { SchedulerAction = VirtualAction; }\n if (maxFrames === void 0) { maxFrames = Number.POSITIVE_INFINITY; }\n var _this = _super.call(this, SchedulerAction, function () { return _this.frame; }) || this;\n _this.maxFrames = maxFrames;\n _this.frame = 0;\n _this.index = -1;\n return _this;\n }\n VirtualTimeScheduler.prototype.flush = function () {\n var _a = this, actions = _a.actions, maxFrames = _a.maxFrames;\n var error, action;\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n }\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n VirtualTimeScheduler.frameTimeFactor = 10;\n return VirtualTimeScheduler;\n}(AsyncScheduler_1.AsyncScheduler));\nexports.VirtualTimeScheduler = VirtualTimeScheduler;\nvar VirtualAction = (function (_super) {\n __extends(VirtualAction, _super);\n function VirtualAction(scheduler, work, index) {\n if (index === void 0) { index = scheduler.index += 1; }\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.index = index;\n _this.active = true;\n _this.index = scheduler.index = index;\n return _this;\n }\n VirtualAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (!this.id) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.active = false;\n var action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n };\n VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n this.delay = scheduler.frame + delay;\n var actions = scheduler.actions;\n actions.push(this);\n actions.sort(VirtualAction.sortActions);\n return true;\n };\n VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n return undefined;\n };\n VirtualAction.prototype._execute = function (state, delay) {\n if (this.active === true) {\n return _super.prototype._execute.call(this, state, delay);\n }\n };\n VirtualAction.sortActions = function (a, b) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n }\n else if (a.index > b.index) {\n return 1;\n }\n else {\n return -1;\n }\n }\n else if (a.delay > b.delay) {\n return 1;\n }\n else {\n return -1;\n }\n };\n return VirtualAction;\n}(AsyncAction_1.AsyncAction));\nexports.VirtualAction = VirtualAction;\n//# sourceMappingURL=VirtualTimeScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction identity(x) {\n return x;\n}\nexports.identity = identity;\n//# sourceMappingURL=identity.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nfunction isObservable(obj) {\n return !!obj && (obj instanceof Observable_1.Observable || (typeof obj.lift === 'function' && typeof obj.subscribe === 'function'));\n}\nexports.isObservable = isObservable;\n//# sourceMappingURL=isObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction ArgumentOutOfRangeErrorImpl() {\n Error.call(this);\n this.message = 'argument out of range';\n this.name = 'ArgumentOutOfRangeError';\n return this;\n}\nArgumentOutOfRangeErrorImpl.prototype = Object.create(Error.prototype);\nexports.ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl;\n//# sourceMappingURL=ArgumentOutOfRangeError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction EmptyErrorImpl() {\n Error.call(this);\n this.message = 'no elements in sequence';\n this.name = 'EmptyError';\n return this;\n}\nEmptyErrorImpl.prototype = Object.create(Error.prototype);\nexports.EmptyError = EmptyErrorImpl;\n//# sourceMappingURL=EmptyError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction TimeoutErrorImpl() {\n Error.call(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n return this;\n}\nTimeoutErrorImpl.prototype = Object.create(Error.prototype);\nexports.TimeoutError = TimeoutErrorImpl;\n//# sourceMappingURL=TimeoutError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar AsyncSubject_1 = require(\"../AsyncSubject\");\nvar map_1 = require(\"../operators/map\");\nvar canReportError_1 = require(\"../util/canReportError\");\nvar isArray_1 = require(\"../util/isArray\");\nvar isScheduler_1 = require(\"../util/isScheduler\");\nfunction bindCallback(callbackFunc, resultSelector, scheduler) {\n if (resultSelector) {\n if (isScheduler_1.isScheduler(resultSelector)) {\n scheduler = resultSelector;\n }\n else {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return bindCallback(callbackFunc, scheduler).apply(void 0, args).pipe(map_1.map(function (args) { return isArray_1.isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n };\n }\n }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var context = this;\n var subject;\n var params = {\n context: context,\n subject: subject,\n callbackFunc: callbackFunc,\n scheduler: scheduler,\n };\n return new Observable_1.Observable(function (subscriber) {\n if (!scheduler) {\n if (!subject) {\n subject = new AsyncSubject_1.AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n if (canReportError_1.canReportError(subject)) {\n subject.error(err);\n }\n else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n }\n else {\n var state = {\n args: args, subscriber: subscriber, params: params,\n };\n return scheduler.schedule(dispatch, 0, state);\n }\n });\n };\n}\nexports.bindCallback = bindCallback;\nfunction dispatch(state) {\n var _this = this;\n var self = this;\n var args = state.args, subscriber = state.subscriber, params = state.params;\n var callbackFunc = params.callbackFunc, context = params.context, scheduler = params.scheduler;\n var subject = params.subject;\n if (!subject) {\n subject = params.subject = new AsyncSubject_1.AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n subject.error(err);\n }\n }\n this.add(subject.subscribe(subscriber));\n}\nfunction dispatchNext(state) {\n var value = state.value, subject = state.subject;\n subject.next(value);\n subject.complete();\n}\nfunction dispatchError(state) {\n var err = state.err, subject = state.subject;\n subject.error(err);\n}\n//# sourceMappingURL=bindCallback.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nexports.map = map;\nvar MapOperator = (function () {\n function MapOperator(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n MapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n };\n return MapOperator;\n}());\nexports.MapOperator = MapOperator;\nvar MapSubscriber = (function (_super) {\n __extends(MapSubscriber, _super);\n function MapSubscriber(destination, project, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.count = 0;\n _this.thisArg = thisArg || _this;\n return _this;\n }\n MapSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return MapSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=map.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar AsyncSubject_1 = require(\"../AsyncSubject\");\nvar map_1 = require(\"../operators/map\");\nvar canReportError_1 = require(\"../util/canReportError\");\nvar isScheduler_1 = require(\"../util/isScheduler\");\nvar isArray_1 = require(\"../util/isArray\");\nfunction bindNodeCallback(callbackFunc, resultSelector, scheduler) {\n if (resultSelector) {\n if (isScheduler_1.isScheduler(resultSelector)) {\n scheduler = resultSelector;\n }\n else {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return bindNodeCallback(callbackFunc, scheduler).apply(void 0, args).pipe(map_1.map(function (args) { return isArray_1.isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n };\n }\n }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var params = {\n subject: undefined,\n args: args,\n callbackFunc: callbackFunc,\n scheduler: scheduler,\n context: this,\n };\n return new Observable_1.Observable(function (subscriber) {\n var context = params.context;\n var subject = params.subject;\n if (!scheduler) {\n if (!subject) {\n subject = params.subject = new AsyncSubject_1.AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n var err = innerArgs.shift();\n if (err) {\n subject.error(err);\n return;\n }\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n if (canReportError_1.canReportError(subject)) {\n subject.error(err);\n }\n else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n }\n else {\n return scheduler.schedule(dispatch, 0, { params: params, subscriber: subscriber, context: context });\n }\n });\n };\n}\nexports.bindNodeCallback = bindNodeCallback;\nfunction dispatch(state) {\n var _this = this;\n var params = state.params, subscriber = state.subscriber, context = state.context;\n var callbackFunc = params.callbackFunc, args = params.args, scheduler = params.scheduler;\n var subject = params.subject;\n if (!subject) {\n subject = params.subject = new AsyncSubject_1.AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n var err = innerArgs.shift();\n if (err) {\n _this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject }));\n }\n else {\n var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));\n }\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject }));\n }\n }\n this.add(subject.subscribe(subscriber));\n}\nfunction dispatchNext(arg) {\n var value = arg.value, subject = arg.subject;\n subject.next(value);\n subject.complete();\n}\nfunction dispatchError(arg) {\n var err = arg.err, subject = arg.subject;\n subject.error(err);\n}\n//# sourceMappingURL=bindNodeCallback.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar isScheduler_1 = require(\"../util/isScheduler\");\nvar isArray_1 = require(\"../util/isArray\");\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nvar fromArray_1 = require(\"./fromArray\");\nvar NONE = {};\nfunction combineLatest() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var resultSelector = null;\n var scheduler = null;\n if (isScheduler_1.isScheduler(observables[observables.length - 1])) {\n scheduler = observables.pop();\n }\n if (typeof observables[observables.length - 1] === 'function') {\n resultSelector = observables.pop();\n }\n if (observables.length === 1 && isArray_1.isArray(observables[0])) {\n observables = observables[0];\n }\n return fromArray_1.fromArray(observables, scheduler).lift(new CombineLatestOperator(resultSelector));\n}\nexports.combineLatest = combineLatest;\nvar CombineLatestOperator = (function () {\n function CombineLatestOperator(resultSelector) {\n this.resultSelector = resultSelector;\n }\n CombineLatestOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));\n };\n return CombineLatestOperator;\n}());\nexports.CombineLatestOperator = CombineLatestOperator;\nvar CombineLatestSubscriber = (function (_super) {\n __extends(CombineLatestSubscriber, _super);\n function CombineLatestSubscriber(destination, resultSelector) {\n var _this = _super.call(this, destination) || this;\n _this.resultSelector = resultSelector;\n _this.active = 0;\n _this.values = [];\n _this.observables = [];\n return _this;\n }\n CombineLatestSubscriber.prototype._next = function (observable) {\n this.values.push(NONE);\n this.observables.push(observable);\n };\n CombineLatestSubscriber.prototype._complete = function () {\n var observables = this.observables;\n var len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n this.active = len;\n this.toRespond = len;\n for (var i = 0; i < len; i++) {\n var observable = observables[i];\n this.add(subscribeToResult_1.subscribeToResult(this, observable, observable, i));\n }\n }\n };\n CombineLatestSubscriber.prototype.notifyComplete = function (unused) {\n if ((this.active -= 1) === 0) {\n this.destination.complete();\n }\n };\n CombineLatestSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n var values = this.values;\n var oldVal = values[outerIndex];\n var toRespond = !this.toRespond\n ? 0\n : oldVal === NONE ? --this.toRespond : this.toRespond;\n values[outerIndex] = innerValue;\n if (toRespond === 0) {\n if (this.resultSelector) {\n this._tryResultSelector(values);\n }\n else {\n this.destination.next(values.slice());\n }\n }\n };\n CombineLatestSubscriber.prototype._tryResultSelector = function (values) {\n var result;\n try {\n result = this.resultSelector.apply(this, values);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return CombineLatestSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\nexports.CombineLatestSubscriber = CombineLatestSubscriber;\n//# sourceMappingURL=combineLatest.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"./Subscriber\");\nvar OuterSubscriber = (function (_super) {\n __extends(OuterSubscriber, _super);\n function OuterSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n OuterSubscriber.prototype.notifyError = function (error, innerSub) {\n this.destination.error(error);\n };\n OuterSubscriber.prototype.notifyComplete = function (innerSub) {\n this.destination.complete();\n };\n return OuterSubscriber;\n}(Subscriber_1.Subscriber));\nexports.OuterSubscriber = OuterSubscriber;\n//# sourceMappingURL=OuterSubscriber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar InnerSubscriber_1 = require(\"../InnerSubscriber\");\nvar subscribeTo_1 = require(\"./subscribeTo\");\nvar Observable_1 = require(\"../Observable\");\nfunction subscribeToResult(outerSubscriber, result, outerValue, outerIndex, destination) {\n if (destination === void 0) { destination = new InnerSubscriber_1.InnerSubscriber(outerSubscriber, outerValue, outerIndex); }\n if (destination.closed) {\n return undefined;\n }\n if (result instanceof Observable_1.Observable) {\n return result.subscribe(destination);\n }\n return subscribeTo_1.subscribeTo(result)(destination);\n}\nexports.subscribeToResult = subscribeToResult;\n//# sourceMappingURL=subscribeToResult.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"./Subscriber\");\nvar InnerSubscriber = (function (_super) {\n __extends(InnerSubscriber, _super);\n function InnerSubscriber(parent, outerValue, outerIndex) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.outerValue = outerValue;\n _this.outerIndex = outerIndex;\n _this.index = 0;\n return _this;\n }\n InnerSubscriber.prototype._next = function (value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n };\n InnerSubscriber.prototype._error = function (error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n };\n InnerSubscriber.prototype._complete = function () {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n };\n return InnerSubscriber;\n}(Subscriber_1.Subscriber));\nexports.InnerSubscriber = InnerSubscriber;\n//# sourceMappingURL=InnerSubscriber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar subscribeToArray_1 = require(\"./subscribeToArray\");\nvar subscribeToPromise_1 = require(\"./subscribeToPromise\");\nvar subscribeToIterable_1 = require(\"./subscribeToIterable\");\nvar subscribeToObservable_1 = require(\"./subscribeToObservable\");\nvar isArrayLike_1 = require(\"./isArrayLike\");\nvar isPromise_1 = require(\"./isPromise\");\nvar isObject_1 = require(\"./isObject\");\nvar iterator_1 = require(\"../symbol/iterator\");\nvar observable_1 = require(\"../symbol/observable\");\nexports.subscribeTo = function (result) {\n if (!!result && typeof result[observable_1.observable] === 'function') {\n return subscribeToObservable_1.subscribeToObservable(result);\n }\n else if (isArrayLike_1.isArrayLike(result)) {\n return subscribeToArray_1.subscribeToArray(result);\n }\n else if (isPromise_1.isPromise(result)) {\n return subscribeToPromise_1.subscribeToPromise(result);\n }\n else if (!!result && typeof result[iterator_1.iterator] === 'function') {\n return subscribeToIterable_1.subscribeToIterable(result);\n }\n else {\n var value = isObject_1.isObject(result) ? 'an invalid object' : \"'\" + result + \"'\";\n var msg = \"You provided \" + value + \" where a stream was expected.\"\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n//# sourceMappingURL=subscribeTo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar hostReportError_1 = require(\"./hostReportError\");\nexports.subscribeToPromise = function (promise) { return function (subscriber) {\n promise.then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, hostReportError_1.hostReportError);\n return subscriber;\n}; };\n//# sourceMappingURL=subscribeToPromise.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar iterator_1 = require(\"../symbol/iterator\");\nexports.subscribeToIterable = function (iterable) { return function (subscriber) {\n var iterator = iterable[iterator_1.iterator]();\n do {\n var item = iterator.next();\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n if (typeof iterator.return === 'function') {\n subscriber.add(function () {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n return subscriber;\n}; };\n//# sourceMappingURL=subscribeToIterable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexports.getSymbolIterator = getSymbolIterator;\nexports.iterator = getSymbolIterator();\nexports.$$iterator = exports.iterator;\n//# sourceMappingURL=iterator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar observable_1 = require(\"../symbol/observable\");\nexports.subscribeToObservable = function (obj) { return function (subscriber) {\n var obs = obj[observable_1.observable]();\n if (typeof obs.subscribe !== 'function') {\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n }\n else {\n return obs.subscribe(subscriber);\n }\n}; };\n//# sourceMappingURL=subscribeToObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isPromise(value) {\n return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\nexports.isPromise = isPromise;\n//# sourceMappingURL=isPromise.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar of_1 = require(\"./of\");\nvar concatAll_1 = require(\"../operators/concatAll\");\nfunction concat() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return concatAll_1.concatAll()(of_1.of.apply(void 0, observables));\n}\nexports.concat = concat;\n//# sourceMappingURL=concat.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar mergeAll_1 = require(\"./mergeAll\");\nfunction concatAll() {\n return mergeAll_1.mergeAll(1);\n}\nexports.concatAll = concatAll;\n//# sourceMappingURL=concatAll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar mergeMap_1 = require(\"./mergeMap\");\nvar identity_1 = require(\"../util/identity\");\nfunction mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n return mergeMap_1.mergeMap(identity_1.identity, concurrent);\n}\nexports.mergeAll = mergeAll;\n//# sourceMappingURL=mergeAll.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar InnerSubscriber_1 = require(\"../InnerSubscriber\");\nvar map_1 = require(\"./map\");\nvar from_1 = require(\"../observable/from\");\nfunction mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n if (typeof resultSelector === 'function') {\n return function (source) { return source.pipe(mergeMap(function (a, i) { return from_1.from(project(a, i)).pipe(map_1.map(function (b, ii) { return resultSelector(a, b, i, ii); })); }, concurrent)); };\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return function (source) { return source.lift(new MergeMapOperator(project, concurrent)); };\n}\nexports.mergeMap = mergeMap;\nvar MergeMapOperator = (function () {\n function MergeMapOperator(project, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n this.project = project;\n this.concurrent = concurrent;\n }\n MergeMapOperator.prototype.call = function (observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent));\n };\n return MergeMapOperator;\n}());\nexports.MergeMapOperator = MergeMapOperator;\nvar MergeMapSubscriber = (function (_super) {\n __extends(MergeMapSubscriber, _super);\n function MergeMapSubscriber(destination, project, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.concurrent = concurrent;\n _this.hasCompleted = false;\n _this.buffer = [];\n _this.active = 0;\n _this.index = 0;\n return _this;\n }\n MergeMapSubscriber.prototype._next = function (value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n };\n MergeMapSubscriber.prototype._tryNext = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result, value, index);\n };\n MergeMapSubscriber.prototype._innerSub = function (ish, value, index) {\n var innerSubscriber = new InnerSubscriber_1.InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n subscribeToResult_1.subscribeToResult(this, ish, value, index, innerSubscriber);\n };\n MergeMapSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n this.unsubscribe();\n };\n MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n MergeMapSubscriber.prototype.notifyComplete = function (innerSub) {\n var buffer = this.buffer;\n this.remove(innerSub);\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n };\n return MergeMapSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\nexports.MergeMapSubscriber = MergeMapSubscriber;\n//# sourceMappingURL=mergeMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar subscribeTo_1 = require(\"../util/subscribeTo\");\nvar scheduled_1 = require(\"../scheduled/scheduled\");\nfunction from(input, scheduler) {\n if (!scheduler) {\n if (input instanceof Observable_1.Observable) {\n return input;\n }\n return new Observable_1.Observable(subscribeTo_1.subscribeTo(input));\n }\n else {\n return scheduled_1.scheduled(input, scheduler);\n }\n}\nexports.from = from;\n//# sourceMappingURL=from.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar scheduleObservable_1 = require(\"./scheduleObservable\");\nvar schedulePromise_1 = require(\"./schedulePromise\");\nvar scheduleArray_1 = require(\"./scheduleArray\");\nvar scheduleIterable_1 = require(\"./scheduleIterable\");\nvar isInteropObservable_1 = require(\"../util/isInteropObservable\");\nvar isPromise_1 = require(\"../util/isPromise\");\nvar isArrayLike_1 = require(\"../util/isArrayLike\");\nvar isIterable_1 = require(\"../util/isIterable\");\nfunction scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable_1.isInteropObservable(input)) {\n return scheduleObservable_1.scheduleObservable(input, scheduler);\n }\n else if (isPromise_1.isPromise(input)) {\n return schedulePromise_1.schedulePromise(input, scheduler);\n }\n else if (isArrayLike_1.isArrayLike(input)) {\n return scheduleArray_1.scheduleArray(input, scheduler);\n }\n else if (isIterable_1.isIterable(input) || typeof input === 'string') {\n return scheduleIterable_1.scheduleIterable(input, scheduler);\n }\n }\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\nexports.scheduled = scheduled;\n//# sourceMappingURL=scheduled.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar Subscription_1 = require(\"../Subscription\");\nvar observable_1 = require(\"../symbol/observable\");\nfunction scheduleObservable(input, scheduler) {\n return new Observable_1.Observable(function (subscriber) {\n var sub = new Subscription_1.Subscription();\n sub.add(scheduler.schedule(function () {\n var observable = input[observable_1.observable]();\n sub.add(observable.subscribe({\n next: function (value) { sub.add(scheduler.schedule(function () { return subscriber.next(value); })); },\n error: function (err) { sub.add(scheduler.schedule(function () { return subscriber.error(err); })); },\n complete: function () { sub.add(scheduler.schedule(function () { return subscriber.complete(); })); },\n }));\n }));\n return sub;\n });\n}\nexports.scheduleObservable = scheduleObservable;\n//# sourceMappingURL=scheduleObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar Subscription_1 = require(\"../Subscription\");\nfunction schedulePromise(input, scheduler) {\n return new Observable_1.Observable(function (subscriber) {\n var sub = new Subscription_1.Subscription();\n sub.add(scheduler.schedule(function () { return input.then(function (value) {\n sub.add(scheduler.schedule(function () {\n subscriber.next(value);\n sub.add(scheduler.schedule(function () { return subscriber.complete(); }));\n }));\n }, function (err) {\n sub.add(scheduler.schedule(function () { return subscriber.error(err); }));\n }); }));\n return sub;\n });\n}\nexports.schedulePromise = schedulePromise;\n//# sourceMappingURL=schedulePromise.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar Subscription_1 = require(\"../Subscription\");\nvar iterator_1 = require(\"../symbol/iterator\");\nfunction scheduleIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable_1.Observable(function (subscriber) {\n var sub = new Subscription_1.Subscription();\n var iterator;\n sub.add(function () {\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(function () {\n iterator = input[iterator_1.iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n var value;\n var done;\n try {\n var result = iterator.next();\n value = result.value;\n done = result.done;\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\nexports.scheduleIterable = scheduleIterable;\n//# sourceMappingURL=scheduleIterable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar observable_1 = require(\"../symbol/observable\");\nfunction isInteropObservable(input) {\n return input && typeof input[observable_1.observable] === 'function';\n}\nexports.isInteropObservable = isInteropObservable;\n//# sourceMappingURL=isInteropObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar iterator_1 = require(\"../symbol/iterator\");\nfunction isIterable(input) {\n return input && typeof input[iterator_1.iterator] === 'function';\n}\nexports.isIterable = isIterable;\n//# sourceMappingURL=isIterable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar from_1 = require(\"./from\");\nvar empty_1 = require(\"./empty\");\nfunction defer(observableFactory) {\n return new Observable_1.Observable(function (subscriber) {\n var input;\n try {\n input = observableFactory();\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var source = input ? from_1.from(input) : empty_1.empty();\n return source.subscribe(subscriber);\n });\n}\nexports.defer = defer;\n//# sourceMappingURL=defer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar isArray_1 = require(\"../util/isArray\");\nvar map_1 = require(\"../operators/map\");\nvar isObject_1 = require(\"../util/isObject\");\nvar from_1 = require(\"./from\");\nfunction forkJoin() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n if (sources.length === 1) {\n var first_1 = sources[0];\n if (isArray_1.isArray(first_1)) {\n return forkJoinInternal(first_1, null);\n }\n if (isObject_1.isObject(first_1) && Object.getPrototypeOf(first_1) === Object.prototype) {\n var keys = Object.keys(first_1);\n return forkJoinInternal(keys.map(function (key) { return first_1[key]; }), keys);\n }\n }\n if (typeof sources[sources.length - 1] === 'function') {\n var resultSelector_1 = sources.pop();\n sources = (sources.length === 1 && isArray_1.isArray(sources[0])) ? sources[0] : sources;\n return forkJoinInternal(sources, null).pipe(map_1.map(function (args) { return resultSelector_1.apply(void 0, args); }));\n }\n return forkJoinInternal(sources, null);\n}\nexports.forkJoin = forkJoin;\nfunction forkJoinInternal(sources, keys) {\n return new Observable_1.Observable(function (subscriber) {\n var len = sources.length;\n if (len === 0) {\n subscriber.complete();\n return;\n }\n var values = new Array(len);\n var completed = 0;\n var emitted = 0;\n var _loop_1 = function (i) {\n var source = from_1.from(sources[i]);\n var hasValue = false;\n subscriber.add(source.subscribe({\n next: function (value) {\n if (!hasValue) {\n hasValue = true;\n emitted++;\n }\n values[i] = value;\n },\n error: function (err) { return subscriber.error(err); },\n complete: function () {\n completed++;\n if (completed === len || !hasValue) {\n if (emitted === len) {\n subscriber.next(keys ?\n keys.reduce(function (result, key, i) { return (result[key] = values[i], result); }, {}) :\n values);\n }\n subscriber.complete();\n }\n }\n }));\n };\n for (var i = 0; i < len; i++) {\n _loop_1(i);\n }\n });\n}\n//# sourceMappingURL=forkJoin.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar isArray_1 = require(\"../util/isArray\");\nvar isFunction_1 = require(\"../util/isFunction\");\nvar map_1 = require(\"../operators/map\");\nvar toString = Object.prototype.toString;\nfunction fromEvent(target, eventName, options, resultSelector) {\n if (isFunction_1.isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(map_1.map(function (args) { return isArray_1.isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n }\n return new Observable_1.Observable(function (subscriber) {\n function handler(e) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n }\n else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options);\n });\n}\nexports.fromEvent = fromEvent;\nfunction setupSubscription(sourceObj, eventName, handler, subscriber, options) {\n var unsubscribe;\n if (isEventTarget(sourceObj)) {\n var source_1 = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = function () { return source_1.removeEventListener(eventName, handler, options); };\n }\n else if (isJQueryStyleEventEmitter(sourceObj)) {\n var source_2 = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = function () { return source_2.off(eventName, handler); };\n }\n else if (isNodeStyleEventEmitter(sourceObj)) {\n var source_3 = sourceObj;\n sourceObj.addListener(eventName, handler);\n unsubscribe = function () { return source_3.removeListener(eventName, handler); };\n }\n else if (sourceObj && sourceObj.length) {\n for (var i = 0, len = sourceObj.length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n }\n else {\n throw new TypeError('Invalid event target');\n }\n subscriber.add(unsubscribe);\n}\nfunction isNodeStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isEventTarget(sourceObj) {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n//# sourceMappingURL=fromEvent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar isArray_1 = require(\"../util/isArray\");\nvar isFunction_1 = require(\"../util/isFunction\");\nvar map_1 = require(\"../operators/map\");\nfunction fromEventPattern(addHandler, removeHandler, resultSelector) {\n if (resultSelector) {\n return fromEventPattern(addHandler, removeHandler).pipe(map_1.map(function (args) { return isArray_1.isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n }\n return new Observable_1.Observable(function (subscriber) {\n var handler = function () {\n var e = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n e[_i] = arguments[_i];\n }\n return subscriber.next(e.length === 1 ? e[0] : e);\n };\n var retValue;\n try {\n retValue = addHandler(handler);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!isFunction_1.isFunction(removeHandler)) {\n return undefined;\n }\n return function () { return removeHandler(handler, retValue); };\n });\n}\nexports.fromEventPattern = fromEventPattern;\n//# sourceMappingURL=fromEventPattern.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar identity_1 = require(\"../util/identity\");\nvar isScheduler_1 = require(\"../util/isScheduler\");\nfunction generate(initialStateOrOptions, condition, iterate, resultSelectorOrObservable, scheduler) {\n var resultSelector;\n var initialState;\n if (arguments.length == 1) {\n var options = initialStateOrOptions;\n initialState = options.initialState;\n condition = options.condition;\n iterate = options.iterate;\n resultSelector = options.resultSelector || identity_1.identity;\n scheduler = options.scheduler;\n }\n else if (resultSelectorOrObservable === undefined || isScheduler_1.isScheduler(resultSelectorOrObservable)) {\n initialState = initialStateOrOptions;\n resultSelector = identity_1.identity;\n scheduler = resultSelectorOrObservable;\n }\n else {\n initialState = initialStateOrOptions;\n resultSelector = resultSelectorOrObservable;\n }\n return new Observable_1.Observable(function (subscriber) {\n var state = initialState;\n if (scheduler) {\n return scheduler.schedule(dispatch, 0, {\n subscriber: subscriber,\n iterate: iterate,\n condition: condition,\n resultSelector: resultSelector,\n state: state\n });\n }\n do {\n if (condition) {\n var conditionResult = void 0;\n try {\n conditionResult = condition(state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n break;\n }\n }\n var value = void 0;\n try {\n value = resultSelector(state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n break;\n }\n try {\n state = iterate(state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n } while (true);\n return undefined;\n });\n}\nexports.generate = generate;\nfunction dispatch(state) {\n var subscriber = state.subscriber, condition = state.condition;\n if (subscriber.closed) {\n return undefined;\n }\n if (state.needIterate) {\n try {\n state.state = state.iterate(state.state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n }\n else {\n state.needIterate = true;\n }\n if (condition) {\n var conditionResult = void 0;\n try {\n conditionResult = condition(state.state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n }\n var value;\n try {\n value = state.resultSelector(state.state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n return undefined;\n }\n return this.schedule(state);\n}\n//# sourceMappingURL=generate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar defer_1 = require(\"./defer\");\nvar empty_1 = require(\"./empty\");\nfunction iif(condition, trueResult, falseResult) {\n if (trueResult === void 0) { trueResult = empty_1.EMPTY; }\n if (falseResult === void 0) { falseResult = empty_1.EMPTY; }\n return defer_1.defer(function () { return condition() ? trueResult : falseResult; });\n}\nexports.iif = iif;\n//# sourceMappingURL=iif.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar async_1 = require(\"../scheduler/async\");\nvar isNumeric_1 = require(\"../util/isNumeric\");\nfunction interval(period, scheduler) {\n if (period === void 0) { period = 0; }\n if (scheduler === void 0) { scheduler = async_1.async; }\n if (!isNumeric_1.isNumeric(period) || period < 0) {\n period = 0;\n }\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n scheduler = async_1.async;\n }\n return new Observable_1.Observable(function (subscriber) {\n subscriber.add(scheduler.schedule(dispatch, period, { subscriber: subscriber, counter: 0, period: period }));\n return subscriber;\n });\n}\nexports.interval = interval;\nfunction dispatch(state) {\n var subscriber = state.subscriber, counter = state.counter, period = state.period;\n subscriber.next(counter);\n this.schedule({ subscriber: subscriber, counter: counter + 1, period: period }, period);\n}\n//# sourceMappingURL=interval.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar isArray_1 = require(\"./isArray\");\nfunction isNumeric(val) {\n return !isArray_1.isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\nexports.isNumeric = isNumeric;\n//# sourceMappingURL=isNumeric.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar isScheduler_1 = require(\"../util/isScheduler\");\nvar mergeAll_1 = require(\"../operators/mergeAll\");\nvar fromArray_1 = require(\"./fromArray\");\nfunction merge() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var concurrent = Number.POSITIVE_INFINITY;\n var scheduler = null;\n var last = observables[observables.length - 1];\n if (isScheduler_1.isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n }\n else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable_1.Observable) {\n return observables[0];\n }\n return mergeAll_1.mergeAll(concurrent)(fromArray_1.fromArray(observables, scheduler));\n}\nexports.merge = merge;\n//# sourceMappingURL=merge.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar noop_1 = require(\"../util/noop\");\nexports.NEVER = new Observable_1.Observable(noop_1.noop);\nfunction never() {\n return exports.NEVER;\n}\nexports.never = never;\n//# sourceMappingURL=never.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar from_1 = require(\"./from\");\nvar isArray_1 = require(\"../util/isArray\");\nvar empty_1 = require(\"./empty\");\nfunction onErrorResumeNext() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n if (sources.length === 0) {\n return empty_1.EMPTY;\n }\n var first = sources[0], remainder = sources.slice(1);\n if (sources.length === 1 && isArray_1.isArray(first)) {\n return onErrorResumeNext.apply(void 0, first);\n }\n return new Observable_1.Observable(function (subscriber) {\n var subNext = function () { return subscriber.add(onErrorResumeNext.apply(void 0, remainder).subscribe(subscriber)); };\n return from_1.from(first).subscribe({\n next: function (value) { subscriber.next(value); },\n error: subNext,\n complete: subNext,\n });\n });\n}\nexports.onErrorResumeNext = onErrorResumeNext;\n//# sourceMappingURL=onErrorResumeNext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar Subscription_1 = require(\"../Subscription\");\nfunction pairs(obj, scheduler) {\n if (!scheduler) {\n return new Observable_1.Observable(function (subscriber) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length && !subscriber.closed; i++) {\n var key = keys[i];\n if (obj.hasOwnProperty(key)) {\n subscriber.next([key, obj[key]]);\n }\n }\n subscriber.complete();\n });\n }\n else {\n return new Observable_1.Observable(function (subscriber) {\n var keys = Object.keys(obj);\n var subscription = new Subscription_1.Subscription();\n subscription.add(scheduler.schedule(dispatch, 0, { keys: keys, index: 0, subscriber: subscriber, subscription: subscription, obj: obj }));\n return subscription;\n });\n }\n}\nexports.pairs = pairs;\nfunction dispatch(state) {\n var keys = state.keys, index = state.index, subscriber = state.subscriber, subscription = state.subscription, obj = state.obj;\n if (!subscriber.closed) {\n if (index < keys.length) {\n var key = keys[index];\n subscriber.next([key, obj[key]]);\n subscription.add(this.schedule({ keys: keys, index: index + 1, subscriber: subscriber, subscription: subscription, obj: obj }));\n }\n else {\n subscriber.complete();\n }\n }\n}\nexports.dispatch = dispatch;\n//# sourceMappingURL=pairs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar not_1 = require(\"../util/not\");\nvar subscribeTo_1 = require(\"../util/subscribeTo\");\nvar filter_1 = require(\"../operators/filter\");\nvar Observable_1 = require(\"../Observable\");\nfunction partition(source, predicate, thisArg) {\n return [\n filter_1.filter(predicate, thisArg)(new Observable_1.Observable(subscribeTo_1.subscribeTo(source))),\n filter_1.filter(not_1.not(predicate, thisArg))(new Observable_1.Observable(subscribeTo_1.subscribeTo(source)))\n ];\n}\nexports.partition = partition;\n//# sourceMappingURL=partition.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction not(pred, thisArg) {\n function notPred() {\n return !(notPred.pred.apply(notPred.thisArg, arguments));\n }\n notPred.pred = pred;\n notPred.thisArg = thisArg;\n return notPred;\n}\nexports.not = not;\n//# sourceMappingURL=not.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction filter(predicate, thisArg) {\n return function filterOperatorFunction(source) {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\nexports.filter = filter;\nvar FilterOperator = (function () {\n function FilterOperator(predicate, thisArg) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n }\n FilterOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n };\n return FilterOperator;\n}());\nvar FilterSubscriber = (function (_super) {\n __extends(FilterSubscriber, _super);\n function FilterSubscriber(destination, predicate, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.thisArg = thisArg;\n _this.count = 0;\n return _this;\n }\n FilterSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n };\n return FilterSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=filter.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar isArray_1 = require(\"../util/isArray\");\nvar fromArray_1 = require(\"./fromArray\");\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction race() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n if (observables.length === 1) {\n if (isArray_1.isArray(observables[0])) {\n observables = observables[0];\n }\n else {\n return observables[0];\n }\n }\n return fromArray_1.fromArray(observables, undefined).lift(new RaceOperator());\n}\nexports.race = race;\nvar RaceOperator = (function () {\n function RaceOperator() {\n }\n RaceOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RaceSubscriber(subscriber));\n };\n return RaceOperator;\n}());\nexports.RaceOperator = RaceOperator;\nvar RaceSubscriber = (function (_super) {\n __extends(RaceSubscriber, _super);\n function RaceSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.hasFirst = false;\n _this.observables = [];\n _this.subscriptions = [];\n return _this;\n }\n RaceSubscriber.prototype._next = function (observable) {\n this.observables.push(observable);\n };\n RaceSubscriber.prototype._complete = function () {\n var observables = this.observables;\n var len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n for (var i = 0; i < len && !this.hasFirst; i++) {\n var observable = observables[i];\n var subscription = subscribeToResult_1.subscribeToResult(this, observable, observable, i);\n if (this.subscriptions) {\n this.subscriptions.push(subscription);\n }\n this.add(subscription);\n }\n this.observables = null;\n }\n };\n RaceSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n if (!this.hasFirst) {\n this.hasFirst = true;\n for (var i = 0; i < this.subscriptions.length; i++) {\n if (i !== outerIndex) {\n var subscription = this.subscriptions[i];\n subscription.unsubscribe();\n this.remove(subscription);\n }\n }\n this.subscriptions = null;\n }\n this.destination.next(innerValue);\n };\n return RaceSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\nexports.RaceSubscriber = RaceSubscriber;\n//# sourceMappingURL=race.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nfunction range(start, count, scheduler) {\n if (start === void 0) { start = 0; }\n return new Observable_1.Observable(function (subscriber) {\n if (count === undefined) {\n count = start;\n start = 0;\n }\n var index = 0;\n var current = start;\n if (scheduler) {\n return scheduler.schedule(dispatch, 0, {\n index: index, count: count, start: start, subscriber: subscriber\n });\n }\n else {\n do {\n if (index++ >= count) {\n subscriber.complete();\n break;\n }\n subscriber.next(current++);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n }\n return undefined;\n });\n}\nexports.range = range;\nfunction dispatch(state) {\n var start = state.start, index = state.index, count = state.count, subscriber = state.subscriber;\n if (index >= count) {\n subscriber.complete();\n return;\n }\n subscriber.next(start);\n if (subscriber.closed) {\n return;\n }\n state.index = index + 1;\n state.start = start + 1;\n this.schedule(state);\n}\nexports.dispatch = dispatch;\n//# sourceMappingURL=range.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar async_1 = require(\"../scheduler/async\");\nvar isNumeric_1 = require(\"../util/isNumeric\");\nvar isScheduler_1 = require(\"../util/isScheduler\");\nfunction timer(dueTime, periodOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n var period = -1;\n if (isNumeric_1.isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n }\n else if (isScheduler_1.isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler;\n }\n if (!isScheduler_1.isScheduler(scheduler)) {\n scheduler = async_1.async;\n }\n return new Observable_1.Observable(function (subscriber) {\n var due = isNumeric_1.isNumeric(dueTime)\n ? dueTime\n : (+dueTime - scheduler.now());\n return scheduler.schedule(dispatch, due, {\n index: 0, period: period, subscriber: subscriber\n });\n });\n}\nexports.timer = timer;\nfunction dispatch(state) {\n var index = state.index, period = state.period, subscriber = state.subscriber;\n subscriber.next(index);\n if (subscriber.closed) {\n return;\n }\n else if (period === -1) {\n return subscriber.complete();\n }\n state.index = index + 1;\n this.schedule(state, period);\n}\n//# sourceMappingURL=timer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar from_1 = require(\"./from\");\nvar empty_1 = require(\"./empty\");\nfunction using(resourceFactory, observableFactory) {\n return new Observable_1.Observable(function (subscriber) {\n var resource;\n try {\n resource = resourceFactory();\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var result;\n try {\n result = observableFactory(resource);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var source = result ? from_1.from(result) : empty_1.EMPTY;\n var subscription = source.subscribe(subscriber);\n return function () {\n subscription.unsubscribe();\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\nexports.using = using;\n//# sourceMappingURL=using.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar fromArray_1 = require(\"./fromArray\");\nvar isArray_1 = require(\"../util/isArray\");\nvar Subscriber_1 = require(\"../Subscriber\");\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nvar iterator_1 = require(\"../../internal/symbol/iterator\");\nfunction zip() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var resultSelector = observables[observables.length - 1];\n if (typeof resultSelector === 'function') {\n observables.pop();\n }\n return fromArray_1.fromArray(observables, undefined).lift(new ZipOperator(resultSelector));\n}\nexports.zip = zip;\nvar ZipOperator = (function () {\n function ZipOperator(resultSelector) {\n this.resultSelector = resultSelector;\n }\n ZipOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector));\n };\n return ZipOperator;\n}());\nexports.ZipOperator = ZipOperator;\nvar ZipSubscriber = (function (_super) {\n __extends(ZipSubscriber, _super);\n function ZipSubscriber(destination, resultSelector, values) {\n if (values === void 0) { values = Object.create(null); }\n var _this = _super.call(this, destination) || this;\n _this.iterators = [];\n _this.active = 0;\n _this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : null;\n _this.values = values;\n return _this;\n }\n ZipSubscriber.prototype._next = function (value) {\n var iterators = this.iterators;\n if (isArray_1.isArray(value)) {\n iterators.push(new StaticArrayIterator(value));\n }\n else if (typeof value[iterator_1.iterator] === 'function') {\n iterators.push(new StaticIterator(value[iterator_1.iterator]()));\n }\n else {\n iterators.push(new ZipBufferIterator(this.destination, this, value));\n }\n };\n ZipSubscriber.prototype._complete = function () {\n var iterators = this.iterators;\n var len = iterators.length;\n this.unsubscribe();\n if (len === 0) {\n this.destination.complete();\n return;\n }\n this.active = len;\n for (var i = 0; i < len; i++) {\n var iterator = iterators[i];\n if (iterator.stillUnsubscribed) {\n var destination = this.destination;\n destination.add(iterator.subscribe(iterator, i));\n }\n else {\n this.active--;\n }\n }\n };\n ZipSubscriber.prototype.notifyInactive = function () {\n this.active--;\n if (this.active === 0) {\n this.destination.complete();\n }\n };\n ZipSubscriber.prototype.checkIterators = function () {\n var iterators = this.iterators;\n var len = iterators.length;\n var destination = this.destination;\n for (var i = 0; i < len; i++) {\n var iterator = iterators[i];\n if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {\n return;\n }\n }\n var shouldComplete = false;\n var args = [];\n for (var i = 0; i < len; i++) {\n var iterator = iterators[i];\n var result = iterator.next();\n if (iterator.hasCompleted()) {\n shouldComplete = true;\n }\n if (result.done) {\n destination.complete();\n return;\n }\n args.push(result.value);\n }\n if (this.resultSelector) {\n this._tryresultSelector(args);\n }\n else {\n destination.next(args);\n }\n if (shouldComplete) {\n destination.complete();\n }\n };\n ZipSubscriber.prototype._tryresultSelector = function (args) {\n var result;\n try {\n result = this.resultSelector.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return ZipSubscriber;\n}(Subscriber_1.Subscriber));\nexports.ZipSubscriber = ZipSubscriber;\nvar StaticIterator = (function () {\n function StaticIterator(iterator) {\n this.iterator = iterator;\n this.nextResult = iterator.next();\n }\n StaticIterator.prototype.hasValue = function () {\n return true;\n };\n StaticIterator.prototype.next = function () {\n var result = this.nextResult;\n this.nextResult = this.iterator.next();\n return result;\n };\n StaticIterator.prototype.hasCompleted = function () {\n var nextResult = this.nextResult;\n return nextResult && nextResult.done;\n };\n return StaticIterator;\n}());\nvar StaticArrayIterator = (function () {\n function StaticArrayIterator(array) {\n this.array = array;\n this.index = 0;\n this.length = 0;\n this.length = array.length;\n }\n StaticArrayIterator.prototype[iterator_1.iterator] = function () {\n return this;\n };\n StaticArrayIterator.prototype.next = function (value) {\n var i = this.index++;\n var array = this.array;\n return i < this.length ? { value: array[i], done: false } : { value: null, done: true };\n };\n StaticArrayIterator.prototype.hasValue = function () {\n return this.array.length > this.index;\n };\n StaticArrayIterator.prototype.hasCompleted = function () {\n return this.array.length === this.index;\n };\n return StaticArrayIterator;\n}());\nvar ZipBufferIterator = (function (_super) {\n __extends(ZipBufferIterator, _super);\n function ZipBufferIterator(destination, parent, observable) {\n var _this = _super.call(this, destination) || this;\n _this.parent = parent;\n _this.observable = observable;\n _this.stillUnsubscribed = true;\n _this.buffer = [];\n _this.isComplete = false;\n return _this;\n }\n ZipBufferIterator.prototype[iterator_1.iterator] = function () {\n return this;\n };\n ZipBufferIterator.prototype.next = function () {\n var buffer = this.buffer;\n if (buffer.length === 0 && this.isComplete) {\n return { value: null, done: true };\n }\n else {\n return { value: buffer.shift(), done: false };\n }\n };\n ZipBufferIterator.prototype.hasValue = function () {\n return this.buffer.length > 0;\n };\n ZipBufferIterator.prototype.hasCompleted = function () {\n return this.buffer.length === 0 && this.isComplete;\n };\n ZipBufferIterator.prototype.notifyComplete = function () {\n if (this.buffer.length > 0) {\n this.isComplete = true;\n this.parent.notifyInactive();\n }\n else {\n this.destination.complete();\n }\n };\n ZipBufferIterator.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.buffer.push(innerValue);\n this.parent.checkIterators();\n };\n ZipBufferIterator.prototype.subscribe = function (value, index) {\n return subscribeToResult_1.subscribeToResult(this, this.observable, this, index);\n };\n return ZipBufferIterator;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=zip.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar audit_1 = require(\"../internal/operators/audit\");\nexports.audit = audit_1.audit;\nvar auditTime_1 = require(\"../internal/operators/auditTime\");\nexports.auditTime = auditTime_1.auditTime;\nvar buffer_1 = require(\"../internal/operators/buffer\");\nexports.buffer = buffer_1.buffer;\nvar bufferCount_1 = require(\"../internal/operators/bufferCount\");\nexports.bufferCount = bufferCount_1.bufferCount;\nvar bufferTime_1 = require(\"../internal/operators/bufferTime\");\nexports.bufferTime = bufferTime_1.bufferTime;\nvar bufferToggle_1 = require(\"../internal/operators/bufferToggle\");\nexports.bufferToggle = bufferToggle_1.bufferToggle;\nvar bufferWhen_1 = require(\"../internal/operators/bufferWhen\");\nexports.bufferWhen = bufferWhen_1.bufferWhen;\nvar catchError_1 = require(\"../internal/operators/catchError\");\nexports.catchError = catchError_1.catchError;\nvar combineAll_1 = require(\"../internal/operators/combineAll\");\nexports.combineAll = combineAll_1.combineAll;\nvar combineLatest_1 = require(\"../internal/operators/combineLatest\");\nexports.combineLatest = combineLatest_1.combineLatest;\nvar concat_1 = require(\"../internal/operators/concat\");\nexports.concat = concat_1.concat;\nvar concatAll_1 = require(\"../internal/operators/concatAll\");\nexports.concatAll = concatAll_1.concatAll;\nvar concatMap_1 = require(\"../internal/operators/concatMap\");\nexports.concatMap = concatMap_1.concatMap;\nvar concatMapTo_1 = require(\"../internal/operators/concatMapTo\");\nexports.concatMapTo = concatMapTo_1.concatMapTo;\nvar count_1 = require(\"../internal/operators/count\");\nexports.count = count_1.count;\nvar debounce_1 = require(\"../internal/operators/debounce\");\nexports.debounce = debounce_1.debounce;\nvar debounceTime_1 = require(\"../internal/operators/debounceTime\");\nexports.debounceTime = debounceTime_1.debounceTime;\nvar defaultIfEmpty_1 = require(\"../internal/operators/defaultIfEmpty\");\nexports.defaultIfEmpty = defaultIfEmpty_1.defaultIfEmpty;\nvar delay_1 = require(\"../internal/operators/delay\");\nexports.delay = delay_1.delay;\nvar delayWhen_1 = require(\"../internal/operators/delayWhen\");\nexports.delayWhen = delayWhen_1.delayWhen;\nvar dematerialize_1 = require(\"../internal/operators/dematerialize\");\nexports.dematerialize = dematerialize_1.dematerialize;\nvar distinct_1 = require(\"../internal/operators/distinct\");\nexports.distinct = distinct_1.distinct;\nvar distinctUntilChanged_1 = require(\"../internal/operators/distinctUntilChanged\");\nexports.distinctUntilChanged = distinctUntilChanged_1.distinctUntilChanged;\nvar distinctUntilKeyChanged_1 = require(\"../internal/operators/distinctUntilKeyChanged\");\nexports.distinctUntilKeyChanged = distinctUntilKeyChanged_1.distinctUntilKeyChanged;\nvar elementAt_1 = require(\"../internal/operators/elementAt\");\nexports.elementAt = elementAt_1.elementAt;\nvar endWith_1 = require(\"../internal/operators/endWith\");\nexports.endWith = endWith_1.endWith;\nvar every_1 = require(\"../internal/operators/every\");\nexports.every = every_1.every;\nvar exhaust_1 = require(\"../internal/operators/exhaust\");\nexports.exhaust = exhaust_1.exhaust;\nvar exhaustMap_1 = require(\"../internal/operators/exhaustMap\");\nexports.exhaustMap = exhaustMap_1.exhaustMap;\nvar expand_1 = require(\"../internal/operators/expand\");\nexports.expand = expand_1.expand;\nvar filter_1 = require(\"../internal/operators/filter\");\nexports.filter = filter_1.filter;\nvar finalize_1 = require(\"../internal/operators/finalize\");\nexports.finalize = finalize_1.finalize;\nvar find_1 = require(\"../internal/operators/find\");\nexports.find = find_1.find;\nvar findIndex_1 = require(\"../internal/operators/findIndex\");\nexports.findIndex = findIndex_1.findIndex;\nvar first_1 = require(\"../internal/operators/first\");\nexports.first = first_1.first;\nvar groupBy_1 = require(\"../internal/operators/groupBy\");\nexports.groupBy = groupBy_1.groupBy;\nvar ignoreElements_1 = require(\"../internal/operators/ignoreElements\");\nexports.ignoreElements = ignoreElements_1.ignoreElements;\nvar isEmpty_1 = require(\"../internal/operators/isEmpty\");\nexports.isEmpty = isEmpty_1.isEmpty;\nvar last_1 = require(\"../internal/operators/last\");\nexports.last = last_1.last;\nvar map_1 = require(\"../internal/operators/map\");\nexports.map = map_1.map;\nvar mapTo_1 = require(\"../internal/operators/mapTo\");\nexports.mapTo = mapTo_1.mapTo;\nvar materialize_1 = require(\"../internal/operators/materialize\");\nexports.materialize = materialize_1.materialize;\nvar max_1 = require(\"../internal/operators/max\");\nexports.max = max_1.max;\nvar merge_1 = require(\"../internal/operators/merge\");\nexports.merge = merge_1.merge;\nvar mergeAll_1 = require(\"../internal/operators/mergeAll\");\nexports.mergeAll = mergeAll_1.mergeAll;\nvar mergeMap_1 = require(\"../internal/operators/mergeMap\");\nexports.mergeMap = mergeMap_1.mergeMap;\nvar mergeMap_2 = require(\"../internal/operators/mergeMap\");\nexports.flatMap = mergeMap_2.mergeMap;\nvar mergeMapTo_1 = require(\"../internal/operators/mergeMapTo\");\nexports.mergeMapTo = mergeMapTo_1.mergeMapTo;\nvar mergeScan_1 = require(\"../internal/operators/mergeScan\");\nexports.mergeScan = mergeScan_1.mergeScan;\nvar min_1 = require(\"../internal/operators/min\");\nexports.min = min_1.min;\nvar multicast_1 = require(\"../internal/operators/multicast\");\nexports.multicast = multicast_1.multicast;\nvar observeOn_1 = require(\"../internal/operators/observeOn\");\nexports.observeOn = observeOn_1.observeOn;\nvar onErrorResumeNext_1 = require(\"../internal/operators/onErrorResumeNext\");\nexports.onErrorResumeNext = onErrorResumeNext_1.onErrorResumeNext;\nvar pairwise_1 = require(\"../internal/operators/pairwise\");\nexports.pairwise = pairwise_1.pairwise;\nvar partition_1 = require(\"../internal/operators/partition\");\nexports.partition = partition_1.partition;\nvar pluck_1 = require(\"../internal/operators/pluck\");\nexports.pluck = pluck_1.pluck;\nvar publish_1 = require(\"../internal/operators/publish\");\nexports.publish = publish_1.publish;\nvar publishBehavior_1 = require(\"../internal/operators/publishBehavior\");\nexports.publishBehavior = publishBehavior_1.publishBehavior;\nvar publishLast_1 = require(\"../internal/operators/publishLast\");\nexports.publishLast = publishLast_1.publishLast;\nvar publishReplay_1 = require(\"../internal/operators/publishReplay\");\nexports.publishReplay = publishReplay_1.publishReplay;\nvar race_1 = require(\"../internal/operators/race\");\nexports.race = race_1.race;\nvar reduce_1 = require(\"../internal/operators/reduce\");\nexports.reduce = reduce_1.reduce;\nvar repeat_1 = require(\"../internal/operators/repeat\");\nexports.repeat = repeat_1.repeat;\nvar repeatWhen_1 = require(\"../internal/operators/repeatWhen\");\nexports.repeatWhen = repeatWhen_1.repeatWhen;\nvar retry_1 = require(\"../internal/operators/retry\");\nexports.retry = retry_1.retry;\nvar retryWhen_1 = require(\"../internal/operators/retryWhen\");\nexports.retryWhen = retryWhen_1.retryWhen;\nvar refCount_1 = require(\"../internal/operators/refCount\");\nexports.refCount = refCount_1.refCount;\nvar sample_1 = require(\"../internal/operators/sample\");\nexports.sample = sample_1.sample;\nvar sampleTime_1 = require(\"../internal/operators/sampleTime\");\nexports.sampleTime = sampleTime_1.sampleTime;\nvar scan_1 = require(\"../internal/operators/scan\");\nexports.scan = scan_1.scan;\nvar sequenceEqual_1 = require(\"../internal/operators/sequenceEqual\");\nexports.sequenceEqual = sequenceEqual_1.sequenceEqual;\nvar share_1 = require(\"../internal/operators/share\");\nexports.share = share_1.share;\nvar shareReplay_1 = require(\"../internal/operators/shareReplay\");\nexports.shareReplay = shareReplay_1.shareReplay;\nvar single_1 = require(\"../internal/operators/single\");\nexports.single = single_1.single;\nvar skip_1 = require(\"../internal/operators/skip\");\nexports.skip = skip_1.skip;\nvar skipLast_1 = require(\"../internal/operators/skipLast\");\nexports.skipLast = skipLast_1.skipLast;\nvar skipUntil_1 = require(\"../internal/operators/skipUntil\");\nexports.skipUntil = skipUntil_1.skipUntil;\nvar skipWhile_1 = require(\"../internal/operators/skipWhile\");\nexports.skipWhile = skipWhile_1.skipWhile;\nvar startWith_1 = require(\"../internal/operators/startWith\");\nexports.startWith = startWith_1.startWith;\nvar subscribeOn_1 = require(\"../internal/operators/subscribeOn\");\nexports.subscribeOn = subscribeOn_1.subscribeOn;\nvar switchAll_1 = require(\"../internal/operators/switchAll\");\nexports.switchAll = switchAll_1.switchAll;\nvar switchMap_1 = require(\"../internal/operators/switchMap\");\nexports.switchMap = switchMap_1.switchMap;\nvar switchMapTo_1 = require(\"../internal/operators/switchMapTo\");\nexports.switchMapTo = switchMapTo_1.switchMapTo;\nvar take_1 = require(\"../internal/operators/take\");\nexports.take = take_1.take;\nvar takeLast_1 = require(\"../internal/operators/takeLast\");\nexports.takeLast = takeLast_1.takeLast;\nvar takeUntil_1 = require(\"../internal/operators/takeUntil\");\nexports.takeUntil = takeUntil_1.takeUntil;\nvar takeWhile_1 = require(\"../internal/operators/takeWhile\");\nexports.takeWhile = takeWhile_1.takeWhile;\nvar tap_1 = require(\"../internal/operators/tap\");\nexports.tap = tap_1.tap;\nvar throttle_1 = require(\"../internal/operators/throttle\");\nexports.throttle = throttle_1.throttle;\nvar throttleTime_1 = require(\"../internal/operators/throttleTime\");\nexports.throttleTime = throttleTime_1.throttleTime;\nvar throwIfEmpty_1 = require(\"../internal/operators/throwIfEmpty\");\nexports.throwIfEmpty = throwIfEmpty_1.throwIfEmpty;\nvar timeInterval_1 = require(\"../internal/operators/timeInterval\");\nexports.timeInterval = timeInterval_1.timeInterval;\nvar timeout_1 = require(\"../internal/operators/timeout\");\nexports.timeout = timeout_1.timeout;\nvar timeoutWith_1 = require(\"../internal/operators/timeoutWith\");\nexports.timeoutWith = timeoutWith_1.timeoutWith;\nvar timestamp_1 = require(\"../internal/operators/timestamp\");\nexports.timestamp = timestamp_1.timestamp;\nvar toArray_1 = require(\"../internal/operators/toArray\");\nexports.toArray = toArray_1.toArray;\nvar window_1 = require(\"../internal/operators/window\");\nexports.window = window_1.window;\nvar windowCount_1 = require(\"../internal/operators/windowCount\");\nexports.windowCount = windowCount_1.windowCount;\nvar windowTime_1 = require(\"../internal/operators/windowTime\");\nexports.windowTime = windowTime_1.windowTime;\nvar windowToggle_1 = require(\"../internal/operators/windowToggle\");\nexports.windowToggle = windowToggle_1.windowToggle;\nvar windowWhen_1 = require(\"../internal/operators/windowWhen\");\nexports.windowWhen = windowWhen_1.windowWhen;\nvar withLatestFrom_1 = require(\"../internal/operators/withLatestFrom\");\nexports.withLatestFrom = withLatestFrom_1.withLatestFrom;\nvar zip_1 = require(\"../internal/operators/zip\");\nexports.zip = zip_1.zip;\nvar zipAll_1 = require(\"../internal/operators/zipAll\");\nexports.zipAll = zipAll_1.zipAll;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction audit(durationSelector) {\n return function auditOperatorFunction(source) {\n return source.lift(new AuditOperator(durationSelector));\n };\n}\nexports.audit = audit;\nvar AuditOperator = (function () {\n function AuditOperator(durationSelector) {\n this.durationSelector = durationSelector;\n }\n AuditOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector));\n };\n return AuditOperator;\n}());\nvar AuditSubscriber = (function (_super) {\n __extends(AuditSubscriber, _super);\n function AuditSubscriber(destination, durationSelector) {\n var _this = _super.call(this, destination) || this;\n _this.durationSelector = durationSelector;\n _this.hasValue = false;\n return _this;\n }\n AuditSubscriber.prototype._next = function (value) {\n this.value = value;\n this.hasValue = true;\n if (!this.throttled) {\n var duration = void 0;\n try {\n var durationSelector = this.durationSelector;\n duration = durationSelector(value);\n }\n catch (err) {\n return this.destination.error(err);\n }\n var innerSubscription = subscribeToResult_1.subscribeToResult(this, duration);\n if (!innerSubscription || innerSubscription.closed) {\n this.clearThrottle();\n }\n else {\n this.add(this.throttled = innerSubscription);\n }\n }\n };\n AuditSubscriber.prototype.clearThrottle = function () {\n var _a = this, value = _a.value, hasValue = _a.hasValue, throttled = _a.throttled;\n if (throttled) {\n this.remove(throttled);\n this.throttled = null;\n throttled.unsubscribe();\n }\n if (hasValue) {\n this.value = null;\n this.hasValue = false;\n this.destination.next(value);\n }\n };\n AuditSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex) {\n this.clearThrottle();\n };\n AuditSubscriber.prototype.notifyComplete = function () {\n this.clearThrottle();\n };\n return AuditSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=audit.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar async_1 = require(\"../scheduler/async\");\nvar audit_1 = require(\"./audit\");\nvar timer_1 = require(\"../observable/timer\");\nfunction auditTime(duration, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.async; }\n return audit_1.audit(function () { return timer_1.timer(duration, scheduler); });\n}\nexports.auditTime = auditTime;\n//# sourceMappingURL=auditTime.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction buffer(closingNotifier) {\n return function bufferOperatorFunction(source) {\n return source.lift(new BufferOperator(closingNotifier));\n };\n}\nexports.buffer = buffer;\nvar BufferOperator = (function () {\n function BufferOperator(closingNotifier) {\n this.closingNotifier = closingNotifier;\n }\n BufferOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new BufferSubscriber(subscriber, this.closingNotifier));\n };\n return BufferOperator;\n}());\nvar BufferSubscriber = (function (_super) {\n __extends(BufferSubscriber, _super);\n function BufferSubscriber(destination, closingNotifier) {\n var _this = _super.call(this, destination) || this;\n _this.buffer = [];\n _this.add(subscribeToResult_1.subscribeToResult(_this, closingNotifier));\n return _this;\n }\n BufferSubscriber.prototype._next = function (value) {\n this.buffer.push(value);\n };\n BufferSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n var buffer = this.buffer;\n this.buffer = [];\n this.destination.next(buffer);\n };\n return BufferSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=buffer.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction bufferCount(bufferSize, startBufferEvery) {\n if (startBufferEvery === void 0) { startBufferEvery = null; }\n return function bufferCountOperatorFunction(source) {\n return source.lift(new BufferCountOperator(bufferSize, startBufferEvery));\n };\n}\nexports.bufferCount = bufferCount;\nvar BufferCountOperator = (function () {\n function BufferCountOperator(bufferSize, startBufferEvery) {\n this.bufferSize = bufferSize;\n this.startBufferEvery = startBufferEvery;\n if (!startBufferEvery || bufferSize === startBufferEvery) {\n this.subscriberClass = BufferCountSubscriber;\n }\n else {\n this.subscriberClass = BufferSkipCountSubscriber;\n }\n }\n BufferCountOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new this.subscriberClass(subscriber, this.bufferSize, this.startBufferEvery));\n };\n return BufferCountOperator;\n}());\nvar BufferCountSubscriber = (function (_super) {\n __extends(BufferCountSubscriber, _super);\n function BufferCountSubscriber(destination, bufferSize) {\n var _this = _super.call(this, destination) || this;\n _this.bufferSize = bufferSize;\n _this.buffer = [];\n return _this;\n }\n BufferCountSubscriber.prototype._next = function (value) {\n var buffer = this.buffer;\n buffer.push(value);\n if (buffer.length == this.bufferSize) {\n this.destination.next(buffer);\n this.buffer = [];\n }\n };\n BufferCountSubscriber.prototype._complete = function () {\n var buffer = this.buffer;\n if (buffer.length > 0) {\n this.destination.next(buffer);\n }\n _super.prototype._complete.call(this);\n };\n return BufferCountSubscriber;\n}(Subscriber_1.Subscriber));\nvar BufferSkipCountSubscriber = (function (_super) {\n __extends(BufferSkipCountSubscriber, _super);\n function BufferSkipCountSubscriber(destination, bufferSize, startBufferEvery) {\n var _this = _super.call(this, destination) || this;\n _this.bufferSize = bufferSize;\n _this.startBufferEvery = startBufferEvery;\n _this.buffers = [];\n _this.count = 0;\n return _this;\n }\n BufferSkipCountSubscriber.prototype._next = function (value) {\n var _a = this, bufferSize = _a.bufferSize, startBufferEvery = _a.startBufferEvery, buffers = _a.buffers, count = _a.count;\n this.count++;\n if (count % startBufferEvery === 0) {\n buffers.push([]);\n }\n for (var i = buffers.length; i--;) {\n var buffer = buffers[i];\n buffer.push(value);\n if (buffer.length === bufferSize) {\n buffers.splice(i, 1);\n this.destination.next(buffer);\n }\n }\n };\n BufferSkipCountSubscriber.prototype._complete = function () {\n var _a = this, buffers = _a.buffers, destination = _a.destination;\n while (buffers.length > 0) {\n var buffer = buffers.shift();\n if (buffer.length > 0) {\n destination.next(buffer);\n }\n }\n _super.prototype._complete.call(this);\n };\n return BufferSkipCountSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=bufferCount.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar async_1 = require(\"../scheduler/async\");\nvar Subscriber_1 = require(\"../Subscriber\");\nvar isScheduler_1 = require(\"../util/isScheduler\");\nfunction bufferTime(bufferTimeSpan) {\n var length = arguments.length;\n var scheduler = async_1.async;\n if (isScheduler_1.isScheduler(arguments[arguments.length - 1])) {\n scheduler = arguments[arguments.length - 1];\n length--;\n }\n var bufferCreationInterval = null;\n if (length >= 2) {\n bufferCreationInterval = arguments[1];\n }\n var maxBufferSize = Number.POSITIVE_INFINITY;\n if (length >= 3) {\n maxBufferSize = arguments[2];\n }\n return function bufferTimeOperatorFunction(source) {\n return source.lift(new BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler));\n };\n}\nexports.bufferTime = bufferTime;\nvar BufferTimeOperator = (function () {\n function BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) {\n this.bufferTimeSpan = bufferTimeSpan;\n this.bufferCreationInterval = bufferCreationInterval;\n this.maxBufferSize = maxBufferSize;\n this.scheduler = scheduler;\n }\n BufferTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new BufferTimeSubscriber(subscriber, this.bufferTimeSpan, this.bufferCreationInterval, this.maxBufferSize, this.scheduler));\n };\n return BufferTimeOperator;\n}());\nvar Context = (function () {\n function Context() {\n this.buffer = [];\n }\n return Context;\n}());\nvar BufferTimeSubscriber = (function (_super) {\n __extends(BufferTimeSubscriber, _super);\n function BufferTimeSubscriber(destination, bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.bufferTimeSpan = bufferTimeSpan;\n _this.bufferCreationInterval = bufferCreationInterval;\n _this.maxBufferSize = maxBufferSize;\n _this.scheduler = scheduler;\n _this.contexts = [];\n var context = _this.openContext();\n _this.timespanOnly = bufferCreationInterval == null || bufferCreationInterval < 0;\n if (_this.timespanOnly) {\n var timeSpanOnlyState = { subscriber: _this, context: context, bufferTimeSpan: bufferTimeSpan };\n _this.add(context.closeAction = scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));\n }\n else {\n var closeState = { subscriber: _this, context: context };\n var creationState = { bufferTimeSpan: bufferTimeSpan, bufferCreationInterval: bufferCreationInterval, subscriber: _this, scheduler: scheduler };\n _this.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, closeState));\n _this.add(scheduler.schedule(dispatchBufferCreation, bufferCreationInterval, creationState));\n }\n return _this;\n }\n BufferTimeSubscriber.prototype._next = function (value) {\n var contexts = this.contexts;\n var len = contexts.length;\n var filledBufferContext;\n for (var i = 0; i < len; i++) {\n var context_1 = contexts[i];\n var buffer = context_1.buffer;\n buffer.push(value);\n if (buffer.length == this.maxBufferSize) {\n filledBufferContext = context_1;\n }\n }\n if (filledBufferContext) {\n this.onBufferFull(filledBufferContext);\n }\n };\n BufferTimeSubscriber.prototype._error = function (err) {\n this.contexts.length = 0;\n _super.prototype._error.call(this, err);\n };\n BufferTimeSubscriber.prototype._complete = function () {\n var _a = this, contexts = _a.contexts, destination = _a.destination;\n while (contexts.length > 0) {\n var context_2 = contexts.shift();\n destination.next(context_2.buffer);\n }\n _super.prototype._complete.call(this);\n };\n BufferTimeSubscriber.prototype._unsubscribe = function () {\n this.contexts = null;\n };\n BufferTimeSubscriber.prototype.onBufferFull = function (context) {\n this.closeContext(context);\n var closeAction = context.closeAction;\n closeAction.unsubscribe();\n this.remove(closeAction);\n if (!this.closed && this.timespanOnly) {\n context = this.openContext();\n var bufferTimeSpan = this.bufferTimeSpan;\n var timeSpanOnlyState = { subscriber: this, context: context, bufferTimeSpan: bufferTimeSpan };\n this.add(context.closeAction = this.scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));\n }\n };\n BufferTimeSubscriber.prototype.openContext = function () {\n var context = new Context();\n this.contexts.push(context);\n return context;\n };\n BufferTimeSubscriber.prototype.closeContext = function (context) {\n this.destination.next(context.buffer);\n var contexts = this.contexts;\n var spliceIndex = contexts ? contexts.indexOf(context) : -1;\n if (spliceIndex >= 0) {\n contexts.splice(contexts.indexOf(context), 1);\n }\n };\n return BufferTimeSubscriber;\n}(Subscriber_1.Subscriber));\nfunction dispatchBufferTimeSpanOnly(state) {\n var subscriber = state.subscriber;\n var prevContext = state.context;\n if (prevContext) {\n subscriber.closeContext(prevContext);\n }\n if (!subscriber.closed) {\n state.context = subscriber.openContext();\n state.context.closeAction = this.schedule(state, state.bufferTimeSpan);\n }\n}\nfunction dispatchBufferCreation(state) {\n var bufferCreationInterval = state.bufferCreationInterval, bufferTimeSpan = state.bufferTimeSpan, subscriber = state.subscriber, scheduler = state.scheduler;\n var context = subscriber.openContext();\n var action = this;\n if (!subscriber.closed) {\n subscriber.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, { subscriber: subscriber, context: context }));\n action.schedule(state, bufferCreationInterval);\n }\n}\nfunction dispatchBufferClose(arg) {\n var subscriber = arg.subscriber, context = arg.context;\n subscriber.closeContext(context);\n}\n//# sourceMappingURL=bufferTime.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscription_1 = require(\"../Subscription\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nfunction bufferToggle(openings, closingSelector) {\n return function bufferToggleOperatorFunction(source) {\n return source.lift(new BufferToggleOperator(openings, closingSelector));\n };\n}\nexports.bufferToggle = bufferToggle;\nvar BufferToggleOperator = (function () {\n function BufferToggleOperator(openings, closingSelector) {\n this.openings = openings;\n this.closingSelector = closingSelector;\n }\n BufferToggleOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new BufferToggleSubscriber(subscriber, this.openings, this.closingSelector));\n };\n return BufferToggleOperator;\n}());\nvar BufferToggleSubscriber = (function (_super) {\n __extends(BufferToggleSubscriber, _super);\n function BufferToggleSubscriber(destination, openings, closingSelector) {\n var _this = _super.call(this, destination) || this;\n _this.openings = openings;\n _this.closingSelector = closingSelector;\n _this.contexts = [];\n _this.add(subscribeToResult_1.subscribeToResult(_this, openings));\n return _this;\n }\n BufferToggleSubscriber.prototype._next = function (value) {\n var contexts = this.contexts;\n var len = contexts.length;\n for (var i = 0; i < len; i++) {\n contexts[i].buffer.push(value);\n }\n };\n BufferToggleSubscriber.prototype._error = function (err) {\n var contexts = this.contexts;\n while (contexts.length > 0) {\n var context_1 = contexts.shift();\n context_1.subscription.unsubscribe();\n context_1.buffer = null;\n context_1.subscription = null;\n }\n this.contexts = null;\n _super.prototype._error.call(this, err);\n };\n BufferToggleSubscriber.prototype._complete = function () {\n var contexts = this.contexts;\n while (contexts.length > 0) {\n var context_2 = contexts.shift();\n this.destination.next(context_2.buffer);\n context_2.subscription.unsubscribe();\n context_2.buffer = null;\n context_2.subscription = null;\n }\n this.contexts = null;\n _super.prototype._complete.call(this);\n };\n BufferToggleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n outerValue ? this.closeBuffer(outerValue) : this.openBuffer(innerValue);\n };\n BufferToggleSubscriber.prototype.notifyComplete = function (innerSub) {\n this.closeBuffer(innerSub.context);\n };\n BufferToggleSubscriber.prototype.openBuffer = function (value) {\n try {\n var closingSelector = this.closingSelector;\n var closingNotifier = closingSelector.call(this, value);\n if (closingNotifier) {\n this.trySubscribe(closingNotifier);\n }\n }\n catch (err) {\n this._error(err);\n }\n };\n BufferToggleSubscriber.prototype.closeBuffer = function (context) {\n var contexts = this.contexts;\n if (contexts && context) {\n var buffer = context.buffer, subscription = context.subscription;\n this.destination.next(buffer);\n contexts.splice(contexts.indexOf(context), 1);\n this.remove(subscription);\n subscription.unsubscribe();\n }\n };\n BufferToggleSubscriber.prototype.trySubscribe = function (closingNotifier) {\n var contexts = this.contexts;\n var buffer = [];\n var subscription = new Subscription_1.Subscription();\n var context = { buffer: buffer, subscription: subscription };\n contexts.push(context);\n var innerSubscription = subscribeToResult_1.subscribeToResult(this, closingNotifier, context);\n if (!innerSubscription || innerSubscription.closed) {\n this.closeBuffer(context);\n }\n else {\n innerSubscription.context = context;\n this.add(innerSubscription);\n subscription.add(innerSubscription);\n }\n };\n return BufferToggleSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=bufferToggle.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscription_1 = require(\"../Subscription\");\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction bufferWhen(closingSelector) {\n return function (source) {\n return source.lift(new BufferWhenOperator(closingSelector));\n };\n}\nexports.bufferWhen = bufferWhen;\nvar BufferWhenOperator = (function () {\n function BufferWhenOperator(closingSelector) {\n this.closingSelector = closingSelector;\n }\n BufferWhenOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new BufferWhenSubscriber(subscriber, this.closingSelector));\n };\n return BufferWhenOperator;\n}());\nvar BufferWhenSubscriber = (function (_super) {\n __extends(BufferWhenSubscriber, _super);\n function BufferWhenSubscriber(destination, closingSelector) {\n var _this = _super.call(this, destination) || this;\n _this.closingSelector = closingSelector;\n _this.subscribing = false;\n _this.openBuffer();\n return _this;\n }\n BufferWhenSubscriber.prototype._next = function (value) {\n this.buffer.push(value);\n };\n BufferWhenSubscriber.prototype._complete = function () {\n var buffer = this.buffer;\n if (buffer) {\n this.destination.next(buffer);\n }\n _super.prototype._complete.call(this);\n };\n BufferWhenSubscriber.prototype._unsubscribe = function () {\n this.buffer = null;\n this.subscribing = false;\n };\n BufferWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.openBuffer();\n };\n BufferWhenSubscriber.prototype.notifyComplete = function () {\n if (this.subscribing) {\n this.complete();\n }\n else {\n this.openBuffer();\n }\n };\n BufferWhenSubscriber.prototype.openBuffer = function () {\n var closingSubscription = this.closingSubscription;\n if (closingSubscription) {\n this.remove(closingSubscription);\n closingSubscription.unsubscribe();\n }\n var buffer = this.buffer;\n if (this.buffer) {\n this.destination.next(buffer);\n }\n this.buffer = [];\n var closingNotifier;\n try {\n var closingSelector = this.closingSelector;\n closingNotifier = closingSelector();\n }\n catch (err) {\n return this.error(err);\n }\n closingSubscription = new Subscription_1.Subscription();\n this.closingSubscription = closingSubscription;\n this.add(closingSubscription);\n this.subscribing = true;\n closingSubscription.add(subscribeToResult_1.subscribeToResult(this, closingNotifier));\n this.subscribing = false;\n };\n return BufferWhenSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=bufferWhen.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar InnerSubscriber_1 = require(\"../InnerSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction catchError(selector) {\n return function catchErrorOperatorFunction(source) {\n var operator = new CatchOperator(selector);\n var caught = source.lift(operator);\n return (operator.caught = caught);\n };\n}\nexports.catchError = catchError;\nvar CatchOperator = (function () {\n function CatchOperator(selector) {\n this.selector = selector;\n }\n CatchOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n };\n return CatchOperator;\n}());\nvar CatchSubscriber = (function (_super) {\n __extends(CatchSubscriber, _super);\n function CatchSubscriber(destination, selector, caught) {\n var _this = _super.call(this, destination) || this;\n _this.selector = selector;\n _this.caught = caught;\n return _this;\n }\n CatchSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var result = void 0;\n try {\n result = this.selector(err, this.caught);\n }\n catch (err2) {\n _super.prototype.error.call(this, err2);\n return;\n }\n this._unsubscribeAndRecycle();\n var innerSubscriber = new InnerSubscriber_1.InnerSubscriber(this, undefined, undefined);\n this.add(innerSubscriber);\n subscribeToResult_1.subscribeToResult(this, result, undefined, undefined, innerSubscriber);\n }\n };\n return CatchSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=catchError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar combineLatest_1 = require(\"../observable/combineLatest\");\nfunction combineAll(project) {\n return function (source) { return source.lift(new combineLatest_1.CombineLatestOperator(project)); };\n}\nexports.combineAll = combineAll;\n//# sourceMappingURL=combineAll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar isArray_1 = require(\"../util/isArray\");\nvar combineLatest_1 = require(\"../observable/combineLatest\");\nvar from_1 = require(\"../observable/from\");\nvar none = {};\nfunction combineLatest() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var project = null;\n if (typeof observables[observables.length - 1] === 'function') {\n project = observables.pop();\n }\n if (observables.length === 1 && isArray_1.isArray(observables[0])) {\n observables = observables[0].slice();\n }\n return function (source) { return source.lift.call(from_1.from([source].concat(observables)), new combineLatest_1.CombineLatestOperator(project)); };\n}\nexports.combineLatest = combineLatest;\n//# sourceMappingURL=combineLatest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar concat_1 = require(\"../observable/concat\");\nfunction concat() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return function (source) { return source.lift.call(concat_1.concat.apply(void 0, [source].concat(observables))); };\n}\nexports.concat = concat;\n//# sourceMappingURL=concat.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar mergeMap_1 = require(\"./mergeMap\");\nfunction concatMap(project, resultSelector) {\n return mergeMap_1.mergeMap(project, resultSelector, 1);\n}\nexports.concatMap = concatMap;\n//# sourceMappingURL=concatMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar concatMap_1 = require(\"./concatMap\");\nfunction concatMapTo(innerObservable, resultSelector) {\n return concatMap_1.concatMap(function () { return innerObservable; }, resultSelector);\n}\nexports.concatMapTo = concatMapTo;\n//# sourceMappingURL=concatMapTo.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction count(predicate) {\n return function (source) { return source.lift(new CountOperator(predicate, source)); };\n}\nexports.count = count;\nvar CountOperator = (function () {\n function CountOperator(predicate, source) {\n this.predicate = predicate;\n this.source = source;\n }\n CountOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CountSubscriber(subscriber, this.predicate, this.source));\n };\n return CountOperator;\n}());\nvar CountSubscriber = (function (_super) {\n __extends(CountSubscriber, _super);\n function CountSubscriber(destination, predicate, source) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.source = source;\n _this.count = 0;\n _this.index = 0;\n return _this;\n }\n CountSubscriber.prototype._next = function (value) {\n if (this.predicate) {\n this._tryPredicate(value);\n }\n else {\n this.count++;\n }\n };\n CountSubscriber.prototype._tryPredicate = function (value) {\n var result;\n try {\n result = this.predicate(value, this.index++, this.source);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.count++;\n }\n };\n CountSubscriber.prototype._complete = function () {\n this.destination.next(this.count);\n this.destination.complete();\n };\n return CountSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=count.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction debounce(durationSelector) {\n return function (source) { return source.lift(new DebounceOperator(durationSelector)); };\n}\nexports.debounce = debounce;\nvar DebounceOperator = (function () {\n function DebounceOperator(durationSelector) {\n this.durationSelector = durationSelector;\n }\n DebounceOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DebounceSubscriber(subscriber, this.durationSelector));\n };\n return DebounceOperator;\n}());\nvar DebounceSubscriber = (function (_super) {\n __extends(DebounceSubscriber, _super);\n function DebounceSubscriber(destination, durationSelector) {\n var _this = _super.call(this, destination) || this;\n _this.durationSelector = durationSelector;\n _this.hasValue = false;\n _this.durationSubscription = null;\n return _this;\n }\n DebounceSubscriber.prototype._next = function (value) {\n try {\n var result = this.durationSelector.call(this, value);\n if (result) {\n this._tryNext(value, result);\n }\n }\n catch (err) {\n this.destination.error(err);\n }\n };\n DebounceSubscriber.prototype._complete = function () {\n this.emitValue();\n this.destination.complete();\n };\n DebounceSubscriber.prototype._tryNext = function (value, duration) {\n var subscription = this.durationSubscription;\n this.value = value;\n this.hasValue = true;\n if (subscription) {\n subscription.unsubscribe();\n this.remove(subscription);\n }\n subscription = subscribeToResult_1.subscribeToResult(this, duration);\n if (subscription && !subscription.closed) {\n this.add(this.durationSubscription = subscription);\n }\n };\n DebounceSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.emitValue();\n };\n DebounceSubscriber.prototype.notifyComplete = function () {\n this.emitValue();\n };\n DebounceSubscriber.prototype.emitValue = function () {\n if (this.hasValue) {\n var value = this.value;\n var subscription = this.durationSubscription;\n if (subscription) {\n this.durationSubscription = null;\n subscription.unsubscribe();\n this.remove(subscription);\n }\n this.value = null;\n this.hasValue = false;\n _super.prototype._next.call(this, value);\n }\n };\n return DebounceSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=debounce.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nvar async_1 = require(\"../scheduler/async\");\nfunction debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.async; }\n return function (source) { return source.lift(new DebounceTimeOperator(dueTime, scheduler)); };\n}\nexports.debounceTime = debounceTime;\nvar DebounceTimeOperator = (function () {\n function DebounceTimeOperator(dueTime, scheduler) {\n this.dueTime = dueTime;\n this.scheduler = scheduler;\n }\n DebounceTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));\n };\n return DebounceTimeOperator;\n}());\nvar DebounceTimeSubscriber = (function (_super) {\n __extends(DebounceTimeSubscriber, _super);\n function DebounceTimeSubscriber(destination, dueTime, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.dueTime = dueTime;\n _this.scheduler = scheduler;\n _this.debouncedSubscription = null;\n _this.lastValue = null;\n _this.hasValue = false;\n return _this;\n }\n DebounceTimeSubscriber.prototype._next = function (value) {\n this.clearDebounce();\n this.lastValue = value;\n this.hasValue = true;\n this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));\n };\n DebounceTimeSubscriber.prototype._complete = function () {\n this.debouncedNext();\n this.destination.complete();\n };\n DebounceTimeSubscriber.prototype.debouncedNext = function () {\n this.clearDebounce();\n if (this.hasValue) {\n var lastValue = this.lastValue;\n this.lastValue = null;\n this.hasValue = false;\n this.destination.next(lastValue);\n }\n };\n DebounceTimeSubscriber.prototype.clearDebounce = function () {\n var debouncedSubscription = this.debouncedSubscription;\n if (debouncedSubscription !== null) {\n this.remove(debouncedSubscription);\n debouncedSubscription.unsubscribe();\n this.debouncedSubscription = null;\n }\n };\n return DebounceTimeSubscriber;\n}(Subscriber_1.Subscriber));\nfunction dispatchNext(subscriber) {\n subscriber.debouncedNext();\n}\n//# sourceMappingURL=debounceTime.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction defaultIfEmpty(defaultValue) {\n if (defaultValue === void 0) { defaultValue = null; }\n return function (source) { return source.lift(new DefaultIfEmptyOperator(defaultValue)); };\n}\nexports.defaultIfEmpty = defaultIfEmpty;\nvar DefaultIfEmptyOperator = (function () {\n function DefaultIfEmptyOperator(defaultValue) {\n this.defaultValue = defaultValue;\n }\n DefaultIfEmptyOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue));\n };\n return DefaultIfEmptyOperator;\n}());\nvar DefaultIfEmptySubscriber = (function (_super) {\n __extends(DefaultIfEmptySubscriber, _super);\n function DefaultIfEmptySubscriber(destination, defaultValue) {\n var _this = _super.call(this, destination) || this;\n _this.defaultValue = defaultValue;\n _this.isEmpty = true;\n return _this;\n }\n DefaultIfEmptySubscriber.prototype._next = function (value) {\n this.isEmpty = false;\n this.destination.next(value);\n };\n DefaultIfEmptySubscriber.prototype._complete = function () {\n if (this.isEmpty) {\n this.destination.next(this.defaultValue);\n }\n this.destination.complete();\n };\n return DefaultIfEmptySubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=defaultIfEmpty.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar async_1 = require(\"../scheduler/async\");\nvar isDate_1 = require(\"../util/isDate\");\nvar Subscriber_1 = require(\"../Subscriber\");\nvar Notification_1 = require(\"../Notification\");\nfunction delay(delay, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.async; }\n var absoluteDelay = isDate_1.isDate(delay);\n var delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);\n return function (source) { return source.lift(new DelayOperator(delayFor, scheduler)); };\n}\nexports.delay = delay;\nvar DelayOperator = (function () {\n function DelayOperator(delay, scheduler) {\n this.delay = delay;\n this.scheduler = scheduler;\n }\n DelayOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n };\n return DelayOperator;\n}());\nvar DelaySubscriber = (function (_super) {\n __extends(DelaySubscriber, _super);\n function DelaySubscriber(destination, delay, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.delay = delay;\n _this.scheduler = scheduler;\n _this.queue = [];\n _this.active = false;\n _this.errored = false;\n return _this;\n }\n DelaySubscriber.dispatch = function (state) {\n var source = state.source;\n var queue = source.queue;\n var scheduler = state.scheduler;\n var destination = state.destination;\n while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n queue.shift().notification.observe(destination);\n }\n if (queue.length > 0) {\n var delay_1 = Math.max(0, queue[0].time - scheduler.now());\n this.schedule(state, delay_1);\n }\n else {\n this.unsubscribe();\n source.active = false;\n }\n };\n DelaySubscriber.prototype._schedule = function (scheduler) {\n this.active = true;\n var destination = this.destination;\n destination.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, {\n source: this, destination: this.destination, scheduler: scheduler\n }));\n };\n DelaySubscriber.prototype.scheduleNotification = function (notification) {\n if (this.errored === true) {\n return;\n }\n var scheduler = this.scheduler;\n var message = new DelayMessage(scheduler.now() + this.delay, notification);\n this.queue.push(message);\n if (this.active === false) {\n this._schedule(scheduler);\n }\n };\n DelaySubscriber.prototype._next = function (value) {\n this.scheduleNotification(Notification_1.Notification.createNext(value));\n };\n DelaySubscriber.prototype._error = function (err) {\n this.errored = true;\n this.queue = [];\n this.destination.error(err);\n this.unsubscribe();\n };\n DelaySubscriber.prototype._complete = function () {\n this.scheduleNotification(Notification_1.Notification.createComplete());\n this.unsubscribe();\n };\n return DelaySubscriber;\n}(Subscriber_1.Subscriber));\nvar DelayMessage = (function () {\n function DelayMessage(time, notification) {\n this.time = time;\n this.notification = notification;\n }\n return DelayMessage;\n}());\n//# sourceMappingURL=delay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isDate(value) {\n return value instanceof Date && !isNaN(+value);\n}\nexports.isDate = isDate;\n//# sourceMappingURL=isDate.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nvar Observable_1 = require(\"../Observable\");\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return function (source) {\n return new SubscriptionDelayObservable(source, subscriptionDelay)\n .lift(new DelayWhenOperator(delayDurationSelector));\n };\n }\n return function (source) { return source.lift(new DelayWhenOperator(delayDurationSelector)); };\n}\nexports.delayWhen = delayWhen;\nvar DelayWhenOperator = (function () {\n function DelayWhenOperator(delayDurationSelector) {\n this.delayDurationSelector = delayDurationSelector;\n }\n DelayWhenOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DelayWhenSubscriber(subscriber, this.delayDurationSelector));\n };\n return DelayWhenOperator;\n}());\nvar DelayWhenSubscriber = (function (_super) {\n __extends(DelayWhenSubscriber, _super);\n function DelayWhenSubscriber(destination, delayDurationSelector) {\n var _this = _super.call(this, destination) || this;\n _this.delayDurationSelector = delayDurationSelector;\n _this.completed = false;\n _this.delayNotifierSubscriptions = [];\n _this.index = 0;\n return _this;\n }\n DelayWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(outerValue);\n this.removeSubscription(innerSub);\n this.tryComplete();\n };\n DelayWhenSubscriber.prototype.notifyError = function (error, innerSub) {\n this._error(error);\n };\n DelayWhenSubscriber.prototype.notifyComplete = function (innerSub) {\n var value = this.removeSubscription(innerSub);\n if (value) {\n this.destination.next(value);\n }\n this.tryComplete();\n };\n DelayWhenSubscriber.prototype._next = function (value) {\n var index = this.index++;\n try {\n var delayNotifier = this.delayDurationSelector(value, index);\n if (delayNotifier) {\n this.tryDelay(delayNotifier, value);\n }\n }\n catch (err) {\n this.destination.error(err);\n }\n };\n DelayWhenSubscriber.prototype._complete = function () {\n this.completed = true;\n this.tryComplete();\n this.unsubscribe();\n };\n DelayWhenSubscriber.prototype.removeSubscription = function (subscription) {\n subscription.unsubscribe();\n var subscriptionIdx = this.delayNotifierSubscriptions.indexOf(subscription);\n if (subscriptionIdx !== -1) {\n this.delayNotifierSubscriptions.splice(subscriptionIdx, 1);\n }\n return subscription.outerValue;\n };\n DelayWhenSubscriber.prototype.tryDelay = function (delayNotifier, value) {\n var notifierSubscription = subscribeToResult_1.subscribeToResult(this, delayNotifier, value);\n if (notifierSubscription && !notifierSubscription.closed) {\n var destination = this.destination;\n destination.add(notifierSubscription);\n this.delayNotifierSubscriptions.push(notifierSubscription);\n }\n };\n DelayWhenSubscriber.prototype.tryComplete = function () {\n if (this.completed && this.delayNotifierSubscriptions.length === 0) {\n this.destination.complete();\n }\n };\n return DelayWhenSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\nvar SubscriptionDelayObservable = (function (_super) {\n __extends(SubscriptionDelayObservable, _super);\n function SubscriptionDelayObservable(source, subscriptionDelay) {\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.subscriptionDelay = subscriptionDelay;\n return _this;\n }\n SubscriptionDelayObservable.prototype._subscribe = function (subscriber) {\n this.subscriptionDelay.subscribe(new SubscriptionDelaySubscriber(subscriber, this.source));\n };\n return SubscriptionDelayObservable;\n}(Observable_1.Observable));\nvar SubscriptionDelaySubscriber = (function (_super) {\n __extends(SubscriptionDelaySubscriber, _super);\n function SubscriptionDelaySubscriber(parent, source) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.source = source;\n _this.sourceSubscribed = false;\n return _this;\n }\n SubscriptionDelaySubscriber.prototype._next = function (unused) {\n this.subscribeToSource();\n };\n SubscriptionDelaySubscriber.prototype._error = function (err) {\n this.unsubscribe();\n this.parent.error(err);\n };\n SubscriptionDelaySubscriber.prototype._complete = function () {\n this.unsubscribe();\n this.subscribeToSource();\n };\n SubscriptionDelaySubscriber.prototype.subscribeToSource = function () {\n if (!this.sourceSubscribed) {\n this.sourceSubscribed = true;\n this.unsubscribe();\n this.source.subscribe(this.parent);\n }\n };\n return SubscriptionDelaySubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=delayWhen.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction dematerialize() {\n return function dematerializeOperatorFunction(source) {\n return source.lift(new DeMaterializeOperator());\n };\n}\nexports.dematerialize = dematerialize;\nvar DeMaterializeOperator = (function () {\n function DeMaterializeOperator() {\n }\n DeMaterializeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DeMaterializeSubscriber(subscriber));\n };\n return DeMaterializeOperator;\n}());\nvar DeMaterializeSubscriber = (function (_super) {\n __extends(DeMaterializeSubscriber, _super);\n function DeMaterializeSubscriber(destination) {\n return _super.call(this, destination) || this;\n }\n DeMaterializeSubscriber.prototype._next = function (value) {\n value.observe(this.destination);\n };\n return DeMaterializeSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=dematerialize.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction distinct(keySelector, flushes) {\n return function (source) { return source.lift(new DistinctOperator(keySelector, flushes)); };\n}\nexports.distinct = distinct;\nvar DistinctOperator = (function () {\n function DistinctOperator(keySelector, flushes) {\n this.keySelector = keySelector;\n this.flushes = flushes;\n }\n DistinctOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes));\n };\n return DistinctOperator;\n}());\nvar DistinctSubscriber = (function (_super) {\n __extends(DistinctSubscriber, _super);\n function DistinctSubscriber(destination, keySelector, flushes) {\n var _this = _super.call(this, destination) || this;\n _this.keySelector = keySelector;\n _this.values = new Set();\n if (flushes) {\n _this.add(subscribeToResult_1.subscribeToResult(_this, flushes));\n }\n return _this;\n }\n DistinctSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.values.clear();\n };\n DistinctSubscriber.prototype.notifyError = function (error, innerSub) {\n this._error(error);\n };\n DistinctSubscriber.prototype._next = function (value) {\n if (this.keySelector) {\n this._useKeySelector(value);\n }\n else {\n this._finalizeNext(value, value);\n }\n };\n DistinctSubscriber.prototype._useKeySelector = function (value) {\n var key;\n var destination = this.destination;\n try {\n key = this.keySelector(value);\n }\n catch (err) {\n destination.error(err);\n return;\n }\n this._finalizeNext(key, value);\n };\n DistinctSubscriber.prototype._finalizeNext = function (key, value) {\n var values = this.values;\n if (!values.has(key)) {\n values.add(key);\n this.destination.next(value);\n }\n };\n return DistinctSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\nexports.DistinctSubscriber = DistinctSubscriber;\n//# sourceMappingURL=distinct.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction distinctUntilChanged(compare, keySelector) {\n return function (source) { return source.lift(new DistinctUntilChangedOperator(compare, keySelector)); };\n}\nexports.distinctUntilChanged = distinctUntilChanged;\nvar DistinctUntilChangedOperator = (function () {\n function DistinctUntilChangedOperator(compare, keySelector) {\n this.compare = compare;\n this.keySelector = keySelector;\n }\n DistinctUntilChangedOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));\n };\n return DistinctUntilChangedOperator;\n}());\nvar DistinctUntilChangedSubscriber = (function (_super) {\n __extends(DistinctUntilChangedSubscriber, _super);\n function DistinctUntilChangedSubscriber(destination, compare, keySelector) {\n var _this = _super.call(this, destination) || this;\n _this.keySelector = keySelector;\n _this.hasKey = false;\n if (typeof compare === 'function') {\n _this.compare = compare;\n }\n return _this;\n }\n DistinctUntilChangedSubscriber.prototype.compare = function (x, y) {\n return x === y;\n };\n DistinctUntilChangedSubscriber.prototype._next = function (value) {\n var key;\n try {\n var keySelector = this.keySelector;\n key = keySelector ? keySelector(value) : value;\n }\n catch (err) {\n return this.destination.error(err);\n }\n var result = false;\n if (this.hasKey) {\n try {\n var compare = this.compare;\n result = compare(this.key, key);\n }\n catch (err) {\n return this.destination.error(err);\n }\n }\n else {\n this.hasKey = true;\n }\n if (!result) {\n this.key = key;\n this.destination.next(value);\n }\n };\n return DistinctUntilChangedSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=distinctUntilChanged.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar distinctUntilChanged_1 = require(\"./distinctUntilChanged\");\nfunction distinctUntilKeyChanged(key, compare) {\n return distinctUntilChanged_1.distinctUntilChanged(function (x, y) { return compare ? compare(x[key], y[key]) : x[key] === y[key]; });\n}\nexports.distinctUntilKeyChanged = distinctUntilKeyChanged;\n//# sourceMappingURL=distinctUntilKeyChanged.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ArgumentOutOfRangeError_1 = require(\"../util/ArgumentOutOfRangeError\");\nvar filter_1 = require(\"./filter\");\nvar throwIfEmpty_1 = require(\"./throwIfEmpty\");\nvar defaultIfEmpty_1 = require(\"./defaultIfEmpty\");\nvar take_1 = require(\"./take\");\nfunction elementAt(index, defaultValue) {\n if (index < 0) {\n throw new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError();\n }\n var hasDefaultValue = arguments.length >= 2;\n return function (source) { return source.pipe(filter_1.filter(function (v, i) { return i === index; }), take_1.take(1), hasDefaultValue\n ? defaultIfEmpty_1.defaultIfEmpty(defaultValue)\n : throwIfEmpty_1.throwIfEmpty(function () { return new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError(); })); };\n}\nexports.elementAt = elementAt;\n//# sourceMappingURL=elementAt.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EmptyError_1 = require(\"../util/EmptyError\");\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction throwIfEmpty(errorFactory) {\n if (errorFactory === void 0) { errorFactory = defaultErrorFactory; }\n return function (source) {\n return source.lift(new ThrowIfEmptyOperator(errorFactory));\n };\n}\nexports.throwIfEmpty = throwIfEmpty;\nvar ThrowIfEmptyOperator = (function () {\n function ThrowIfEmptyOperator(errorFactory) {\n this.errorFactory = errorFactory;\n }\n ThrowIfEmptyOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory));\n };\n return ThrowIfEmptyOperator;\n}());\nvar ThrowIfEmptySubscriber = (function (_super) {\n __extends(ThrowIfEmptySubscriber, _super);\n function ThrowIfEmptySubscriber(destination, errorFactory) {\n var _this = _super.call(this, destination) || this;\n _this.errorFactory = errorFactory;\n _this.hasValue = false;\n return _this;\n }\n ThrowIfEmptySubscriber.prototype._next = function (value) {\n this.hasValue = true;\n this.destination.next(value);\n };\n ThrowIfEmptySubscriber.prototype._complete = function () {\n if (!this.hasValue) {\n var err = void 0;\n try {\n err = this.errorFactory();\n }\n catch (e) {\n err = e;\n }\n this.destination.error(err);\n }\n else {\n return this.destination.complete();\n }\n };\n return ThrowIfEmptySubscriber;\n}(Subscriber_1.Subscriber));\nfunction defaultErrorFactory() {\n return new EmptyError_1.EmptyError();\n}\n//# sourceMappingURL=throwIfEmpty.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nvar ArgumentOutOfRangeError_1 = require(\"../util/ArgumentOutOfRangeError\");\nvar empty_1 = require(\"../observable/empty\");\nfunction take(count) {\n return function (source) {\n if (count === 0) {\n return empty_1.empty();\n }\n else {\n return source.lift(new TakeOperator(count));\n }\n };\n}\nexports.take = take;\nvar TakeOperator = (function () {\n function TakeOperator(total) {\n this.total = total;\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError;\n }\n }\n TakeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TakeSubscriber(subscriber, this.total));\n };\n return TakeOperator;\n}());\nvar TakeSubscriber = (function (_super) {\n __extends(TakeSubscriber, _super);\n function TakeSubscriber(destination, total) {\n var _this = _super.call(this, destination) || this;\n _this.total = total;\n _this.count = 0;\n return _this;\n }\n TakeSubscriber.prototype._next = function (value) {\n var total = this.total;\n var count = ++this.count;\n if (count <= total) {\n this.destination.next(value);\n if (count === total) {\n this.destination.complete();\n this.unsubscribe();\n }\n }\n };\n return TakeSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=take.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar concat_1 = require(\"../observable/concat\");\nvar of_1 = require(\"../observable/of\");\nfunction endWith() {\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i] = arguments[_i];\n }\n return function (source) { return concat_1.concat(source, of_1.of.apply(void 0, array)); };\n}\nexports.endWith = endWith;\n//# sourceMappingURL=endWith.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction every(predicate, thisArg) {\n return function (source) { return source.lift(new EveryOperator(predicate, thisArg, source)); };\n}\nexports.every = every;\nvar EveryOperator = (function () {\n function EveryOperator(predicate, thisArg, source) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n this.source = source;\n }\n EveryOperator.prototype.call = function (observer, source) {\n return source.subscribe(new EverySubscriber(observer, this.predicate, this.thisArg, this.source));\n };\n return EveryOperator;\n}());\nvar EverySubscriber = (function (_super) {\n __extends(EverySubscriber, _super);\n function EverySubscriber(destination, predicate, thisArg, source) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.thisArg = thisArg;\n _this.source = source;\n _this.index = 0;\n _this.thisArg = thisArg || _this;\n return _this;\n }\n EverySubscriber.prototype.notifyComplete = function (everyValueMatch) {\n this.destination.next(everyValueMatch);\n this.destination.complete();\n };\n EverySubscriber.prototype._next = function (value) {\n var result = false;\n try {\n result = this.predicate.call(this.thisArg, value, this.index++, this.source);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (!result) {\n this.notifyComplete(false);\n }\n };\n EverySubscriber.prototype._complete = function () {\n this.notifyComplete(true);\n };\n return EverySubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=every.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction exhaust() {\n return function (source) { return source.lift(new SwitchFirstOperator()); };\n}\nexports.exhaust = exhaust;\nvar SwitchFirstOperator = (function () {\n function SwitchFirstOperator() {\n }\n SwitchFirstOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SwitchFirstSubscriber(subscriber));\n };\n return SwitchFirstOperator;\n}());\nvar SwitchFirstSubscriber = (function (_super) {\n __extends(SwitchFirstSubscriber, _super);\n function SwitchFirstSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.hasCompleted = false;\n _this.hasSubscription = false;\n return _this;\n }\n SwitchFirstSubscriber.prototype._next = function (value) {\n if (!this.hasSubscription) {\n this.hasSubscription = true;\n this.add(subscribeToResult_1.subscribeToResult(this, value));\n }\n };\n SwitchFirstSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (!this.hasSubscription) {\n this.destination.complete();\n }\n };\n SwitchFirstSubscriber.prototype.notifyComplete = function (innerSub) {\n this.remove(innerSub);\n this.hasSubscription = false;\n if (this.hasCompleted) {\n this.destination.complete();\n }\n };\n return SwitchFirstSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=exhaust.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar InnerSubscriber_1 = require(\"../InnerSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nvar map_1 = require(\"./map\");\nvar from_1 = require(\"../observable/from\");\nfunction exhaustMap(project, resultSelector) {\n if (resultSelector) {\n return function (source) { return source.pipe(exhaustMap(function (a, i) { return from_1.from(project(a, i)).pipe(map_1.map(function (b, ii) { return resultSelector(a, b, i, ii); })); })); };\n }\n return function (source) {\n return source.lift(new ExhaustMapOperator(project));\n };\n}\nexports.exhaustMap = exhaustMap;\nvar ExhaustMapOperator = (function () {\n function ExhaustMapOperator(project) {\n this.project = project;\n }\n ExhaustMapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ExhaustMapSubscriber(subscriber, this.project));\n };\n return ExhaustMapOperator;\n}());\nvar ExhaustMapSubscriber = (function (_super) {\n __extends(ExhaustMapSubscriber, _super);\n function ExhaustMapSubscriber(destination, project) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.hasSubscription = false;\n _this.hasCompleted = false;\n _this.index = 0;\n return _this;\n }\n ExhaustMapSubscriber.prototype._next = function (value) {\n if (!this.hasSubscription) {\n this.tryNext(value);\n }\n };\n ExhaustMapSubscriber.prototype.tryNext = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.hasSubscription = true;\n this._innerSub(result, value, index);\n };\n ExhaustMapSubscriber.prototype._innerSub = function (result, value, index) {\n var innerSubscriber = new InnerSubscriber_1.InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n subscribeToResult_1.subscribeToResult(this, result, value, index, innerSubscriber);\n };\n ExhaustMapSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (!this.hasSubscription) {\n this.destination.complete();\n }\n this.unsubscribe();\n };\n ExhaustMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n ExhaustMapSubscriber.prototype.notifyError = function (err) {\n this.destination.error(err);\n };\n ExhaustMapSubscriber.prototype.notifyComplete = function (innerSub) {\n var destination = this.destination;\n destination.remove(innerSub);\n this.hasSubscription = false;\n if (this.hasCompleted) {\n this.destination.complete();\n }\n };\n return ExhaustMapSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=exhaustMap.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction expand(project, concurrent, scheduler) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n if (scheduler === void 0) { scheduler = undefined; }\n concurrent = (concurrent || 0) < 1 ? Number.POSITIVE_INFINITY : concurrent;\n return function (source) { return source.lift(new ExpandOperator(project, concurrent, scheduler)); };\n}\nexports.expand = expand;\nvar ExpandOperator = (function () {\n function ExpandOperator(project, concurrent, scheduler) {\n this.project = project;\n this.concurrent = concurrent;\n this.scheduler = scheduler;\n }\n ExpandOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ExpandSubscriber(subscriber, this.project, this.concurrent, this.scheduler));\n };\n return ExpandOperator;\n}());\nexports.ExpandOperator = ExpandOperator;\nvar ExpandSubscriber = (function (_super) {\n __extends(ExpandSubscriber, _super);\n function ExpandSubscriber(destination, project, concurrent, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.concurrent = concurrent;\n _this.scheduler = scheduler;\n _this.index = 0;\n _this.active = 0;\n _this.hasCompleted = false;\n if (concurrent < Number.POSITIVE_INFINITY) {\n _this.buffer = [];\n }\n return _this;\n }\n ExpandSubscriber.dispatch = function (arg) {\n var subscriber = arg.subscriber, result = arg.result, value = arg.value, index = arg.index;\n subscriber.subscribeToProjection(result, value, index);\n };\n ExpandSubscriber.prototype._next = function (value) {\n var destination = this.destination;\n if (destination.closed) {\n this._complete();\n return;\n }\n var index = this.index++;\n if (this.active < this.concurrent) {\n destination.next(value);\n try {\n var project = this.project;\n var result = project(value, index);\n if (!this.scheduler) {\n this.subscribeToProjection(result, value, index);\n }\n else {\n var state = { subscriber: this, result: result, value: value, index: index };\n var destination_1 = this.destination;\n destination_1.add(this.scheduler.schedule(ExpandSubscriber.dispatch, 0, state));\n }\n }\n catch (e) {\n destination.error(e);\n }\n }\n else {\n this.buffer.push(value);\n }\n };\n ExpandSubscriber.prototype.subscribeToProjection = function (result, value, index) {\n this.active++;\n var destination = this.destination;\n destination.add(subscribeToResult_1.subscribeToResult(this, result, value, index));\n };\n ExpandSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.hasCompleted && this.active === 0) {\n this.destination.complete();\n }\n this.unsubscribe();\n };\n ExpandSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this._next(innerValue);\n };\n ExpandSubscriber.prototype.notifyComplete = function (innerSub) {\n var buffer = this.buffer;\n var destination = this.destination;\n destination.remove(innerSub);\n this.active--;\n if (buffer && buffer.length > 0) {\n this._next(buffer.shift());\n }\n if (this.hasCompleted && this.active === 0) {\n this.destination.complete();\n }\n };\n return ExpandSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\nexports.ExpandSubscriber = ExpandSubscriber;\n//# sourceMappingURL=expand.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nvar Subscription_1 = require(\"../Subscription\");\nfunction finalize(callback) {\n return function (source) { return source.lift(new FinallyOperator(callback)); };\n}\nexports.finalize = finalize;\nvar FinallyOperator = (function () {\n function FinallyOperator(callback) {\n this.callback = callback;\n }\n FinallyOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new FinallySubscriber(subscriber, this.callback));\n };\n return FinallyOperator;\n}());\nvar FinallySubscriber = (function (_super) {\n __extends(FinallySubscriber, _super);\n function FinallySubscriber(destination, callback) {\n var _this = _super.call(this, destination) || this;\n _this.add(new Subscription_1.Subscription(callback));\n return _this;\n }\n return FinallySubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=finalize.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction find(predicate, thisArg) {\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate is not a function');\n }\n return function (source) { return source.lift(new FindValueOperator(predicate, source, false, thisArg)); };\n}\nexports.find = find;\nvar FindValueOperator = (function () {\n function FindValueOperator(predicate, source, yieldIndex, thisArg) {\n this.predicate = predicate;\n this.source = source;\n this.yieldIndex = yieldIndex;\n this.thisArg = thisArg;\n }\n FindValueOperator.prototype.call = function (observer, source) {\n return source.subscribe(new FindValueSubscriber(observer, this.predicate, this.source, this.yieldIndex, this.thisArg));\n };\n return FindValueOperator;\n}());\nexports.FindValueOperator = FindValueOperator;\nvar FindValueSubscriber = (function (_super) {\n __extends(FindValueSubscriber, _super);\n function FindValueSubscriber(destination, predicate, source, yieldIndex, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.source = source;\n _this.yieldIndex = yieldIndex;\n _this.thisArg = thisArg;\n _this.index = 0;\n return _this;\n }\n FindValueSubscriber.prototype.notifyComplete = function (value) {\n var destination = this.destination;\n destination.next(value);\n destination.complete();\n this.unsubscribe();\n };\n FindValueSubscriber.prototype._next = function (value) {\n var _a = this, predicate = _a.predicate, thisArg = _a.thisArg;\n var index = this.index++;\n try {\n var result = predicate.call(thisArg || this, value, index, this.source);\n if (result) {\n this.notifyComplete(this.yieldIndex ? index : value);\n }\n }\n catch (err) {\n this.destination.error(err);\n }\n };\n FindValueSubscriber.prototype._complete = function () {\n this.notifyComplete(this.yieldIndex ? -1 : undefined);\n };\n return FindValueSubscriber;\n}(Subscriber_1.Subscriber));\nexports.FindValueSubscriber = FindValueSubscriber;\n//# sourceMappingURL=find.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar find_1 = require(\"../operators/find\");\nfunction findIndex(predicate, thisArg) {\n return function (source) { return source.lift(new find_1.FindValueOperator(predicate, source, true, thisArg)); };\n}\nexports.findIndex = findIndex;\n//# sourceMappingURL=findIndex.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EmptyError_1 = require(\"../util/EmptyError\");\nvar filter_1 = require(\"./filter\");\nvar take_1 = require(\"./take\");\nvar defaultIfEmpty_1 = require(\"./defaultIfEmpty\");\nvar throwIfEmpty_1 = require(\"./throwIfEmpty\");\nvar identity_1 = require(\"../util/identity\");\nfunction first(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) { return source.pipe(predicate ? filter_1.filter(function (v, i) { return predicate(v, i, source); }) : identity_1.identity, take_1.take(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function () { return new EmptyError_1.EmptyError(); })); };\n}\nexports.first = first;\n//# sourceMappingURL=first.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction ignoreElements() {\n return function ignoreElementsOperatorFunction(source) {\n return source.lift(new IgnoreElementsOperator());\n };\n}\nexports.ignoreElements = ignoreElements;\nvar IgnoreElementsOperator = (function () {\n function IgnoreElementsOperator() {\n }\n IgnoreElementsOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new IgnoreElementsSubscriber(subscriber));\n };\n return IgnoreElementsOperator;\n}());\nvar IgnoreElementsSubscriber = (function (_super) {\n __extends(IgnoreElementsSubscriber, _super);\n function IgnoreElementsSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n IgnoreElementsSubscriber.prototype._next = function (unused) {\n };\n return IgnoreElementsSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=ignoreElements.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction isEmpty() {\n return function (source) { return source.lift(new IsEmptyOperator()); };\n}\nexports.isEmpty = isEmpty;\nvar IsEmptyOperator = (function () {\n function IsEmptyOperator() {\n }\n IsEmptyOperator.prototype.call = function (observer, source) {\n return source.subscribe(new IsEmptySubscriber(observer));\n };\n return IsEmptyOperator;\n}());\nvar IsEmptySubscriber = (function (_super) {\n __extends(IsEmptySubscriber, _super);\n function IsEmptySubscriber(destination) {\n return _super.call(this, destination) || this;\n }\n IsEmptySubscriber.prototype.notifyComplete = function (isEmpty) {\n var destination = this.destination;\n destination.next(isEmpty);\n destination.complete();\n };\n IsEmptySubscriber.prototype._next = function (value) {\n this.notifyComplete(false);\n };\n IsEmptySubscriber.prototype._complete = function () {\n this.notifyComplete(true);\n };\n return IsEmptySubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=isEmpty.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EmptyError_1 = require(\"../util/EmptyError\");\nvar filter_1 = require(\"./filter\");\nvar takeLast_1 = require(\"./takeLast\");\nvar throwIfEmpty_1 = require(\"./throwIfEmpty\");\nvar defaultIfEmpty_1 = require(\"./defaultIfEmpty\");\nvar identity_1 = require(\"../util/identity\");\nfunction last(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) { return source.pipe(predicate ? filter_1.filter(function (v, i) { return predicate(v, i, source); }) : identity_1.identity, takeLast_1.takeLast(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function () { return new EmptyError_1.EmptyError(); })); };\n}\nexports.last = last;\n//# sourceMappingURL=last.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nvar ArgumentOutOfRangeError_1 = require(\"../util/ArgumentOutOfRangeError\");\nvar empty_1 = require(\"../observable/empty\");\nfunction takeLast(count) {\n return function takeLastOperatorFunction(source) {\n if (count === 0) {\n return empty_1.empty();\n }\n else {\n return source.lift(new TakeLastOperator(count));\n }\n };\n}\nexports.takeLast = takeLast;\nvar TakeLastOperator = (function () {\n function TakeLastOperator(total) {\n this.total = total;\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError;\n }\n }\n TakeLastOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TakeLastSubscriber(subscriber, this.total));\n };\n return TakeLastOperator;\n}());\nvar TakeLastSubscriber = (function (_super) {\n __extends(TakeLastSubscriber, _super);\n function TakeLastSubscriber(destination, total) {\n var _this = _super.call(this, destination) || this;\n _this.total = total;\n _this.ring = new Array();\n _this.count = 0;\n return _this;\n }\n TakeLastSubscriber.prototype._next = function (value) {\n var ring = this.ring;\n var total = this.total;\n var count = this.count++;\n if (ring.length < total) {\n ring.push(value);\n }\n else {\n var index = count % total;\n ring[index] = value;\n }\n };\n TakeLastSubscriber.prototype._complete = function () {\n var destination = this.destination;\n var count = this.count;\n if (count > 0) {\n var total = this.count >= this.total ? this.total : this.count;\n var ring = this.ring;\n for (var i = 0; i < total; i++) {\n var idx = (count++) % total;\n destination.next(ring[idx]);\n }\n }\n destination.complete();\n };\n return TakeLastSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=takeLast.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction mapTo(value) {\n return function (source) { return source.lift(new MapToOperator(value)); };\n}\nexports.mapTo = mapTo;\nvar MapToOperator = (function () {\n function MapToOperator(value) {\n this.value = value;\n }\n MapToOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapToSubscriber(subscriber, this.value));\n };\n return MapToOperator;\n}());\nvar MapToSubscriber = (function (_super) {\n __extends(MapToSubscriber, _super);\n function MapToSubscriber(destination, value) {\n var _this = _super.call(this, destination) || this;\n _this.value = value;\n return _this;\n }\n MapToSubscriber.prototype._next = function (x) {\n this.destination.next(this.value);\n };\n return MapToSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=mapTo.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nvar Notification_1 = require(\"../Notification\");\nfunction materialize() {\n return function materializeOperatorFunction(source) {\n return source.lift(new MaterializeOperator());\n };\n}\nexports.materialize = materialize;\nvar MaterializeOperator = (function () {\n function MaterializeOperator() {\n }\n MaterializeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MaterializeSubscriber(subscriber));\n };\n return MaterializeOperator;\n}());\nvar MaterializeSubscriber = (function (_super) {\n __extends(MaterializeSubscriber, _super);\n function MaterializeSubscriber(destination) {\n return _super.call(this, destination) || this;\n }\n MaterializeSubscriber.prototype._next = function (value) {\n this.destination.next(Notification_1.Notification.createNext(value));\n };\n MaterializeSubscriber.prototype._error = function (err) {\n var destination = this.destination;\n destination.next(Notification_1.Notification.createError(err));\n destination.complete();\n };\n MaterializeSubscriber.prototype._complete = function () {\n var destination = this.destination;\n destination.next(Notification_1.Notification.createComplete());\n destination.complete();\n };\n return MaterializeSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=materialize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar reduce_1 = require(\"./reduce\");\nfunction max(comparer) {\n var max = (typeof comparer === 'function')\n ? function (x, y) { return comparer(x, y) > 0 ? x : y; }\n : function (x, y) { return x > y ? x : y; };\n return reduce_1.reduce(max);\n}\nexports.max = max;\n//# sourceMappingURL=max.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar scan_1 = require(\"./scan\");\nvar takeLast_1 = require(\"./takeLast\");\nvar defaultIfEmpty_1 = require(\"./defaultIfEmpty\");\nvar pipe_1 = require(\"../util/pipe\");\nfunction reduce(accumulator, seed) {\n if (arguments.length >= 2) {\n return function reduceOperatorFunctionWithSeed(source) {\n return pipe_1.pipe(scan_1.scan(accumulator, seed), takeLast_1.takeLast(1), defaultIfEmpty_1.defaultIfEmpty(seed))(source);\n };\n }\n return function reduceOperatorFunction(source) {\n return pipe_1.pipe(scan_1.scan(function (acc, value, index) { return accumulator(acc, value, index + 1); }), takeLast_1.takeLast(1))(source);\n };\n}\nexports.reduce = reduce;\n//# sourceMappingURL=reduce.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction scan(accumulator, seed) {\n var hasSeed = false;\n if (arguments.length >= 2) {\n hasSeed = true;\n }\n return function scanOperatorFunction(source) {\n return source.lift(new ScanOperator(accumulator, seed, hasSeed));\n };\n}\nexports.scan = scan;\nvar ScanOperator = (function () {\n function ScanOperator(accumulator, seed, hasSeed) {\n if (hasSeed === void 0) { hasSeed = false; }\n this.accumulator = accumulator;\n this.seed = seed;\n this.hasSeed = hasSeed;\n }\n ScanOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ScanSubscriber(subscriber, this.accumulator, this.seed, this.hasSeed));\n };\n return ScanOperator;\n}());\nvar ScanSubscriber = (function (_super) {\n __extends(ScanSubscriber, _super);\n function ScanSubscriber(destination, accumulator, _seed, hasSeed) {\n var _this = _super.call(this, destination) || this;\n _this.accumulator = accumulator;\n _this._seed = _seed;\n _this.hasSeed = hasSeed;\n _this.index = 0;\n return _this;\n }\n Object.defineProperty(ScanSubscriber.prototype, \"seed\", {\n get: function () {\n return this._seed;\n },\n set: function (value) {\n this.hasSeed = true;\n this._seed = value;\n },\n enumerable: true,\n configurable: true\n });\n ScanSubscriber.prototype._next = function (value) {\n if (!this.hasSeed) {\n this.seed = value;\n this.destination.next(value);\n }\n else {\n return this._tryNext(value);\n }\n };\n ScanSubscriber.prototype._tryNext = function (value) {\n var index = this.index++;\n var result;\n try {\n result = this.accumulator(this.seed, value, index);\n }\n catch (err) {\n this.destination.error(err);\n }\n this.seed = result;\n this.destination.next(result);\n };\n return ScanSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=scan.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar merge_1 = require(\"../observable/merge\");\nfunction merge() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return function (source) { return source.lift.call(merge_1.merge.apply(void 0, [source].concat(observables))); };\n}\nexports.merge = merge;\n//# sourceMappingURL=merge.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar mergeMap_1 = require(\"./mergeMap\");\nfunction mergeMapTo(innerObservable, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n if (typeof resultSelector === 'function') {\n return mergeMap_1.mergeMap(function () { return innerObservable; }, resultSelector, concurrent);\n }\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return mergeMap_1.mergeMap(function () { return innerObservable; }, concurrent);\n}\nexports.mergeMapTo = mergeMapTo;\n//# sourceMappingURL=mergeMapTo.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar InnerSubscriber_1 = require(\"../InnerSubscriber\");\nfunction mergeScan(accumulator, seed, concurrent) {\n if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }\n return function (source) { return source.lift(new MergeScanOperator(accumulator, seed, concurrent)); };\n}\nexports.mergeScan = mergeScan;\nvar MergeScanOperator = (function () {\n function MergeScanOperator(accumulator, seed, concurrent) {\n this.accumulator = accumulator;\n this.seed = seed;\n this.concurrent = concurrent;\n }\n MergeScanOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MergeScanSubscriber(subscriber, this.accumulator, this.seed, this.concurrent));\n };\n return MergeScanOperator;\n}());\nexports.MergeScanOperator = MergeScanOperator;\nvar MergeScanSubscriber = (function (_super) {\n __extends(MergeScanSubscriber, _super);\n function MergeScanSubscriber(destination, accumulator, acc, concurrent) {\n var _this = _super.call(this, destination) || this;\n _this.accumulator = accumulator;\n _this.acc = acc;\n _this.concurrent = concurrent;\n _this.hasValue = false;\n _this.hasCompleted = false;\n _this.buffer = [];\n _this.active = 0;\n _this.index = 0;\n return _this;\n }\n MergeScanSubscriber.prototype._next = function (value) {\n if (this.active < this.concurrent) {\n var index = this.index++;\n var destination = this.destination;\n var ish = void 0;\n try {\n var accumulator = this.accumulator;\n ish = accumulator(this.acc, value, index);\n }\n catch (e) {\n return destination.error(e);\n }\n this.active++;\n this._innerSub(ish, value, index);\n }\n else {\n this.buffer.push(value);\n }\n };\n MergeScanSubscriber.prototype._innerSub = function (ish, value, index) {\n var innerSubscriber = new InnerSubscriber_1.InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n subscribeToResult_1.subscribeToResult(this, ish, value, index, innerSubscriber);\n };\n MergeScanSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n if (this.hasValue === false) {\n this.destination.next(this.acc);\n }\n this.destination.complete();\n }\n this.unsubscribe();\n };\n MergeScanSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n var destination = this.destination;\n this.acc = innerValue;\n this.hasValue = true;\n destination.next(innerValue);\n };\n MergeScanSubscriber.prototype.notifyComplete = function (innerSub) {\n var buffer = this.buffer;\n var destination = this.destination;\n destination.remove(innerSub);\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n if (this.hasValue === false) {\n this.destination.next(this.acc);\n }\n this.destination.complete();\n }\n };\n return MergeScanSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\nexports.MergeScanSubscriber = MergeScanSubscriber;\n//# sourceMappingURL=mergeScan.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar reduce_1 = require(\"./reduce\");\nfunction min(comparer) {\n var min = (typeof comparer === 'function')\n ? function (x, y) { return comparer(x, y) < 0 ? x : y; }\n : function (x, y) { return x < y ? x : y; };\n return reduce_1.reduce(min);\n}\nexports.min = min;\n//# sourceMappingURL=min.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ConnectableObservable_1 = require(\"../observable/ConnectableObservable\");\nfunction multicast(subjectOrSubjectFactory, selector) {\n return function multicastOperatorFunction(source) {\n var subjectFactory;\n if (typeof subjectOrSubjectFactory === 'function') {\n subjectFactory = subjectOrSubjectFactory;\n }\n else {\n subjectFactory = function subjectFactory() {\n return subjectOrSubjectFactory;\n };\n }\n if (typeof selector === 'function') {\n return source.lift(new MulticastOperator(subjectFactory, selector));\n }\n var connectable = Object.create(source, ConnectableObservable_1.connectableObservableDescriptor);\n connectable.source = source;\n connectable.subjectFactory = subjectFactory;\n return connectable;\n };\n}\nexports.multicast = multicast;\nvar MulticastOperator = (function () {\n function MulticastOperator(subjectFactory, selector) {\n this.subjectFactory = subjectFactory;\n this.selector = selector;\n }\n MulticastOperator.prototype.call = function (subscriber, source) {\n var selector = this.selector;\n var subject = this.subjectFactory();\n var subscription = selector(subject).subscribe(subscriber);\n subscription.add(source.subscribe(subject));\n return subscription;\n };\n return MulticastOperator;\n}());\nexports.MulticastOperator = MulticastOperator;\n//# sourceMappingURL=multicast.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar from_1 = require(\"../observable/from\");\nvar isArray_1 = require(\"../util/isArray\");\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar InnerSubscriber_1 = require(\"../InnerSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction onErrorResumeNext() {\n var nextSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nextSources[_i] = arguments[_i];\n }\n if (nextSources.length === 1 && isArray_1.isArray(nextSources[0])) {\n nextSources = nextSources[0];\n }\n return function (source) { return source.lift(new OnErrorResumeNextOperator(nextSources)); };\n}\nexports.onErrorResumeNext = onErrorResumeNext;\nfunction onErrorResumeNextStatic() {\n var nextSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nextSources[_i] = arguments[_i];\n }\n var source = null;\n if (nextSources.length === 1 && isArray_1.isArray(nextSources[0])) {\n nextSources = nextSources[0];\n }\n source = nextSources.shift();\n return from_1.from(source, null).lift(new OnErrorResumeNextOperator(nextSources));\n}\nexports.onErrorResumeNextStatic = onErrorResumeNextStatic;\nvar OnErrorResumeNextOperator = (function () {\n function OnErrorResumeNextOperator(nextSources) {\n this.nextSources = nextSources;\n }\n OnErrorResumeNextOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new OnErrorResumeNextSubscriber(subscriber, this.nextSources));\n };\n return OnErrorResumeNextOperator;\n}());\nvar OnErrorResumeNextSubscriber = (function (_super) {\n __extends(OnErrorResumeNextSubscriber, _super);\n function OnErrorResumeNextSubscriber(destination, nextSources) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n _this.nextSources = nextSources;\n return _this;\n }\n OnErrorResumeNextSubscriber.prototype.notifyError = function (error, innerSub) {\n this.subscribeToNextSource();\n };\n OnErrorResumeNextSubscriber.prototype.notifyComplete = function (innerSub) {\n this.subscribeToNextSource();\n };\n OnErrorResumeNextSubscriber.prototype._error = function (err) {\n this.subscribeToNextSource();\n this.unsubscribe();\n };\n OnErrorResumeNextSubscriber.prototype._complete = function () {\n this.subscribeToNextSource();\n this.unsubscribe();\n };\n OnErrorResumeNextSubscriber.prototype.subscribeToNextSource = function () {\n var next = this.nextSources.shift();\n if (!!next) {\n var innerSubscriber = new InnerSubscriber_1.InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n subscribeToResult_1.subscribeToResult(this, next, undefined, undefined, innerSubscriber);\n }\n else {\n this.destination.complete();\n }\n };\n return OnErrorResumeNextSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=onErrorResumeNext.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction pairwise() {\n return function (source) { return source.lift(new PairwiseOperator()); };\n}\nexports.pairwise = pairwise;\nvar PairwiseOperator = (function () {\n function PairwiseOperator() {\n }\n PairwiseOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new PairwiseSubscriber(subscriber));\n };\n return PairwiseOperator;\n}());\nvar PairwiseSubscriber = (function (_super) {\n __extends(PairwiseSubscriber, _super);\n function PairwiseSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.hasPrev = false;\n return _this;\n }\n PairwiseSubscriber.prototype._next = function (value) {\n var pair;\n if (this.hasPrev) {\n pair = [this.prev, value];\n }\n else {\n this.hasPrev = true;\n }\n this.prev = value;\n if (pair) {\n this.destination.next(pair);\n }\n };\n return PairwiseSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=pairwise.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar not_1 = require(\"../util/not\");\nvar filter_1 = require(\"./filter\");\nfunction partition(predicate, thisArg) {\n return function (source) { return [\n filter_1.filter(predicate, thisArg)(source),\n filter_1.filter(not_1.not(predicate, thisArg))(source)\n ]; };\n}\nexports.partition = partition;\n//# sourceMappingURL=partition.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar map_1 = require(\"./map\");\nfunction pluck() {\n var properties = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n properties[_i] = arguments[_i];\n }\n var length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return function (source) { return map_1.map(plucker(properties, length))(source); };\n}\nexports.pluck = pluck;\nfunction plucker(props, length) {\n var mapper = function (x) {\n var currentProp = x;\n for (var i = 0; i < length; i++) {\n var p = currentProp[props[i]];\n if (typeof p !== 'undefined') {\n currentProp = p;\n }\n else {\n return undefined;\n }\n }\n return currentProp;\n };\n return mapper;\n}\n//# sourceMappingURL=pluck.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subject_1 = require(\"../Subject\");\nvar multicast_1 = require(\"./multicast\");\nfunction publish(selector) {\n return selector ?\n multicast_1.multicast(function () { return new Subject_1.Subject(); }, selector) :\n multicast_1.multicast(new Subject_1.Subject());\n}\nexports.publish = publish;\n//# sourceMappingURL=publish.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BehaviorSubject_1 = require(\"../BehaviorSubject\");\nvar multicast_1 = require(\"./multicast\");\nfunction publishBehavior(value) {\n return function (source) { return multicast_1.multicast(new BehaviorSubject_1.BehaviorSubject(value))(source); };\n}\nexports.publishBehavior = publishBehavior;\n//# sourceMappingURL=publishBehavior.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AsyncSubject_1 = require(\"../AsyncSubject\");\nvar multicast_1 = require(\"./multicast\");\nfunction publishLast() {\n return function (source) { return multicast_1.multicast(new AsyncSubject_1.AsyncSubject())(source); };\n}\nexports.publishLast = publishLast;\n//# sourceMappingURL=publishLast.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ReplaySubject_1 = require(\"../ReplaySubject\");\nvar multicast_1 = require(\"./multicast\");\nfunction publishReplay(bufferSize, windowTime, selectorOrScheduler, scheduler) {\n if (selectorOrScheduler && typeof selectorOrScheduler !== 'function') {\n scheduler = selectorOrScheduler;\n }\n var selector = typeof selectorOrScheduler === 'function' ? selectorOrScheduler : undefined;\n var subject = new ReplaySubject_1.ReplaySubject(bufferSize, windowTime, scheduler);\n return function (source) { return multicast_1.multicast(function () { return subject; }, selector)(source); };\n}\nexports.publishReplay = publishReplay;\n//# sourceMappingURL=publishReplay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar isArray_1 = require(\"../util/isArray\");\nvar race_1 = require(\"../observable/race\");\nfunction race() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return function raceOperatorFunction(source) {\n if (observables.length === 1 && isArray_1.isArray(observables[0])) {\n observables = observables[0];\n }\n return source.lift.call(race_1.race.apply(void 0, [source].concat(observables)));\n };\n}\nexports.race = race;\n//# sourceMappingURL=race.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nvar empty_1 = require(\"../observable/empty\");\nfunction repeat(count) {\n if (count === void 0) { count = -1; }\n return function (source) {\n if (count === 0) {\n return empty_1.empty();\n }\n else if (count < 0) {\n return source.lift(new RepeatOperator(-1, source));\n }\n else {\n return source.lift(new RepeatOperator(count - 1, source));\n }\n };\n}\nexports.repeat = repeat;\nvar RepeatOperator = (function () {\n function RepeatOperator(count, source) {\n this.count = count;\n this.source = source;\n }\n RepeatOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RepeatSubscriber(subscriber, this.count, this.source));\n };\n return RepeatOperator;\n}());\nvar RepeatSubscriber = (function (_super) {\n __extends(RepeatSubscriber, _super);\n function RepeatSubscriber(destination, count, source) {\n var _this = _super.call(this, destination) || this;\n _this.count = count;\n _this.source = source;\n return _this;\n }\n RepeatSubscriber.prototype.complete = function () {\n if (!this.isStopped) {\n var _a = this, source = _a.source, count = _a.count;\n if (count === 0) {\n return _super.prototype.complete.call(this);\n }\n else if (count > -1) {\n this.count = count - 1;\n }\n source.subscribe(this._unsubscribeAndRecycle());\n }\n };\n return RepeatSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=repeat.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subject_1 = require(\"../Subject\");\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction repeatWhen(notifier) {\n return function (source) { return source.lift(new RepeatWhenOperator(notifier)); };\n}\nexports.repeatWhen = repeatWhen;\nvar RepeatWhenOperator = (function () {\n function RepeatWhenOperator(notifier) {\n this.notifier = notifier;\n }\n RepeatWhenOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RepeatWhenSubscriber(subscriber, this.notifier, source));\n };\n return RepeatWhenOperator;\n}());\nvar RepeatWhenSubscriber = (function (_super) {\n __extends(RepeatWhenSubscriber, _super);\n function RepeatWhenSubscriber(destination, notifier, source) {\n var _this = _super.call(this, destination) || this;\n _this.notifier = notifier;\n _this.source = source;\n _this.sourceIsBeingSubscribedTo = true;\n return _this;\n }\n RepeatWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.sourceIsBeingSubscribedTo = true;\n this.source.subscribe(this);\n };\n RepeatWhenSubscriber.prototype.notifyComplete = function (innerSub) {\n if (this.sourceIsBeingSubscribedTo === false) {\n return _super.prototype.complete.call(this);\n }\n };\n RepeatWhenSubscriber.prototype.complete = function () {\n this.sourceIsBeingSubscribedTo = false;\n if (!this.isStopped) {\n if (!this.retries) {\n this.subscribeToRetries();\n }\n if (!this.retriesSubscription || this.retriesSubscription.closed) {\n return _super.prototype.complete.call(this);\n }\n this._unsubscribeAndRecycle();\n this.notifications.next();\n }\n };\n RepeatWhenSubscriber.prototype._unsubscribe = function () {\n var _a = this, notifications = _a.notifications, retriesSubscription = _a.retriesSubscription;\n if (notifications) {\n notifications.unsubscribe();\n this.notifications = null;\n }\n if (retriesSubscription) {\n retriesSubscription.unsubscribe();\n this.retriesSubscription = null;\n }\n this.retries = null;\n };\n RepeatWhenSubscriber.prototype._unsubscribeAndRecycle = function () {\n var _unsubscribe = this._unsubscribe;\n this._unsubscribe = null;\n _super.prototype._unsubscribeAndRecycle.call(this);\n this._unsubscribe = _unsubscribe;\n return this;\n };\n RepeatWhenSubscriber.prototype.subscribeToRetries = function () {\n this.notifications = new Subject_1.Subject();\n var retries;\n try {\n var notifier = this.notifier;\n retries = notifier(this.notifications);\n }\n catch (e) {\n return _super.prototype.complete.call(this);\n }\n this.retries = retries;\n this.retriesSubscription = subscribeToResult_1.subscribeToResult(this, retries);\n };\n return RepeatWhenSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=repeatWhen.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction retry(count) {\n if (count === void 0) { count = -1; }\n return function (source) { return source.lift(new RetryOperator(count, source)); };\n}\nexports.retry = retry;\nvar RetryOperator = (function () {\n function RetryOperator(count, source) {\n this.count = count;\n this.source = source;\n }\n RetryOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RetrySubscriber(subscriber, this.count, this.source));\n };\n return RetryOperator;\n}());\nvar RetrySubscriber = (function (_super) {\n __extends(RetrySubscriber, _super);\n function RetrySubscriber(destination, count, source) {\n var _this = _super.call(this, destination) || this;\n _this.count = count;\n _this.source = source;\n return _this;\n }\n RetrySubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _a = this, source = _a.source, count = _a.count;\n if (count === 0) {\n return _super.prototype.error.call(this, err);\n }\n else if (count > -1) {\n this.count = count - 1;\n }\n source.subscribe(this._unsubscribeAndRecycle());\n }\n };\n return RetrySubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=retry.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subject_1 = require(\"../Subject\");\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction retryWhen(notifier) {\n return function (source) { return source.lift(new RetryWhenOperator(notifier, source)); };\n}\nexports.retryWhen = retryWhen;\nvar RetryWhenOperator = (function () {\n function RetryWhenOperator(notifier, source) {\n this.notifier = notifier;\n this.source = source;\n }\n RetryWhenOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RetryWhenSubscriber(subscriber, this.notifier, this.source));\n };\n return RetryWhenOperator;\n}());\nvar RetryWhenSubscriber = (function (_super) {\n __extends(RetryWhenSubscriber, _super);\n function RetryWhenSubscriber(destination, notifier, source) {\n var _this = _super.call(this, destination) || this;\n _this.notifier = notifier;\n _this.source = source;\n return _this;\n }\n RetryWhenSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var errors = this.errors;\n var retries = this.retries;\n var retriesSubscription = this.retriesSubscription;\n if (!retries) {\n errors = new Subject_1.Subject();\n try {\n var notifier = this.notifier;\n retries = notifier(errors);\n }\n catch (e) {\n return _super.prototype.error.call(this, e);\n }\n retriesSubscription = subscribeToResult_1.subscribeToResult(this, retries);\n }\n else {\n this.errors = null;\n this.retriesSubscription = null;\n }\n this._unsubscribeAndRecycle();\n this.errors = errors;\n this.retries = retries;\n this.retriesSubscription = retriesSubscription;\n errors.next(err);\n }\n };\n RetryWhenSubscriber.prototype._unsubscribe = function () {\n var _a = this, errors = _a.errors, retriesSubscription = _a.retriesSubscription;\n if (errors) {\n errors.unsubscribe();\n this.errors = null;\n }\n if (retriesSubscription) {\n retriesSubscription.unsubscribe();\n this.retriesSubscription = null;\n }\n this.retries = null;\n };\n RetryWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n var _unsubscribe = this._unsubscribe;\n this._unsubscribe = null;\n this._unsubscribeAndRecycle();\n this._unsubscribe = _unsubscribe;\n this.source.subscribe(this);\n };\n return RetryWhenSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=retryWhen.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction sample(notifier) {\n return function (source) { return source.lift(new SampleOperator(notifier)); };\n}\nexports.sample = sample;\nvar SampleOperator = (function () {\n function SampleOperator(notifier) {\n this.notifier = notifier;\n }\n SampleOperator.prototype.call = function (subscriber, source) {\n var sampleSubscriber = new SampleSubscriber(subscriber);\n var subscription = source.subscribe(sampleSubscriber);\n subscription.add(subscribeToResult_1.subscribeToResult(sampleSubscriber, this.notifier));\n return subscription;\n };\n return SampleOperator;\n}());\nvar SampleSubscriber = (function (_super) {\n __extends(SampleSubscriber, _super);\n function SampleSubscriber() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.hasValue = false;\n return _this;\n }\n SampleSubscriber.prototype._next = function (value) {\n this.value = value;\n this.hasValue = true;\n };\n SampleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.emitValue();\n };\n SampleSubscriber.prototype.notifyComplete = function () {\n this.emitValue();\n };\n SampleSubscriber.prototype.emitValue = function () {\n if (this.hasValue) {\n this.hasValue = false;\n this.destination.next(this.value);\n }\n };\n return SampleSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=sample.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nvar async_1 = require(\"../scheduler/async\");\nfunction sampleTime(period, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.async; }\n return function (source) { return source.lift(new SampleTimeOperator(period, scheduler)); };\n}\nexports.sampleTime = sampleTime;\nvar SampleTimeOperator = (function () {\n function SampleTimeOperator(period, scheduler) {\n this.period = period;\n this.scheduler = scheduler;\n }\n SampleTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SampleTimeSubscriber(subscriber, this.period, this.scheduler));\n };\n return SampleTimeOperator;\n}());\nvar SampleTimeSubscriber = (function (_super) {\n __extends(SampleTimeSubscriber, _super);\n function SampleTimeSubscriber(destination, period, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.period = period;\n _this.scheduler = scheduler;\n _this.hasValue = false;\n _this.add(scheduler.schedule(dispatchNotification, period, { subscriber: _this, period: period }));\n return _this;\n }\n SampleTimeSubscriber.prototype._next = function (value) {\n this.lastValue = value;\n this.hasValue = true;\n };\n SampleTimeSubscriber.prototype.notifyNext = function () {\n if (this.hasValue) {\n this.hasValue = false;\n this.destination.next(this.lastValue);\n }\n };\n return SampleTimeSubscriber;\n}(Subscriber_1.Subscriber));\nfunction dispatchNotification(state) {\n var subscriber = state.subscriber, period = state.period;\n subscriber.notifyNext();\n this.schedule(state, period);\n}\n//# sourceMappingURL=sampleTime.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction sequenceEqual(compareTo, comparator) {\n return function (source) { return source.lift(new SequenceEqualOperator(compareTo, comparator)); };\n}\nexports.sequenceEqual = sequenceEqual;\nvar SequenceEqualOperator = (function () {\n function SequenceEqualOperator(compareTo, comparator) {\n this.compareTo = compareTo;\n this.comparator = comparator;\n }\n SequenceEqualOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SequenceEqualSubscriber(subscriber, this.compareTo, this.comparator));\n };\n return SequenceEqualOperator;\n}());\nexports.SequenceEqualOperator = SequenceEqualOperator;\nvar SequenceEqualSubscriber = (function (_super) {\n __extends(SequenceEqualSubscriber, _super);\n function SequenceEqualSubscriber(destination, compareTo, comparator) {\n var _this = _super.call(this, destination) || this;\n _this.compareTo = compareTo;\n _this.comparator = comparator;\n _this._a = [];\n _this._b = [];\n _this._oneComplete = false;\n _this.destination.add(compareTo.subscribe(new SequenceEqualCompareToSubscriber(destination, _this)));\n return _this;\n }\n SequenceEqualSubscriber.prototype._next = function (value) {\n if (this._oneComplete && this._b.length === 0) {\n this.emit(false);\n }\n else {\n this._a.push(value);\n this.checkValues();\n }\n };\n SequenceEqualSubscriber.prototype._complete = function () {\n if (this._oneComplete) {\n this.emit(this._a.length === 0 && this._b.length === 0);\n }\n else {\n this._oneComplete = true;\n }\n this.unsubscribe();\n };\n SequenceEqualSubscriber.prototype.checkValues = function () {\n var _c = this, _a = _c._a, _b = _c._b, comparator = _c.comparator;\n while (_a.length > 0 && _b.length > 0) {\n var a = _a.shift();\n var b = _b.shift();\n var areEqual = false;\n try {\n areEqual = comparator ? comparator(a, b) : a === b;\n }\n catch (e) {\n this.destination.error(e);\n }\n if (!areEqual) {\n this.emit(false);\n }\n }\n };\n SequenceEqualSubscriber.prototype.emit = function (value) {\n var destination = this.destination;\n destination.next(value);\n destination.complete();\n };\n SequenceEqualSubscriber.prototype.nextB = function (value) {\n if (this._oneComplete && this._a.length === 0) {\n this.emit(false);\n }\n else {\n this._b.push(value);\n this.checkValues();\n }\n };\n SequenceEqualSubscriber.prototype.completeB = function () {\n if (this._oneComplete) {\n this.emit(this._a.length === 0 && this._b.length === 0);\n }\n else {\n this._oneComplete = true;\n }\n };\n return SequenceEqualSubscriber;\n}(Subscriber_1.Subscriber));\nexports.SequenceEqualSubscriber = SequenceEqualSubscriber;\nvar SequenceEqualCompareToSubscriber = (function (_super) {\n __extends(SequenceEqualCompareToSubscriber, _super);\n function SequenceEqualCompareToSubscriber(destination, parent) {\n var _this = _super.call(this, destination) || this;\n _this.parent = parent;\n return _this;\n }\n SequenceEqualCompareToSubscriber.prototype._next = function (value) {\n this.parent.nextB(value);\n };\n SequenceEqualCompareToSubscriber.prototype._error = function (err) {\n this.parent.error(err);\n this.unsubscribe();\n };\n SequenceEqualCompareToSubscriber.prototype._complete = function () {\n this.parent.completeB();\n this.unsubscribe();\n };\n return SequenceEqualCompareToSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=sequenceEqual.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar multicast_1 = require(\"./multicast\");\nvar refCount_1 = require(\"./refCount\");\nvar Subject_1 = require(\"../Subject\");\nfunction shareSubjectFactory() {\n return new Subject_1.Subject();\n}\nfunction share() {\n return function (source) { return refCount_1.refCount()(multicast_1.multicast(shareSubjectFactory)(source)); };\n}\nexports.share = share;\n//# sourceMappingURL=share.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ReplaySubject_1 = require(\"../ReplaySubject\");\nfunction shareReplay(configOrBufferSize, windowTime, scheduler) {\n var config;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n config = configOrBufferSize;\n }\n else {\n config = {\n bufferSize: configOrBufferSize,\n windowTime: windowTime,\n refCount: false,\n scheduler: scheduler\n };\n }\n return function (source) { return source.lift(shareReplayOperator(config)); };\n}\nexports.shareReplay = shareReplay;\nfunction shareReplayOperator(_a) {\n var _b = _a.bufferSize, bufferSize = _b === void 0 ? Number.POSITIVE_INFINITY : _b, _c = _a.windowTime, windowTime = _c === void 0 ? Number.POSITIVE_INFINITY : _c, useRefCount = _a.refCount, scheduler = _a.scheduler;\n var subject;\n var refCount = 0;\n var subscription;\n var hasError = false;\n var isComplete = false;\n return function shareReplayOperation(source) {\n refCount++;\n if (!subject || hasError) {\n hasError = false;\n subject = new ReplaySubject_1.ReplaySubject(bufferSize, windowTime, scheduler);\n subscription = source.subscribe({\n next: function (value) { subject.next(value); },\n error: function (err) {\n hasError = true;\n subject.error(err);\n },\n complete: function () {\n isComplete = true;\n subject.complete();\n },\n });\n }\n var innerSub = subject.subscribe(this);\n this.add(function () {\n refCount--;\n innerSub.unsubscribe();\n if (subscription && !isComplete && useRefCount && refCount === 0) {\n subscription.unsubscribe();\n subscription = undefined;\n subject = undefined;\n }\n });\n };\n}\n//# sourceMappingURL=shareReplay.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nvar EmptyError_1 = require(\"../util/EmptyError\");\nfunction single(predicate) {\n return function (source) { return source.lift(new SingleOperator(predicate, source)); };\n}\nexports.single = single;\nvar SingleOperator = (function () {\n function SingleOperator(predicate, source) {\n this.predicate = predicate;\n this.source = source;\n }\n SingleOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SingleSubscriber(subscriber, this.predicate, this.source));\n };\n return SingleOperator;\n}());\nvar SingleSubscriber = (function (_super) {\n __extends(SingleSubscriber, _super);\n function SingleSubscriber(destination, predicate, source) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.source = source;\n _this.seenValue = false;\n _this.index = 0;\n return _this;\n }\n SingleSubscriber.prototype.applySingleValue = function (value) {\n if (this.seenValue) {\n this.destination.error('Sequence contains more than one element');\n }\n else {\n this.seenValue = true;\n this.singleValue = value;\n }\n };\n SingleSubscriber.prototype._next = function (value) {\n var index = this.index++;\n if (this.predicate) {\n this.tryNext(value, index);\n }\n else {\n this.applySingleValue(value);\n }\n };\n SingleSubscriber.prototype.tryNext = function (value, index) {\n try {\n if (this.predicate(value, index, this.source)) {\n this.applySingleValue(value);\n }\n }\n catch (err) {\n this.destination.error(err);\n }\n };\n SingleSubscriber.prototype._complete = function () {\n var destination = this.destination;\n if (this.index > 0) {\n destination.next(this.seenValue ? this.singleValue : undefined);\n destination.complete();\n }\n else {\n destination.error(new EmptyError_1.EmptyError);\n }\n };\n return SingleSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=single.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction skip(count) {\n return function (source) { return source.lift(new SkipOperator(count)); };\n}\nexports.skip = skip;\nvar SkipOperator = (function () {\n function SkipOperator(total) {\n this.total = total;\n }\n SkipOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SkipSubscriber(subscriber, this.total));\n };\n return SkipOperator;\n}());\nvar SkipSubscriber = (function (_super) {\n __extends(SkipSubscriber, _super);\n function SkipSubscriber(destination, total) {\n var _this = _super.call(this, destination) || this;\n _this.total = total;\n _this.count = 0;\n return _this;\n }\n SkipSubscriber.prototype._next = function (x) {\n if (++this.count > this.total) {\n this.destination.next(x);\n }\n };\n return SkipSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=skip.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nvar ArgumentOutOfRangeError_1 = require(\"../util/ArgumentOutOfRangeError\");\nfunction skipLast(count) {\n return function (source) { return source.lift(new SkipLastOperator(count)); };\n}\nexports.skipLast = skipLast;\nvar SkipLastOperator = (function () {\n function SkipLastOperator(_skipCount) {\n this._skipCount = _skipCount;\n if (this._skipCount < 0) {\n throw new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError;\n }\n }\n SkipLastOperator.prototype.call = function (subscriber, source) {\n if (this._skipCount === 0) {\n return source.subscribe(new Subscriber_1.Subscriber(subscriber));\n }\n else {\n return source.subscribe(new SkipLastSubscriber(subscriber, this._skipCount));\n }\n };\n return SkipLastOperator;\n}());\nvar SkipLastSubscriber = (function (_super) {\n __extends(SkipLastSubscriber, _super);\n function SkipLastSubscriber(destination, _skipCount) {\n var _this = _super.call(this, destination) || this;\n _this._skipCount = _skipCount;\n _this._count = 0;\n _this._ring = new Array(_skipCount);\n return _this;\n }\n SkipLastSubscriber.prototype._next = function (value) {\n var skipCount = this._skipCount;\n var count = this._count++;\n if (count < skipCount) {\n this._ring[count] = value;\n }\n else {\n var currentIndex = count % skipCount;\n var ring = this._ring;\n var oldValue = ring[currentIndex];\n ring[currentIndex] = value;\n this.destination.next(oldValue);\n }\n };\n return SkipLastSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=skipLast.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar InnerSubscriber_1 = require(\"../InnerSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction skipUntil(notifier) {\n return function (source) { return source.lift(new SkipUntilOperator(notifier)); };\n}\nexports.skipUntil = skipUntil;\nvar SkipUntilOperator = (function () {\n function SkipUntilOperator(notifier) {\n this.notifier = notifier;\n }\n SkipUntilOperator.prototype.call = function (destination, source) {\n return source.subscribe(new SkipUntilSubscriber(destination, this.notifier));\n };\n return SkipUntilOperator;\n}());\nvar SkipUntilSubscriber = (function (_super) {\n __extends(SkipUntilSubscriber, _super);\n function SkipUntilSubscriber(destination, notifier) {\n var _this = _super.call(this, destination) || this;\n _this.hasValue = false;\n var innerSubscriber = new InnerSubscriber_1.InnerSubscriber(_this, undefined, undefined);\n _this.add(innerSubscriber);\n _this.innerSubscription = innerSubscriber;\n subscribeToResult_1.subscribeToResult(_this, notifier, undefined, undefined, innerSubscriber);\n return _this;\n }\n SkipUntilSubscriber.prototype._next = function (value) {\n if (this.hasValue) {\n _super.prototype._next.call(this, value);\n }\n };\n SkipUntilSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.hasValue = true;\n if (this.innerSubscription) {\n this.innerSubscription.unsubscribe();\n }\n };\n SkipUntilSubscriber.prototype.notifyComplete = function () {\n };\n return SkipUntilSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=skipUntil.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction skipWhile(predicate) {\n return function (source) { return source.lift(new SkipWhileOperator(predicate)); };\n}\nexports.skipWhile = skipWhile;\nvar SkipWhileOperator = (function () {\n function SkipWhileOperator(predicate) {\n this.predicate = predicate;\n }\n SkipWhileOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SkipWhileSubscriber(subscriber, this.predicate));\n };\n return SkipWhileOperator;\n}());\nvar SkipWhileSubscriber = (function (_super) {\n __extends(SkipWhileSubscriber, _super);\n function SkipWhileSubscriber(destination, predicate) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.skipping = true;\n _this.index = 0;\n return _this;\n }\n SkipWhileSubscriber.prototype._next = function (value) {\n var destination = this.destination;\n if (this.skipping) {\n this.tryCallPredicate(value);\n }\n if (!this.skipping) {\n destination.next(value);\n }\n };\n SkipWhileSubscriber.prototype.tryCallPredicate = function (value) {\n try {\n var result = this.predicate(value, this.index++);\n this.skipping = Boolean(result);\n }\n catch (err) {\n this.destination.error(err);\n }\n };\n return SkipWhileSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=skipWhile.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar concat_1 = require(\"../observable/concat\");\nvar isScheduler_1 = require(\"../util/isScheduler\");\nfunction startWith() {\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i] = arguments[_i];\n }\n var scheduler = array[array.length - 1];\n if (isScheduler_1.isScheduler(scheduler)) {\n array.pop();\n return function (source) { return concat_1.concat(array, source, scheduler); };\n }\n else {\n return function (source) { return concat_1.concat(array, source); };\n }\n}\nexports.startWith = startWith;\n//# sourceMappingURL=startWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar SubscribeOnObservable_1 = require(\"../observable/SubscribeOnObservable\");\nfunction subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return function subscribeOnOperatorFunction(source) {\n return source.lift(new SubscribeOnOperator(scheduler, delay));\n };\n}\nexports.subscribeOn = subscribeOn;\nvar SubscribeOnOperator = (function () {\n function SubscribeOnOperator(scheduler, delay) {\n this.scheduler = scheduler;\n this.delay = delay;\n }\n SubscribeOnOperator.prototype.call = function (subscriber, source) {\n return new SubscribeOnObservable_1.SubscribeOnObservable(source, this.delay, this.scheduler).subscribe(subscriber);\n };\n return SubscribeOnOperator;\n}());\n//# sourceMappingURL=subscribeOn.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar asap_1 = require(\"../scheduler/asap\");\nvar isNumeric_1 = require(\"../util/isNumeric\");\nvar SubscribeOnObservable = (function (_super) {\n __extends(SubscribeOnObservable, _super);\n function SubscribeOnObservable(source, delayTime, scheduler) {\n if (delayTime === void 0) { delayTime = 0; }\n if (scheduler === void 0) { scheduler = asap_1.asap; }\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.delayTime = delayTime;\n _this.scheduler = scheduler;\n if (!isNumeric_1.isNumeric(delayTime) || delayTime < 0) {\n _this.delayTime = 0;\n }\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n _this.scheduler = asap_1.asap;\n }\n return _this;\n }\n SubscribeOnObservable.create = function (source, delay, scheduler) {\n if (delay === void 0) { delay = 0; }\n if (scheduler === void 0) { scheduler = asap_1.asap; }\n return new SubscribeOnObservable(source, delay, scheduler);\n };\n SubscribeOnObservable.dispatch = function (arg) {\n var source = arg.source, subscriber = arg.subscriber;\n return this.add(source.subscribe(subscriber));\n };\n SubscribeOnObservable.prototype._subscribe = function (subscriber) {\n var delay = this.delayTime;\n var source = this.source;\n var scheduler = this.scheduler;\n return scheduler.schedule(SubscribeOnObservable.dispatch, delay, {\n source: source, subscriber: subscriber\n });\n };\n return SubscribeOnObservable;\n}(Observable_1.Observable));\nexports.SubscribeOnObservable = SubscribeOnObservable;\n//# sourceMappingURL=SubscribeOnObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar switchMap_1 = require(\"./switchMap\");\nvar identity_1 = require(\"../util/identity\");\nfunction switchAll() {\n return switchMap_1.switchMap(identity_1.identity);\n}\nexports.switchAll = switchAll;\n//# sourceMappingURL=switchAll.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar InnerSubscriber_1 = require(\"../InnerSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nvar map_1 = require(\"./map\");\nvar from_1 = require(\"../observable/from\");\nfunction switchMap(project, resultSelector) {\n if (typeof resultSelector === 'function') {\n return function (source) { return source.pipe(switchMap(function (a, i) { return from_1.from(project(a, i)).pipe(map_1.map(function (b, ii) { return resultSelector(a, b, i, ii); })); })); };\n }\n return function (source) { return source.lift(new SwitchMapOperator(project)); };\n}\nexports.switchMap = switchMap;\nvar SwitchMapOperator = (function () {\n function SwitchMapOperator(project) {\n this.project = project;\n }\n SwitchMapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project));\n };\n return SwitchMapOperator;\n}());\nvar SwitchMapSubscriber = (function (_super) {\n __extends(SwitchMapSubscriber, _super);\n function SwitchMapSubscriber(destination, project) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.index = 0;\n return _this;\n }\n SwitchMapSubscriber.prototype._next = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (error) {\n this.destination.error(error);\n return;\n }\n this._innerSub(result, value, index);\n };\n SwitchMapSubscriber.prototype._innerSub = function (result, value, index) {\n var innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n var innerSubscriber = new InnerSubscriber_1.InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n this.innerSubscription = subscribeToResult_1.subscribeToResult(this, result, value, index, innerSubscriber);\n };\n SwitchMapSubscriber.prototype._complete = function () {\n var innerSubscription = this.innerSubscription;\n if (!innerSubscription || innerSubscription.closed) {\n _super.prototype._complete.call(this);\n }\n this.unsubscribe();\n };\n SwitchMapSubscriber.prototype._unsubscribe = function () {\n this.innerSubscription = null;\n };\n SwitchMapSubscriber.prototype.notifyComplete = function (innerSub) {\n var destination = this.destination;\n destination.remove(innerSub);\n this.innerSubscription = null;\n if (this.isStopped) {\n _super.prototype._complete.call(this);\n }\n };\n SwitchMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n return SwitchMapSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=switchMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar switchMap_1 = require(\"./switchMap\");\nfunction switchMapTo(innerObservable, resultSelector) {\n return resultSelector ? switchMap_1.switchMap(function () { return innerObservable; }, resultSelector) : switchMap_1.switchMap(function () { return innerObservable; });\n}\nexports.switchMapTo = switchMapTo;\n//# sourceMappingURL=switchMapTo.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction takeUntil(notifier) {\n return function (source) { return source.lift(new TakeUntilOperator(notifier)); };\n}\nexports.takeUntil = takeUntil;\nvar TakeUntilOperator = (function () {\n function TakeUntilOperator(notifier) {\n this.notifier = notifier;\n }\n TakeUntilOperator.prototype.call = function (subscriber, source) {\n var takeUntilSubscriber = new TakeUntilSubscriber(subscriber);\n var notifierSubscription = subscribeToResult_1.subscribeToResult(takeUntilSubscriber, this.notifier);\n if (notifierSubscription && !takeUntilSubscriber.seenValue) {\n takeUntilSubscriber.add(notifierSubscription);\n return source.subscribe(takeUntilSubscriber);\n }\n return takeUntilSubscriber;\n };\n return TakeUntilOperator;\n}());\nvar TakeUntilSubscriber = (function (_super) {\n __extends(TakeUntilSubscriber, _super);\n function TakeUntilSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.seenValue = false;\n return _this;\n }\n TakeUntilSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.seenValue = true;\n this.complete();\n };\n TakeUntilSubscriber.prototype.notifyComplete = function () {\n };\n return TakeUntilSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=takeUntil.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction takeWhile(predicate, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return function (source) {\n return source.lift(new TakeWhileOperator(predicate, inclusive));\n };\n}\nexports.takeWhile = takeWhile;\nvar TakeWhileOperator = (function () {\n function TakeWhileOperator(predicate, inclusive) {\n this.predicate = predicate;\n this.inclusive = inclusive;\n }\n TakeWhileOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TakeWhileSubscriber(subscriber, this.predicate, this.inclusive));\n };\n return TakeWhileOperator;\n}());\nvar TakeWhileSubscriber = (function (_super) {\n __extends(TakeWhileSubscriber, _super);\n function TakeWhileSubscriber(destination, predicate, inclusive) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.inclusive = inclusive;\n _this.index = 0;\n return _this;\n }\n TakeWhileSubscriber.prototype._next = function (value) {\n var destination = this.destination;\n var result;\n try {\n result = this.predicate(value, this.index++);\n }\n catch (err) {\n destination.error(err);\n return;\n }\n this.nextOrComplete(value, result);\n };\n TakeWhileSubscriber.prototype.nextOrComplete = function (value, predicateResult) {\n var destination = this.destination;\n if (Boolean(predicateResult)) {\n destination.next(value);\n }\n else {\n if (this.inclusive) {\n destination.next(value);\n }\n destination.complete();\n }\n };\n return TakeWhileSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=takeWhile.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nvar noop_1 = require(\"../util/noop\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction tap(nextOrObserver, error, complete) {\n return function tapOperatorFunction(source) {\n return source.lift(new DoOperator(nextOrObserver, error, complete));\n };\n}\nexports.tap = tap;\nvar DoOperator = (function () {\n function DoOperator(nextOrObserver, error, complete) {\n this.nextOrObserver = nextOrObserver;\n this.error = error;\n this.complete = complete;\n }\n DoOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n };\n return DoOperator;\n}());\nvar TapSubscriber = (function (_super) {\n __extends(TapSubscriber, _super);\n function TapSubscriber(destination, observerOrNext, error, complete) {\n var _this = _super.call(this, destination) || this;\n _this._tapNext = noop_1.noop;\n _this._tapError = noop_1.noop;\n _this._tapComplete = noop_1.noop;\n _this._tapError = error || noop_1.noop;\n _this._tapComplete = complete || noop_1.noop;\n if (isFunction_1.isFunction(observerOrNext)) {\n _this._context = _this;\n _this._tapNext = observerOrNext;\n }\n else if (observerOrNext) {\n _this._context = observerOrNext;\n _this._tapNext = observerOrNext.next || noop_1.noop;\n _this._tapError = observerOrNext.error || noop_1.noop;\n _this._tapComplete = observerOrNext.complete || noop_1.noop;\n }\n return _this;\n }\n TapSubscriber.prototype._next = function (value) {\n try {\n this._tapNext.call(this._context, value);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(value);\n };\n TapSubscriber.prototype._error = function (err) {\n try {\n this._tapError.call(this._context, err);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.error(err);\n };\n TapSubscriber.prototype._complete = function () {\n try {\n this._tapComplete.call(this._context);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n return this.destination.complete();\n };\n return TapSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=tap.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nexports.defaultThrottleConfig = {\n leading: true,\n trailing: false\n};\nfunction throttle(durationSelector, config) {\n if (config === void 0) { config = exports.defaultThrottleConfig; }\n return function (source) { return source.lift(new ThrottleOperator(durationSelector, config.leading, config.trailing)); };\n}\nexports.throttle = throttle;\nvar ThrottleOperator = (function () {\n function ThrottleOperator(durationSelector, leading, trailing) {\n this.durationSelector = durationSelector;\n this.leading = leading;\n this.trailing = trailing;\n }\n ThrottleOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing));\n };\n return ThrottleOperator;\n}());\nvar ThrottleSubscriber = (function (_super) {\n __extends(ThrottleSubscriber, _super);\n function ThrottleSubscriber(destination, durationSelector, _leading, _trailing) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n _this.durationSelector = durationSelector;\n _this._leading = _leading;\n _this._trailing = _trailing;\n _this._hasValue = false;\n return _this;\n }\n ThrottleSubscriber.prototype._next = function (value) {\n this._hasValue = true;\n this._sendValue = value;\n if (!this._throttled) {\n if (this._leading) {\n this.send();\n }\n else {\n this.throttle(value);\n }\n }\n };\n ThrottleSubscriber.prototype.send = function () {\n var _a = this, _hasValue = _a._hasValue, _sendValue = _a._sendValue;\n if (_hasValue) {\n this.destination.next(_sendValue);\n this.throttle(_sendValue);\n }\n this._hasValue = false;\n this._sendValue = null;\n };\n ThrottleSubscriber.prototype.throttle = function (value) {\n var duration = this.tryDurationSelector(value);\n if (!!duration) {\n this.add(this._throttled = subscribeToResult_1.subscribeToResult(this, duration));\n }\n };\n ThrottleSubscriber.prototype.tryDurationSelector = function (value) {\n try {\n return this.durationSelector(value);\n }\n catch (err) {\n this.destination.error(err);\n return null;\n }\n };\n ThrottleSubscriber.prototype.throttlingDone = function () {\n var _a = this, _throttled = _a._throttled, _trailing = _a._trailing;\n if (_throttled) {\n _throttled.unsubscribe();\n }\n this._throttled = null;\n if (_trailing) {\n this.send();\n }\n };\n ThrottleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.throttlingDone();\n };\n ThrottleSubscriber.prototype.notifyComplete = function () {\n this.throttlingDone();\n };\n return ThrottleSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=throttle.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nvar async_1 = require(\"../scheduler/async\");\nvar throttle_1 = require(\"./throttle\");\nfunction throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = async_1.async; }\n if (config === void 0) { config = throttle_1.defaultThrottleConfig; }\n return function (source) { return source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing)); };\n}\nexports.throttleTime = throttleTime;\nvar ThrottleTimeOperator = (function () {\n function ThrottleTimeOperator(duration, scheduler, leading, trailing) {\n this.duration = duration;\n this.scheduler = scheduler;\n this.leading = leading;\n this.trailing = trailing;\n }\n ThrottleTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing));\n };\n return ThrottleTimeOperator;\n}());\nvar ThrottleTimeSubscriber = (function (_super) {\n __extends(ThrottleTimeSubscriber, _super);\n function ThrottleTimeSubscriber(destination, duration, scheduler, leading, trailing) {\n var _this = _super.call(this, destination) || this;\n _this.duration = duration;\n _this.scheduler = scheduler;\n _this.leading = leading;\n _this.trailing = trailing;\n _this._hasTrailingValue = false;\n _this._trailingValue = null;\n return _this;\n }\n ThrottleTimeSubscriber.prototype._next = function (value) {\n if (this.throttled) {\n if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n }\n else {\n this.add(this.throttled = this.scheduler.schedule(dispatchNext, this.duration, { subscriber: this }));\n if (this.leading) {\n this.destination.next(value);\n }\n else if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n }\n };\n ThrottleTimeSubscriber.prototype._complete = function () {\n if (this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this.destination.complete();\n }\n else {\n this.destination.complete();\n }\n };\n ThrottleTimeSubscriber.prototype.clearThrottle = function () {\n var throttled = this.throttled;\n if (throttled) {\n if (this.trailing && this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this._trailingValue = null;\n this._hasTrailingValue = false;\n }\n throttled.unsubscribe();\n this.remove(throttled);\n this.throttled = null;\n }\n };\n return ThrottleTimeSubscriber;\n}(Subscriber_1.Subscriber));\nfunction dispatchNext(arg) {\n var subscriber = arg.subscriber;\n subscriber.clearThrottle();\n}\n//# sourceMappingURL=throttleTime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar async_1 = require(\"../scheduler/async\");\nvar scan_1 = require(\"./scan\");\nvar defer_1 = require(\"../observable/defer\");\nvar map_1 = require(\"./map\");\nfunction timeInterval(scheduler) {\n if (scheduler === void 0) { scheduler = async_1.async; }\n return function (source) { return defer_1.defer(function () {\n return source.pipe(scan_1.scan(function (_a, value) {\n var current = _a.current;\n return ({ value: value, current: scheduler.now(), last: current });\n }, { current: scheduler.now(), value: undefined, last: undefined }), map_1.map(function (_a) {\n var current = _a.current, last = _a.last, value = _a.value;\n return new TimeInterval(value, current - last);\n }));\n }); };\n}\nexports.timeInterval = timeInterval;\nvar TimeInterval = (function () {\n function TimeInterval(value, interval) {\n this.value = value;\n this.interval = interval;\n }\n return TimeInterval;\n}());\nexports.TimeInterval = TimeInterval;\n//# sourceMappingURL=timeInterval.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar async_1 = require(\"../scheduler/async\");\nvar TimeoutError_1 = require(\"../util/TimeoutError\");\nvar timeoutWith_1 = require(\"./timeoutWith\");\nvar throwError_1 = require(\"../observable/throwError\");\nfunction timeout(due, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.async; }\n return timeoutWith_1.timeoutWith(due, throwError_1.throwError(new TimeoutError_1.TimeoutError()), scheduler);\n}\nexports.timeout = timeout;\n//# sourceMappingURL=timeout.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar async_1 = require(\"../scheduler/async\");\nvar isDate_1 = require(\"../util/isDate\");\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction timeoutWith(due, withObservable, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.async; }\n return function (source) {\n var absoluteTimeout = isDate_1.isDate(due);\n var waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due);\n return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler));\n };\n}\nexports.timeoutWith = timeoutWith;\nvar TimeoutWithOperator = (function () {\n function TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler) {\n this.waitFor = waitFor;\n this.absoluteTimeout = absoluteTimeout;\n this.withObservable = withObservable;\n this.scheduler = scheduler;\n }\n TimeoutWithOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TimeoutWithSubscriber(subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler));\n };\n return TimeoutWithOperator;\n}());\nvar TimeoutWithSubscriber = (function (_super) {\n __extends(TimeoutWithSubscriber, _super);\n function TimeoutWithSubscriber(destination, absoluteTimeout, waitFor, withObservable, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.absoluteTimeout = absoluteTimeout;\n _this.waitFor = waitFor;\n _this.withObservable = withObservable;\n _this.scheduler = scheduler;\n _this.action = null;\n _this.scheduleTimeout();\n return _this;\n }\n TimeoutWithSubscriber.dispatchTimeout = function (subscriber) {\n var withObservable = subscriber.withObservable;\n subscriber._unsubscribeAndRecycle();\n subscriber.add(subscribeToResult_1.subscribeToResult(subscriber, withObservable));\n };\n TimeoutWithSubscriber.prototype.scheduleTimeout = function () {\n var action = this.action;\n if (action) {\n this.action = action.schedule(this, this.waitFor);\n }\n else {\n this.add(this.action = this.scheduler.schedule(TimeoutWithSubscriber.dispatchTimeout, this.waitFor, this));\n }\n };\n TimeoutWithSubscriber.prototype._next = function (value) {\n if (!this.absoluteTimeout) {\n this.scheduleTimeout();\n }\n _super.prototype._next.call(this, value);\n };\n TimeoutWithSubscriber.prototype._unsubscribe = function () {\n this.action = null;\n this.scheduler = null;\n this.withObservable = null;\n };\n return TimeoutWithSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=timeoutWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar async_1 = require(\"../scheduler/async\");\nvar map_1 = require(\"./map\");\nfunction timestamp(scheduler) {\n if (scheduler === void 0) { scheduler = async_1.async; }\n return map_1.map(function (value) { return new Timestamp(value, scheduler.now()); });\n}\nexports.timestamp = timestamp;\nvar Timestamp = (function () {\n function Timestamp(value, timestamp) {\n this.value = value;\n this.timestamp = timestamp;\n }\n return Timestamp;\n}());\nexports.Timestamp = Timestamp;\n//# sourceMappingURL=timestamp.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar reduce_1 = require(\"./reduce\");\nfunction toArrayReducer(arr, item, index) {\n if (index === 0) {\n return [item];\n }\n arr.push(item);\n return arr;\n}\nfunction toArray() {\n return reduce_1.reduce(toArrayReducer, []);\n}\nexports.toArray = toArray;\n//# sourceMappingURL=toArray.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subject_1 = require(\"../Subject\");\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction window(windowBoundaries) {\n return function windowOperatorFunction(source) {\n return source.lift(new WindowOperator(windowBoundaries));\n };\n}\nexports.window = window;\nvar WindowOperator = (function () {\n function WindowOperator(windowBoundaries) {\n this.windowBoundaries = windowBoundaries;\n }\n WindowOperator.prototype.call = function (subscriber, source) {\n var windowSubscriber = new WindowSubscriber(subscriber);\n var sourceSubscription = source.subscribe(windowSubscriber);\n if (!sourceSubscription.closed) {\n windowSubscriber.add(subscribeToResult_1.subscribeToResult(windowSubscriber, this.windowBoundaries));\n }\n return sourceSubscription;\n };\n return WindowOperator;\n}());\nvar WindowSubscriber = (function (_super) {\n __extends(WindowSubscriber, _super);\n function WindowSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.window = new Subject_1.Subject();\n destination.next(_this.window);\n return _this;\n }\n WindowSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.openWindow();\n };\n WindowSubscriber.prototype.notifyError = function (error, innerSub) {\n this._error(error);\n };\n WindowSubscriber.prototype.notifyComplete = function (innerSub) {\n this._complete();\n };\n WindowSubscriber.prototype._next = function (value) {\n this.window.next(value);\n };\n WindowSubscriber.prototype._error = function (err) {\n this.window.error(err);\n this.destination.error(err);\n };\n WindowSubscriber.prototype._complete = function () {\n this.window.complete();\n this.destination.complete();\n };\n WindowSubscriber.prototype._unsubscribe = function () {\n this.window = null;\n };\n WindowSubscriber.prototype.openWindow = function () {\n var prevWindow = this.window;\n if (prevWindow) {\n prevWindow.complete();\n }\n var destination = this.destination;\n var newWindow = this.window = new Subject_1.Subject();\n destination.next(newWindow);\n };\n return WindowSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=window.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nvar Subject_1 = require(\"../Subject\");\nfunction windowCount(windowSize, startWindowEvery) {\n if (startWindowEvery === void 0) { startWindowEvery = 0; }\n return function windowCountOperatorFunction(source) {\n return source.lift(new WindowCountOperator(windowSize, startWindowEvery));\n };\n}\nexports.windowCount = windowCount;\nvar WindowCountOperator = (function () {\n function WindowCountOperator(windowSize, startWindowEvery) {\n this.windowSize = windowSize;\n this.startWindowEvery = startWindowEvery;\n }\n WindowCountOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new WindowCountSubscriber(subscriber, this.windowSize, this.startWindowEvery));\n };\n return WindowCountOperator;\n}());\nvar WindowCountSubscriber = (function (_super) {\n __extends(WindowCountSubscriber, _super);\n function WindowCountSubscriber(destination, windowSize, startWindowEvery) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n _this.windowSize = windowSize;\n _this.startWindowEvery = startWindowEvery;\n _this.windows = [new Subject_1.Subject()];\n _this.count = 0;\n destination.next(_this.windows[0]);\n return _this;\n }\n WindowCountSubscriber.prototype._next = function (value) {\n var startWindowEvery = (this.startWindowEvery > 0) ? this.startWindowEvery : this.windowSize;\n var destination = this.destination;\n var windowSize = this.windowSize;\n var windows = this.windows;\n var len = windows.length;\n for (var i = 0; i < len && !this.closed; i++) {\n windows[i].next(value);\n }\n var c = this.count - windowSize + 1;\n if (c >= 0 && c % startWindowEvery === 0 && !this.closed) {\n windows.shift().complete();\n }\n if (++this.count % startWindowEvery === 0 && !this.closed) {\n var window_1 = new Subject_1.Subject();\n windows.push(window_1);\n destination.next(window_1);\n }\n };\n WindowCountSubscriber.prototype._error = function (err) {\n var windows = this.windows;\n if (windows) {\n while (windows.length > 0 && !this.closed) {\n windows.shift().error(err);\n }\n }\n this.destination.error(err);\n };\n WindowCountSubscriber.prototype._complete = function () {\n var windows = this.windows;\n if (windows) {\n while (windows.length > 0 && !this.closed) {\n windows.shift().complete();\n }\n }\n this.destination.complete();\n };\n WindowCountSubscriber.prototype._unsubscribe = function () {\n this.count = 0;\n this.windows = null;\n };\n return WindowCountSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=windowCount.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subject_1 = require(\"../Subject\");\nvar async_1 = require(\"../scheduler/async\");\nvar Subscriber_1 = require(\"../Subscriber\");\nvar isNumeric_1 = require(\"../util/isNumeric\");\nvar isScheduler_1 = require(\"../util/isScheduler\");\nfunction windowTime(windowTimeSpan) {\n var scheduler = async_1.async;\n var windowCreationInterval = null;\n var maxWindowSize = Number.POSITIVE_INFINITY;\n if (isScheduler_1.isScheduler(arguments[3])) {\n scheduler = arguments[3];\n }\n if (isScheduler_1.isScheduler(arguments[2])) {\n scheduler = arguments[2];\n }\n else if (isNumeric_1.isNumeric(arguments[2])) {\n maxWindowSize = arguments[2];\n }\n if (isScheduler_1.isScheduler(arguments[1])) {\n scheduler = arguments[1];\n }\n else if (isNumeric_1.isNumeric(arguments[1])) {\n windowCreationInterval = arguments[1];\n }\n return function windowTimeOperatorFunction(source) {\n return source.lift(new WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler));\n };\n}\nexports.windowTime = windowTime;\nvar WindowTimeOperator = (function () {\n function WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler) {\n this.windowTimeSpan = windowTimeSpan;\n this.windowCreationInterval = windowCreationInterval;\n this.maxWindowSize = maxWindowSize;\n this.scheduler = scheduler;\n }\n WindowTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new WindowTimeSubscriber(subscriber, this.windowTimeSpan, this.windowCreationInterval, this.maxWindowSize, this.scheduler));\n };\n return WindowTimeOperator;\n}());\nvar CountedSubject = (function (_super) {\n __extends(CountedSubject, _super);\n function CountedSubject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._numberOfNextedValues = 0;\n return _this;\n }\n CountedSubject.prototype.next = function (value) {\n this._numberOfNextedValues++;\n _super.prototype.next.call(this, value);\n };\n Object.defineProperty(CountedSubject.prototype, \"numberOfNextedValues\", {\n get: function () {\n return this._numberOfNextedValues;\n },\n enumerable: true,\n configurable: true\n });\n return CountedSubject;\n}(Subject_1.Subject));\nvar WindowTimeSubscriber = (function (_super) {\n __extends(WindowTimeSubscriber, _super);\n function WindowTimeSubscriber(destination, windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n _this.windowTimeSpan = windowTimeSpan;\n _this.windowCreationInterval = windowCreationInterval;\n _this.maxWindowSize = maxWindowSize;\n _this.scheduler = scheduler;\n _this.windows = [];\n var window = _this.openWindow();\n if (windowCreationInterval !== null && windowCreationInterval >= 0) {\n var closeState = { subscriber: _this, window: window, context: null };\n var creationState = { windowTimeSpan: windowTimeSpan, windowCreationInterval: windowCreationInterval, subscriber: _this, scheduler: scheduler };\n _this.add(scheduler.schedule(dispatchWindowClose, windowTimeSpan, closeState));\n _this.add(scheduler.schedule(dispatchWindowCreation, windowCreationInterval, creationState));\n }\n else {\n var timeSpanOnlyState = { subscriber: _this, window: window, windowTimeSpan: windowTimeSpan };\n _this.add(scheduler.schedule(dispatchWindowTimeSpanOnly, windowTimeSpan, timeSpanOnlyState));\n }\n return _this;\n }\n WindowTimeSubscriber.prototype._next = function (value) {\n var windows = this.windows;\n var len = windows.length;\n for (var i = 0; i < len; i++) {\n var window_1 = windows[i];\n if (!window_1.closed) {\n window_1.next(value);\n if (window_1.numberOfNextedValues >= this.maxWindowSize) {\n this.closeWindow(window_1);\n }\n }\n }\n };\n WindowTimeSubscriber.prototype._error = function (err) {\n var windows = this.windows;\n while (windows.length > 0) {\n windows.shift().error(err);\n }\n this.destination.error(err);\n };\n WindowTimeSubscriber.prototype._complete = function () {\n var windows = this.windows;\n while (windows.length > 0) {\n var window_2 = windows.shift();\n if (!window_2.closed) {\n window_2.complete();\n }\n }\n this.destination.complete();\n };\n WindowTimeSubscriber.prototype.openWindow = function () {\n var window = new CountedSubject();\n this.windows.push(window);\n var destination = this.destination;\n destination.next(window);\n return window;\n };\n WindowTimeSubscriber.prototype.closeWindow = function (window) {\n window.complete();\n var windows = this.windows;\n windows.splice(windows.indexOf(window), 1);\n };\n return WindowTimeSubscriber;\n}(Subscriber_1.Subscriber));\nfunction dispatchWindowTimeSpanOnly(state) {\n var subscriber = state.subscriber, windowTimeSpan = state.windowTimeSpan, window = state.window;\n if (window) {\n subscriber.closeWindow(window);\n }\n state.window = subscriber.openWindow();\n this.schedule(state, windowTimeSpan);\n}\nfunction dispatchWindowCreation(state) {\n var windowTimeSpan = state.windowTimeSpan, subscriber = state.subscriber, scheduler = state.scheduler, windowCreationInterval = state.windowCreationInterval;\n var window = subscriber.openWindow();\n var action = this;\n var context = { action: action, subscription: null };\n var timeSpanState = { subscriber: subscriber, window: window, context: context };\n context.subscription = scheduler.schedule(dispatchWindowClose, windowTimeSpan, timeSpanState);\n action.add(context.subscription);\n action.schedule(state, windowCreationInterval);\n}\nfunction dispatchWindowClose(state) {\n var subscriber = state.subscriber, window = state.window, context = state.context;\n if (context && context.action && context.subscription) {\n context.action.remove(context.subscription);\n }\n subscriber.closeWindow(window);\n}\n//# sourceMappingURL=windowTime.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subject_1 = require(\"../Subject\");\nvar Subscription_1 = require(\"../Subscription\");\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction windowToggle(openings, closingSelector) {\n return function (source) { return source.lift(new WindowToggleOperator(openings, closingSelector)); };\n}\nexports.windowToggle = windowToggle;\nvar WindowToggleOperator = (function () {\n function WindowToggleOperator(openings, closingSelector) {\n this.openings = openings;\n this.closingSelector = closingSelector;\n }\n WindowToggleOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new WindowToggleSubscriber(subscriber, this.openings, this.closingSelector));\n };\n return WindowToggleOperator;\n}());\nvar WindowToggleSubscriber = (function (_super) {\n __extends(WindowToggleSubscriber, _super);\n function WindowToggleSubscriber(destination, openings, closingSelector) {\n var _this = _super.call(this, destination) || this;\n _this.openings = openings;\n _this.closingSelector = closingSelector;\n _this.contexts = [];\n _this.add(_this.openSubscription = subscribeToResult_1.subscribeToResult(_this, openings, openings));\n return _this;\n }\n WindowToggleSubscriber.prototype._next = function (value) {\n var contexts = this.contexts;\n if (contexts) {\n var len = contexts.length;\n for (var i = 0; i < len; i++) {\n contexts[i].window.next(value);\n }\n }\n };\n WindowToggleSubscriber.prototype._error = function (err) {\n var contexts = this.contexts;\n this.contexts = null;\n if (contexts) {\n var len = contexts.length;\n var index = -1;\n while (++index < len) {\n var context_1 = contexts[index];\n context_1.window.error(err);\n context_1.subscription.unsubscribe();\n }\n }\n _super.prototype._error.call(this, err);\n };\n WindowToggleSubscriber.prototype._complete = function () {\n var contexts = this.contexts;\n this.contexts = null;\n if (contexts) {\n var len = contexts.length;\n var index = -1;\n while (++index < len) {\n var context_2 = contexts[index];\n context_2.window.complete();\n context_2.subscription.unsubscribe();\n }\n }\n _super.prototype._complete.call(this);\n };\n WindowToggleSubscriber.prototype._unsubscribe = function () {\n var contexts = this.contexts;\n this.contexts = null;\n if (contexts) {\n var len = contexts.length;\n var index = -1;\n while (++index < len) {\n var context_3 = contexts[index];\n context_3.window.unsubscribe();\n context_3.subscription.unsubscribe();\n }\n }\n };\n WindowToggleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n if (outerValue === this.openings) {\n var closingNotifier = void 0;\n try {\n var closingSelector = this.closingSelector;\n closingNotifier = closingSelector(innerValue);\n }\n catch (e) {\n return this.error(e);\n }\n var window_1 = new Subject_1.Subject();\n var subscription = new Subscription_1.Subscription();\n var context_4 = { window: window_1, subscription: subscription };\n this.contexts.push(context_4);\n var innerSubscription = subscribeToResult_1.subscribeToResult(this, closingNotifier, context_4);\n if (innerSubscription.closed) {\n this.closeWindow(this.contexts.length - 1);\n }\n else {\n innerSubscription.context = context_4;\n subscription.add(innerSubscription);\n }\n this.destination.next(window_1);\n }\n else {\n this.closeWindow(this.contexts.indexOf(outerValue));\n }\n };\n WindowToggleSubscriber.prototype.notifyError = function (err) {\n this.error(err);\n };\n WindowToggleSubscriber.prototype.notifyComplete = function (inner) {\n if (inner !== this.openSubscription) {\n this.closeWindow(this.contexts.indexOf(inner.context));\n }\n };\n WindowToggleSubscriber.prototype.closeWindow = function (index) {\n if (index === -1) {\n return;\n }\n var contexts = this.contexts;\n var context = contexts[index];\n var window = context.window, subscription = context.subscription;\n contexts.splice(index, 1);\n window.complete();\n subscription.unsubscribe();\n };\n return WindowToggleSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=windowToggle.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subject_1 = require(\"../Subject\");\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction windowWhen(closingSelector) {\n return function windowWhenOperatorFunction(source) {\n return source.lift(new WindowOperator(closingSelector));\n };\n}\nexports.windowWhen = windowWhen;\nvar WindowOperator = (function () {\n function WindowOperator(closingSelector) {\n this.closingSelector = closingSelector;\n }\n WindowOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new WindowSubscriber(subscriber, this.closingSelector));\n };\n return WindowOperator;\n}());\nvar WindowSubscriber = (function (_super) {\n __extends(WindowSubscriber, _super);\n function WindowSubscriber(destination, closingSelector) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n _this.closingSelector = closingSelector;\n _this.openWindow();\n return _this;\n }\n WindowSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.openWindow(innerSub);\n };\n WindowSubscriber.prototype.notifyError = function (error, innerSub) {\n this._error(error);\n };\n WindowSubscriber.prototype.notifyComplete = function (innerSub) {\n this.openWindow(innerSub);\n };\n WindowSubscriber.prototype._next = function (value) {\n this.window.next(value);\n };\n WindowSubscriber.prototype._error = function (err) {\n this.window.error(err);\n this.destination.error(err);\n this.unsubscribeClosingNotification();\n };\n WindowSubscriber.prototype._complete = function () {\n this.window.complete();\n this.destination.complete();\n this.unsubscribeClosingNotification();\n };\n WindowSubscriber.prototype.unsubscribeClosingNotification = function () {\n if (this.closingNotification) {\n this.closingNotification.unsubscribe();\n }\n };\n WindowSubscriber.prototype.openWindow = function (innerSub) {\n if (innerSub === void 0) { innerSub = null; }\n if (innerSub) {\n this.remove(innerSub);\n innerSub.unsubscribe();\n }\n var prevWindow = this.window;\n if (prevWindow) {\n prevWindow.complete();\n }\n var window = this.window = new Subject_1.Subject();\n this.destination.next(window);\n var closingNotifier;\n try {\n var closingSelector = this.closingSelector;\n closingNotifier = closingSelector();\n }\n catch (e) {\n this.destination.error(e);\n this.window.error(e);\n return;\n }\n this.add(this.closingNotification = subscribeToResult_1.subscribeToResult(this, closingNotifier));\n };\n return WindowSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=windowWhen.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar OuterSubscriber_1 = require(\"../OuterSubscriber\");\nvar subscribeToResult_1 = require(\"../util/subscribeToResult\");\nfunction withLatestFrom() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return function (source) {\n var project;\n if (typeof args[args.length - 1] === 'function') {\n project = args.pop();\n }\n var observables = args;\n return source.lift(new WithLatestFromOperator(observables, project));\n };\n}\nexports.withLatestFrom = withLatestFrom;\nvar WithLatestFromOperator = (function () {\n function WithLatestFromOperator(observables, project) {\n this.observables = observables;\n this.project = project;\n }\n WithLatestFromOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));\n };\n return WithLatestFromOperator;\n}());\nvar WithLatestFromSubscriber = (function (_super) {\n __extends(WithLatestFromSubscriber, _super);\n function WithLatestFromSubscriber(destination, observables, project) {\n var _this = _super.call(this, destination) || this;\n _this.observables = observables;\n _this.project = project;\n _this.toRespond = [];\n var len = observables.length;\n _this.values = new Array(len);\n for (var i = 0; i < len; i++) {\n _this.toRespond.push(i);\n }\n for (var i = 0; i < len; i++) {\n var observable = observables[i];\n _this.add(subscribeToResult_1.subscribeToResult(_this, observable, observable, i));\n }\n return _this;\n }\n WithLatestFromSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.values[outerIndex] = innerValue;\n var toRespond = this.toRespond;\n if (toRespond.length > 0) {\n var found = toRespond.indexOf(outerIndex);\n if (found !== -1) {\n toRespond.splice(found, 1);\n }\n }\n };\n WithLatestFromSubscriber.prototype.notifyComplete = function () {\n };\n WithLatestFromSubscriber.prototype._next = function (value) {\n if (this.toRespond.length === 0) {\n var args = [value].concat(this.values);\n if (this.project) {\n this._tryProject(args);\n }\n else {\n this.destination.next(args);\n }\n }\n };\n WithLatestFromSubscriber.prototype._tryProject = function (args) {\n var result;\n try {\n result = this.project.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return WithLatestFromSubscriber;\n}(OuterSubscriber_1.OuterSubscriber));\n//# sourceMappingURL=withLatestFrom.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar zip_1 = require(\"../observable/zip\");\nfunction zip() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return function zipOperatorFunction(source) {\n return source.lift.call(zip_1.zip.apply(void 0, [source].concat(observables)));\n };\n}\nexports.zip = zip;\n//# sourceMappingURL=zip.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar zip_1 = require(\"../observable/zip\");\nfunction zipAll(project) {\n return function (source) { return source.lift(new zip_1.ZipOperator(project)); };\n}\nexports.zipAll = zipAll;\n//# sourceMappingURL=zipAll.js.map","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _exportNames = {\n assert: true,\n assertSingletonPackage: true,\n logger: true,\n promisify: true\n};\nObject.defineProperty(exports, \"assert\", {\n enumerable: true,\n get: function get() {\n return _assert.default;\n }\n});\nObject.defineProperty(exports, \"assertSingletonPackage\", {\n enumerable: true,\n get: function get() {\n return _assertSingletonPackage.default;\n }\n});\nObject.defineProperty(exports, \"logger\", {\n enumerable: true,\n get: function get() {\n return _logger.default;\n }\n});\nObject.defineProperty(exports, \"promisify\", {\n enumerable: true,\n get: function get() {\n return _promisify.default;\n }\n});\n\nrequire(\"./polyfill\");\n\nvar _assert = _interopRequireDefault(require(\"./assert\"));\n\nvar _assertSingletonPackage = _interopRequireDefault(require(\"./assertSingletonPackage\"));\n\nvar _logger = _interopRequireDefault(require(\"./logger\"));\n\nvar _promisify = _interopRequireDefault(require(\"./promisify\"));\n\nvar _array = require(\"./array\");\n\nObject.keys(_array).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _array[key];\n }\n });\n});\n\nvar _bn = require(\"./bn\");\n\nObject.keys(_bn).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _bn[key];\n }\n });\n});\n\nvar _buffer = require(\"./buffer\");\n\nObject.keys(_buffer).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _buffer[key];\n }\n });\n});\n\nvar _compact = require(\"./compact\");\n\nObject.keys(_compact).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _compact[key];\n }\n });\n});\n\nvar _ext = require(\"./ext\");\n\nObject.keys(_ext).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ext[key];\n }\n });\n});\n\nvar _format = require(\"./format\");\n\nObject.keys(_format).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _format[key];\n }\n });\n});\n\nvar _hex = require(\"./hex\");\n\nObject.keys(_hex).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _hex[key];\n }\n });\n});\n\nvar _is = require(\"./is\");\n\nObject.keys(_is).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _is[key];\n }\n });\n});\n\nvar _number = require(\"./number\");\n\nObject.keys(_number).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _number[key];\n }\n });\n});\n\nvar _string = require(\"./string\");\n\nObject.keys(_string).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _string[key];\n }\n });\n});\n\nvar _u8a = require(\"./u8a\");\n\nObject.keys(_u8a).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _u8a[key];\n }\n });\n});","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","\"use strict\";\n\nrequire(\"./fill\");\n\nrequire(\"./padEnd\");\n\nrequire(\"./padStart\");\n\nrequire(\"./setPrototypeOf\");\n\nrequire(\"./textDecoder\");\n\nrequire(\"./textEncoder\");","\"use strict\";\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nif (!Array.prototype.fill) {\n Array.prototype.fill = function fill(value) {\n let start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let end = arguments.length > 2 ? arguments[2] : undefined;\n\n // Steps 1-2.\n if (!this) {\n throw new TypeError('this is null or not defined');\n }\n\n const A = Object(this); // Steps 3-5.\n\n const len = A.length >>> 0; // Steps 6-7.\n\n const relativeStart = start >> 0; // Step 8.\n\n let k = relativeStart < 0 ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len); // Steps 9-10.\n\n const relativeEnd = end === undefined ? len : end >> 0; // Step 11.\n\n const final = relativeEnd < 0 ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len); // Step 12.\n\n while (k < final) {\n A[k] = value;\n k++;\n } // Step 13.\n\n\n return A;\n };\n}\n\nif (!Uint8Array.prototype.fill) {\n // @ts-ignore\n Uint8Array.prototype.fill = Array.prototype.fill;\n}","\"use strict\";\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nif (!String.prototype.padEnd) {\n String.prototype.padEnd = function padEnd(length) {\n let char = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ' ';\n let result = String(this);\n\n while (result.length < length) {\n result = result + char;\n }\n\n return result;\n };\n}","\"use strict\";\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nif (!String.prototype.padStart) {\n String.prototype.padStart = function padStart(length) {\n let char = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ' ';\n let result = String(this);\n\n while (result.length < length) {\n result = char + result;\n }\n\n return result;\n };\n}","\"use strict\";\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// React Native does not have Object.setPrototypeOf\nif (!Object.setPrototypeOf) {\n Object.setPrototypeOf = function (obj, proto) {\n obj.__proto__ = proto;\n return obj;\n };\n}","\"use strict\";\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// tslint:disable-next-line\nif (typeof TextDecoder === 'undefined') {\n try {\n // @ts-ignore\n global.TextDecoder = require('util').TextDecoder;\n } catch (error) {// noop\n }\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","\"use strict\";\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// tslint:disable-next-line\nif (typeof TextEncoder === 'undefined') {\n try {\n // @ts-ignore For the Node.js case\n global.TextEncoder = require('util').TextEncoder;\n } catch (error) {// noop\n }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = assert;\n\nvar _error = _interopRequireDefault(require(\"./ext/error\"));\n\nvar _function = _interopRequireDefault(require(\"./is/function\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// No NaN type\n\n/**\n * @name assert\n * @summary Checks for a valid test, if not ExtError is thrown.\n * @description\n * Checks that `test` is a truthy value. If value is falsy (`null`, `undefined`, `false`, ...), it throws an ExtError with the supplied `message` and an optional `code` and `data`. When `test` passes, `true` is returned.\n * @example\n *
\n *\n * ```javascript\n * const { assert } from '@polkadot/util';\n *\n * assert(true, 'True should be true'); // true returned\n * assert(false, 'False should not be true'); // ExtError thrown\n * assert(false, () => 'message'); // ExtError with 'message'\n * ```\n */\nfunction assert(test, message) {\n let code = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _error.default.CODES.ASSERT;\n let data = arguments.length > 3 ? arguments[3] : undefined;\n\n if (test) {\n return true;\n }\n\n if ((0, _function.default)(message)) {\n message = message();\n }\n\n throw new _error.default(message, code, data);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _function = _interopRequireDefault(require(\"../is/function\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst UNKNOWN = -99999;\n\nfunction extend(that, name, value) {\n Object.defineProperty(that, name, {\n configurable: true,\n enumerable: false,\n value\n });\n}\n/**\n * @name ExtError\n * @summary Extension to the basic JS Error.\n * @description\n * The built-in JavaScript Error class is extended by adding a code to allow for Error categorization. In addition to the normal `stack`, `message`, the numeric `code` and `data` (any types) parameters are available on the object.\n * @example\n *
\n *\n * ```javascript\n * const { ExtError } from '@polkadot/util');\n *\n * throw new ExtError('some message', ExtError.CODES.METHOD_NOT_FOUND); // => error.code = -32601\n * ```\n */\n\n\nclass ExtError extends Error {\n // @ts-ignore we are assigning it via extend\n // @ts-ignore we are assigning it via extend\n // @ts-ignore we are assigning it via extend\n // @ts-ignore we are assigning it via extend\n // @ts-ignore we are assigning it via extend\n constructor() {\n let message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n let code = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : UNKNOWN;\n let data = arguments.length > 2 ? arguments[2] : undefined;\n super();\n this.code = void 0;\n this.data = void 0;\n this.message = void 0;\n this.name = void 0;\n this.stack = void 0;\n extend(this, 'message', String(message));\n extend(this, 'name', this.constructor.name);\n extend(this, 'data', data);\n extend(this, 'code', code);\n\n if ((0, _function.default)(Error.captureStackTrace)) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n extend(this, 'stack', new Error(message).stack);\n }\n }\n\n}\n\nexports.default = ExtError;\nExtError.CODES = {\n ASSERT: -90009,\n UNKNOWN,\n INVALID_JSONRPC: -99998,\n METHOD_NOT_FOUND: -32601 // Rust client\n\n};","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf\");\n\nvar isNativeFunction = require(\"./isNativeFunction\");\n\nvar construct = require(\"./construct\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFunction;\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name isFunction\n * @summary Tests for a `function`.\n * @description\n * Checks to see if the input value is a JavaScript function.\n * @example\n *
\n *\n * ```javascript\n * import { isFunction } from '@polkadot/util';\n *\n * isFunction(() => false); // => true\n * ```\n */\nfunction isFunction(value) {\n return typeof value === 'function';\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = assertSingletonPackage;\n\nvar _undefined = _interopRequireDefault(require(\"./is/undefined\"));\n\nvar _assert = _interopRequireDefault(require(\"./assert\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name assertSingletonPackage\n * @summary Checks that a specific package is only imported once\n */\nfunction assertSingletonPackage(name) {\n // tslint:disable-next-line\n const _global = typeof window !== 'undefined' ? window : global;\n\n if (!_global.__polkadotjs) {\n _global.__polkadotjs = {};\n }\n\n (0, _assert.default)((0, _undefined.default)(_global.__polkadotjs[name]), \"Multiple versions of \".concat(name, \" detected, ensure that there is only version one in your dependency tree\"));\n _global.__polkadotjs[name] = true;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isUndefined;\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name isUndefined\n * @summary Tests for a `undefined` values.\n * @description\n * Checks to see if the input value is `undefined`.\n * @example\n *
\n *\n * ```javascript\n * import { isUndefined } from '@polkadot/util';\n *\n * console.log('isUndefined', isUndefined(void(0))); // => true\n * ```\n */\nfunction isUndefined(value) {\n return typeof value === 'undefined';\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.format = format;\nexports.default = logger;\n\nvar _chalk = _interopRequireDefault(require(\"chalk\"));\n\nvar _moment = _interopRequireDefault(require(\"moment\"));\n\nvar _bn = _interopRequireDefault(require(\"./is/bn\"));\n\nvar _buffer = _interopRequireDefault(require(\"./is/buffer\"));\n\nvar _function = _interopRequireDefault(require(\"./is/function\"));\n\nvar _object = _interopRequireDefault(require(\"./is/object\"));\n\nvar _u8a = _interopRequireDefault(require(\"./is/u8a\"));\n\nvar _toHex = _interopRequireDefault(require(\"./u8a/toHex\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst logTo = {\n debug: 'log',\n error: 'error',\n log: 'log',\n warn: 'warn'\n};\nconst chalked = {\n debug: _chalk.default.gray,\n error: _chalk.default.red,\n log: _chalk.default.reset,\n warn: _chalk.default.yellow\n};\n\nfunction formatObject(value) {\n return Object.keys(value).reduce((result, key) => {\n result[key] = format(value[key]);\n return result;\n }, {});\n}\n\nfunction format(value) {\n if (Array.isArray(value)) {\n return value.map(format);\n }\n\n if ((0, _bn.default)(value)) {\n return value.toString();\n }\n\n if ((0, _buffer.default)(value)) {\n return \"0x\".concat(value.toString('hex'));\n }\n\n if ((0, _u8a.default)(value)) {\n return (0, _toHex.default)(value);\n }\n\n if (value && (0, _object.default)(value) && value.constructor === Object) {\n return formatObject(value);\n }\n\n return value;\n}\n\nfunction apply(log, type, values) {\n if (values.length === 1 && (0, _function.default)(values[0])) {\n const fnResult = values[0]();\n return apply(log, type, Array.isArray(fnResult) ? fnResult : [fnResult]);\n }\n\n const chalk = value => chalked[log](value); // @ts-ignore Not sure how to coax TS here...\n\n\n console[logTo[log]].apply(console, [chalk((0, _moment.default)().format('YYYY-MM-DD HH:mm:ss')), chalk(type)].concat(values.map(format)));\n}\n\nfunction noop() {} // noop\n\n/**\n * @name Logger\n * @summary Creates a consistent log interface for messages\n * @description\n * Returns a `Logger` that has `.log`, `.error`, `.warn` and `.debug` (controlled with environment `DEBUG=typeA,typeB`) methods. Logging is done with a consistent prefix (type of logger, date) followed by the actual message using the underlying console.\n * @example\n *
\n *\n * ```javascript\n * const l from '@polkadot/util/logger')('test');\n *\n * l.log('blah'); // TEST: blah\n * ```\n */\n\n\nfunction logger(_type) {\n const type = \"\".concat(_type.toUpperCase(), \":\").padStart(16);\n let isDebug;\n\n try {\n const isTest = process.env.NODE_ENV === 'test';\n const debugList = (process.env.DEBUG || '').split(',');\n isDebug = isTest || !!debugList.find(entry => _type.indexOf(entry) === 0);\n } catch (error) {\n isDebug = false;\n }\n\n return {\n debug: isDebug ? function () {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n return apply('debug', type, values);\n } : noop,\n error: function error() {\n for (var _len2 = arguments.length, values = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n values[_key2] = arguments[_key2];\n }\n\n return apply('error', type, values);\n },\n log: function log() {\n for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return apply('log', type, values);\n },\n noop,\n warn: function warn() {\n for (var _len4 = arguments.length, values = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n values[_key4] = arguments[_key4];\n }\n\n return apply('warn', type, values);\n }\n };\n}","'use strict';\nconst escapeStringRegexp = require('escape-string-regexp');\nconst ansiStyles = require('ansi-styles');\nconst stdoutColor = require('supports-color').stdout;\n\nconst template = require('./templates.js');\n\nconst isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];\n\n// `color-convert` models to exclude from the Chalk API due to conflicts and such\nconst skipModels = new Set(['gray']);\n\nconst styles = Object.create(null);\n\nfunction applyOptions(obj, options) {\n\toptions = options || {};\n\n\t// Detect level if not set manually\n\tconst scLevel = stdoutColor ? stdoutColor.level : 0;\n\tobj.level = options.level === undefined ? scLevel : options.level;\n\tobj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;\n}\n\nfunction Chalk(options) {\n\t// We check for this.template here since calling `chalk.constructor()`\n\t// by itself will have a `this` of a previously constructed chalk object\n\tif (!this || !(this instanceof Chalk) || this.template) {\n\t\tconst chalk = {};\n\t\tapplyOptions(chalk, options);\n\n\t\tchalk.template = function () {\n\t\t\tconst args = [].slice.call(arguments);\n\t\t\treturn chalkTag.apply(null, [chalk.template].concat(args));\n\t\t};\n\n\t\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\t\tObject.setPrototypeOf(chalk.template, chalk);\n\n\t\tchalk.template.constructor = Chalk;\n\n\t\treturn chalk.template;\n\t}\n\n\tapplyOptions(this, options);\n}\n\n// Use bright blue on Windows as the normal blue color is illegible\nif (isSimpleWindowsTerm) {\n\tansiStyles.blue.open = '\\u001B[94m';\n}\n\nfor (const key of Object.keys(ansiStyles)) {\n\tansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');\n\n\tstyles[key] = {\n\t\tget() {\n\t\t\tconst codes = ansiStyles[key];\n\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\treturn build.call(this, this._styles || [], true, 'visible');\n\t}\n};\n\nansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');\nfor (const model of Object.keys(ansiStyles.color.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.color.close,\n\t\t\t\t\tcloseRe: ansiStyles.color.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');\nfor (const model of Object.keys(ansiStyles.bgColor.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.bgColor.close,\n\t\t\t\t\tcloseRe: ansiStyles.bgColor.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, styles);\n\nfunction build(_styles, _empty, key) {\n\tconst builder = function () {\n\t\treturn applyStyle.apply(builder, arguments);\n\t};\n\n\tbuilder._styles = _styles;\n\tbuilder._empty = _empty;\n\n\tconst self = this;\n\n\tObject.defineProperty(builder, 'level', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.level;\n\t\t},\n\t\tset(level) {\n\t\t\tself.level = level;\n\t\t}\n\t});\n\n\tObject.defineProperty(builder, 'enabled', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.enabled;\n\t\t},\n\t\tset(enabled) {\n\t\t\tself.enabled = enabled;\n\t\t}\n\t});\n\n\t// See below for fix regarding invisible grey/dim combination on Windows\n\tbuilder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';\n\n\t// `__proto__` is used because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tbuilder.__proto__ = proto; // eslint-disable-line no-proto\n\n\treturn builder;\n}\n\nfunction applyStyle() {\n\t// Support varags, but simply cast to string in case there's only one arg\n\tconst args = arguments;\n\tconst argsLen = args.length;\n\tlet str = String(arguments[0]);\n\n\tif (argsLen === 0) {\n\t\treturn '';\n\t}\n\n\tif (argsLen > 1) {\n\t\t// Don't slice `arguments`, it prevents V8 optimizations\n\t\tfor (let a = 1; a < argsLen; a++) {\n\t\t\tstr += ' ' + args[a];\n\t\t}\n\t}\n\n\tif (!this.enabled || this.level <= 0 || !str) {\n\t\treturn this._empty ? '' : str;\n\t}\n\n\t// Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,\n\t// see https://github.com/chalk/chalk/issues/58\n\t// If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.\n\tconst originalDim = ansiStyles.dim.open;\n\tif (isSimpleWindowsTerm && this.hasGrey) {\n\t\tansiStyles.dim.open = '';\n\t}\n\n\tfor (const code of this._styles.slice().reverse()) {\n\t\t// Replace any instances already present with a re-opening code\n\t\t// otherwise only the part of the string until said closing code\n\t\t// will be colored, and the rest will simply be 'plain'.\n\t\tstr = code.open + str.replace(code.closeRe, code.open) + code.close;\n\n\t\t// Close the styling before a linebreak and reopen\n\t\t// after next line to fix a bleed issue on macOS\n\t\t// https://github.com/chalk/chalk/pull/92\n\t\tstr = str.replace(/\\r?\\n/g, `${code.close}$&${code.open}`);\n\t}\n\n\t// Reset the original `dim` if we changed it to work around the Windows dimmed gray issue\n\tansiStyles.dim.open = originalDim;\n\n\treturn str;\n}\n\nfunction chalkTag(chalk, strings) {\n\tif (!Array.isArray(strings)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn [].slice.call(arguments, 1).join(' ');\n\t}\n\n\tconst args = [].slice.call(arguments, 2);\n\tconst parts = [strings.raw[0]];\n\n\tfor (let i = 1; i < strings.length; i++) {\n\t\tparts.push(String(args[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'));\n\t\tparts.push(String(strings.raw[i]));\n\t}\n\n\treturn template(chalk, parts.join(''));\n}\n\nObject.defineProperties(Chalk.prototype, styles);\n\nmodule.exports = Chalk(); // eslint-disable-line new-cap\nmodule.exports.supportsColor = stdoutColor;\nmodule.exports.default = module.exports; // For TypeScript\n","'use strict';\nconst colorConvert = require('color-convert');\n\nconst wrapAnsi16 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => function () {\n\tconst rgb = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\t\t\tgray: [90, 39],\n\n\t\t\t// Bright color\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Fix humans\n\tstyles.color.grey = styles.color.gray;\n\n\tfor (const groupName of Object.keys(styles)) {\n\t\tconst group = styles[groupName];\n\n\t\tfor (const styleName of Object.keys(group)) {\n\t\t\tconst style = group[styleName];\n\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\n\t\tObject.defineProperty(styles, 'codes', {\n\t\t\tvalue: codes,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tconst ansi2ansi = n => n;\n\tconst rgb2rgb = (r, g, b) => [r, g, b];\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 0)\n\t};\n\n\tstyles.bgColor.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 10)\n\t};\n\n\tfor (let key of Object.keys(colorConvert)) {\n\t\tif (typeof colorConvert[key] !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst suite = colorConvert[key];\n\n\t\tif (key === 'ansi16') {\n\t\t\tkey = 'ansi';\n\t\t}\n\n\t\tif ('ansi16' in suite) {\n\t\t\tstyles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);\n\t\t\tstyles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);\n\t\t}\n\n\t\tif ('ansi256' in suite) {\n\t\t\tstyles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);\n\t\t\tstyles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);\n\t\t}\n\n\t\tif ('rgb' in suite) {\n\t\t\tstyles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);\n\t\t\tstyles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);\n\t\t}\n\t}\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict';\nmodule.exports = {\n\tstdout: false,\n\tstderr: false\n};\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tif ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, args) {\n\tconst results = [];\n\tconst chunks = args.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tif (!isNaN(chunk)) {\n\t\t\tresults.push(Number(chunk));\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const styleName of Object.keys(enabled)) {\n\t\tif (Array.isArray(enabled[styleName])) {\n\t\t\tif (!(styleName in current)) {\n\t\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t\t}\n\n\t\t\tif (enabled[styleName].length > 0) {\n\t\t\t\tcurrent = current[styleName].apply(current, enabled[styleName]);\n\t\t\t} else {\n\t\t\t\tcurrent = current[styleName];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, tmp) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => {\n\t\tif (escapeChar) {\n\t\t\tchunk.push(unescape(escapeChar));\n\t\t} else if (style) {\n\t\t\tconst str = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(chr);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMsg);\n\t}\n\n\treturn chunks.join('');\n};\n","//! moment.js\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n } else {\n var k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1 (mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n }\n else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate (y) {\n var date;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n var args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays (ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n var weekdays = isArray(this._weekdays) ? this._weekdays :\n this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone'];\n return (m === true) ? shiftWeekdays(weekdays, this._week.dow)\n : (m) ? weekdays[m.day()] : weekdays;\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n else {\n if ((typeof console !== 'undefined') && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var locale, parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, tmpLocale, parentConfig = baseConfig;\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n var obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10);\n var m = hm % 100, h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year': output = monthDiff(this, that) / 12; break;\n case 'month': output = monthDiff(this, that); break;\n case 'quarter': output = monthDiff(this, that) / 3; break;\n case 'second': output = (this - that) / 1e3; break; // 1000\n case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default: output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000;\n var MS_PER_MINUTE = 60 * MS_PER_SECOND;\n var MS_PER_HOUR = 60 * MS_PER_MINUTE;\n var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return (dividend % divisor + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf (units) {\n var time;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf (units) {\n var time;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2 () {\n return isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix (input) {\n return createLocal(input * 1000);\n }\n\n function createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month': return months;\n case 'quarter': return months / 3;\n case 'year': return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asQuarters = makeAs('Q');\n var asYears = makeAs('y');\n\n function clone$1 () {\n return createDuration(this);\n }\n\n function get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return ((x > 0) - (x < 0)) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return totalSign + 'P' +\n (Y ? ymSign + Y + 'Y' : '') +\n (M ? ymSign + M + 'M' : '') +\n (D ? daysSign + D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? hmsSign + h + 'H' : '') +\n (m ? hmsSign + m + 'M' : '') +\n (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n hooks.version = '2.24.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM' // \n };\n\n return hooks;\n\n})));\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBn;\n\nvar _bn = _interopRequireDefault(require(\"bn.js\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name isBn\n * @summary Tests for a `BN` object instance.\n * @description\n * Checks to see if the input object is an instance of `BN` (bn.js).\n * @example\n *
\n *\n * ```javascript\n * import BN from 'bn.js';\n * import { isBn } from '@polkadot/util';\n *\n * console.log('isBn', isBn(new BN(1))); // => true\n * ```\n */\nfunction isBn(value) {\n return _bn.default.isBN(value);\n}","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n r.strip();\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBuffer;\n\nvar _instanceOf = _interopRequireDefault(require(\"./instanceOf\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name isBuffer\n * @summary Tests for a `Buffer` object instance.\n * @description\n * Checks to see if the input object is an instance of `Buffer`.\n * @example\n *
\n *\n * ```javascript\n * import { isBuffer } from '@polkadot/util';\n *\n * console.log('isBuffer', isBuffer(Buffer.from([]))); // => true\n * ```\n */\nfunction isBuffer(value) {\n return (0, _instanceOf.default)(value, Buffer);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isInstanceOf;\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name isInstanceOf\n * @summary Tests for a instance of a class.\n * @description\n * Checks to see if the input value is an instance of the test class.\n * @example\n *
\n *\n * ```javascript\n * import { isInstanceOf } from '@polkadot/util';\n *\n * console.log('isInstanceOf', isInstanceOf(new Array(0), Array)); // => true\n * ```\n */\nfunction isInstanceOf(value, clazz) {\n return value instanceof clazz;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isObject;\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name isObject\n * @summary Tests for an `object`.\n * @description\n * Checks to see if the input value is a JavaScript object.\n * @example\n *
\n *\n * ```javascript\n * import { isObject } from '@polkadot/util';\n *\n * isObject({}); // => true\n * isObject('something'); // => false\n * ```\n */\nfunction isObject(value) {\n return typeof value === 'object';\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isU8a;\n\nvar _instanceOf = _interopRequireDefault(require(\"./instanceOf\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name isU8a\n * @summary Tests for a `Uint8Array` object instance.\n * @description\n * Checks to see if the input object is an instance of `Uint8Array`.\n * @example\n *
\n *\n * ```javascript\n * import { isUint8Array } from '@polkadot/util';\n *\n * console.log('isU8a', isU8a([])); // => false\n * ```\n */\nfunction isU8a(value) {\n return (0, _instanceOf.default)(value, Uint8Array);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = u8aToHex;\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst ALPHABET = '0123456789abcdef';\n/**\n * @name u8aToHex\n * @summary Creates a hex string from a Uint8Array object.\n * @description\n * `UInt8Array` input values return the actual hex string. `null` or `undefined` values returns an `0x` string.\n * @example\n *
\n *\n * ```javascript\n * import { u8aToHex } from '@polkadot/util';\n *\n * u8aToHex(new Uint8Array([0x68, 0x65, 0x6c, 0x6c, 0xf])); // 0x68656c0f\n * ```\n */\n\nfunction u8aToHex(value) {\n let bitLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;\n let isPrefixed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n const prefix = isPrefixed ? '0x' : '';\n\n if (!value || !value.length) {\n return prefix;\n }\n\n const byteLength = Math.ceil(bitLength / 8);\n\n if (byteLength > 0 && value.length > byteLength) {\n const halfLength = Math.ceil(byteLength / 2);\n return \"\".concat(u8aToHex(value.subarray(0, halfLength), -1, isPrefixed), \"\\u2026\").concat(u8aToHex(value.subarray(value.length - halfLength), -1, false));\n } // based on comments in https://stackoverflow.com/questions/40031688/javascript-arraybuffer-to-hex and\n // implementation in http://jsben.ch/Vjx2V - optimisation here suggests that a forEach loop is faster\n // than reduce as well (clocking at in 90% of the reduce speed with tweaking in the playpen above)\n\n\n return value.reduce((result, value) => {\n return result + ALPHABET[value >> 4] + ALPHABET[value & 15];\n }, prefix);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = promisify;\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name promisify\n * @summary Wraps an async callback into a `Promise`\n * @description\n * Wraps the supplied async function `fn` that has a standard JS callback `(error: Error, result: any)` into a `Promise`, passing the supplied parameters. When `error` is set, the Promise is rejected, else the Promise resolves with the `result` value.\n * @example\n *
\n *\n * ```javascript\n * const { promisify } from '@polkadot/util';\n *\n * await promisify(null, ((a, cb) => cb(null, a), true); // resolves with `true`\n * await promisify(null, (cb) => cb(new Error('error!'))); // rejects with `error!`\n * ```\n */\nfunction promisify(self, fn) {\n for (var _len = arguments.length, params = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n params[_key - 2] = arguments[_key];\n }\n\n return new Promise((resolve, reject) => {\n fn.apply(self, params.concat([(error, result) => {\n if (error) {\n reject(error);\n } else {\n resolve(result);\n }\n }]));\n });\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"arrayFilter\", {\n enumerable: true,\n get: function get() {\n return _filter.default;\n }\n});\n\nvar _filter = _interopRequireDefault(require(\"./filter\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = arrayFilter;\n\nvar _null = _interopRequireDefault(require(\"../is/null\"));\n\nvar _undefined = _interopRequireDefault(require(\"../is/undefined\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name arrayFilter\n * @summary Filters undefined and (optionally) null values from an array\n * @description\n * Returns a new array with all `undefined` values removed. Optionally, when `allowNulls = false`, it removes the `null` values as well\n * @example\n *
\n *\n * ```javascript\n * import { arrayFilter } from '@polkadot/util';\n *\n * arrayFilter([0, void 0, true, null, false, '']); // [0, true, null, false, '']\n * arrayFilter([0, void 0, true, null, false, ''], false); // [0, true, false, '']\n * ```\n */\nfunction arrayFilter(array) {\n let allowNulls = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return array.filter(value => {\n return !(0, _undefined.default)(value) && (allowNulls || !(0, _null.default)(value));\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isNull;\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name isNull\n * @summary Tests for a `null` values.\n * @description\n * Checks to see if the input value is `null`.\n * @example\n *
\n *\n * ```javascript\n * import { isNull } from '@polkadot/util';\n *\n * console.log('isNull', isNull(null)); // => true\n * ```\n */\nfunction isNull(value) {\n return value === null;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"bnFromHex\", {\n enumerable: true,\n get: function get() {\n return _fromHex.default;\n }\n});\nObject.defineProperty(exports, \"bnMax\", {\n enumerable: true,\n get: function get() {\n return _max.default;\n }\n});\nObject.defineProperty(exports, \"bnMin\", {\n enumerable: true,\n get: function get() {\n return _min.default;\n }\n});\nObject.defineProperty(exports, \"bnToBn\", {\n enumerable: true,\n get: function get() {\n return _toBn.default;\n }\n});\nObject.defineProperty(exports, \"bnToHex\", {\n enumerable: true,\n get: function get() {\n return _toHex.default;\n }\n});\nObject.defineProperty(exports, \"bnToU8a\", {\n enumerable: true,\n get: function get() {\n return _toU8a.default;\n }\n});\n\nvar _fromHex = _interopRequireDefault(require(\"./fromHex\"));\n\nvar _max = _interopRequireDefault(require(\"./max\"));\n\nvar _min = _interopRequireDefault(require(\"./min\"));\n\nvar _toBn = _interopRequireDefault(require(\"./toBn\"));\n\nvar _toHex = _interopRequireDefault(require(\"./toHex\"));\n\nvar _toU8a = _interopRequireDefault(require(\"./toU8a\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _toBn = _interopRequireDefault(require(\"../hex/toBn\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name bnFromHex\n * @summary Creates a BN.js bignumber object from a hex string.\n * @alias hex/toBn\n */\nvar _default = _toBn.default;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hexToBn;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _bn = _interopRequireDefault(require(\"bn.js\"));\n\nvar _boolean = _interopRequireDefault(require(\"../is/boolean\"));\n\nvar _stripPrefix = _interopRequireDefault(require(\"./stripPrefix\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction reverse(value) {\n return (value.match(new RegExp('.{1,2}', 'g')) || []).reverse().join('');\n}\n/**\n * @name hexToBn\n * @summary Creates a BN.js bignumber object from a hex string.\n * @description\n * `null` inputs returns a `BN(0)` result. Hex input values return the actual value converted to a BN. Anything that is not a hex string (including the `0x` prefix) throws an error.\n * @param _value The value to convert\n * @param _options Options to pass while converting\n * @param _options.isLe Convert using Little Endian\n * @param _options.isNegative Convert using two's complement\n * @example\n *
\n *\n * ```javascript\n * import { hexToBn } from '@polkadot/util';\n *\n * hexToBn('0x123480001f'); // => BN(0x123480001f)\n * ```\n */\n\n\nfunction hexToBn(value) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n isLe: false,\n isNegative: false\n };\n\n if (!value) {\n return new _bn.default(0);\n }\n\n const _options = (0, _objectSpread2.default)({\n isLe: false,\n isNegative: false\n }, (0, _boolean.default)(options) ? {\n isLe: options\n } : options);\n\n const _value = (0, _stripPrefix.default)(value); // FIXME: Use BN's 3rd argument `isLe` once this issue is fixed\n // https://github.com/indutny/bn.js/issues/208\n\n\n const bn = new _bn.default((_options.isLe ? reverse(_value) : _value) || '00', 16); // fromTwos takes as parameter the number of bits, which is the hex length\n // multiplied by 4.\n\n return _options.isNegative ? bn.fromTwos(_value.length * 4) : bn;\n}","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBoolean;\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name isBoolean\n * @summary Tests for a boolean value.\n * @description\n * Checks to see if the input value is a JavaScript boolean.\n * @example\n *
\n *\n * ```javascript\n * import { isBoolean } from '@polkadot/util';\n *\n * isBoolean(false); // => true\n * ```\n */\nfunction isBoolean(value) {\n return typeof value === 'boolean';\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hexStripPrefix;\n\nvar _hasPrefix = _interopRequireDefault(require(\"./hasPrefix\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst UNPREFIX_HEX_REGEX = /^[a-fA-F0-9]+$/;\n/**\n * @name hexStripPrefix\n * @summary Strips any leading `0x` prefix.\n * @description\n * Tests for the existence of a `0x` prefix, and returns the value without the prefix. Un-prefixed values are returned as-is.\n * @example\n *
\n *\n * ```javascript\n * import { hexStripPrefix } from '@polkadot/util';\n *\n * console.log('stripped', hexStripPrefix('0x1234')); // => 1234\n * ```\n */\n\nfunction hexStripPrefix(value) {\n if (!value) {\n return '';\n }\n\n if ((0, _hasPrefix.default)(value)) {\n return value.substr(2);\n }\n\n if (UNPREFIX_HEX_REGEX.test(value)) {\n return value;\n }\n\n throw new Error(\"Invalid hex \".concat(value, \" passed to hexStripPrefix\"));\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hexHasPrefix;\n\nvar _hex = _interopRequireDefault(require(\"../is/hex\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name hexHasPrefix\n * @summary Tests for the existence of a `0x` prefix.\n * @description\n * Checks for a valid hex input value and if the start matched `0x`\n * @example\n *
\n *\n * ```javascript\n * import { hexHasPrefix } from '@polkadot/util';\n *\n * console.log('has prefix', hexHasPrefix('0x1234')); // => true\n * ```\n */\nfunction hexHasPrefix(value) {\n return !!(value && (0, _hex.default)(value, -1, true) && value.substr(0, 2) === '0x');\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isHex;\n\nvar _string = _interopRequireDefault(require(\"./string\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst HEX_REGEX = /^0x[a-fA-F0-9]+$/;\n/**\n * @name isHex\n * @summary Tests for a hex string.\n * @description\n * Checks to see if the input value is a `0x` prefixed hex string. Optionally (`bitLength` !== -1) checks to see if the bitLength is correct.\n * @example\n *
\n *\n * ```javascript\n * import { isHex } from '@polkadot/util';\n *\n * isHex('0x1234'); // => true\n * isHex('0x1234', 8); // => false\n * ```\n */\n\nfunction isHex(value) {\n let bitLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;\n let ignoreLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n const isValidHex = value === '0x' || (0, _string.default)(value) && HEX_REGEX.test(value.toString());\n\n if (isValidHex && bitLength !== -1) {\n return value.length === 2 + Math.ceil(bitLength / 4);\n }\n\n return isValidHex && (ignoreLength || value.length % 2 === 0);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isString;\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name isString\n * @summary Tests for a string.\n * @description\n * Checks to see if the input value is a JavaScript string.\n * @example\n *
\n *\n * ```javascript\n * import { isString } from '@polkadot/util';\n *\n * console.log('isString', isString('test')); // => true\n * ```\n */\nfunction isString(value) {\n return typeof value === 'string' || value instanceof String;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = max;\n\nvar _bn = _interopRequireDefault(require(\"bn.js\"));\n\nvar _assert = _interopRequireDefault(require(\"../assert\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name max\n * @summary Finds and returns the highest value in an array of BNs.\n * @example\n *
\n *\n * ```javascript\n * import BN from 'bn.js';\n * import { max } from '@polkadot/util';\n *\n * max([new BN(1), new BN(3), new BN(2)]).toString(); // => '3'\n * ```\n */\nfunction max() {\n for (var _len = arguments.length, items = new Array(_len), _key = 0; _key < _len; _key++) {\n items[_key] = arguments[_key];\n }\n\n (0, _assert.default)(items && items.length >= 1, 'Must provide one or more BN arguments');\n return items.reduce((acc, val) => _bn.default.max(acc, val), items[0]);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = min;\n\nvar _bn = _interopRequireDefault(require(\"bn.js\"));\n\nvar _assert = _interopRequireDefault(require(\"../assert\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name min\n * @summary Finds and returns the smallest value in an array of BNs.\n * @example\n *
\n *\n * ```javascript\n * import BN from 'bn.js';\n * import { min } from '@polkadot/util';\n *\n * min([new BN(1), new BN(3), new BN(2)]).toString(); // => '1'\n * ```\n */\nfunction min() {\n for (var _len = arguments.length, items = new Array(_len), _key = 0; _key < _len; _key++) {\n items[_key] = arguments[_key];\n }\n\n (0, _assert.default)(items && items.length >= 1, 'Must provide one or more BN arguments');\n return items.reduce((acc, val) => _bn.default.min(acc, val), items[0]);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = bnToBn;\n\nvar _bn = _interopRequireDefault(require(\"bn.js\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name bnToBn\n * @summary Creates a BN value from a BN.js bignumber or number input.\n * @description\n * `null` inputs returns a `0x0` result, BN values returns the value, numnbers returns a BN representation.\n * @example\n *
\n *\n * ```javascript\n * import BN from 'bn.js';\n * import { bnToBn } from '@polkadot/util';\n *\n * bnToBn(0x1234); // => BN(0x1234)\n * bnToBn(new BN(0x1234)); // => BN(0x1234)\n * ```\n */\nfunction bnToBn(value) {\n if (!value) {\n return new _bn.default(0);\n }\n\n return _bn.default.isBN(value) ? value : new _bn.default(value);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = bnToHex;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _number = _interopRequireDefault(require(\"../is/number\"));\n\nvar _toU8a = _interopRequireDefault(require(\"./toU8a\"));\n\nvar _u8a = require(\"../u8a\");\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst ZERO_STR = '0x00';\n\n/**\n * @name bnToHex\n * @summary Creates a hex value from a BN.js bignumber object.\n * @description\n * `null` inputs returns a `0x` result, BN values return the actual value as a `0x` prefixed hex value. Anything that is not a BN object throws an error. With `bitLength` set, it fixes the number to the specified length.\n * @example\n *
\n *\n * ```javascript\n * import BN from 'bn.js';\n * import { bnToHex } from '@polkadot/util';\n *\n * bnToHex(new BN(0x123456)); // => '0x123456'\n * ```\n */\nfunction bnToHex(value) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n bitLength: -1,\n isLe: false,\n isNegative: false\n };\n\n if (!value) {\n return ZERO_STR;\n }\n\n const _options = (0, _objectSpread2.default)({\n isLe: false,\n isNegative: false\n }, (0, _number.default)(options) ? {\n bitLength: options\n } : options);\n\n return (0, _u8a.u8aToHex)((0, _toU8a.default)(value, _options));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isNumber;\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name isNumber\n * @summary Tests for a JavaScript number.\n * @description\n * Checks to see if the input value is a valid number.\n * @example\n *
\n *\n * ```javascript\n * import { isNumber } from '@polkadot/util';\n *\n * console.log('isNumber', isNumber(1234)); // => true\n * ```\n */\nfunction isNumber(value) {\n return typeof value === 'number';\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = bnToU8a;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _number = _interopRequireDefault(require(\"../is/number\"));\n\nvar _toBn = _interopRequireDefault(require(\"./toBn\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction bnToU8a(value) {\n let arg1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n bitLength: -1,\n isLe: true,\n isNegative: false\n };\n let arg2 = arguments.length > 2 ? arguments[2] : undefined;\n\n const _options = (0, _objectSpread2.default)({\n isLe: true,\n isNegative: false,\n bitLength: -1\n }, (0, _number.default)(arg1) ? {\n bitLength: arg1,\n isLe: arg2\n } : arg1);\n\n const valueBn = (0, _toBn.default)(value);\n let byteLength = _options.bitLength === -1 ? Math.ceil(valueBn.bitLength() / 8) : Math.ceil(_options.bitLength / 8);\n\n if (!value) {\n return _options.bitLength === -1 ? new Uint8Array([]) : new Uint8Array(byteLength);\n }\n\n const output = new Uint8Array(byteLength);\n const bn = _options.isNegative ? valueBn.toTwos(byteLength * 8) : valueBn;\n output.set(bn.toArray(_options.isLe ? 'le' : 'be', byteLength), 0);\n return output;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"u8aConcat\", {\n enumerable: true,\n get: function get() {\n return _concat.default;\n }\n});\nObject.defineProperty(exports, \"u8aFixLength\", {\n enumerable: true,\n get: function get() {\n return _fixLength.default;\n }\n});\nObject.defineProperty(exports, \"u8aToBn\", {\n enumerable: true,\n get: function get() {\n return _toBn.default;\n }\n});\nObject.defineProperty(exports, \"u8aToBuffer\", {\n enumerable: true,\n get: function get() {\n return _toBuffer.default;\n }\n});\nObject.defineProperty(exports, \"u8aToHex\", {\n enumerable: true,\n get: function get() {\n return _toHex.default;\n }\n});\nObject.defineProperty(exports, \"u8aToString\", {\n enumerable: true,\n get: function get() {\n return _toString.default;\n }\n});\nObject.defineProperty(exports, \"u8aToU8a\", {\n enumerable: true,\n get: function get() {\n return _toU8a.default;\n }\n});\n\nvar _concat = _interopRequireDefault(require(\"./concat\"));\n\nvar _fixLength = _interopRequireDefault(require(\"./fixLength\"));\n\nvar _toBn = _interopRequireDefault(require(\"./toBn\"));\n\nvar _toBuffer = _interopRequireDefault(require(\"./toBuffer\"));\n\nvar _toHex = _interopRequireDefault(require(\"./toHex\"));\n\nvar _toString = _interopRequireDefault(require(\"./toString\"));\n\nvar _toU8a = _interopRequireDefault(require(\"./toU8a\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = u8aConcat;\n\nvar _toU8a = _interopRequireDefault(require(\"./toU8a\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name u8aConcat\n * @summary Creates a concatenated Uint8Array from the inputs.\n * @description\n * Concatenates the input arrays into a single `UInt8Array`.\n * @example\n *
\n *\n * ```javascript\n * import { u8aConcat } from '@polkadot/util';\n *\n * u8aConcat(\n * new Uint8Array([1, 2, 3]),\n * new Uint8Array([4, 5, 6])\n * ); // [1, 2, 3, 4, 5, 6]\n * ```\n */\nfunction u8aConcat() {\n for (var _len = arguments.length, _list = new Array(_len), _key = 0; _key < _len; _key++) {\n _list[_key] = arguments[_key];\n }\n\n const list = _list.map(_toU8a.default);\n\n const length = list.reduce((total, item) => total + item.length, 0);\n const result = new Uint8Array(length);\n let offset = 0;\n return list.reduce((result, item) => {\n result.set(item, offset);\n offset += item.length;\n return result;\n }, result);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = u8aToU8a;\n\nvar _buffer = _interopRequireDefault(require(\"../is/buffer\"));\n\nvar _hex = _interopRequireDefault(require(\"../is/hex\"));\n\nvar _string = _interopRequireDefault(require(\"../is/string\"));\n\nvar _toU8a = _interopRequireDefault(require(\"../buffer/toU8a\"));\n\nvar _toU8a2 = _interopRequireDefault(require(\"../hex/toU8a\"));\n\nvar _toU8a3 = _interopRequireDefault(require(\"../string/toU8a\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name u8aToU8a\n * @summary Creates a Uint8Array value from a Uint8Array, Buffer, string or hex input.\n * @description\n * `null` ior `undefined` nputs returns a `[]` result, Uint8Array values returns the value, hex strings returns a Uint8Array representation.\n * @example\n *
\n *\n * ```javascript\n * import { u8aToU8a } from '@polkadot/util';\n *\n * u8aToU8a(new Uint8Array([0x12, 0x34]); // => Uint8Array([0x12, 0x34])\n * u8aToU8a(0x1234); // => Uint8Array([0x12, 0x34])\n * ```\n */\nfunction u8aToU8a(value) {\n if (!value) {\n return new Uint8Array();\n }\n\n if ((0, _buffer.default)(value)) {\n return (0, _toU8a.default)(value);\n }\n\n if ((0, _string.default)(value)) {\n return (0, _hex.default)(value) ? (0, _toU8a2.default)(value) : (0, _toU8a3.default)(value);\n }\n\n if (Array.isArray(value)) {\n return Uint8Array.from(value);\n }\n\n return value;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = bufferToU8a;\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name bufferToU8a\n * @summary Creates a Uint8Array value from a Buffer object.\n * @description\n * `null` inputs returns an empty result, `Buffer` values return the actual value as a `Uint8Array`. Anything that is not a `Buffer` object throws an error.\n * @example\n *
\n *\n * ```javascript\n * import { bufferToU8a } from '@polkadot/util';\n *\n * bufferToU8a(Buffer.from([1, 2, 3]));\n * ```\n */\nfunction bufferToU8a(buffer) {\n if (!buffer) {\n return new Uint8Array([]);\n }\n\n return new Uint8Array(buffer);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hexToU8a;\n\nvar _assert = _interopRequireDefault(require(\"../assert\"));\n\nvar _hex = _interopRequireDefault(require(\"../is/hex\"));\n\nvar _stripPrefix = _interopRequireDefault(require(\"./stripPrefix\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name hexToU8a\n * @summary Creates a Buffer object from a hex string.\n * @description\n * `null` inputs returns an empty `Uint8Array` result. Hex input values return the actual bytes value converted to a Uint8Array. Anything that is not a hex string (including the `0x` prefix) throws an error.\n * @example\n *
\n *\n * ```javascript\n * import { hexToU8a } from '@polkadot/util';\n *\n * hexToU8a('0x80001f'); // Uint8Array([0x80, 0x00, 0x1f])\n * hexToU8a('0x80001f', 32); // Uint8Array([0x00, 0x80, 0x00, 0x1f])\n * ```\n */\nfunction hexToU8a(_value) {\n let bitLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;\n\n if (!_value) {\n return new Uint8Array([]);\n }\n\n (0, _assert.default)((0, _hex.default)(_value), \"Expected hex value to convert, found '\".concat(_value, \"'\"));\n const value = (0, _stripPrefix.default)(_value);\n const valLength = value.length / 2;\n const bufLength = Math.ceil(bitLength === -1 ? valLength : bitLength / 8);\n const result = new Uint8Array(bufLength);\n const offset = Math.max(0, bufLength - valLength);\n\n for (let index = 0; index < bufLength; index++) {\n result[index + offset] = parseInt(value.substr(index * 2, 2), 16);\n }\n\n return result;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = stringToU8a;\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\nlet encoder;\n\nfunction polyfilledEncode(value) {\n const u8a = new Uint8Array(value.length);\n\n for (let i = 0; i < value.length; i++) {\n u8a[i] = value.charCodeAt(i);\n }\n\n return u8a;\n}\n\ntry {\n encoder = new TextEncoder();\n} catch (error) {\n encoder = {\n encode: polyfilledEncode\n };\n}\n/**\n * @name stringToU8a\n * @summary Creates a Uint8Array object from a utf-8 string.\n * @description\n * String input values return the actual encoded `UInt8Array`. `null` or `undefined` values returns an empty encoded array.\n * @example\n *
\n *\n * ```javascript\n * import { stringToU8a } from '@polkadot/util';\n *\n * stringToU8a('hello'); // [0x68, 0x65, 0x6c, 0x6c, 0x6f]\n * ```\n */\n\n\nfunction stringToU8a(value) {\n if (!value) {\n return new Uint8Array([]);\n }\n\n return encoder.encode(value);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = u8aFixLength;\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name u8aFixLength\n * @summary Shifts a Uint8Array to a specific bitLength\n * @description\n * Returns a uint8Array with the specified number of bits contained in the return value. (If bitLength is -1, length checking is not done). Values with more bits are trimmed to the specified length.\n * @example\n *
\n *\n * ```javascript\n * import { u8aFixLength } from '@polkadot/util';\n *\n * u8aFixLength('0x12') // => 0x12\n * u8aFixLength('0x12', 16) // => 0x0012\n * u8aFixLength('0x1234', 8) // => 0x12\n * ```\n */\nfunction u8aFixLength(value) {\n let bitLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;\n let atStart = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n const byteLength = Math.ceil(bitLength / 8);\n\n if (bitLength === -1 || value.length === byteLength) {\n return value;\n }\n\n if (value.length > byteLength) {\n return value.subarray(0, byteLength);\n }\n\n const result = new Uint8Array(byteLength);\n\n if (atStart) {\n result.set(value, 0);\n } else {\n result.set(value, byteLength - value.length);\n }\n\n return result;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = u8aToBn;\n\nvar _toBn = _interopRequireDefault(require(\"../hex/toBn\"));\n\nvar _toHex = _interopRequireDefault(require(\"./toHex\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name u8aToBn\n * @summary Creates a BN from a Uint8Array object.\n * @description\n * `UInt8Array` input values return the actual BN. `null` or `undefined` values returns an `0x0` value.\n * @param value The value to convert\n * @param options Options to pass while converting\n * @param options.isLe Convert using Little Endian\n * @param options.isNegative Convert using two's complement\n * @example\n *
\n *\n * ```javascript\n * import { u8aToBn } from '@polkadot/util';\n *\n * u8aToHex(new Uint8Array([0x68, 0x65, 0x6c, 0x6c, 0xf])); // 0x68656c0f\n * ```\n */\nfunction u8aToBn(value) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n isLe: true,\n isNegative: false\n };\n return (0, _toBn.default)((0, _toHex.default)(value), options);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = u8aToBuffer;\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name u8aToBuffer\n * @summary Creates a Buffer object from a hex string.\n * @description\n * `null` inputs returns an empty `Buffer` result. `UInt8Array` input values return the actual bytes value converted to a `Buffer`. Anything that is not a `UInt8Array` throws an error.\n * @example\n *
\n *\n * ```javascript\n * import { u8aToBuffer } from '@polkadot/util';\n *\n * console.log('Buffer', u8aToBuffer('0x123480001f'));\n * ```\n */\nfunction u8aToBuffer(value) {\n if (!value) {\n return Buffer.from([]);\n } // @ts-ignore yes, from also works with u8a\n\n\n return Buffer.from(value);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = u8aToString;\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\nlet decoder;\n\nfunction polyfilledDecode(value) {\n return value.reduce((str, code) => {\n return str + String.fromCharCode(code);\n }, '');\n}\n\ntry {\n decoder = new TextDecoder('utf-8');\n} catch (error) {\n decoder = {\n decode: polyfilledDecode\n };\n}\n/**\n * @name u8aToString\n * @summary Creates a utf-8 string from a Uint8Array object.\n * @description\n * `UInt8Array` input values return the actual decoded utf-8 string. `null` or `undefined` values returns an empty string.\n * @example\n *
\n *\n * ```javascript\n * import { u8aToString } from '@polkadot/util';\n *\n * u8aToString(new Uint8Array([0x68, 0x65, 0x6c, 0x6c, 0x6f])); // hello\n * ```\n */\n\n\nfunction u8aToString(value) {\n if (!value || !value.length) {\n return '';\n }\n\n return decoder.decode(value);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"bufferToU8a\", {\n enumerable: true,\n get: function get() {\n return _toU8a.default;\n }\n});\n\nvar _toU8a = _interopRequireDefault(require(\"./toU8a\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"compactAddLength\", {\n enumerable: true,\n get: function get() {\n return _addLength.default;\n }\n});\nObject.defineProperty(exports, \"compactStripLength\", {\n enumerable: true,\n get: function get() {\n return _stripLength.default;\n }\n});\nObject.defineProperty(exports, \"compactFromU8a\", {\n enumerable: true,\n get: function get() {\n return _fromU8a.default;\n }\n});\nObject.defineProperty(exports, \"compactToU8a\", {\n enumerable: true,\n get: function get() {\n return _toU8a.default;\n }\n});\n\nvar _addLength = _interopRequireDefault(require(\"./addLength\"));\n\nvar _stripLength = _interopRequireDefault(require(\"./stripLength\"));\n\nvar _fromU8a = _interopRequireDefault(require(\"./fromU8a\"));\n\nvar _toU8a = _interopRequireDefault(require(\"./toU8a\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = compactAddLength;\n\nvar _u8a = require(\"../u8a\");\n\nvar _toU8a = _interopRequireDefault(require(\"./toU8a\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name compactAddLength\n * @description Adds a length prefix to the input value\n * @example\n *
\n *\n * ```javascript\n * import { compactAddLength } from '@polkadot/util';\n *\n * console.log(compactAddLength(new Uint8Array([0xde, 0xad, 0xbe, 0xef]))); // Uint8Array([4 << 2, 0xde, 0xad, 0xbe, 0xef])\n * ```\n */\nfunction compactAddLength(input) {\n return (0, _u8a.u8aConcat)((0, _toU8a.default)(input.length), input);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = compactToU8a;\n\nvar _bn = _interopRequireDefault(require(\"bn.js\"));\n\nvar _assert = _interopRequireDefault(require(\"../assert\"));\n\nvar _bn2 = require(\"../bn\");\n\nvar _u8a = require(\"../u8a\");\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst MAX_U8 = new _bn.default(2).pow(new _bn.default(8 - 2)).subn(1);\nconst MAX_U16 = new _bn.default(2).pow(new _bn.default(16 - 2)).subn(1);\nconst MAX_U32 = new _bn.default(2).pow(new _bn.default(32 - 2)).subn(1);\n/**\n * @name compactToU8a\n * @description Encodes a number into a compact representation\n * @example\n *
\n *\n * ```javascript\n * import { compactToU8a } from '@polkadot/util';\n *\n * console.log(compactToU8a(511, 32)); // Uint8Array([0b11111101, 0b00000111])\n * ```\n */\n\nfunction compactToU8a(_value) {\n const value = (0, _bn2.bnToBn)(_value);\n\n if (value.lte(MAX_U8)) {\n return new Uint8Array([value.toNumber() << 2]);\n } else if (value.lte(MAX_U16)) {\n return (0, _bn2.bnToU8a)(value.shln(2).addn(0b01), 16, true);\n } else if (value.lte(MAX_U32)) {\n return (0, _bn2.bnToU8a)(value.shln(2).addn(0b10), 32, true);\n }\n\n const u8a = (0, _bn2.bnToU8a)(value);\n let length = u8a.length; // adjust to the minimum number of bytes\n\n while (u8a[length - 1] === 0) {\n length--;\n }\n\n (0, _assert.default)(length >= 4, 'Previous tests match anyting less than 2^30; qed');\n return (0, _u8a.u8aConcat)(new Uint8Array([// substract 4 as minimum (also catered for in decoding)\n (length - 4 << 2) + 0b11]), u8a.subarray(0, length));\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = compactStripLength;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _defaults = require(\"./defaults\");\n\nvar _fromU8a = _interopRequireDefault(require(\"./fromU8a\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name compactStripLength\n * @description Removes the length prefix, returning both the total length (including the value + compact encoding) and the decoded value with the correct length\n * @example\n *
\n *\n * ```javascript\n * import { compactStripLength } from '@polkadot/util';\n *\n * console.log(compactStripLength(new Uint8Array([2 << 2, 0xde, 0xad]))); // [2, Uint8Array[0xde, 0xad]]\n * ```\n */\nfunction compactStripLength(input) {\n let bitLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _defaults.DEFAULT_BITLENGTH;\n\n const _compactFromU8a = (0, _fromU8a.default)(input, bitLength),\n _compactFromU8a2 = (0, _slicedToArray2.default)(_compactFromU8a, 2),\n offset = _compactFromU8a2[0],\n length = _compactFromU8a2[1];\n\n const total = offset + length.toNumber();\n return [total, input.subarray(offset, total)];\n}","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DEFAULT_BITLENGTH = void 0;\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst DEFAULT_BITLENGTH = 32;\nexports.DEFAULT_BITLENGTH = DEFAULT_BITLENGTH;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = compactFromU8a;\n\nvar _bn = _interopRequireDefault(require(\"bn.js\"));\n\nvar _u8a = require(\"../u8a\");\n\nvar _defaults = require(\"./defaults\");\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name compactFromU8a\n * @description Retrievs the offset and encoded length from a compact-prefixed value\n * @example\n *
\n *\n * ```javascript\n * import { compactFromU8a } from '@polkadot/util';\n *\n * const [offset, length] = compactFromU8a(new Uint8Array([254, 255, 3, 0]), 32));\n *\n * console.log('value offset=', offset, 'length=', length); // 4, 0xffff\n * ```\n */\nfunction compactFromU8a(_input) {\n let bitLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _defaults.DEFAULT_BITLENGTH;\n const input = (0, _u8a.u8aToU8a)(_input);\n const flag = input[0] & 0b11;\n\n if (flag === 0b00) {\n return [1, new _bn.default(input[0]).shrn(2)];\n } else if (flag === 0b01) {\n return [2, (0, _u8a.u8aToBn)(input.slice(0, 2), true).shrn(2)];\n } else if (flag === 0b10) {\n return [4, (0, _u8a.u8aToBn)(input.slice(0, 4), true).shrn(2)];\n }\n\n const length = new _bn.default(input[0]).shrn(2) // clear flag\n .addn(4) // add 4 for base length\n .toNumber();\n const offset = 1 + length;\n return [offset, (0, _u8a.u8aToBn)(input.subarray(1, offset), true)];\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"ExtError\", {\n enumerable: true,\n get: function get() {\n return _error.default;\n }\n});\n\nvar _error = _interopRequireDefault(require(\"./error\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"formatBalance\", {\n enumerable: true,\n get: function get() {\n return _formatBalance.default;\n }\n});\nObject.defineProperty(exports, \"formatDecimal\", {\n enumerable: true,\n get: function get() {\n return _formatDecimal.default;\n }\n});\nObject.defineProperty(exports, \"formatElapsed\", {\n enumerable: true,\n get: function get() {\n return _formatElapsed.default;\n }\n});\nObject.defineProperty(exports, \"formatNumber\", {\n enumerable: true,\n get: function get() {\n return _formatNumber.default;\n }\n});\nObject.defineProperty(exports, \"calcSi\", {\n enumerable: true,\n get: function get() {\n return _si.calcSi;\n }\n});\nObject.defineProperty(exports, \"findSi\", {\n enumerable: true,\n get: function get() {\n return _si.findSi;\n }\n});\n\nvar _formatBalance = _interopRequireDefault(require(\"./formatBalance\"));\n\nvar _formatDecimal = _interopRequireDefault(require(\"./formatDecimal\"));\n\nvar _formatElapsed = _interopRequireDefault(require(\"./formatElapsed\"));\n\nvar _formatNumber = _interopRequireDefault(require(\"./formatNumber\"));\n\nvar _si = require(\"./si\");","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _undefined = _interopRequireDefault(require(\"../is/undefined\"));\n\nvar _si = require(\"./si\");\n\nvar _formatDecimal = _interopRequireDefault(require(\"./formatDecimal\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst DEFAULT_DECIMALS = 0;\nconst DEFAULT_UNIT = _si.SI[_si.SI_MID].text;\nlet defaultDecimals = DEFAULT_DECIMALS;\nlet defaultUnit = DEFAULT_UNIT; // Formats a string/number with . notation\n\nfunction _formatBalance(input) {\n let withSi = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n let decimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultDecimals;\n const text = (input || '').toString();\n\n if (text.length === 0 || text === '0') {\n return '0';\n } // NOTE We start at midpoint (8) minus 1 - this means that values display as\n // 123.456 instead of 0.123k (so always 6 relevant). Additionally we us ceil\n // so there are at most 3 decimal before the decimal seperator\n\n\n const si = (0, _si.calcSi)(text, decimals);\n const mid = text.length - (decimals + si.power);\n const prefix = text.substr(0, mid);\n const postfix = \"\".concat(text.substr(mid), \"000\").substr(0, 3);\n const units = withSi ? si.value === '-' ? \" \".concat(si.text) : \"\".concat(si.value, \" \").concat(_si.SI[_si.SI_MID].text) : '';\n return \"\".concat((0, _formatDecimal.default)(prefix || '0'), \".\").concat(postfix).concat(units);\n}\n\nconst formatBalance = _formatBalance;\n\nformatBalance.calcSi = function (text) {\n let decimals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultDecimals;\n return (0, _si.calcSi)(text, decimals);\n};\n\nformatBalance.findSi = _si.findSi;\n\nformatBalance.getDefaults = () => {\n return {\n decimals: defaultDecimals,\n unit: defaultUnit\n };\n}; // get allowable options to display in a dropdown\n\n\nformatBalance.getOptions = function () {\n let decimals = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultDecimals;\n return _si.SI.filter((_ref) => {\n let power = _ref.power;\n return power < 0 ? decimals + power >= 0 : true;\n });\n}; // Sets the default decimals to use for formatting (ui-wide)\n\n\nformatBalance.setDefaults = (_ref2) => {\n let decimals = _ref2.decimals,\n unit = _ref2.unit;\n defaultDecimals = (0, _undefined.default)(decimals) ? defaultDecimals : decimals;\n defaultUnit = (0, _undefined.default)(unit) ? defaultUnit : unit;\n _si.SI[_si.SI_MID].text = defaultUnit;\n};\n\nvar _default = formatBalance;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.calcSi = calcSi;\nexports.findSi = findSi;\nexports.SI = exports.SI_MID = void 0;\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst SI_MID = 8;\nexports.SI_MID = SI_MID;\nconst SI = [{\n power: -24,\n value: 'y',\n text: 'yocto'\n}, {\n power: -21,\n value: 'z',\n text: 'zepto'\n}, {\n power: -18,\n value: 'a',\n text: 'atto'\n}, {\n power: -15,\n value: 'f',\n text: 'femto'\n}, {\n power: -12,\n value: 'p',\n text: 'pico'\n}, {\n power: -9,\n value: 'n',\n text: 'nano'\n}, {\n power: -6,\n value: 'µ',\n text: 'micro'\n}, {\n power: -3,\n value: 'm',\n text: 'milli'\n}, {\n power: 0,\n value: '-',\n text: 'Unit'\n}, // position 8\n{\n power: 3,\n value: 'k',\n text: 'Kilo'\n}, {\n power: 6,\n value: 'M',\n text: 'Mega'\n}, {\n power: 9,\n value: 'G',\n text: 'Giga'\n}, {\n power: 12,\n value: 'T',\n text: 'Tera'\n}, {\n power: 15,\n value: 'P',\n text: 'Peta'\n}, {\n power: 18,\n value: 'E',\n text: 'Exa'\n}, {\n power: 21,\n value: 'Z',\n text: 'Zeta'\n}, {\n power: 24,\n value: 'Y',\n text: 'Yotta'\n}];\nexports.SI = SI;\n\nfunction calcSi(text, decimals) {\n return SI[SI_MID - 1 + Math.ceil((text.length - decimals) / 3)] || SI[SI.length - 1];\n} // Given a SI type (e.g. k, m, Y) find the SI definition\n\n\nfunction findSi(type) {\n // use a loop here, better RN support (which doesn't have [].find)\n for (let i = 0; i < SI.length; i++) {\n if (SI[i].value === type) {\n return SI[i];\n }\n }\n\n return SI[SI_MID];\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = formatDecimal;\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst NUMBER_REGEX = new RegExp('(\\\\d+?)(?=(\\\\d{3})+(?!\\\\d)|$)', 'g');\n\nfunction formatDecimal(value) {\n const matched = value.match(NUMBER_REGEX);\n return matched ? matched.join(',') : value;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = formatElapsed;\n\nvar _bn = _interopRequireDefault(require(\"bn.js\"));\n\n// Copyright 2017-2019 @polkadot/ui-util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction getValue(value) {\n if (value) {\n if (value.unwrap) {\n return getValue(value.unwrap());\n } else if (value instanceof Date) {\n return getValue(value.getTime());\n } else if (value instanceof _bn.default) {\n return getValue(value.toNumber());\n }\n }\n\n return value || 0;\n}\n\nfunction formatElapsed(now, value) {\n const tsNow = now && now.getTime() || 0;\n const tsValue = getValue(value);\n let display = '0.0s';\n\n if (tsNow && tsValue) {\n const elapsed = Math.max(Math.abs(tsNow - tsValue), 0) / 1000;\n\n if (elapsed < 15) {\n display = \"\".concat(elapsed.toFixed(1), \"s\");\n } else if (elapsed < 60) {\n display = \"\".concat(elapsed | 0, \"s\");\n } else if (elapsed < 3600) {\n display = \"\".concat(elapsed / 60 | 0, \"m\");\n } else {\n display = \"\".concat(elapsed / 3600 | 0, \"h\");\n }\n }\n\n return display;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = formatNumber;\n\nvar _toBn = _interopRequireDefault(require(\"../bn/toBn\"));\n\nvar _formatDecimal = _interopRequireDefault(require(\"./formatDecimal\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction formatNumber(_value) {\n if (!_value) {\n return '0';\n }\n\n const value = _value.toBn ? _value.toBn() : (0, _toBn.default)(_value);\n return (0, _formatDecimal.default)(value.toString());\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"hexAddPrefix\", {\n enumerable: true,\n get: function get() {\n return _addPrefix.default;\n }\n});\nObject.defineProperty(exports, \"hexFixLength\", {\n enumerable: true,\n get: function get() {\n return _fixLength.default;\n }\n});\nObject.defineProperty(exports, \"hexHasPrefix\", {\n enumerable: true,\n get: function get() {\n return _hasPrefix.default;\n }\n});\nObject.defineProperty(exports, \"hexStripPrefix\", {\n enumerable: true,\n get: function get() {\n return _stripPrefix.default;\n }\n});\nObject.defineProperty(exports, \"hexToBn\", {\n enumerable: true,\n get: function get() {\n return _toBn.default;\n }\n});\nObject.defineProperty(exports, \"hexToNumber\", {\n enumerable: true,\n get: function get() {\n return _toNumber.default;\n }\n});\nObject.defineProperty(exports, \"hexToU8a\", {\n enumerable: true,\n get: function get() {\n return _toU8a.default;\n }\n});\n\nvar _addPrefix = _interopRequireDefault(require(\"./addPrefix\"));\n\nvar _fixLength = _interopRequireDefault(require(\"./fixLength\"));\n\nvar _hasPrefix = _interopRequireDefault(require(\"./hasPrefix\"));\n\nvar _stripPrefix = _interopRequireDefault(require(\"./stripPrefix\"));\n\nvar _toBn = _interopRequireDefault(require(\"./toBn\"));\n\nvar _toNumber = _interopRequireDefault(require(\"./toNumber\"));\n\nvar _toU8a = _interopRequireDefault(require(\"./toU8a\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hexAddPrefix;\n\nvar _hasPrefix = _interopRequireDefault(require(\"./hasPrefix\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name hexAddPrefix\n * @summary Adds the `0x` prefix to string values.\n * @description\n * Returns a `0x` prefixed string from the input value. If the input is already prefixed, it is returned unchanged.\n * @example\n *
\n *\n * ```javascript\n * import { hexAddPrefix } from '@polkadot/util';\n *\n * console.log('With prefix', hexAddPrefix('0a0b12')); // => 0x0a0b12\n * ```\n */\nfunction hexAddPrefix(value) {\n if (value && (0, _hasPrefix.default)(value)) {\n return value;\n }\n\n const prefix = value && value.length % 2 === 1 ? '0' : '';\n return \"0x\".concat(prefix).concat(value || '');\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hexFixLength;\n\nvar _addPrefix = _interopRequireDefault(require(\"./addPrefix\"));\n\nvar _stripPrefix = _interopRequireDefault(require(\"./stripPrefix\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name hexFixLength\n * @summary Shifts a hex string to a specific bitLength\n * @description\n * Returns a `0x` prefixed string with the specified number of bits contained in the return value. (If bitLength is -1, length checking is not done). Values with more bits are trimmed to the specified length. Input values with less bits are returned as-is by default. When `withPadding` is set, shorter values are padded with `0`.\n * @example\n *
\n *\n * ```javascript\n * import { hexFixLength } from '@polkadot/util';\n *\n * console.log('fixed', hexFixLength('0x12', 16)); // => 0x12\n * console.log('fixed', hexFixLength('0x12', 16, true)); // => 0x0012\n * console.log('fixed', hexFixLength('0x0012', 8)); // => 0x12\n * ```\n */\nfunction hexFixLength(value) {\n let bitLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;\n let withPadding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n const strLength = Math.ceil(bitLength / 4);\n const hexLength = strLength + 2;\n\n if (bitLength === -1 || value.length === hexLength || !withPadding && value.length < hexLength) {\n return (0, _addPrefix.default)((0, _stripPrefix.default)(value));\n }\n\n if (value.length > hexLength) {\n return (0, _addPrefix.default)((0, _stripPrefix.default)(value).slice(-1 * strLength));\n }\n\n return (0, _addPrefix.default)(\"\".concat('0'.repeat(strLength)).concat((0, _stripPrefix.default)(value)).slice(-1 * strLength));\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hexToNumber;\n\nvar _toBn = _interopRequireDefault(require(\"./toBn\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name hexToNumber\n * @summary Creates a Number value from a Buffer object.\n * @description\n * `null` inputs returns an NaN result, `hex` values return the actual value as a `Number`.\n * @example\n *
\n *\n * ```javascript\n * import { hexToNumber } from '@polkadot/util';\n *\n * hexToNumber('0x1234'); // => 0x1234\n * ```\n */\nfunction hexToNumber(value) {\n if (!value) {\n return NaN;\n }\n\n return (0, _toBn.default)(value).toNumber();\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"isBn\", {\n enumerable: true,\n get: function get() {\n return _bn.default;\n }\n});\nObject.defineProperty(exports, \"isBuffer\", {\n enumerable: true,\n get: function get() {\n return _buffer.default;\n }\n});\nObject.defineProperty(exports, \"isBoolean\", {\n enumerable: true,\n get: function get() {\n return _boolean.default;\n }\n});\nObject.defineProperty(exports, \"isError\", {\n enumerable: true,\n get: function get() {\n return _error.default;\n }\n});\nObject.defineProperty(exports, \"isFunction\", {\n enumerable: true,\n get: function get() {\n return _function.default;\n }\n});\nObject.defineProperty(exports, \"isHex\", {\n enumerable: true,\n get: function get() {\n return _hex.default;\n }\n});\nObject.defineProperty(exports, \"isInstanceOf\", {\n enumerable: true,\n get: function get() {\n return _instanceOf.default;\n }\n});\nObject.defineProperty(exports, \"isIp\", {\n enumerable: true,\n get: function get() {\n return _ip.default;\n }\n});\nObject.defineProperty(exports, \"isJsonObject\", {\n enumerable: true,\n get: function get() {\n return _jsonObject.default;\n }\n});\nObject.defineProperty(exports, \"isNull\", {\n enumerable: true,\n get: function get() {\n return _null.default;\n }\n});\nObject.defineProperty(exports, \"isNumber\", {\n enumerable: true,\n get: function get() {\n return _number.default;\n }\n});\nObject.defineProperty(exports, \"isObject\", {\n enumerable: true,\n get: function get() {\n return _object.default;\n }\n});\nObject.defineProperty(exports, \"isObservable\", {\n enumerable: true,\n get: function get() {\n return _observable.default;\n }\n});\nObject.defineProperty(exports, \"isString\", {\n enumerable: true,\n get: function get() {\n return _string.default;\n }\n});\nObject.defineProperty(exports, \"isTestChain\", {\n enumerable: true,\n get: function get() {\n return _testChain.default;\n }\n});\nObject.defineProperty(exports, \"isU8a\", {\n enumerable: true,\n get: function get() {\n return _u8a.default;\n }\n});\nObject.defineProperty(exports, \"isUndefined\", {\n enumerable: true,\n get: function get() {\n return _undefined.default;\n }\n});\n\nvar _bn = _interopRequireDefault(require(\"./bn\"));\n\nvar _buffer = _interopRequireDefault(require(\"./buffer\"));\n\nvar _boolean = _interopRequireDefault(require(\"./boolean\"));\n\nvar _error = _interopRequireDefault(require(\"./error\"));\n\nvar _function = _interopRequireDefault(require(\"./function\"));\n\nvar _hex = _interopRequireDefault(require(\"./hex\"));\n\nvar _instanceOf = _interopRequireDefault(require(\"./instanceOf\"));\n\nvar _ip = _interopRequireDefault(require(\"./ip\"));\n\nvar _jsonObject = _interopRequireDefault(require(\"./jsonObject\"));\n\nvar _null = _interopRequireDefault(require(\"./null\"));\n\nvar _number = _interopRequireDefault(require(\"./number\"));\n\nvar _object = _interopRequireDefault(require(\"./object\"));\n\nvar _observable = _interopRequireDefault(require(\"./observable\"));\n\nvar _string = _interopRequireDefault(require(\"./string\"));\n\nvar _testChain = _interopRequireDefault(require(\"./testChain\"));\n\nvar _u8a = _interopRequireDefault(require(\"./u8a\"));\n\nvar _undefined = _interopRequireDefault(require(\"./undefined\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isError;\n\nvar _instanceOf = _interopRequireDefault(require(\"./instanceOf\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name isError\n * @summary Tests for a `Error` object instance.\n * @description\n * Checks to see if the input object is an instance of `Error`.\n * @example\n *
\n *\n * ```javascript\n * import { isError } from '@polkadot/util';\n *\n * console.log('isError', isError(new Error('message'))); // => true\n * ```\n */\nfunction isError(value) {\n return (0, _instanceOf.default)(value, Error);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIp;\n\nvar _ipRegex = _interopRequireDefault(require(\"ip-regex\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name isIp\n * @summary Tests if the value is a valid IP address\n * @description\n * Checks to see if the value is a valid IP address. Optionally check for either v4/v6\n * @example\n *
\n *\n * ```javascript\n * import { isIp } from '@polkadot/util';\n *\n * isIp('192.168.0.1')); // => true\n * isIp('1:2:3:4:5:6:7:8'); // => true\n * isIp('192.168.0.1', 'v6')); // => false\n * isIp('1:2:3:4:5:6:7:8', 'v4'); // => false\n * ```\n */\nfunction isIp(value, type) {\n // FIXME @types/ip-regex defintions are outdated\n if (type === 'v4') {\n // @ts-ignore\n return _ipRegex.default.v4({\n exact: true\n }).test(value);\n } else if (type === 'v6') {\n // @ts-ignore\n return _ipRegex.default.v6({\n exact: true\n }).test(value);\n }\n\n return (0, _ipRegex.default)({\n exact: true\n }).test(value);\n}","'use strict';\n\nconst word = '[a-fA-F\\\\d:]';\nconst b = options => options && options.includeBoundaries ?\n\t`(?:(?<=\\\\s|^)(?=${word})|(?<=${word})(?=\\\\s|$))` :\n\t'';\n\nconst v4 = '(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}';\n\nconst v6seg = '[a-fA-F\\\\d]{1,4}';\nconst v6 = `\n(\n(?:${v6seg}:){7}(?:${v6seg}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${v6seg}:){6}(?:${v4}|:${v6seg}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${v6seg}:){5}(?::${v4}|(:${v6seg}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${v6seg}:){4}(?:(:${v6seg}){0,1}:${v4}|(:${v6seg}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${v6seg}:){3}(?:(:${v6seg}){0,2}:${v4}|(:${v6seg}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${v6seg}:){2}(?:(:${v6seg}){0,3}:${v4}|(:${v6seg}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${v6seg}:){1}(?:(:${v6seg}){0,4}:${v4}|(:${v6seg}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::((?::${v6seg}){0,5}:${v4}|(?::${v6seg}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\\s*\\/\\/.*$/gm, '').replace(/\\n/g, '').trim();\n\nconst ip = options => options && options.exact ?\n\tnew RegExp(`(?:^${v4}$)|(?:^${v6}$)`) :\n\tnew RegExp(`(?:${b(options)}${v4}${b(options)})|(?:${b(options)}${v6}${b(options)})`, 'g');\n\nip.v4 = options => options && options.exact ? new RegExp(`^${v4}$`) : new RegExp(`${b(options)}${v4}${b(options)}`, 'g');\nip.v6 = options => options && options.exact ? new RegExp(`^${v6}$`) : new RegExp(`${b(options)}${v6}${b(options)}`, 'g');\n\nmodule.exports = ip;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isJsonObject;\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name isJsonObject\n * @summary Tests for a valid JSON `object`.\n * @description\n * Checks to see if the input value is a valid JSON object.\n * It returns false if the input is JSON parsable, but not an Javascript object.\n * @example\n *
\n *\n * ```javascript\n * import { isJsonObject } from '@polkadot/util';\n *\n * isJsonObject({}); // => true\n * isJsonObject({\n * \"Test\": \"1234\",\n * \"NestedTest\": {\n * \"Test\": \"5678\"\n * }\n * }); // => true\n * isJsonObject(1234); // JSON parsable, but not an object => false\n * isJsonObject(null); // JSON parsable, but not an object => false\n * isJsonObject('not an object'); // => false\n * ```\n */\nfunction isJsonObject(value) {\n value = typeof value !== 'string' ? JSON.stringify(value) : value;\n\n try {\n value = JSON.parse(value);\n return typeof value === 'object' && value !== null;\n } catch (e) {\n return false;\n }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isObservable;\n\nvar _function = _interopRequireDefault(require(\"./function\"));\n\nvar _object = _interopRequireDefault(require(\"./object\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name isBObservable\n * @summary Tests for a `Observable` object instance.\n * @description\n * Checks to see if the input object is an instance of `BN` (bn.js).\n * @example\n *
\n *\n * ```javascript\n * import { isObservable } from '@polkadot/util';\n *\n * console.log('isObservable', isObservable(...));\n * ```\n */\nfunction isObservable(value) {\n return (0, _object.default)(value) && (0, _function.default)(value.next);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isTestChain;\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst re = new RegExp('^(Development|Local Testnet)$');\n\nfunction isTestChain(chain) {\n if (!chain) {\n return false;\n }\n\n return !!re.test(chain.toString());\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"numberToHex\", {\n enumerable: true,\n get: function get() {\n return _toHex.default;\n }\n});\nObject.defineProperty(exports, \"numberToU8a\", {\n enumerable: true,\n get: function get() {\n return _toU8a.default;\n }\n});\n\nvar _toHex = _interopRequireDefault(require(\"./toHex\"));\n\nvar _toU8a = _interopRequireDefault(require(\"./toU8a\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = numberToHex;\n\nvar _fixLength = _interopRequireDefault(require(\"../hex/fixLength\"));\n\nvar _null = _interopRequireDefault(require(\"../is/null\"));\n\nvar _undefined = _interopRequireDefault(require(\"../is/undefined\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name numberToHex\n * @summary Creates a hex value from a number.\n * @description\n * `null`/`undefined`/`NaN` inputs returns an empty `0x` result. `number` input values return the actual bytes value converted to a `hex`. With `bitLength` set, it converts the number to the equivalent size.\n * @example\n *
\n *\n * ```javascript\n * import { numberToHex } from '@polkadot/util';\n *\n * numberToHex(0x1234); // => '0x1234'\n * numberToHex(0x1234, 32); // => 0x00001234\n * ```\n */\nfunction numberToHex(value) {\n let bitLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;\n\n if ((0, _undefined.default)(value) || (0, _null.default)(value) || isNaN(value)) {\n return '0x';\n }\n\n return (0, _fixLength.default)((value || 0).toString(16), bitLength, true);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = numberToU8a;\n\nvar _toU8a = _interopRequireDefault(require(\"../hex/toU8a\"));\n\nvar _toHex = _interopRequireDefault(require(\"./toHex\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name numberToU8a\n * @summary Creates a Uint8Array object from a number.\n * @description\n * `null`/`undefined`/`NaN` inputs returns an empty `Uint8Array` result. `number` input values return the actual bytes value converted to a `Uint8Array`. With `bitLength`, it converts the value to the equivalent size.\n * @example\n *
\n *\n * ```javascript\n * import { numberToU8a } from '@polkadot/util';\n *\n * numberToU8a(0x1234); // => [0x12, 0x34]\n * ```\n */\nfunction numberToU8a(value) {\n let bitLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1;\n\n if (!value || isNaN(value)) {\n return new Uint8Array([]);\n }\n\n return (0, _toU8a.default)((0, _toHex.default)(value, bitLength));\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"stringCamelCase\", {\n enumerable: true,\n get: function get() {\n return _camelCase.default;\n }\n});\nObject.defineProperty(exports, \"stringLowerFirst\", {\n enumerable: true,\n get: function get() {\n return _lowerFirst.default;\n }\n});\nObject.defineProperty(exports, \"stringShorten\", {\n enumerable: true,\n get: function get() {\n return _shorten.default;\n }\n});\nObject.defineProperty(exports, \"stringToU8a\", {\n enumerable: true,\n get: function get() {\n return _toU8a.default;\n }\n});\nObject.defineProperty(exports, \"stringUpperFirst\", {\n enumerable: true,\n get: function get() {\n return _upperFirst.default;\n }\n});\n\nvar _camelCase = _interopRequireDefault(require(\"./camelCase\"));\n\nvar _lowerFirst = _interopRequireDefault(require(\"./lowerFirst\"));\n\nvar _shorten = _interopRequireDefault(require(\"./shorten\"));\n\nvar _toU8a = _interopRequireDefault(require(\"./toU8a\"));\n\nvar _upperFirst = _interopRequireDefault(require(\"./upperFirst\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _camelcase = _interopRequireDefault(require(\"camelcase\"));\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nvar _default = _camelcase.default;\nexports.default = _default;","'use strict';\n\nconst preserveCamelCase = string => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = Object.assign({\n\t\tpascalCase: false\n\t}, options);\n\n\tconst postProcess = x => options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? input.toUpperCase() : input.toLowerCase();\n\t}\n\n\tconst hasUpperCase = input !== input.toLowerCase();\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input);\n\t}\n\n\tinput = input\n\t\t.replace(/^[_.\\- ]+/, '')\n\t\t.toLowerCase()\n\t\t.replace(/[_.\\- ]+(\\w|$)/g, (_, p1) => p1.toUpperCase())\n\t\t.replace(/\\d+(\\w|$)/g, m => m.toUpperCase());\n\n\treturn postProcess(input);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = stringLowerFirst;\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name stringLowerFirst\n * @summary Lowercase the first letter of a string\n * @description\n * Lowercase the first letter of a string\n * @example\n *
\n *\n * ```javascript\n * import { stringLowerFirst } from '@polkadot/util';\n *\n * stringLowerFirst('ABC'); // => 'aBC'\n * ```\n */\nfunction stringLowerFirst(value) {\n if (!value) {\n return '';\n }\n\n return value.charAt(0).toLowerCase() + value.slice(1);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = stringShorten;\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name stringShorten\n * @summary Returns a string with maximum length\n * @description\n * Checks the string against the `prefixLength`, if longer than dopuble this, shortens it by placing `..` in the middle of it\n * @example\n *
\n *\n * ```javascript\n * import { stringShorten } from '@polkadot/util';\n *\n * stringShorten('1234567890', 2); // => 12..90\n * ```\n */\nfunction stringShorten(_value) {\n let prefixLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n const value = \"\".concat(_value);\n\n if (value.length <= 2 + 2 * prefixLength) {\n return value;\n }\n\n return \"\".concat(value.substr(0, prefixLength), \"..\").concat(value.slice(-prefixLength));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = stringUpperFirst;\n\n// Copyright 2017-2019 @polkadot/util authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name stringUpperFirst\n * @summary Lowercase the first letter of a string\n * @description\n * Lowercase the first letter of a string\n * @example\n *
\n *\n * ```javascript\n * import { stringUpperFirst } from '@polkadot/util';\n *\n * stringUpperFirst('abc'); // => 'Abc'\n * ```\n */\nfunction stringUpperFirst(value) {\n if (!value) {\n return '';\n }\n\n return value.charAt(0).toUpperCase() + value.slice(1);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _eventemitter = _interopRequireDefault(require(\"eventemitter3\"));\n\nvar _rxjs = require(\"rxjs\");\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _apiDerive = _interopRequireDefault(require(\"@polkadot/api-derive\"));\n\nvar _fromMetadata = _interopRequireDefault(require(\"@polkadot/extrinsics/fromMetadata\"));\n\nvar _rpcCore = _interopRequireDefault(require(\"@polkadot/rpc-core\"));\n\nvar _rpcRx = _interopRequireDefault(require(\"@polkadot/rpc-rx\"));\n\nvar _fromMetadata2 = _interopRequireDefault(require(\"@polkadot/storage/fromMetadata\"));\n\nvar _types = require(\"@polkadot/types\");\n\nvar _Linkage = require(\"@polkadot/types/codec/Linkage\");\n\nvar _util = require(\"@polkadot/util\");\n\nvar _utilCrypto = require(\"@polkadot/util-crypto\");\n\nvar _nodeCompat = _interopRequireDefault(require(\"./nodeCompat\"));\n\nvar _SubmittableExtrinsic = _interopRequireDefault(require(\"./SubmittableExtrinsic\"));\n\n// Copyright 2017-2019 @polkadot/api authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst INIT_ERROR = \"Api needs to be initialised before using, listen on 'ready'\";\nconst KEEPALIVE_INTERVAL = 15000;\nconst l = (0, _util.logger)('api/decorator');\nlet pkgJson;\n\ntry {\n pkgJson = require('./package.json');\n} catch (error) {\n // development environment\n pkgJson = {\n name: '@polkadot/api',\n version: '-'\n };\n}\n/**\n * Put the `this.onCall` function of ApiRx here, because it is needed by\n * `api._rx`.\n */\n\n\nfunction rxOnCall(method) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n let _callback = arguments.length > 2 ? arguments[2] : undefined;\n\n return method(...params);\n}\n\nclass ApiBase {\n // FIXME These two could be merged\n // FIXME These two could be merged\n\n /**\n * @description Create an instance of the class\n *\n * @param options Options object to create API instance or a Provider instance\n *\n * @example\n *
\n *\n * ```javascript\n * import Api from '@polkadot/api/promise';\n *\n * const api = new Api().isReady();\n *\n * api.rpc.subscribeNewHead((header) => {\n * console.log(`new block #${header.blockNumber.toNumber()}`);\n * });\n * ```\n */\n constructor() {\n let provider = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let type = arguments.length > 1 ? arguments[1] : undefined;\n this._derive = void 0;\n this._eventemitter = void 0;\n this._extrinsics = void 0;\n this._genesisHash = void 0;\n this._isReady = false;\n this._options = void 0;\n this._query = void 0;\n this._queryMulti = void 0;\n this._rpc = void 0;\n this._rpcBase = void 0;\n this._rpcRx = void 0;\n this._runtimeMetadata = void 0;\n this._runtimeVersion = void 0;\n this._rx = {};\n this._type = void 0;\n const options = (0, _util.isObject)(provider) && (0, _util.isFunction)(provider.send) ? {\n provider\n } : provider;\n const thisProvider = options.source ? options.source._rpcBase._provider.clone() : options.provider;\n this._options = options;\n this._type = type;\n this._eventemitter = new _eventemitter.default();\n this._rpcBase = new _rpcCore.default(thisProvider);\n (0, _util.assert)(this.hasSubscriptions, 'Api can only be used with a provider supporting subscriptions');\n this._rpcRx = new _rpcRx.default(thisProvider);\n this._rpc = this.decorateRpc(this._rpcRx, this.onCall); // FIXME 3.4.1\n\n this._rx.rpc = this.decorateRpc(this._rpcRx, rxOnCall);\n this._queryMulti = this.decorateMulti(this.onCall); // as above :(\n\n this._rx.queryMulti = this.decorateMulti(rxOnCall);\n this._rx.signer = options.signer; // we only re-register the types (global) if this is not a cloned instance\n\n if (!options.source) {\n this.registerTypes(options.types);\n }\n\n this.init();\n }\n /**\n * @description Contains the genesis Hash of the attached chain. Apart from being useful to determine the actual chain, it can also be used to sign immortal transactions.\n */\n\n\n get genesisHash() {\n (0, _util.assert)(!(0, _util.isUndefined)(this._genesisHash), INIT_ERROR);\n return this._genesisHash;\n }\n /**\n * @description `true` when subscriptions are supported\n */\n\n\n get hasSubscriptions() {\n return this._rpcBase._provider.hasSubscriptions;\n }\n /**\n * @description The library information name & version (from package.json)\n */\n\n\n get libraryInfo() {\n return \"\".concat(pkgJson.name, \" v\").concat(pkgJson.version);\n }\n /**\n * @description Yields the current attached runtime metadata. Generally this is only used to construct extrinsics & storage, but is useful for current runtime inspection.\n */\n\n\n get runtimeMetadata() {\n (0, _util.assert)(!(0, _util.isUndefined)(this._runtimeMetadata), INIT_ERROR);\n return this._runtimeMetadata;\n }\n /**\n * @description Contains the version information for the current runtime.\n */\n\n\n get runtimeVersion() {\n (0, _util.assert)(!(0, _util.isUndefined)(this._runtimeVersion), INIT_ERROR);\n return this._runtimeVersion;\n }\n /**\n * @description The type of this API instance, either 'rxjs' or 'promise'\n */\n\n\n get type() {\n return this._type;\n }\n /**\n * @description Set an external signer which will be used to sign extrinsic when account passed in is not KeyringPair\n */\n\n\n setSigner(signer) {\n this._rx.signer = signer;\n }\n /**\n * @description Derived results that are injected into the API, allowing for combinations of various query results.\n *\n * @example\n *
\n *\n * ```javascript\n * api.derive.chain.bestNumber((number) => {\n * console.log('best number', number);\n * });\n * ```\n */\n\n\n get derive() {\n (0, _util.assert)(!(0, _util.isUndefined)(this._derive), INIT_ERROR);\n return this._derive;\n }\n /**\n * @description Contains all the chain state modules and their subsequent methods in the API. These are attached dynamically from the runtime metadata.\n *\n * All calls inside the namespace, is denoted by `section`.`method` and may take an optional query parameter. As an example, `api.query.timestamp.now()` (current block timestamp) does not take parameters, while `api.query.system.accountNonce()` (retrieving the associated nonce for an account), takes the `AccountId` as a parameter.\n *\n * @example\n *
\n *\n * ```javascript\n * api.query.balances.freeBalance(, (balance) => {\n * console.log('new balance', balance);\n * });\n * ```\n */\n\n\n get query() {\n (0, _util.assert)(!(0, _util.isUndefined)(this._query), INIT_ERROR);\n return this._query;\n }\n /**\n * @description Allows for the querying of multiple storage entries and the combination thereof into a single result. This is a very optimal way to make multiple queries since it only makes a single connection to the node and retrieves the data over one subscription.\n *\n * @example\n *
\n *\n * ```javascript\n * api.queryMulti(\n * [\n * // you can include the storage without any parameters\n * api.query.balances.existentialDeposit,\n * // or you can pass parameters to the storage query\n * [api.query.balances.freeBalance, '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY']\n * ],\n * ([existential, balance]) => {\n * console.log(`You have ${balance.sub(existential)} more than the existential deposit`);\n * }\n * );\n * ```\n */\n\n\n get queryMulti() {\n return this._queryMulti;\n }\n /**\n * @description Contains all the raw rpc sections and their subsequent methods in the API as defined by the jsonrpc interface definitions. Unlike the dynamic `api.query` and `api.tx` sections, these methods are fixed (although extensible with node upgrades) and not determined by the runtime.\n *\n * RPC endpoints available here allow for the query of chain, node and system information, in addition to providing interfaces for the raw queries of state (usine known keys) and the submission of transactions.\n *\n * @example\n *
\n *\n * ```javascript\n * api.rpc.chain.subscribeNewHead((header) => {\n * console.log('new header', header);\n * });\n * ```\n */\n\n\n get rpc() {\n return this._rpc;\n }\n /**\n * @description Contains all the extrinsic modules and their subsequent methods in the API. It allows for the construction of transactions and the submission thereof. These are attached dynamically from the runtime metadata.\n *\n * @example\n *
\n *\n * ```javascript\n * api.tx.balances\n * .transfer(, )\n * .signAndSend(, ({status}) => {\n * console.log('tx status', status.asFinalized.toHex());\n * });\n * ```\n */\n\n\n get tx() {\n (0, _util.assert)(!(0, _util.isUndefined)(this._extrinsics), INIT_ERROR);\n return this._extrinsics;\n }\n /**\n * @description Disconnect from the underlying provider, halting all comms\n */\n\n\n disconnect() {\n this._rpcBase.disconnect();\n }\n /**\n * @description Attach an eventemitter handler to listen to a specific event\n *\n * @param type The type of event to listen to. Available events are `connected`, `disconnected`, `ready` and `error`\n * @param handler The callback to be called when the event fires. Depending on the event type, it could fire with additional arguments.\n *\n * @example\n *
\n *\n * ```javascript\n * api.on('connected', () => {\n * console.log('API has been connected to the endpoint');\n * });\n *\n * api.on('disconnected', () => {\n * console.log('API has been disconnected from the endpoint');\n * });\n * ```\n */\n\n\n on(type, handler) {\n this._eventemitter.on(type, handler);\n\n return this;\n }\n /**\n * @description Attach an one-time eventemitter handler to listen to a specific event\n *\n * @param type The type of event to listen to. Available events are `connected`, `disconnected`, `ready` and `error`\n * @param handler The callback to be called when the event fires. Depending on the event type, it could fire with additional arguments.\n *\n * @example\n *
\n *\n * ```javascript\n * api.once('connected', () => {\n * console.log('API has been connected to the endpoint');\n * });\n *\n * api.once('disconnected', () => {\n * console.log('API has been disconnected from the endpoint');\n * });\n * ```\n */\n\n\n once(type, handler) {\n this._eventemitter.once(type, handler);\n\n return this;\n }\n /**\n * @description Register additional user-defined of chain-specific types in the type registry\n */\n\n\n registerTypes(types) {\n if (types) {\n (0, _types.getTypeRegistry)().register(types);\n }\n }\n\n emit(type) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n this._eventemitter.emit(type, ...args);\n }\n\n init() {\n let healthTimer = null;\n\n this._rpcBase._provider.on('disconnected', () => {\n this.emit('disconnected');\n\n if (healthTimer) {\n clearInterval(healthTimer);\n healthTimer = null;\n }\n });\n\n this._rpcBase._provider.on('error', error => {\n this.emit('error', error);\n });\n\n this._rpcBase._provider.on('connected', async () => {\n this.emit('connected');\n\n try {\n const _ref = await Promise.all([this.loadMeta(), (0, _utilCrypto.cryptoWaitReady)()]),\n _ref2 = (0, _slicedToArray2.default)(_ref, 2),\n hasMeta = _ref2[0],\n cryptoReady = _ref2[1];\n\n if (hasMeta && !this._isReady && cryptoReady) {\n this._isReady = true;\n this.emit('ready', this);\n }\n\n healthTimer = setInterval(() => {\n this._rpcRx.system.health().toPromise().catch(() => {// ignore\n });\n }, KEEPALIVE_INTERVAL);\n } catch (error) {\n l.error('FATAL: Unable to initialize the API: ', error.message);\n }\n });\n }\n\n async loadMeta() {\n const _this$_options$metada = this._options.metadata,\n metadata = _this$_options$metada === void 0 ? {} : _this$_options$metada; // only load from on-chain if we are not a clone (default path), alternatively\n // just use the values from the source instance provided\n\n if (!this._options.source || !this._options.source._isReady) {\n var _ref3 = await Promise.all([this._rpcBase.chain.getBlockHash(0), this._rpcBase.chain.getRuntimeVersion()]);\n\n var _ref4 = (0, _slicedToArray2.default)(_ref3, 2);\n\n this._genesisHash = _ref4[0];\n this._runtimeVersion = _ref4[1];\n const metadataKey = \"\".concat(this._genesisHash, \"-\").concat(this._runtimeVersion.specVersion);\n\n if (metadataKey in metadata) {\n this._runtimeMetadata = new _types.Metadata(metadata[metadataKey]);\n } else {\n this._runtimeMetadata = await this._rpcBase.state.getMetadata();\n } // get unique types & validate\n\n\n this.runtimeMetadata.getUniqTypes(false);\n } else {\n this._runtimeMetadata = this._options.source.runtimeMetadata;\n this._runtimeVersion = this._options.source.runtimeVersion;\n this._genesisHash = this._options.source.genesisHash;\n }\n\n (0, _nodeCompat.default)(this._runtimeVersion);\n const extrinsics = (0, _fromMetadata.default)(this.runtimeMetadata);\n const storage = (0, _fromMetadata2.default)(this.runtimeMetadata);\n this._extrinsics = this.decorateExtrinsics(extrinsics, this.onCall);\n this._query = this.decorateStorage(storage, this.onCall); // FIXME 3.4.1\n\n this._derive = this.decorateDerive(this._rx, this.onCall); // FIXME 3.4.1\n\n this._rx.genesisHash = this._genesisHash;\n this._rx.runtimeVersion = this._runtimeVersion;\n this._rx.tx = this.decorateExtrinsics(extrinsics, rxOnCall);\n this._rx.query = this.decorateStorage(storage, rxOnCall);\n this._rx.derive = this.decorateDerive(this._rx, rxOnCall); // only inject if we are not a clone (global init)\n\n if (!this._options.source) {\n _types.Event.injectMetadata(this.runtimeMetadata);\n\n _types.Method.injectMethods(extrinsics);\n }\n\n return true;\n }\n\n decorateFunctionMeta(input, output) {\n output.meta = input.meta;\n output.method = input.method;\n output.section = input.section;\n output.toJSON = input.toJSON;\n\n if (input.callIndex) {\n output.callIndex = input.callIndex;\n }\n\n return output;\n }\n\n decorateRpc(rpc, onCall) {\n return ['author', 'chain', 'state', 'system'].reduce((result, _sectionName) => {\n const sectionName = _sectionName;\n result[sectionName] = Object.keys(rpc[sectionName]).reduce((section, methodName) => {\n // FIXME Find a better way to know if a particular method is a subscription or not\n const needsCallback = methodName.includes('subscribe'); // These signatures are allowed and exposed here (bit or a stoopid way, but checked\n // RPCs and we have 3 max args, with subs max one arg... YMMV) -\n // (arg1?: CodecArg, arg2?: CodecArg, arg3?: CodecArg): CodecResult;\n // (arg1: CodecArg, callback: CodecCallback): SubscriptionResult;\n // (callback: CodecCallback): SubscriptionResult;\n\n const method = function method() {\n let callback;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n let params = args;\n\n if (args.length && (0, _util.isFunction)(args[args.length - 1])) {\n callback = args[args.length - 1];\n params = args.slice(0, args.length - 1);\n }\n\n return onCall(rpc[sectionName][methodName], params, callback, needsCallback);\n };\n\n section[methodName] = method;\n return section;\n }, {});\n return result;\n }, {});\n }\n\n decorateMulti(onCall) {\n return (calls, callback) => {\n const mapped = calls.map((arg // the input is a QueryableStorageFunction, convert to StorageFunction\n ) => Array.isArray(arg) ? [arg[0].creator, ...arg.slice(1)] : [arg.creator]);\n return onCall(() => this._rpcRx.state.subscribeStorage(mapped), [], callback);\n };\n }\n\n decorateExtrinsics(extrinsics, onCall) {\n const creator = value => (0, _SubmittableExtrinsic.default)(this.type, this._rx, onCall, value);\n\n return Object.keys(extrinsics).reduce((result, sectionName) => {\n const section = extrinsics[sectionName];\n result[sectionName] = Object.keys(section).reduce((result, methodName) => {\n result[methodName] = this.decorateExtrinsicEntry(section[methodName], onCall);\n return result;\n }, {});\n return result;\n }, creator);\n }\n\n decorateExtrinsicEntry(method, onCall) {\n var _this = this;\n\n const decorated = function decorated() {\n return (0, _SubmittableExtrinsic.default)(_this.type, _this._rx, onCall, method(...arguments));\n };\n\n return this.decorateFunctionMeta(method, decorated);\n }\n\n decorateStorage(storage, onCall) {\n return Object.keys(storage).reduce((result, sectionName) => {\n const section = storage[sectionName];\n result[sectionName] = Object.keys(section).reduce((result, methodName) => {\n result[methodName] = this.decorateStorageEntry(section[methodName], onCall);\n return result;\n }, {});\n return result;\n }, {});\n }\n\n decorateStorageEntry(creator, onCall) {\n var _this2 = this;\n\n // These signatures are allowed and exposed here -\n // (arg?: CodecArg): CodecResult;\n // (arg: CodecArg, callback: CodecCallback): SubscriptionResult;\n // (callback: CodecCallback): SubscriptionResult;\n const decorated = function decorated() {\n let callback;\n\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n let params = args;\n\n if (args.length && (0, _util.isFunction)(args[args.length - 1])) {\n callback = args[args.length - 1];\n params = args.slice(0, args.length - 1);\n }\n\n if (creator.headKey && params.length === 0) {\n return _this2.decorateStorageEntryLinked(creator, onCall, callback);\n }\n\n return onCall(arg => _this2._rpcRx.state.subscribeStorage([[creator, arg]]).pipe( // state_storage returns an array of values, since we have just subscribed to\n (0, _operators.map)(result => result[0])), params, callback);\n };\n\n decorated.creator = creator;\n\n decorated.at = (hash, arg) => onCall(arg => this._rpcRx.state.getStorage([creator, arg], hash), [arg]); // FIXME The unknown cast is needed since the onCall result, `C | S` cannot\n // be converted from C to the actual result required\n\n\n decorated.hash = arg => onCall(arg => this._rpcRx.state.getStorageHash([creator, arg]), [arg]);\n\n decorated.key = arg => (0, _util.u8aToHex)((0, _util.compactStripLength)(creator(arg))[1]);\n\n decorated.multi = (args, callback) => onCall(() => this._rpcRx.state.subscribeStorage(args.map(arg => [creator, arg])), [], callback);\n\n decorated.size = arg => onCall(arg => this._rpcRx.state.getStorageSize([creator, arg]), [arg]);\n\n return this.decorateFunctionMeta(creator, decorated);\n }\n\n decorateStorageEntryLinked(method, onCall, callback) {\n const result = new Map();\n let subject;\n let head = null; // retrieve a value based on the key, iterating if it has a next entry. Since\n // entries can be re-linked in the middle of a list, we subscribe here to make\n // sure we catch any updates, no matter the list position\n\n const getNext = key => {\n return this._rpcRx.state.subscribeStorage([[method, key]]).pipe((0, _operators.switchMap)((_ref5) => {\n let _ref6 = (0, _slicedToArray2.default)(_ref5, 1),\n data = _ref6[0];\n\n const linkage = data[1];\n result.set(key, data); // iterate from this key to the children, constructing\n // entries for all those found and available\n\n if (linkage.next.isSome) {\n return getNext(linkage.next.unwrap());\n }\n\n const keys = [];\n const values = [];\n let nextKey = head; // loop through the results collected, starting at the head an re-creating\n // the list. Our map may have old entries, based on the linking these will\n // not be returned in the final result\n\n while (nextKey) {\n const entry = result.get(nextKey);\n\n if (!entry) {\n break;\n }\n\n const _entry = (0, _slicedToArray2.default)(entry, 2),\n item = _entry[0],\n linkage = _entry[1];\n\n keys.push(nextKey);\n values.push(item);\n nextKey = linkage.next && linkage.next.unwrapOr(null);\n }\n\n const nextResult = values.length ? new _Linkage.LinkageResult([keys[0].constructor, keys], [values[0].constructor, values]) : new _Linkage.LinkageResult([_types.Null, []], [_types.Null, []]); // we set our result into a subject so we have a single observable for\n // which the value changes over time. Initially create, follow-up next\n\n if (subject) {\n subject.next(nextResult);\n } else {\n subject = new _rxjs.BehaviorSubject(nextResult);\n }\n\n return subject;\n }));\n }; // this handles the case where the head changes effectively, i.e. a new entry\n // appears at the top of the list, the new getNext gets kicked off\n\n\n return onCall(arg => this._rpcRx.state.subscribeStorage([arg]).pipe((0, _operators.switchMap)((_ref7) => {\n let _ref8 = (0, _slicedToArray2.default)(_ref7, 1),\n key = _ref8[0];\n\n head = key;\n return getNext(key);\n })), [method.headKey], callback);\n }\n\n decorateDerive(apiRx, onCall) {\n const derive = (0, _apiDerive.default)(apiRx, this._options.derives);\n return Object.keys(derive).reduce((result, _sectionName) => {\n const sectionName = _sectionName;\n result[sectionName] = Object.keys(derive[sectionName]).reduce((section, methodName) => {\n // FIXME The callback extraction we do way too much - de-dupe\n const method = function method() {\n let callback;\n\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n let params = args;\n\n if (args.length && (0, _util.isFunction)(args[args.length - 1])) {\n callback = args[args.length - 1];\n params = args.slice(0, args.length - 1);\n }\n\n return onCall(derive[sectionName][methodName], params, callback, !!callback);\n };\n\n section[methodName] = method; // CodecCallback or CodecArg form\n\n return section;\n }, {});\n return result;\n }, {});\n }\n\n}\n\nexports.default = ApiBase;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _exportNames = {};\nexports.default = decorateDerive;\n\nvar accounts = _interopRequireWildcard(require(\"./accounts\"));\n\nvar balances = _interopRequireWildcard(require(\"./balances\"));\n\nvar chain = _interopRequireWildcard(require(\"./chain\"));\n\nvar democracy = _interopRequireWildcard(require(\"./democracy\"));\n\nvar session = _interopRequireWildcard(require(\"./session\"));\n\nvar staking = _interopRequireWildcard(require(\"./staking\"));\n\nvar _type = require(\"./type\");\n\nObject.keys(_type).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _type[key];\n }\n });\n});\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// Put all derived functions in an object, for easier Object.keys()-ing.\nconst functions = {\n accounts,\n balances,\n chain,\n democracy,\n session,\n staking\n};\n/**\n * T represents the section here (chain, balances...), and P represents\n * the function name (bestNumber, sessionProgress...).\n */\n\nfunction injectFunctions(api, derive, functions) {\n Object.keys(functions).forEach(sectionName => {\n const section = functions[sectionName];\n const result = derive[sectionName] = derive[sectionName] || {};\n Object.keys(section).forEach(methodName => {\n // @ts-ignore No idea how to make this work...\n result[methodName] = section[methodName](api);\n });\n });\n return derive;\n}\n\nfunction decorateDerive(api) {\n let custom = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const derive = {};\n injectFunctions(api, derive, functions);\n injectFunctions(api, derive, custom);\n return derive;\n}","function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n\n newObj[\"default\"] = obj;\n return newObj;\n }\n}\n\nmodule.exports = _interopRequireWildcard;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _idAndIndex = require(\"./idAndIndex\");\n\nObject.keys(_idAndIndex).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _idAndIndex[key];\n }\n });\n});\n\nvar _idToIndex = require(\"./idToIndex\");\n\nObject.keys(_idToIndex).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _idToIndex[key];\n }\n });\n});\n\nvar _indexToId = require(\"./indexToId\");\n\nObject.keys(_indexToId).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _indexToId[key];\n }\n });\n});\n\nvar _indexes = require(\"./indexes\");\n\nObject.keys(_indexes).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _indexes[key];\n }\n });\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.idAndIndex = idAndIndex;\n\nvar _rxjs = require(\"rxjs\");\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _keyring = require(\"@polkadot/keyring\");\n\nvar _types = require(\"@polkadot/types\");\n\nvar _util = require(\"@polkadot/util\");\n\nvar _idToIndex = require(\"./idToIndex\");\n\nvar _indexToId = require(\"./indexToId\");\n\nvar _drr = require(\"../util/drr\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name idAndIndex\n * @param {(Address | AccountId | AccountIndex | string | null)} address - An accounts address in various formats.\n * @description An array containing the [[AccountId]] and [[AccountIndex]] as optional values.\n * @example\n *
\n *\n * ```javascript\n * api.derive.accounts.idAndIndex('F7Hs', ([id, ix]) => {\n * console.log(`AccountId #${id} with corresponding AccountIndex ${ix}`);\n * });\n * ```\n */\nfunction idAndIndex(api) {\n return address => {\n try {\n // yes, this can fail, don't care too much, catch will catch it\n const decoded = (0, _util.isU8a)(address) ? address : (0, _keyring.decodeAddress)((address || '').toString());\n\n if (decoded.length === 32) {\n const accountId = new _types.AccountId(decoded);\n return (0, _idToIndex.idToIndex)(api)(accountId).pipe((0, _operators.startWith)(undefined), (0, _operators.map)(accountIndex => [accountId, accountIndex]), (0, _drr.drr)());\n }\n\n const accountIndex = new _types.AccountIndex(decoded);\n return (0, _indexToId.indexToId)(api)(accountIndex).pipe((0, _operators.startWith)(undefined), (0, _operators.map)(accountId => [accountId, accountIndex]), (0, _drr.drr)());\n } catch (error) {\n return (0, _rxjs.of)([undefined, undefined]).pipe((0, _drr.drr)());\n }\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"decodeAddress\", {\n enumerable: true,\n get: function get() {\n return _address.decodeAddress;\n }\n});\nObject.defineProperty(exports, \"encodeAddress\", {\n enumerable: true,\n get: function get() {\n return _address.encodeAddress;\n }\n});\nObject.defineProperty(exports, \"setAddressPrefix\", {\n enumerable: true,\n get: function get() {\n return _address.setAddressPrefix;\n }\n});\nexports.Keyring = exports.default = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _utilCrypto = require(\"@polkadot/util-crypto\");\n\nvar _address = require(\"./address\");\n\nvar _defaults = require(\"./defaults\");\n\nvar _pair = _interopRequireDefault(require(\"./pair\"));\n\nvar _pairs = _interopRequireDefault(require(\"./pairs\"));\n\n// Copyright 2017-2019 @polkadot/keyring authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n(0, _util.assertSingletonPackage)('@polkadot/keyring');\n/**\n * # @polkadot/keyring\n *\n * ## Overview\n *\n * @name Keyring\n * @summary Keyring management of user accounts\n * @description Allows generation of keyring pairs from a variety of input combinations, such as\n * json object containing account address or public key, account metadata, and account encoded using\n * `addFromJson`, or by providing those values as arguments separately to `addFromAddress`,\n * or by providing the mnemonic (seed phrase) and account metadata as arguments to `addFromMnemonic`.\n * Stores the keyring pairs in a keyring pair dictionary. Removal of the keyring pairs from the keyring pair\n * dictionary is achieved using `removePair`. Retrieval of all the stored pairs via `getPairs` or perform\n * lookup of a pair for a given account address or public key using `getPair`. JSON metadata associated with\n * an account may be obtained using `toJson` accompanied by the account passphrase.\n */\n\nclass Keyring {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this._pairs = void 0;\n this._type = void 0;\n this.decodeAddress = _address.decodeAddress;\n this.encodeAddress = _address.encodeAddress;\n this.setAddressPrefix = _address.setAddressPrefix;\n options.type = options.type || 'ed25519';\n (0, _util.assert)(options && ['ed25519', 'sr25519'].includes(options.type || 'undefined'), \"Expected a keyring type of either 'ed25519' or 'sr25519', found '\".concat(options.type));\n this._pairs = new _pairs.default();\n this._type = options.type;\n (0, _address.setAddressPrefix)((0, _util.isNumber)(options.addressPrefix) ? options.addressPrefix : 42);\n }\n\n /**\n * @description retrieve the pairs (alias for getPairs)\n */\n get pairs() {\n return this.getPairs();\n }\n /**\n * @description retrieve the publicKeys (alias for getPublicKeys)\n */\n\n\n get publicKeys() {\n return this.getPublicKeys();\n }\n /**\n * @description Returns the type of the keyring, either ed25519 of sr25519\n */\n\n\n get type() {\n return this._type;\n }\n /**\n * @name addPair\n * @summary Stores an account, given a keyring pair, as a Key/Value (public key, pair) in Keyring Pair Dictionary\n */\n\n\n addPair(pair) {\n return this._pairs.add(pair);\n }\n /**\n * @name addFromAddress\n * @summary Stores an account, given an account address, as a Key/Value (public key, pair) in Keyring Pair Dictionary\n * @description Allows user to explicitely provide separate inputs including account address or public key, and optionally\n * the associated account metadata, and the default encoded value as arguments (that may be obtained from the json file\n * of an account backup), and then generates a keyring pair from them that it passes to\n * `addPair` to stores in a keyring pair dictionary the public key of the generated pair as a key and the pair as the associated value.\n */\n\n\n addFromAddress(address) {\n let meta = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let encoded = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n let type = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : this.type;\n let ignoreChecksum = arguments.length > 4 ? arguments[4] : undefined;\n const publicKey = this.decodeAddress(address, ignoreChecksum);\n return this.addPair((0, _pair.default)(type, {\n publicKey\n }, meta, encoded));\n }\n /**\n * @name addFromJson\n * @summary Stores an account, given JSON data, as a Key/Value (public key, pair) in Keyring Pair Dictionary\n * @description Allows user to provide a json object argument that contains account information (that may be obtained from the json file\n * of an account backup), and then generates a keyring pair from it that it passes to\n * `addPair` to stores in a keyring pair dictionary the public key of the generated pair as a key and the pair as the associated value.\n */\n\n\n addFromJson(_ref, ignoreChecksum) {\n let address = _ref.address,\n encoded = _ref.encoded,\n _ref$encoding = _ref.encoding,\n content = _ref$encoding.content,\n version = _ref$encoding.version,\n meta = _ref.meta;\n const type = version === '0' || !Array.isArray(content) ? this.type : content[1];\n return this.addFromAddress(address, meta, (0, _util.hexToU8a)(encoded), type, ignoreChecksum);\n }\n /**\n * @name addFromMnemonic\n * @summary Stores an account, given a mnemonic, as a Key/Value (public key, pair) in Keyring Pair Dictionary\n * @description Allows user to provide a mnemonic (seed phrase that is provided when account is originally created)\n * argument and a metadata argument that contains account information (that may be obtained from the json file\n * of an account backup), and then generates a keyring pair from it that it passes to\n * `addPair` to stores in a keyring pair dictionary the public key of the generated pair as a key and the pair as the associated value.\n */\n\n\n addFromMnemonic(mnemonic) {\n let meta = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.type;\n return this.addFromUri(mnemonic, meta, type);\n }\n /**\n * @name addFromSeed\n * @summary Stores an account, given seed data, as a Key/Value (public key, pair) in Keyring Pair Dictionary\n * @description Stores in a keyring pair dictionary the public key of the pair as a key and the pair as the associated value.\n * Allows user to provide the account seed as an argument, and then generates a keyring pair from it that it passes to\n * `addPair` to store in a keyring pair dictionary the public key of the generated pair as a key and the pair as the associated value.\n */\n\n\n addFromSeed(seed) {\n let meta = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.type;\n const keypair = type === 'sr25519' ? (0, _utilCrypto.schnorrkelKeypairFromSeed)(seed) : (0, _utilCrypto.naclKeypairFromSeed)(seed);\n return this.addPair((0, _pair.default)(type, keypair, meta, null));\n }\n /**\n * @name addFromUri\n * @summary Creates an account via an suri\n * @description Extracts the phrase, path and password from a SURI format for specifying secret keys `//////` (the `///password` may be omitted, and `/` and `//` maybe repeated and mixed). The secret can be a hex string, mnemonic phrase or a string (to be padded)\n */\n\n\n addFromUri(suri) {\n let meta = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.type;\n return this.addPair(this.createFromUri(suri, meta, type));\n }\n /**\n * @name createFromUri\n * @summry Creates a Keypair from an suri\n * @description This creates a pair from the suri, but does not add it to the keyring\n */\n\n\n createFromUri(_suri) {\n let meta = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.type;\n // here we only aut-add the dev phrase if we have a hard-derived path\n const suri = _suri.indexOf('//') === 0 ? \"\".concat(_defaults.DEV_PHRASE).concat(_suri) : _suri;\n\n const _keyExtractSuri = (0, _utilCrypto.keyExtractSuri)(suri),\n password = _keyExtractSuri.password,\n phrase = _keyExtractSuri.phrase,\n path = _keyExtractSuri.path;\n\n let seed;\n\n if ((0, _util.isHex)(phrase, 256)) {\n seed = (0, _util.hexToU8a)(phrase);\n } else {\n const str = phrase;\n const parts = str.split(' ');\n\n if ([12, 15, 18, 21, 24].includes(parts.length)) {\n // FIXME This keeps compat with older versions, but breaks compat with subkey\n // seed = type === 'sr25519'\n // ? mnemonicToMiniSecret(phrase, password)\n // : mnemonicToSeed(phrase, password);\n seed = (0, _utilCrypto.mnemonicToMiniSecret)(phrase, password);\n } else {\n (0, _util.assert)(str.length <= 32, 'specified phrase is not a valid mnemonic and is invalid as a raw seed at > 32 bytes');\n seed = (0, _util.stringToU8a)(str.padEnd(32));\n }\n }\n\n const keypair = type === 'sr25519' ? (0, _utilCrypto.schnorrkelKeypairFromSeed)(seed) : (0, _utilCrypto.naclKeypairFromSeed)(seed);\n const derived = (0, _utilCrypto.keyFromPath)(keypair, path, type);\n return (0, _pair.default)(type, derived, meta, null);\n }\n /**\n * @name getPair\n * @summary Retrieves an account keyring pair from the Keyring Pair Dictionary, given an account address\n * @description Returns a keyring pair value from the keyring pair dictionary by performing\n * a key lookup using the provided account address or public key (after decoding it).\n */\n\n\n getPair(address) {\n return this._pairs.get(address);\n }\n /**\n * @name getPairs\n * @summary Retrieves all account keyring pairs from the Keyring Pair Dictionary\n * @description Returns an array list of all the keyring pair values that are stored in the keyring pair dictionary.\n */\n\n\n getPairs() {\n return this._pairs.all();\n }\n /**\n * @name getPublicKeys\n * @summary Retrieves Public Keys of all Keyring Pairs stored in the Keyring Pair Dictionary\n * @description Returns an array list of all the public keys associated with each of the keyring pair values that are stored in the keyring pair dictionary.\n */\n\n\n getPublicKeys() {\n return this._pairs.all().map((_ref2) => {\n let publicKey = _ref2.publicKey;\n return publicKey();\n });\n }\n /**\n * @name removePair\n * @description Deletes the provided input address or public key from the stored Keyring Pair Dictionary.\n */\n\n\n removePair(address) {\n this._pairs.remove(address);\n }\n /**\n * @name toJson\n * @summary Returns a JSON object associated with the input argument that contains metadata assocated with an account\n * @description Returns a JSON object containing the metadata associated with an account\n * when valid address or public key and when the account passphrase is provided if the account secret\n * is not already unlocked and available in memory. Note that in [Polkadot-JS Apps](https://github.com/polkadot-js/apps) the user\n * may backup their account to a JSON file that contains this information.\n */\n\n\n toJson(address, passphrase) {\n return this._pairs.get(address).toJson(passphrase);\n }\n\n}\n\nexports.Keyring = exports.default = Keyring;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _exportNames = {\n cryptoWaitReady: true\n};\nexports.cryptoWaitReady = cryptoWaitReady;\n\nrequire(\"./polyfill\");\n\nvar _wasmCrypto = _interopRequireDefault(require(\"@polkadot/wasm-crypto\"));\n\nvar _blake = require(\"./blake2\");\n\nObject.keys(_blake).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _blake[key];\n }\n });\n});\n\nvar _keccak = require(\"./keccak\");\n\nObject.keys(_keccak).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _keccak[key];\n }\n });\n});\n\nvar _key = require(\"./key\");\n\nObject.keys(_key).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _key[key];\n }\n });\n});\n\nvar _mnemonic = require(\"./mnemonic\");\n\nObject.keys(_mnemonic).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _mnemonic[key];\n }\n });\n});\n\nvar _nacl = require(\"./nacl\");\n\nObject.keys(_nacl).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _nacl[key];\n }\n });\n});\n\nvar _random = require(\"./random\");\n\nObject.keys(_random).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _random[key];\n }\n });\n});\n\nvar _schnorrkel = require(\"./schnorrkel\");\n\nObject.keys(_schnorrkel).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _schnorrkel[key];\n }\n });\n});\n\nvar _secp256k = require(\"./secp256k1\");\n\nObject.keys(_secp256k).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _secp256k[key];\n }\n });\n});\n\nvar _sha = require(\"./sha512\");\n\nObject.keys(_sha).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _sha[key];\n }\n });\n});\n\nvar _xxhash = require(\"./xxhash\");\n\nObject.keys(_xxhash).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _xxhash[key];\n }\n });\n});\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction cryptoWaitReady() {\n return _wasmCrypto.default.waitReady().then(() => true).catch(error => {\n console.error('Unable to initialize @polkadot/util-crypto', error);\n return false;\n });\n} // start init process immediately\n\n\ncryptoWaitReady().catch(() => {// shouldn't happen, logged above\n});","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","\"use strict\";\n\nrequire(\"@polkadot/wasm-crypto/crypto-polyfill\");","// Copyright 2019 @polkadot/wasm-wasm authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\nconst crypto = require('crypto');\n\nif (!global.crypto) {\n global.crypto = {};\n}\n\nif (!global.crypto.getRandomValues) {\n global.crypto.getRandomValues = function (arr) {\n const buffer = crypto.randomBytes(arr.length);\n\n return buffer.reduce((arr, value, index) => {\n arr[index] = value;\n\n return arr;\n }, arr);\n }\n}\n","'use strict'\n\nimport { randomBytes } from 'react-native-randombytes'\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = randomBytes\n\n// implement window.getRandomValues(), for packages that rely on it\nif (typeof window === 'object') {\n if (!window.crypto) window.crypto = {}\n if (!window.crypto.getRandomValues) {\n window.crypto.getRandomValues = function getRandomValues (arr) {\n let orig = arr\n if (arr.byteLength != arr.length) {\n // Get access to the underlying raw bytes\n arr = new Uint8Array(arr.buffer)\n }\n const bytes = randomBytes(arr.length)\n for (var i = 0; i < bytes.length; i++) {\n arr[i] = bytes[i]\n }\n\n return orig\n }\n }\n}\n\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(Object.keys(require('browserify-sign/algos')))\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n;[\n 'Cipher',\n 'createCipher',\n 'Cipheriv',\n 'createCipheriv',\n 'Decipher',\n 'createDecipher',\n 'Decipheriv',\n 'createDecipheriv',\n 'getCiphers',\n 'listCiphers'\n].forEach(function (key) {\n exports[key] = aes[key]\n})\n\nvar dh = require('diffie-hellman')\n;[\n 'DiffieHellmanGroup',\n 'createDiffieHellmanGroup',\n 'getDiffieHellman',\n 'createDiffieHellman',\n 'DiffieHellman'\n].forEach(function (key) {\n exports[key] = dh[key]\n})\n\nvar sign = require('browserify-sign')\n;[\n 'createSign',\n 'Sign',\n 'createVerify',\n 'Verify'\n].forEach(function (key) {\n exports[key] = sign[key]\n})\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\n;[\n 'publicEncrypt',\n 'privateEncrypt',\n 'publicDecrypt',\n 'privateDecrypt'\n].forEach(function (key) {\n exports[key] = publicEncrypt[key]\n})\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n;[\n 'createCredentials'\n].forEach(function (name) {\n exports[name] = function () {\n throw new Error([\n 'sorry, ' + name + ' is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n }\n})\n","if (typeof Buffer === 'undefined') {\n global.Buffer = require('buffer').Buffer\n}\n\nlet sjcl = require('sjcl')\nlet RNRandomBytes = require('react-native').NativeModules.RNRandomBytes\n\nfunction noop () {}\n\nfunction toBuffer (nativeStr) {\n return new Buffer(nativeStr, 'base64')\n}\n\nfunction init () {\n if (RNRandomBytes.seed) {\n let seedBuffer = toBuffer(RNRandomBytes.seed)\n addEntropy(seedBuffer)\n } else {\n seedSJCL()\n }\n}\n\nfunction addEntropy (entropyBuf) {\n let hexString = entropyBuf.toString('hex')\n let stanfordSeed = sjcl.codec.hex.toBits(hexString)\n sjcl.random.addEntropy(stanfordSeed)\n}\n\nexport function seedSJCL (cb) {\n cb = cb || noop\n randomBytes(4096, function (err, buffer) {\n if (err) return cb(err)\n\n addEntropy(buffer)\n })\n}\n\nexport function randomBytes (length, cb) {\n if (!cb) {\n let size = length\n let wordCount = Math.ceil(size * 0.25)\n let randomBytes = sjcl.random.randomWords(wordCount, 10)\n let hexString = sjcl.codec.hex.fromBits(randomBytes)\n hexString = hexString.substr(0, size * 2)\n return new Buffer(hexString, 'hex')\n }\n\n RNRandomBytes.randomBytes(length, function(err, base64String) {\n if (err) {\n cb(err)\n } else {\n cb(null, toBuffer(base64String))\n }\n })\n}\n\ninit()\n","\"use strict\";var sjcl={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(a){this.toString=function(){return\"CORRUPT: \"+this.message};this.message=a},invalid:function(a){this.toString=function(){return\"INVALID: \"+this.message};this.message=a},bug:function(a){this.toString=function(){return\"BUG: \"+this.message};this.message=a},notReady:function(a){this.toString=function(){return\"NOT READY: \"+this.message};this.message=a}}};\nsjcl.cipher.aes=function(a){this.s[0][0][0]||this.O();var b,c,d,e,f=this.s[0][4],g=this.s[1];b=a.length;var h=1;if(4!==b&&6!==b&&8!==b)throw new sjcl.exception.invalid(\"invalid aes key size\");this.b=[d=a.slice(0),e=[]];for(a=b;a<4*b+28;a++){c=d[a-1];if(0===a%b||8===b&&4===a%b)c=f[c>>>24]<<24^f[c>>16&255]<<16^f[c>>8&255]<<8^f[c&255],0===a%b&&(c=c<<8^c>>>24^h<<24,h=h<<1^283*(h>>7));d[a]=d[a-b]^c}for(b=0;a;b++,a--)c=d[b&3?a:a-4],e[b]=4>=a||4>b?c:g[0][f[c>>>24]]^g[1][f[c>>16&255]]^g[2][f[c>>8&255]]^g[3][f[c&\n255]]};\nsjcl.cipher.aes.prototype={encrypt:function(a){return t(this,a,0)},decrypt:function(a){return t(this,a,1)},s:[[[],[],[],[],[]],[[],[],[],[],[]]],O:function(){var a=this.s[0],b=this.s[1],c=a[4],d=b[4],e,f,g,h=[],k=[],l,n,m,p;for(e=0;0x100>e;e++)k[(h[e]=e<<1^283*(e>>7))^e]=e;for(f=g=0;!c[f];f^=l||1,g=k[g]||1)for(m=g^g<<1^g<<2^g<<3^g<<4,m=m>>8^m&255^99,c[f]=m,d[m]=f,n=h[e=h[l=h[f]]],p=0x1010101*n^0x10001*e^0x101*l^0x1010100*f,n=0x101*h[m]^0x1010100*m,e=0;4>e;e++)a[e][f]=n=n<<24^n>>>8,b[e][m]=p=p<<24^p>>>8;for(e=\n0;5>e;e++)a[e]=a[e].slice(0),b[e]=b[e].slice(0)}};\nfunction t(a,b,c){if(4!==b.length)throw new sjcl.exception.invalid(\"invalid aes block size\");var d=a.b[c],e=b[0]^d[0],f=b[c?3:1]^d[1],g=b[2]^d[2];b=b[c?1:3]^d[3];var h,k,l,n=d.length/4-2,m,p=4,r=[0,0,0,0];h=a.s[c];a=h[0];var q=h[1],v=h[2],w=h[3],x=h[4];for(m=0;m>>24]^q[f>>16&255]^v[g>>8&255]^w[b&255]^d[p],k=a[f>>>24]^q[g>>16&255]^v[b>>8&255]^w[e&255]^d[p+1],l=a[g>>>24]^q[b>>16&255]^v[e>>8&255]^w[f&255]^d[p+2],b=a[b>>>24]^q[e>>16&255]^v[f>>8&255]^w[g&255]^d[p+3],p+=4,e=h,f=k,g=l;for(m=\n0;4>m;m++)r[c?3&-m:m]=x[e>>>24]<<24^x[f>>16&255]<<16^x[g>>8&255]<<8^x[b&255]^d[p++],h=e,e=f,f=g,g=b,b=h;return r}\nsjcl.bitArray={bitSlice:function(a,b,c){a=sjcl.bitArray.$(a.slice(b/32),32-(b&31)).slice(1);return void 0===c?a:sjcl.bitArray.clamp(a,c-b)},extract:function(a,b,c){var d=Math.floor(-b-c&31);return((b+c-1^b)&-32?a[b/32|0]<<32-d^a[b/32+1|0]>>>d:a[b/32|0]>>>d)&(1<>b-1,1));return a},partial:function(a,b,c){return 32===a?b:(c?b|0:b<<32-a)+0x10000000000*a},getPartial:function(a){return Math.round(a/0x10000000000)||32},equal:function(a,b){if(sjcl.bitArray.bitLength(a)!==sjcl.bitArray.bitLength(b))return!1;var c=0,d;for(d=0;d>>b),c=a[e]<<32-b;e=a.length?a[a.length-1]:0;a=sjcl.bitArray.getPartial(e);d.push(sjcl.bitArray.partial(b+a&31,32>>24|c>>>8&0xff00|(c&0xff00)<<8|c<<24;return a}};\nsjcl.codec.utf8String={fromBits:function(a){var b=\"\",c=sjcl.bitArray.bitLength(a),d,e;for(d=0;d>>8>>>8>>>8),e<<=8;return decodeURIComponent(escape(b))},toBits:function(a){a=unescape(encodeURIComponent(a));var b=[],c,d=0;for(c=0;c>>g)>>>e),gn){if(!b)try{return sjcl.codec.base32hex.toBits(a)}catch(p){}throw new sjcl.exception.invalid(\"this isn't \"+m+\"!\");}h>e?(h-=e,f.push(l^n>>>h),l=n<>>e)>>>26),6>e?(g=a[c]<<6-e,e+=26,c++):(g<<=6,e-=6);for(;d.length&3&&!b;)d+=\"=\";return d},toBits:function(a,b){a=a.replace(/\\s|=/g,\"\");var c=[],d,e=0,f=sjcl.codec.base64.B,g=0,h;b&&(f=f.substr(0,62)+\"-_\");for(d=0;dh)throw new sjcl.exception.invalid(\"this isn't base64!\");26>>e),g=h<<32-e):(e+=6,g^=h<<32-e)}e&56&&c.push(sjcl.bitArray.partial(e&56,g,1));return c}};sjcl.codec.base64url={fromBits:function(a){return sjcl.codec.base64.fromBits(a,1,1)},toBits:function(a){return sjcl.codec.base64.toBits(a,1)}};sjcl.hash.sha256=function(a){this.b[0]||this.O();a?(this.F=a.F.slice(0),this.A=a.A.slice(0),this.l=a.l):this.reset()};sjcl.hash.sha256.hash=function(a){return(new sjcl.hash.sha256).update(a).finalize()};\nsjcl.hash.sha256.prototype={blockSize:512,reset:function(){this.F=this.Y.slice(0);this.A=[];this.l=0;return this},update:function(a){\"string\"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));var b,c=this.A=sjcl.bitArray.concat(this.A,a);b=this.l;a=this.l=b+sjcl.bitArray.bitLength(a);if(0x1fffffffffffffb;c++){e=!0;for(d=2;d*d<=c;d++)if(0===c%d){e=\n!1;break}e&&(8>b&&(this.Y[b]=a(Math.pow(c,.5))),this.b[b]=a(Math.pow(c,1/3)),b++)}}};\nfunction u(a,b){var c,d,e,f=a.F,g=a.b,h=f[0],k=f[1],l=f[2],n=f[3],m=f[4],p=f[5],r=f[6],q=f[7];for(c=0;64>c;c++)16>c?d=b[c]:(d=b[c+1&15],e=b[c+14&15],d=b[c&15]=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+b[c&15]+b[c+9&15]|0),d=d+q+(m>>>6^m>>>11^m>>>25^m<<26^m<<21^m<<7)+(r^m&(p^r))+g[c],q=r,r=p,p=m,m=n+d|0,n=l,l=k,k=h,h=d+(k&l^n&(k^l))+(k>>>2^k>>>13^k>>>22^k<<30^k<<19^k<<10)|0;f[0]=f[0]+h|0;f[1]=f[1]+k|0;f[2]=f[2]+l|0;f[3]=f[3]+n|0;f[4]=f[4]+m|0;f[5]=f[5]+p|0;f[6]=f[6]+r|0;f[7]=\nf[7]+q|0}\nsjcl.mode.ccm={name:\"ccm\",G:[],listenProgress:function(a){sjcl.mode.ccm.G.push(a)},unListenProgress:function(a){a=sjcl.mode.ccm.G.indexOf(a);-1k)throw new sjcl.exception.invalid(\"ccm: iv must be at least 7 bytes\");for(f=2;4>f&&l>>>8*f;f++);f<15-k&&(f=15-k);c=h.clamp(c,\n8*(15-f));b=sjcl.mode.ccm.V(a,b,c,d,e,f);g=sjcl.mode.ccm.C(a,g,c,b,e,f);return h.concat(g.data,g.tag)},decrypt:function(a,b,c,d,e){e=e||64;d=d||[];var f=sjcl.bitArray,g=f.bitLength(c)/8,h=f.bitLength(b),k=f.clamp(b,h-e),l=f.bitSlice(b,h-e),h=(h-e)/8;if(7>g)throw new sjcl.exception.invalid(\"ccm: iv must be at least 7 bytes\");for(b=2;4>b&&h>>>8*b;b++);b<15-g&&(b=15-g);c=f.clamp(c,8*(15-b));k=sjcl.mode.ccm.C(a,k,c,l,e,b);a=sjcl.mode.ccm.V(a,k.data,c,d,e,b);if(!f.equal(k.tag,a))throw new sjcl.exception.corrupt(\"ccm: tag doesn't match\");\nreturn k.data},na:function(a,b,c,d,e,f){var g=[],h=sjcl.bitArray,k=h.i;d=[h.partial(8,(b.length?64:0)|d-2<<2|f-1)];d=h.concat(d,c);d[3]|=e;d=a.encrypt(d);if(b.length)for(c=h.bitLength(b)/8,65279>=c?g=[h.partial(16,c)]:0xffffffff>=c&&(g=h.concat([h.partial(16,65534)],[c])),g=h.concat(g,b),b=0;be||16n&&(sjcl.mode.ccm.fa(g/\nk),n+=m),c[3]++,e=a.encrypt(c),b[g]^=e[0],b[g+1]^=e[1],b[g+2]^=e[2],b[g+3]^=e[3];return{tag:d,data:h.clamp(b,l)}}};\nsjcl.mode.ocb2={name:\"ocb2\",encrypt:function(a,b,c,d,e,f){if(128!==sjcl.bitArray.bitLength(c))throw new sjcl.exception.invalid(\"ocb iv must be 128 bits\");var g,h=sjcl.mode.ocb2.S,k=sjcl.bitArray,l=k.i,n=[0,0,0,0];c=h(a.encrypt(c));var m,p=[];d=d||[];e=e||64;for(g=0;g+4e.bitLength(c)&&(h=f(h,d(h)),c=e.concat(c,[-2147483648,0,0,0]));g=f(g,c);\nreturn a.encrypt(f(d(f(h,d(h))),g))},S:function(a){return[a[0]<<1^a[1]>>>31,a[1]<<1^a[2]>>>31,a[2]<<1^a[3]>>>31,a[3]<<1^135*(a[0]>>>31)]}};\nsjcl.mode.gcm={name:\"gcm\",encrypt:function(a,b,c,d,e){var f=b.slice(0);b=sjcl.bitArray;d=d||[];a=sjcl.mode.gcm.C(!0,a,f,d,c,e||128);return b.concat(a.data,a.tag)},decrypt:function(a,b,c,d,e){var f=b.slice(0),g=sjcl.bitArray,h=g.bitLength(f);e=e||128;d=d||[];e<=h?(b=g.bitSlice(f,h-e),f=g.bitSlice(f,0,h-e)):(b=f,f=[]);a=sjcl.mode.gcm.C(!1,a,f,d,c,e);if(!g.equal(a.tag,b))throw new sjcl.exception.corrupt(\"gcm: tag doesn't match\");return a.data},ka:function(a,b){var c,d,e,f,g,h=sjcl.bitArray.i;e=[0,0,\n0,0];f=b.slice(0);for(c=0;128>c;c++){(d=0!==(a[Math.floor(c/32)]&1<<31-c%32))&&(e=h(e,f));g=0!==(f[3]&1);for(d=3;0>>1|(f[d-1]&1)<<31;f[0]>>>=1;g&&(f[0]^=-0x1f000000)}return e},j:function(a,b,c){var d,e=c.length;b=b.slice(0);for(d=0;de&&(a=b.hash(a));for(d=0;dd||0>c)throw new sjcl.exception.invalid(\"invalid params to pbkdf2\");\"string\"===typeof a&&(a=sjcl.codec.utf8String.toBits(a));\"string\"===typeof b&&(b=sjcl.codec.utf8String.toBits(b));e=e||sjcl.misc.hmac;a=new e(a);var f,g,h,k,l=[],n=sjcl.bitArray;for(k=1;32*l.length<(d||1);k++){e=f=a.encrypt(n.concat(b,[k]));for(g=1;gg;g++)e.push(0x100000000*Math.random()|0);for(g=0;g=1<this.o&&(this.o=\nf);this.P++;this.b=sjcl.hash.sha256.hash(this.b.concat(e));this.L=new sjcl.cipher.aes(this.b);for(d=0;4>d&&(this.h[d]=this.h[d]+1|0,!this.h[d]);d++);}for(d=0;d>>1;this.c[g].update([d,this.N++,2,b,f,a.length].concat(a))}break;case \"string\":void 0===b&&(b=a.length);this.c[g].update([d,this.N++,3,b,f,a.length]);this.c[g].update(a);break;default:k=1}if(k)throw new sjcl.exception.bug(\"random: addEntropy only supports number, array of numbers or string\");this.m[g]+=b;this.f+=b;h===this.u&&(this.isReady()!==this.u&&A(\"seeded\",Math.max(this.o,this.f)),A(\"progress\",this.getProgress()))},\nisReady:function(a){a=this.T[void 0!==a?a:this.M];return this.o&&this.o>=a?this.m[0]>this.ba&&(new Date).valueOf()>this.Z?this.J|this.I:this.I:this.f>=a?this.J|this.u:this.u},getProgress:function(a){a=this.T[a?a:this.M];return this.o>=a?1:this.f>a?1:this.f/a},startCollectors:function(){if(!this.D){this.a={loadTimeCollector:B(this,this.ma),mouseCollector:B(this,this.oa),keyboardCollector:B(this,this.la),accelerometerCollector:B(this,this.ea),touchCollector:B(this,this.qa)};if(window.addEventListener)window.addEventListener(\"load\",\nthis.a.loadTimeCollector,!1),window.addEventListener(\"mousemove\",this.a.mouseCollector,!1),window.addEventListener(\"keypress\",this.a.keyboardCollector,!1),window.addEventListener(\"devicemotion\",this.a.accelerometerCollector,!1),window.addEventListener(\"touchmove\",this.a.touchCollector,!1);else if(document.attachEvent)document.attachEvent(\"onload\",this.a.loadTimeCollector),document.attachEvent(\"onmousemove\",this.a.mouseCollector),document.attachEvent(\"keypress\",this.a.keyboardCollector);else throw new sjcl.exception.bug(\"can't attach event\");\nthis.D=!0}},stopCollectors:function(){this.D&&(window.removeEventListener?(window.removeEventListener(\"load\",this.a.loadTimeCollector,!1),window.removeEventListener(\"mousemove\",this.a.mouseCollector,!1),window.removeEventListener(\"keypress\",this.a.keyboardCollector,!1),window.removeEventListener(\"devicemotion\",this.a.accelerometerCollector,!1),window.removeEventListener(\"touchmove\",this.a.touchCollector,!1)):document.detachEvent&&(document.detachEvent(\"onload\",this.a.loadTimeCollector),document.detachEvent(\"onmousemove\",\nthis.a.mouseCollector),document.detachEvent(\"keypress\",this.a.keyboardCollector)),this.D=!1)},addEventListener:function(a,b){this.K[a][this.ga++]=b},removeEventListener:function(a,b){var c,d,e=this.K[a],f=[];for(d in e)e.hasOwnProperty(d)&&e[d]===b&&f.push(d);for(c=0;cb&&(a.h[b]=a.h[b]+1|0,!a.h[b]);b++);return a.L.encrypt(a.h)}\nfunction B(a,b){return function(){b.apply(a,arguments)}}sjcl.random=new sjcl.prng(6);\na:try{var D,E,F,G;if(G=\"undefined\"!==typeof module&&module.exports){var H;try{H=require(\"crypto\")}catch(a){H=null}G=E=H}if(G&&E.randomBytes)D=E.randomBytes(128),D=new Uint32Array((new Uint8Array(D)).buffer),sjcl.random.addEntropy(D,1024,\"crypto['randomBytes']\");else if(\"undefined\"!==typeof window&&\"undefined\"!==typeof Uint32Array){F=new Uint32Array(32);if(window.crypto&&window.crypto.getRandomValues)window.crypto.getRandomValues(F);else if(window.msCrypto&&window.msCrypto.getRandomValues)window.msCrypto.getRandomValues(F);\nelse break a;sjcl.random.addEntropy(F,1024,\"crypto['getRandomValues']\")}}catch(a){\"undefined\"!==typeof window&&window.console&&(console.log(\"There was an error collecting entropy from the browser:\"),console.log(a))}\nsjcl.json={defaults:{v:1,iter:1E4,ks:128,ts:64,mode:\"ccm\",adata:\"\",cipher:\"aes\"},ja:function(a,b,c,d){c=c||{};d=d||{};var e=sjcl.json,f=e.g({iv:sjcl.random.randomWords(4,0)},e.defaults),g;e.g(f,c);c=f.adata;\"string\"===typeof f.salt&&(f.salt=sjcl.codec.base64.toBits(f.salt));\"string\"===typeof f.iv&&(f.iv=sjcl.codec.base64.toBits(f.iv));if(!sjcl.mode[f.mode]||!sjcl.cipher[f.cipher]||\"string\"===typeof a&&100>=f.iter||64!==f.ts&&96!==f.ts&&128!==f.ts||128!==f.ks&&192!==f.ks&&0x100!==f.ks||2>f.iv.length||\n4=b.iter||64!==b.ts&&96!==b.ts&&128!==b.ts||128!==b.ks&&192!==b.ks&&0x100!==b.ks||!b.iv||2>b.iv.length||4 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = global.StreamModule = Stream\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","var Stream = global.StreamModule || require('stream') // hack to fix a circular dependency issue when used with browserify\nexports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = Stream;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n\n/**/\nvar Buffer = require('buffer').Buffer;\n/**/\n\nReadable.ReadableState = ReadableState;\n\nvar EE = require('events').EventEmitter;\n\n/**/\nif (!EE.listenerCount) EE.listenerCount = function(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\nvar Stream = global.StreamModule || require('stream')\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nfunction ReadableState(options, stream) {\n options = options || {};\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\n this.buffer = [];\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = false;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // In streams that never have any data, and do push(null) right away,\n // the consumer can miss the 'end' event if they do some I/O before\n // consuming the stream. So, we don't emit('end') until some reading\n // happens.\n this.calledRead = false;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, becuase any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // when piping, we only care about 'readable' events that happen\n // after read()ing all the bytes and not getting any pushback.\n this.ranOut = false;\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n if (!(this instanceof Readable))\n return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n Stream.call(this);\n}\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function(chunk, encoding) {\n var state = this._readableState;\n\n if (typeof chunk === 'string' && !state.objectMode) {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = new Buffer(chunk, encoding);\n encoding = '';\n }\n }\n\n return readableAddChunk(this, state, chunk, encoding, false);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function(chunk) {\n var state = this._readableState;\n return readableAddChunk(this, state, chunk, '', true);\n};\n\nfunction readableAddChunk(stream, state, chunk, encoding, addToFront) {\n var er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (chunk === null || chunk === undefined) {\n state.reading = false;\n if (!state.ended)\n onEofChunk(stream, state);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (state.ended && !addToFront) {\n var e = new Error('stream.push() after EOF');\n stream.emit('error', e);\n } else if (state.endEmitted && addToFront) {\n var e = new Error('stream.unshift() after end event');\n stream.emit('error', e);\n } else {\n if (state.decoder && !addToFront && !encoding)\n chunk = state.decoder.write(chunk);\n\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) {\n state.buffer.unshift(chunk);\n } else {\n state.reading = false;\n state.buffer.push(chunk);\n }\n\n if (state.needReadable)\n emitReadable(stream);\n\n maybeReadMore(stream, state);\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n\n return needMoreData(state);\n}\n\n\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended &&\n (state.needReadable ||\n state.length < state.highWaterMark ||\n state.length === 0);\n}\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function(enc) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n};\n\n// Don't raise the hwm > 128MB\nvar MAX_HWM = 0x800000;\nfunction roundUpToNextPowerOf2(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2\n n--;\n for (var p = 1; p < 32; p <<= 1) n |= n >> p;\n n++;\n }\n return n;\n}\n\nfunction howMuchToRead(n, state) {\n if (state.length === 0 && state.ended)\n return 0;\n\n if (state.objectMode)\n return n === 0 ? 0 : 1;\n\n if (n === null || isNaN(n)) {\n // only flow one buffer at a time\n if (state.flowing && state.buffer.length)\n return state.buffer[0].length;\n else\n return state.length;\n }\n\n if (n <= 0)\n return 0;\n\n // If we're asking for more than the target buffer level,\n // then raise the water mark. Bump up to the next highest\n // power of 2, to prevent increasing it excessively in tiny\n // amounts.\n if (n > state.highWaterMark)\n state.highWaterMark = roundUpToNextPowerOf2(n);\n\n // don't have that much. return null, unless we've ended.\n if (n > state.length) {\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n } else\n return state.length;\n }\n\n return n;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function(n) {\n var state = this._readableState;\n state.calledRead = true;\n var nOrig = n;\n var ret;\n\n if (typeof n !== 'number' || n > 0)\n state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 &&\n state.needReadable &&\n (state.length >= state.highWaterMark || state.ended)) {\n emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n ret = null;\n\n // In cases where the decoder did not receive enough data\n // to produce a full chunk, then immediately received an\n // EOF, state.buffer will contain [, ].\n // howMuchToRead will see this and coerce the amount to\n // read to zero (because it's looking at the length of the\n // first in state.buffer), and we'll end up here.\n //\n // This can only happen via state.decoder -- no other venue\n // exists for pushing a zero-length chunk into state.buffer\n // and triggering this behavior. In this case, we return our\n // remaining data and end the stream, if appropriate.\n if (state.length > 0 && state.decoder) {\n ret = fromList(n, state);\n state.length -= ret.length;\n }\n\n if (state.length === 0)\n endReadable(this);\n\n return ret;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length - n <= state.highWaterMark)\n doRead = true;\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading)\n doRead = false;\n\n if (doRead) {\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0)\n state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n }\n\n // If _read called its callback synchronously, then `reading`\n // will be false, and we need to re-evaluate how much data we\n // can return to the user.\n if (doRead && !state.reading)\n n = howMuchToRead(nOrig, state);\n\n if (n > 0)\n ret = fromList(n, state);\n else\n ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n }\n\n state.length -= n;\n\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (state.length === 0 && !state.ended)\n state.needReadable = true;\n\n // If we happened to read() exactly the remaining amount in the\n // buffer, and the EOF has been seen at this point, then make sure\n // that we emit 'end' on the very next tick.\n if (state.ended && !state.endEmitted && state.length === 0)\n endReadable(this);\n\n return ret;\n};\n\nfunction chunkInvalid(state, chunk) {\n var er = null;\n if (!Buffer.isBuffer(chunk) &&\n 'string' !== typeof chunk &&\n chunk !== null &&\n chunk !== undefined &&\n !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n\nfunction onEofChunk(stream, state) {\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // if we've ended and we have some data left, then emit\n // 'readable' now to make sure it gets picked up.\n if (state.length > 0)\n emitReadable(stream);\n else\n endReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (state.emittedReadable)\n return;\n\n state.emittedReadable = true;\n if (state.sync)\n process.nextTick(function() {\n emitReadable_(stream);\n });\n else\n emitReadable_(stream);\n}\n\nfunction emitReadable_(stream) {\n stream.emit('readable');\n}\n\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(function() {\n maybeReadMore_(stream, state);\n });\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended &&\n state.length < state.highWaterMark) {\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n else\n len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function(n) {\n this.emit('error', new Error('not implemented'));\n};\n\nReadable.prototype.pipe = function(dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) &&\n dest !== process.stdout &&\n dest !== process.stderr;\n\n var endFn = doEnd ? onend : cleanup;\n if (state.endEmitted)\n process.nextTick(endFn);\n else\n src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable) {\n if (readable !== src) return;\n cleanup();\n }\n\n function onend() {\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n function cleanup() {\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', cleanup);\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (!dest._writableState || dest._writableState.needDrain)\n ondrain();\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n unpipe();\n dest.removeListener('error', onerror);\n if (EE.listenerCount(dest, 'error') === 0)\n dest.emit('error', er);\n }\n // This is a brutally ugly hack to make sure that our error handler\n // is attached before any userland ones. NEVER DO THIS.\n if (!dest._events || !dest._events.error)\n dest.on('error', onerror);\n else if (isArray(dest._events.error))\n dest._events.error.unshift(onerror);\n else\n dest._events.error = [onerror, dest._events.error];\n\n\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n // the handler that waits for readable events after all\n // the data gets sucked out in flow.\n // This would be easier to follow with a .once() handler\n // in flow(), but that is too slow.\n this.on('readable', pipeOnReadable);\n\n state.flowing = true;\n process.nextTick(function() {\n flow(src);\n });\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function() {\n var dest = this;\n var state = src._readableState;\n state.awaitDrain--;\n if (state.awaitDrain === 0)\n flow(src);\n };\n}\n\nfunction flow(src) {\n var state = src._readableState;\n var chunk;\n state.awaitDrain = 0;\n\n function write(dest, i, list) {\n var written = dest.write(chunk);\n if (false === written) {\n state.awaitDrain++;\n }\n }\n\n while (state.pipesCount && null !== (chunk = src.read())) {\n\n if (state.pipesCount === 1)\n write(state.pipes, 0, null);\n else\n forEach(state.pipes, write);\n\n src.emit('data', chunk);\n\n // if anyone needs a drain, then we have to wait for that.\n if (state.awaitDrain > 0)\n return;\n }\n\n // if every destination was unpiped, either before entering this\n // function, or in the while loop, then stop flowing.\n //\n // NB: This is a pretty rare edge case.\n if (state.pipesCount === 0) {\n state.flowing = false;\n\n // if there were data event listeners added, then switch to old mode.\n if (EE.listenerCount(src, 'data') > 0)\n emitDataEvents(src);\n return;\n }\n\n // at this point, no one needed a drain, so we just ran out of data\n // on the next readable event, start it over again.\n state.ranOut = true;\n}\n\nfunction pipeOnReadable() {\n if (this._readableState.ranOut) {\n this._readableState.ranOut = false;\n flow(this);\n }\n}\n\n\nReadable.prototype.unpipe = function(dest) {\n var state = this._readableState;\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0)\n return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes)\n return this;\n\n if (!dest)\n dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n this.removeListener('readable', pipeOnReadable);\n state.flowing = false;\n if (dest)\n dest.emit('unpipe', this);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n this.removeListener('readable', pipeOnReadable);\n state.flowing = false;\n\n for (var i = 0; i < len; i++)\n dests[i].emit('unpipe', this);\n return this;\n }\n\n // try to find the right one.\n var i = indexOf(state.pipes, dest);\n if (i === -1)\n return this;\n\n state.pipes.splice(i, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1)\n state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function(ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data' && !this._readableState.flowing)\n emitDataEvents(this);\n\n if (ev === 'readable' && this.readable) {\n var state = this._readableState;\n if (!state.readableListening) {\n state.readableListening = true;\n state.emittedReadable = false;\n state.needReadable = true;\n if (!state.reading) {\n this.read(0);\n } else if (state.length) {\n emitReadable(this, state);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function() {\n emitDataEvents(this);\n this.read(0);\n this.emit('resume');\n};\n\nReadable.prototype.pause = function() {\n emitDataEvents(this, true);\n this.emit('pause');\n};\n\nfunction emitDataEvents(stream, startPaused) {\n var state = stream._readableState;\n\n if (state.flowing) {\n // https://github.com/isaacs/readable-stream/issues/16\n throw new Error('Cannot switch to old mode now.');\n }\n\n var paused = startPaused || false;\n var readable = false;\n\n // convert to an old-style stream.\n stream.readable = true;\n stream.pipe = Stream.prototype.pipe;\n stream.on = stream.addListener = Stream.prototype.on;\n\n stream.on('readable', function() {\n readable = true;\n\n var c;\n while (!paused && (null !== (c = stream.read())))\n stream.emit('data', c);\n\n if (c === null) {\n readable = false;\n stream._readableState.needReadable = true;\n }\n });\n\n stream.pause = function() {\n paused = true;\n this.emit('pause');\n };\n\n stream.resume = function() {\n paused = false;\n if (readable)\n process.nextTick(function() {\n stream.emit('readable');\n });\n else\n this.read(0);\n this.emit('resume');\n };\n\n // now make it start, just in case it hadn't already.\n stream.emit('readable');\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function(stream) {\n var state = this._readableState;\n var paused = false;\n\n var self = this;\n stream.on('end', function() {\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length)\n self.push(chunk);\n }\n\n self.push(null);\n });\n\n stream.on('data', function(chunk) {\n if (state.decoder)\n chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n //if (state.objectMode && util.isNullOrUndefined(chunk))\n if (state.objectMode && (chunk === null || chunk === undefined))\n return;\n else if (!state.objectMode && (!chunk || !chunk.length))\n return;\n\n var ret = self.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (typeof stream[i] === 'function' &&\n typeof this[i] === 'undefined') {\n this[i] = function(method) { return function() {\n return stream[method].apply(stream, arguments);\n }}(i);\n }\n }\n\n // proxy certain important events.\n var events = ['error', 'close', 'destroy', 'pause', 'resume'];\n forEach(events, function(ev) {\n stream.on(ev, self.emit.bind(self, ev));\n });\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n self._read = function(n) {\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return self;\n};\n\n\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\nfunction fromList(n, state) {\n var list = state.buffer;\n var length = state.length;\n var stringMode = !!state.decoder;\n var objectMode = !!state.objectMode;\n var ret;\n\n // nothing in the list, definitely empty.\n if (list.length === 0)\n return null;\n\n if (length === 0)\n ret = null;\n else if (objectMode)\n ret = list.shift();\n else if (!n || n >= length) {\n // read it all, truncate the array.\n if (stringMode)\n ret = list.join('');\n else\n ret = Buffer.concat(list, length);\n list.length = 0;\n } else {\n // read just some of it.\n if (n < list[0].length) {\n // just take a part of the first list item.\n // slice is the same for buffers and strings.\n var buf = list[0];\n ret = buf.slice(0, n);\n list[0] = buf.slice(n);\n } else if (n === list[0].length) {\n // first list is a perfect match\n ret = list.shift();\n } else {\n // complex case.\n // we have enough to cover it, but it spans past the first buffer.\n if (stringMode)\n ret = '';\n else\n ret = new Buffer(n);\n\n var c = 0;\n for (var i = 0, l = list.length; i < l && c < n; i++) {\n var buf = list[0];\n var cpy = Math.min(n - c, buf.length);\n\n if (stringMode)\n ret += buf.slice(0, cpy);\n else\n buf.copy(ret, c, 0, cpy);\n\n if (cpy < buf.length)\n list[0] = buf.slice(cpy);\n else\n list.shift();\n\n c += cpy;\n }\n }\n }\n\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0)\n throw new Error('endReadable called on non-empty stream');\n\n if (!state.endEmitted && state.calledRead) {\n state.ended = true;\n process.nextTick(function() {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n });\n }\n}\n\nfunction forEach (xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n\nfunction indexOf (xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar Buffer = require('buffer').Buffer;\n\nvar isBufferEncoding = Buffer.isEncoding\n || function(encoding) {\n switch (encoding && encoding.toLowerCase()) {\n case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;\n default: return false;\n }\n }\n\n\nfunction assertEncoding(encoding) {\n if (encoding && !isBufferEncoding(encoding)) {\n throw new Error('Unknown encoding: ' + encoding);\n }\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters. CESU-8 is handled as part of the UTF-8 encoding.\n//\n// @TODO Handling all encodings inside a single object makes it very difficult\n// to reason about this code, so it should be split up in the future.\n// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\n// points as used by CESU-8.\nvar StringDecoder = exports.StringDecoder = function(encoding) {\n this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n assertEncoding(encoding);\n switch (this.encoding) {\n case 'utf8':\n // CESU-8 represents each of Surrogate Pair by 3-bytes\n this.surrogateSize = 3;\n break;\n case 'ucs2':\n case 'utf16le':\n // UTF-16 represents each of Surrogate Pair by 2-bytes\n this.surrogateSize = 2;\n this.detectIncompleteChar = utf16DetectIncompleteChar;\n break;\n case 'base64':\n // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\n this.surrogateSize = 3;\n this.detectIncompleteChar = base64DetectIncompleteChar;\n break;\n default:\n this.write = passThroughWrite;\n return;\n }\n\n // Enough space to store all bytes of a single character. UTF-8 needs 4\n // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\n this.charBuffer = new Buffer(6);\n // Number of bytes received for the current incomplete multi-byte character.\n this.charReceived = 0;\n // Number of bytes expected for the current incomplete multi-byte character.\n this.charLength = 0;\n};\n\n\n// write decodes the given buffer and returns it as JS string that is\n// guaranteed to not contain any partial multi-byte characters. Any partial\n// character found at the end of the buffer is buffered up, and will be\n// returned when calling write again with the remaining bytes.\n//\n// Note: Converting a Buffer containing an orphan surrogate to a String\n// currently works, but converting a String to a Buffer (via `new Buffer`, or\n// Buffer#write) will replace incomplete surrogates with the unicode\n// replacement character. See https://codereview.chromium.org/121173009/ .\nStringDecoder.prototype.write = function(buffer) {\n var charStr = '';\n // if our last write ended with an incomplete multibyte character\n while (this.charLength) {\n // determine how many remaining bytes this buffer has to offer for this char\n var available = (buffer.length >= this.charLength - this.charReceived) ?\n this.charLength - this.charReceived :\n buffer.length;\n\n // add the new bytes to the char buffer\n buffer.copy(this.charBuffer, this.charReceived, 0, available);\n this.charReceived += available;\n\n if (this.charReceived < this.charLength) {\n // still not enough chars in this buffer? wait for more ...\n return '';\n }\n\n // remove bytes belonging to the current character from the buffer\n buffer = buffer.slice(available, buffer.length);\n\n // get the character that was split\n charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n var charCode = charStr.charCodeAt(charStr.length - 1);\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n this.charLength += this.surrogateSize;\n charStr = '';\n continue;\n }\n this.charReceived = this.charLength = 0;\n\n // if there are no more bytes in this buffer, just emit our char\n if (buffer.length === 0) {\n return charStr;\n }\n break;\n }\n\n // determine and set charLength / charReceived\n this.detectIncompleteChar(buffer);\n\n var end = buffer.length;\n if (this.charLength) {\n // buffer the incomplete character bytes we got\n buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n end -= this.charReceived;\n }\n\n charStr += buffer.toString(this.encoding, 0, end);\n\n var end = charStr.length - 1;\n var charCode = charStr.charCodeAt(end);\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n var size = this.surrogateSize;\n this.charLength += size;\n this.charReceived += size;\n this.charBuffer.copy(this.charBuffer, size, 0, size);\n buffer.copy(this.charBuffer, 0, 0, size);\n return charStr.substring(0, end);\n }\n\n // or just emit the charStr\n return charStr;\n};\n\n// detectIncompleteChar determines if there is an incomplete UTF-8 character at\n// the end of the given buffer. If so, it sets this.charLength to the byte\n// length that character, and sets this.charReceived to the number of bytes\n// that are available for this character.\nStringDecoder.prototype.detectIncompleteChar = function(buffer) {\n // determine how many bytes we have to check at the end of this buffer\n var i = (buffer.length >= 3) ? 3 : buffer.length;\n\n // Figure out if one of the last i bytes of our buffer announces an\n // incomplete char.\n for (; i > 0; i--) {\n var c = buffer[buffer.length - i];\n\n // See http://en.wikipedia.org/wiki/UTF-8#Description\n\n // 110XXXXX\n if (i == 1 && c >> 5 == 0x06) {\n this.charLength = 2;\n break;\n }\n\n // 1110XXXX\n if (i <= 2 && c >> 4 == 0x0E) {\n this.charLength = 3;\n break;\n }\n\n // 11110XXX\n if (i <= 3 && c >> 3 == 0x1E) {\n this.charLength = 4;\n break;\n }\n }\n this.charReceived = i;\n};\n\nStringDecoder.prototype.end = function(buffer) {\n var res = '';\n if (buffer && buffer.length)\n res = this.write(buffer);\n\n if (this.charReceived) {\n var cr = this.charReceived;\n var buf = this.charBuffer;\n var enc = this.encoding;\n res += buf.slice(0, cr).toString(enc);\n }\n\n return res;\n};\n\nfunction passThroughWrite(buffer) {\n return buffer.toString(this.encoding);\n}\n\nfunction utf16DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 2;\n this.charLength = this.charReceived ? 2 : 0;\n}\n\nfunction base64DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 3;\n this.charLength = this.charReceived ? 3 : 0;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, cb), and it'll handle all\n// the drain event emission and buffering.\n\nmodule.exports = Writable;\n\n/**/\nvar Buffer = require('buffer').Buffer;\n/**/\n\nWritable.WritableState = WritableState;\n\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar Stream = global.StreamModule || require('stream')\n\nutil.inherits(Writable, Stream);\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n}\n\nfunction WritableState(options, stream) {\n options = options || {};\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, becuase any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function(er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.buffer = [];\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n}\n\nfunction Writable(options) {\n var Duplex = require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, though they're not\n // instanceof Writable, they're instanceof Readable.\n if (!(this instanceof Writable) && !(this instanceof Duplex))\n return new Writable(options);\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function() {\n this.emit('error', new Error('Cannot pipe. Not readable.'));\n};\n\n\nfunction writeAfterEnd(stream, state, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n process.nextTick(function() {\n cb(er);\n });\n}\n\n// If we get something that is not a buffer, string, null, or undefined,\n// and we're not in objectMode, then that's an error.\n// Otherwise stream chunks are all considered to be of length=1, and the\n// watermarks determine how many objects to keep in the buffer, rather than\n// how many bytes or characters.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n if (!Buffer.isBuffer(chunk) &&\n 'string' !== typeof chunk &&\n chunk !== null &&\n chunk !== undefined &&\n !state.objectMode) {\n var er = new TypeError('Invalid non-string/buffer chunk');\n stream.emit('error', er);\n process.nextTick(function() {\n cb(er);\n });\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function(chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (Buffer.isBuffer(chunk))\n encoding = 'buffer';\n else if (!encoding)\n encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function')\n cb = function() {};\n\n if (state.ended)\n writeAfterEnd(this, state, cb);\n else if (validChunk(this, state, chunk, cb))\n ret = writeOrBuffer(this, state, chunk, encoding, cb);\n\n return ret;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode &&\n state.decodeStrings !== false &&\n typeof chunk === 'string') {\n chunk = new Buffer(chunk, encoding);\n }\n return chunk;\n}\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, chunk, encoding, cb) {\n chunk = decodeChunk(state, chunk, encoding);\n if (Buffer.isBuffer(chunk))\n encoding = 'buffer';\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret)\n state.needDrain = true;\n\n if (state.writing)\n state.buffer.push(new WriteReq(chunk, encoding, cb));\n else\n doWrite(stream, state, len, chunk, encoding, cb);\n\n return ret;\n}\n\nfunction doWrite(stream, state, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n if (sync)\n process.nextTick(function() {\n cb(er);\n });\n else\n cb(er);\n\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er)\n onwriteError(stream, state, sync, er, cb);\n else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(stream, state);\n\n if (!finished && !state.bufferProcessing && state.buffer.length)\n clearBuffer(stream, state);\n\n if (sync) {\n process.nextTick(function() {\n afterWrite(stream, state, finished, cb);\n });\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished)\n onwriteDrain(stream, state);\n cb();\n if (finished)\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n\n for (var c = 0; c < state.buffer.length; c++) {\n var entry = state.buffer[c];\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, len, chunk, encoding, cb);\n\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n c++;\n break;\n }\n }\n\n state.bufferProcessing = false;\n if (c < state.buffer.length)\n state.buffer = state.buffer.slice(c);\n else\n state.buffer.length = 0;\n}\n\nWritable.prototype._write = function(chunk, encoding, cb) {\n cb(new Error('not implemented'));\n};\n\nWritable.prototype.end = function(chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (typeof chunk !== 'undefined' && chunk !== null)\n this.write(chunk, encoding);\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished)\n endWritable(this, state, cb);\n};\n\n\nfunction needFinish(stream, state) {\n return (state.ending &&\n state.length === 0 &&\n !state.finished &&\n !state.writing);\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(stream, state);\n if (need) {\n state.finished = true;\n stream.emit('finish');\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished)\n process.nextTick(cb);\n else\n stream.once('finish', cb);\n }\n state.ended = true;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\nmodule.exports = Duplex;\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n/**/\n\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\nforEach(objectKeys(Writable.prototype), function(method) {\n if (!Duplex.prototype[method])\n Duplex.prototype[method] = Writable.prototype[method];\n});\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex))\n return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false)\n this.readable = false;\n\n if (options && options.writable === false)\n this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false)\n this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended)\n return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(this.end.bind(this));\n}\n\nfunction forEach (xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\n\nfunction TransformState(options, stream) {\n this.afterTransform = function(er, data) {\n return afterTransform(stream, er, data);\n };\n\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n}\n\nfunction afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb)\n return stream.emit('error', new Error('no writecb in Transform class'));\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data !== null && data !== undefined)\n stream.push(data);\n\n if (cb)\n cb(er);\n\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n}\n\n\nfunction Transform(options) {\n if (!(this instanceof Transform))\n return new Transform(options);\n\n Duplex.call(this, options);\n\n var ts = this._transformState = new TransformState(options, this);\n\n // when the writable side finishes, then flush out anything remaining.\n var stream = this;\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n this.once('finish', function() {\n if ('function' === typeof this._flush)\n this._flush(function(er) {\n done(stream, er);\n });\n else\n done(stream);\n });\n}\n\nTransform.prototype.push = function(chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function(chunk, encoding, cb) {\n throw new Error('not implemented');\n};\n\nTransform.prototype._write = function(chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform ||\n rs.needReadable ||\n rs.length < rs.highWaterMark)\n this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function(n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\n\nfunction done(stream, er) {\n if (er)\n return stream.emit('error', er);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n var ws = stream._writableState;\n var rs = stream._readableState;\n var ts = stream._transformState;\n\n if (ws.length)\n throw new Error('calling transform done when ws.length != 0');\n\n if (ts.transforming)\n throw new Error('calling transform done when still transforming');\n\n return stream.push(null);\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough))\n return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function(chunk, encoding, cb) {\n cb(null, chunk);\n};\n","module.exports = require(\"./lib/_stream_writable.js\")\n","module.exports = require(\"./lib/_stream_duplex.js\")\n","module.exports = require(\"./lib/_stream_transform.js\")\n","module.exports = require(\"./lib/_stream_passthrough.js\")\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","module.exports = require('./browser/algorithms.json')\n","{\n \"sha224WithRSAEncryption\": {\n \"sign\": \"rsa\",\n \"hash\": \"sha224\",\n \"id\": \"302d300d06096086480165030402040500041c\"\n },\n \"RSA-SHA224\": {\n \"sign\": \"ecdsa/rsa\",\n \"hash\": \"sha224\",\n \"id\": \"302d300d06096086480165030402040500041c\"\n },\n \"sha256WithRSAEncryption\": {\n \"sign\": \"rsa\",\n \"hash\": \"sha256\",\n \"id\": \"3031300d060960864801650304020105000420\"\n },\n \"RSA-SHA256\": {\n \"sign\": \"ecdsa/rsa\",\n \"hash\": \"sha256\",\n \"id\": \"3031300d060960864801650304020105000420\"\n },\n \"sha384WithRSAEncryption\": {\n \"sign\": \"rsa\",\n \"hash\": \"sha384\",\n \"id\": \"3041300d060960864801650304020205000430\"\n },\n \"RSA-SHA384\": {\n \"sign\": \"ecdsa/rsa\",\n \"hash\": \"sha384\",\n \"id\": \"3041300d060960864801650304020205000430\"\n },\n \"sha512WithRSAEncryption\": {\n \"sign\": \"rsa\",\n \"hash\": \"sha512\",\n \"id\": \"3051300d060960864801650304020305000440\"\n },\n \"RSA-SHA512\": {\n \"sign\": \"ecdsa/rsa\",\n \"hash\": \"sha512\",\n \"id\": \"3051300d060960864801650304020305000440\"\n },\n \"RSA-SHA1\": {\n \"sign\": \"rsa\",\n \"hash\": \"sha1\",\n \"id\": \"3021300906052b0e03021a05000414\"\n },\n \"ecdsa-with-SHA1\": {\n \"sign\": \"ecdsa\",\n \"hash\": \"sha1\",\n \"id\": \"\"\n },\n \"sha256\": {\n \"sign\": \"ecdsa\",\n \"hash\": \"sha256\",\n \"id\": \"\"\n },\n \"sha224\": {\n \"sign\": \"ecdsa\",\n \"hash\": \"sha224\",\n \"id\": \"\"\n },\n \"sha384\": {\n \"sign\": \"ecdsa\",\n \"hash\": \"sha384\",\n \"id\": \"\"\n },\n \"sha512\": {\n \"sign\": \"ecdsa\",\n \"hash\": \"sha512\",\n \"id\": \"\"\n },\n \"DSA-SHA\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha1\",\n \"id\": \"\"\n },\n \"DSA-SHA1\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha1\",\n \"id\": \"\"\n },\n \"DSA\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha1\",\n \"id\": \"\"\n },\n \"DSA-WITH-SHA224\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha224\",\n \"id\": \"\"\n },\n \"DSA-SHA224\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha224\",\n \"id\": \"\"\n },\n \"DSA-WITH-SHA256\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha256\",\n \"id\": \"\"\n },\n \"DSA-SHA256\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha256\",\n \"id\": \"\"\n },\n \"DSA-WITH-SHA384\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha384\",\n \"id\": \"\"\n },\n \"DSA-SHA384\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha384\",\n \"id\": \"\"\n },\n \"DSA-WITH-SHA512\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha512\",\n \"id\": \"\"\n },\n \"DSA-SHA512\": {\n \"sign\": \"dsa\",\n \"hash\": \"sha512\",\n \"id\": \"\"\n },\n \"DSA-RIPEMD160\": {\n \"sign\": \"dsa\",\n \"hash\": \"rmd160\",\n \"id\": \"\"\n },\n \"ripemd160WithRSA\": {\n \"sign\": \"rsa\",\n \"hash\": \"rmd160\",\n \"id\": \"3021300906052b2403020105000414\"\n },\n \"RSA-RIPEMD160\": {\n \"sign\": \"rsa\",\n \"hash\": \"rmd160\",\n \"id\": \"3021300906052b2403020105000414\"\n },\n \"md5WithRSAEncryption\": {\n \"sign\": \"rsa\",\n \"hash\": \"md5\",\n \"id\": \"3020300c06082a864886f70d020505000410\"\n },\n \"RSA-MD5\": {\n \"sign\": \"rsa\",\n \"hash\": \"md5\",\n \"id\": \"3020300c06082a864886f70d020505000410\"\n }\n}\n","var createHmac = require('create-hmac')\nvar checkParameters = require('./precondition')\n\nexports.pbkdf2 = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n checkParameters(iterations, keylen)\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n setTimeout(function () {\n callback(null, exports.pbkdf2Sync(password, salt, iterations, keylen, digest))\n })\n}\n\nvar defaultEncoding\nif (process.browser) {\n defaultEncoding = 'utf-8'\n} else {\n var pVersionMajor = parseInt(\"v10.16.0\".split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n}\n\nexports.pbkdf2Sync = function (password, salt, iterations, keylen, digest) {\n if (!Buffer.isBuffer(password)) password = new Buffer(password, defaultEncoding)\n if (!Buffer.isBuffer(salt)) salt = new Buffer(salt, defaultEncoding)\n\n checkParameters(iterations, keylen)\n\n digest = digest || 'sha1'\n\n var hLen\n var l = 1\n var DK = new Buffer(keylen)\n var block1 = new Buffer(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var r\n var T\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n var U = createHmac(digest, password).update(block1).digest()\n\n if (!hLen) {\n hLen = U.length\n T = new Buffer(hLen)\n l = Math.ceil(keylen / hLen)\n r = keylen - (l - 1) * hLen\n }\n\n U.copy(T, 0, 0, hLen)\n\n for (var j = 1; j < iterations; j++) {\n U = createHmac(digest, password).update(U).digest()\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n var destPos = (i - 1) * hLen\n var len = (i === l ? r : hLen)\n T.copy(DK, destPos, 0, len)\n }\n\n return DK\n}\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar des = require('../des');\nvar utils = des.utils;\nvar Cipher = des.Cipher;\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar des = require('../des');\nvar Cipher = des.Cipher;\nvar DES = des.DES;\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","{\n \"aes-128-ecb\": {\n \"cipher\": \"AES\",\n \"key\": 128,\n \"iv\": 0,\n \"mode\": \"ECB\",\n \"type\": \"block\"\n },\n \"aes-192-ecb\": {\n \"cipher\": \"AES\",\n \"key\": 192,\n \"iv\": 0,\n \"mode\": \"ECB\",\n \"type\": \"block\"\n },\n \"aes-256-ecb\": {\n \"cipher\": \"AES\",\n \"key\": 256,\n \"iv\": 0,\n \"mode\": \"ECB\",\n \"type\": \"block\"\n },\n \"aes-128-cbc\": {\n \"cipher\": \"AES\",\n \"key\": 128,\n \"iv\": 16,\n \"mode\": \"CBC\",\n \"type\": \"block\"\n },\n \"aes-192-cbc\": {\n \"cipher\": \"AES\",\n \"key\": 192,\n \"iv\": 16,\n \"mode\": \"CBC\",\n \"type\": \"block\"\n },\n \"aes-256-cbc\": {\n \"cipher\": \"AES\",\n \"key\": 256,\n \"iv\": 16,\n \"mode\": \"CBC\",\n \"type\": \"block\"\n },\n \"aes128\": {\n \"cipher\": \"AES\",\n \"key\": 128,\n \"iv\": 16,\n \"mode\": \"CBC\",\n \"type\": \"block\"\n },\n \"aes192\": {\n \"cipher\": \"AES\",\n \"key\": 192,\n \"iv\": 16,\n \"mode\": \"CBC\",\n \"type\": \"block\"\n },\n \"aes256\": {\n \"cipher\": \"AES\",\n \"key\": 256,\n \"iv\": 16,\n \"mode\": \"CBC\",\n \"type\": \"block\"\n },\n \"aes-128-cfb\": {\n \"cipher\": \"AES\",\n \"key\": 128,\n \"iv\": 16,\n \"mode\": \"CFB\",\n \"type\": \"stream\"\n },\n \"aes-192-cfb\": {\n \"cipher\": \"AES\",\n \"key\": 192,\n \"iv\": 16,\n \"mode\": \"CFB\",\n \"type\": \"stream\"\n },\n \"aes-256-cfb\": {\n \"cipher\": \"AES\",\n \"key\": 256,\n \"iv\": 16,\n \"mode\": \"CFB\",\n \"type\": \"stream\"\n },\n \"aes-128-cfb8\": {\n \"cipher\": \"AES\",\n \"key\": 128,\n \"iv\": 16,\n \"mode\": \"CFB8\",\n \"type\": \"stream\"\n },\n \"aes-192-cfb8\": {\n \"cipher\": \"AES\",\n \"key\": 192,\n \"iv\": 16,\n \"mode\": \"CFB8\",\n \"type\": \"stream\"\n },\n \"aes-256-cfb8\": {\n \"cipher\": \"AES\",\n \"key\": 256,\n \"iv\": 16,\n \"mode\": \"CFB8\",\n \"type\": \"stream\"\n },\n \"aes-128-cfb1\": {\n \"cipher\": \"AES\",\n \"key\": 128,\n \"iv\": 16,\n \"mode\": \"CFB1\",\n \"type\": \"stream\"\n },\n \"aes-192-cfb1\": {\n \"cipher\": \"AES\",\n \"key\": 192,\n \"iv\": 16,\n \"mode\": \"CFB1\",\n \"type\": \"stream\"\n },\n \"aes-256-cfb1\": {\n \"cipher\": \"AES\",\n \"key\": 256,\n \"iv\": 16,\n \"mode\": \"CFB1\",\n \"type\": \"stream\"\n },\n \"aes-128-ofb\": {\n \"cipher\": \"AES\",\n \"key\": 128,\n \"iv\": 16,\n \"mode\": \"OFB\",\n \"type\": \"stream\"\n },\n \"aes-192-ofb\": {\n \"cipher\": \"AES\",\n \"key\": 192,\n \"iv\": 16,\n \"mode\": \"OFB\",\n \"type\": \"stream\"\n },\n \"aes-256-ofb\": {\n \"cipher\": \"AES\",\n \"key\": 256,\n \"iv\": 16,\n \"mode\": \"OFB\",\n \"type\": \"stream\"\n },\n \"aes-128-ctr\": {\n \"cipher\": \"AES\",\n \"key\": 128,\n \"iv\": 16,\n \"mode\": \"CTR\",\n \"type\": \"stream\"\n },\n \"aes-192-ctr\": {\n \"cipher\": \"AES\",\n \"key\": 192,\n \"iv\": 16,\n \"mode\": \"CTR\",\n \"type\": \"stream\"\n },\n \"aes-256-ctr\": {\n \"cipher\": \"AES\",\n \"key\": 256,\n \"iv\": 16,\n \"mode\": \"CTR\",\n \"type\": \"stream\"\n },\n \"aes-128-gcm\": {\n \"cipher\": \"AES\",\n \"key\": 128,\n \"iv\": 12,\n \"mode\": \"GCM\",\n \"type\": \"auth\"\n },\n \"aes-192-gcm\": {\n \"cipher\": \"AES\",\n \"key\": 192,\n \"iv\": 12,\n \"mode\": \"GCM\",\n \"type\": \"auth\"\n },\n \"aes-256-gcm\": {\n \"cipher\": \"AES\",\n \"key\": 256,\n \"iv\": 12,\n \"mode\": \"GCM\",\n \"type\": \"auth\"\n }\n}\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","'use strict'\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > 65536) throw new Error('requested too many random bytes')\n // in case browserify isn't using the Uint8Array version\n var rawBytes = new global.Uint8Array(size)\n\n // This will not work in older browsers.\n // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n if (size > 0) { // getRandomValues fails on IE if size == 0\n crypto.getRandomValues(rawBytes)\n }\n\n // XXX: phantomjs doesn't like a buffer being passed here\n var bytes = Buffer.from(rawBytes.buffer)\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","{\n \"modp1\": {\n \"gen\": \"02\",\n \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff\"\n },\n \"modp2\": {\n \"gen\": \"02\",\n \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff\"\n },\n \"modp5\": {\n \"gen\": \"02\",\n \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff\"\n },\n \"modp14\": {\n \"gen\": \"02\",\n \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff\"\n },\n \"modp15\": {\n \"gen\": \"02\",\n \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff\"\n },\n \"modp16\": {\n \"gen\": \"02\",\n \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff\"\n },\n \"modp17\": {\n \"gen\": \"02\",\n \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff\"\n },\n \"modp18\": {\n \"gen\": \"02\",\n \"prime\": \"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff\"\n }\n}","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","var createHash = require('create-hash')\nvar stream = require('stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = new Buffer(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = new Buffer(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = new Buffer(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = new Buffer(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [ 0, 1 ]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return new Buffer(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [ 0 ].concat(r)\n if (s[0] & 0x80) s = [ 0 ].concat(s)\n\n var total = r.length + s.length + 4\n var res = [ 0x30, total, 0x02, r.length ]\n res = res.concat(r, [ 0x02, s.length ], s)\n return new Buffer(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = new Buffer(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = new Buffer(q.byteLength() - x.length)\n zeros.fill(0)\n x = Buffer.concat([ zeros, x ])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = new Buffer(hlen)\n v.fill(1)\n var k = new Buffer(hlen)\n k.fill(0)\n k = createHmac(algo, k).update(v).update(new Buffer([ 0 ])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(new Buffer([ 1 ])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = new Buffer(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = new Buffer(q.byteLength() - out.length)\n zeros.fill(0)\n out = Buffer.concat([ zeros, out ])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = new Buffer(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([ t, kv.v ])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(new Buffer([ 0 ])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n","var bn = require('bn.js');\nvar randomBytes = require('randombytes');\nmodule.exports = crt;\nfunction blind(priv) {\n var r = getr(priv);\n var blinder = r.toRed(bn.mont(priv.modulus))\n .redPow(new bn(priv.publicExponent)).fromRed();\n return {\n blinder: blinder,\n unblinder:r.invm(priv.modulus)\n };\n}\nfunction crt(msg, priv) {\n var blinds = blind(priv);\n var len = priv.modulus.byteLength();\n var mod = bn.mont(priv.modulus);\n var blinded = new bn(msg).mul(blinds.blinder).umod(priv.modulus);\n var c1 = blinded.toRed(bn.mont(priv.prime1));\n var c2 = blinded.toRed(bn.mont(priv.prime2));\n var qinv = priv.coefficient;\n var p = priv.prime1;\n var q = priv.prime2;\n var m1 = c1.redPow(priv.exponent1);\n var m2 = c2.redPow(priv.exponent2);\n m1 = m1.fromRed();\n m2 = m2.fromRed();\n var h = m1.isub(m2).imul(qinv).umod(p);\n h.imul(q);\n m2.iadd(h);\n return new Buffer(m2.imul(blinds.unblinder).umod(priv.modulus).toArray(false, len));\n}\ncrt.getr = getr;\nfunction getr(priv) {\n var len = priv.modulus.byteLength();\n var r = new bn(randomBytes(len));\n while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)) {\n r = new bn(randomBytes(len));\n }\n return r;\n}\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","{\n \"_args\": [\n [\n \"elliptic@6.4.1\",\n \"/Users/wushuaipeng/Documents/spwuc/polkdot\"\n ]\n ],\n \"_from\": \"elliptic@6.4.1\",\n \"_id\": \"elliptic@6.4.1\",\n \"_inBundle\": false,\n \"_integrity\": \"sha1-wtC3d2kRuGcixjLDwGxg8vgZk5o=\",\n \"_location\": \"/elliptic\",\n \"_phantomChildren\": {},\n \"_requested\": {\n \"type\": \"version\",\n \"registry\": true,\n \"raw\": \"elliptic@6.4.1\",\n \"name\": \"elliptic\",\n \"escapedName\": \"elliptic\",\n \"rawSpec\": \"6.4.1\",\n \"saveSpec\": null,\n \"fetchSpec\": \"6.4.1\"\n },\n \"_requiredBy\": [\n \"/browserify-sign\",\n \"/create-ecdh\",\n \"/secp256k1\"\n ],\n \"_resolved\": \"http://registry.npm.taobao.org/elliptic/download/elliptic-6.4.1.tgz\",\n \"_spec\": \"6.4.1\",\n \"_where\": \"/Users/wushuaipeng/Documents/spwuc/polkdot\",\n \"author\": {\n \"name\": \"Fedor Indutny\",\n \"email\": \"fedor@indutny.com\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/indutny/elliptic/issues\"\n },\n \"dependencies\": {\n \"bn.js\": \"^4.4.0\",\n \"brorand\": \"^1.0.1\",\n \"hash.js\": \"^1.0.0\",\n \"hmac-drbg\": \"^1.0.0\",\n \"inherits\": \"^2.0.1\",\n \"minimalistic-assert\": \"^1.0.0\",\n \"minimalistic-crypto-utils\": \"^1.0.0\"\n },\n \"description\": \"EC cryptography\",\n \"devDependencies\": {\n \"brfs\": \"^1.4.3\",\n \"coveralls\": \"^2.11.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-browserify\": \"^5.0.0\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-contrib-connect\": \"^1.0.0\",\n \"grunt-contrib-copy\": \"^1.0.0\",\n \"grunt-contrib-uglify\": \"^1.0.1\",\n \"grunt-mocha-istanbul\": \"^3.0.1\",\n \"grunt-saucelabs\": \"^8.6.2\",\n \"istanbul\": \"^0.4.2\",\n \"jscs\": \"^2.9.0\",\n \"jshint\": \"^2.6.0\",\n \"mocha\": \"^2.1.0\"\n },\n \"files\": [\n \"lib\"\n ],\n \"homepage\": \"https://github.com/indutny/elliptic\",\n \"keywords\": [\n \"EC\",\n \"Elliptic\",\n \"curve\",\n \"Cryptography\"\n ],\n \"license\": \"MIT\",\n \"main\": \"lib/elliptic.js\",\n \"name\": \"elliptic\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+ssh://git@github.com/indutny/elliptic.git\"\n },\n \"scripts\": {\n \"jscs\": \"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js\",\n \"jshint\": \"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js\",\n \"lint\": \"npm run jscs && npm run jshint\",\n \"test\": \"npm run lint && npm run unit\",\n \"unit\": \"istanbul test _mocha --reporter=spec test/index.js\",\n \"version\": \"grunt dist && git add dist/\"\n },\n \"version\": \"6.4.1\",\n \"react-native\": {\n \"zlib\": \"browserify-zlib\",\n \"console\": \"console-browserify\",\n \"constants\": \"constants-browserify\",\n \"crypto\": \"react-native-crypto\",\n \"dns\": \"dns.js\",\n \"net\": \"react-native-tcp\",\n \"domain\": \"domain-browser\",\n \"http\": \"@tradle/react-native-http\",\n \"https\": \"https-browserify\",\n \"os\": \"react-native-os\",\n \"path\": \"path-browserify\",\n \"querystring\": \"querystring-es3\",\n \"fs\": \"react-native-level-fs\",\n \"_stream_transform\": \"readable-stream/transform\",\n \"_stream_readable\": \"readable-stream/readable\",\n \"_stream_writable\": \"readable-stream/writable\",\n \"_stream_duplex\": \"readable-stream/duplex\",\n \"_stream_passthrough\": \"readable-stream/passthrough\",\n \"dgram\": \"react-native-udp\",\n \"stream\": \"stream-browserify\",\n \"timers\": \"timers-browserify\",\n \"tty\": \"tty-browserify\",\n \"vm\": \"vm-browserify\",\n \"tls\": false\n },\n \"browser\": {\n \"zlib\": \"browserify-zlib\",\n \"console\": \"console-browserify\",\n \"constants\": \"constants-browserify\",\n \"crypto\": \"react-native-crypto\",\n \"dns\": \"dns.js\",\n \"net\": \"react-native-tcp\",\n \"domain\": \"domain-browser\",\n \"http\": \"@tradle/react-native-http\",\n \"https\": \"https-browserify\",\n \"os\": \"react-native-os\",\n \"path\": \"path-browserify\",\n \"querystring\": \"querystring-es3\",\n \"fs\": \"react-native-level-fs\",\n \"_stream_transform\": \"readable-stream/transform\",\n \"_stream_readable\": \"readable-stream/readable\",\n \"_stream_writable\": \"readable-stream/writable\",\n \"_stream_duplex\": \"readable-stream/duplex\",\n \"_stream_passthrough\": \"readable-stream/passthrough\",\n \"dgram\": \"react-native-udp\",\n \"stream\": \"stream-browserify\",\n \"timers\": \"timers-browserify\",\n \"tty\": \"tty-browserify\",\n \"vm\": \"vm-browserify\",\n \"tls\": false\n }\n}","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w) {\n var naf = [];\n var ws = 1 << (w + 1);\n var k = num.clone();\n while (k.cmpn(1) >= 0) {\n var z;\n if (k.isOdd()) {\n var mod = k.andln(ws - 1);\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n naf.push(z);\n\n // Optimization, shift by word if possible\n var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;\n for (var i = 1; i < shift; i++)\n naf.push(0);\n k.iushrn(shift);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n []\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n var m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n var m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar BN = require('bn.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n for (var j = 0; j < naf.length; j += doubles.step) {\n var nafW = 0;\n for (var k = j + doubles.step - 1; k >= j; k--)\n nafW = (nafW << 1) + naf[k];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (var j = 0; j < repr.length; j++) {\n var nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var k = 0; i >= 0 && naf[i] === 0; i--)\n k++;\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n for (var i = 0; i < len; i++) {\n var p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (var i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a]);\n naf[b] = getNAF(coeffs[b], wndWidth[b]);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b] /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3 /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (var j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (var i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (var j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (var j = 0; j < len; j++) {\n var z = tmp[j];\n var p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (var i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar curve = require('../curve');\nvar elliptic = require('../../elliptic');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = curve.base;\n\nvar assert = elliptic.utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16)\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 }\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n};\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul)\n }\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1)\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1)\n }\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point))\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point))\n }\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate)\n }\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (var i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (var i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curve = require('../curve');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = curve.base;\n\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar curve = require('../curve');\nvar elliptic = require('../../elliptic');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = curve.base;\n\nvar assert = elliptic.utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n if (this.curve.twisted) {\n // E = a * C\n var e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n var h = this.z.redSqr();\n // J = F - 2 * H\n var j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n var e = c.redAdd(d);\n // H = (c * Z1)^2\n var h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n var j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar elliptic = require('../elliptic');\n\nvar assert = elliptic.utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new elliptic.curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new elliptic.curve.edwards(options);\n else\n this.curve = new elliptic.curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve\n });\n return curve;\n }\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'\n ]\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'\n ]\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'\n ]\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'\n ]\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650'\n ]\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9'\n ]\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658'\n ]\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3'\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15'\n }\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre\n ]\n});\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'\n ]\n ]\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'\n ]\n ]\n }\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);\n\n options = elliptic.curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof elliptic.curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray()\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n do {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n } while (true);\n};\n\nEC.prototype._truncateToN = function truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8'\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; true; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n\n if (!this.curve._maxwellTrick) {\n var p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n var p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n }\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0 && (r[1] & 0x80)) {\n r = r.slice(1);\n }\n if (s[0] === 0 && (s[1] & 0x80)) {\n s = s.slice(1);\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n var curve = elliptic.curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength)\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n","var asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","var asn1 = require('../asn1');\nvar inherits = require('inherits');\n\nvar api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n};\n\nEntity.prototype._createNamed = function createNamed(base) {\n var named;\n try {\n named = require('vm').runInThisContext(\n '(function ' + this.name + '(entity) {\\n' +\n ' this._initNamed(entity);\\n' +\n '})'\n );\n } catch (e) {\n named = function (entity) {\n this._initNamed(entity);\n };\n }\n inherits(named, base);\n named.prototype._initNamed = function initnamed(entity) {\n base.call(this, entity);\n };\n\n return new named(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(asn1.decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(asn1.encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","var indexOf = require('indexof');\n\nvar Object_keys = function (obj) {\n if (Object.keys) return Object.keys(obj)\n else {\n var res = [];\n for (var key in obj) res.push(key)\n return res;\n }\n};\n\nvar forEach = function (xs, fn) {\n if (xs.forEach) return xs.forEach(fn)\n else for (var i = 0; i < xs.length; i++) {\n fn(xs[i], i, xs);\n }\n};\n\nvar defineProp = (function() {\n try {\n Object.defineProperty({}, '_', {});\n return function(obj, name, value) {\n Object.defineProperty(obj, name, {\n writable: true,\n enumerable: false,\n configurable: true,\n value: value\n })\n };\n } catch(e) {\n return function(obj, name, value) {\n obj[name] = value;\n };\n }\n}());\n\nvar globals = ['Array', 'Boolean', 'Date', 'Error', 'EvalError', 'Function',\n'Infinity', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'RangeError',\n'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError',\n'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape',\n'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape'];\n\nfunction Context() {}\nContext.prototype = {};\n\nvar Script = exports.Script = function NodeScript (code) {\n if (!(this instanceof Script)) return new Script(code);\n this.code = code;\n};\n\nScript.prototype.runInContext = function (context) {\n if (!(context instanceof Context)) {\n throw new TypeError(\"needs a 'context' argument.\");\n }\n \n var iframe = document.createElement('iframe');\n if (!iframe.style) iframe.style = {};\n iframe.style.display = 'none';\n \n document.body.appendChild(iframe);\n \n var win = iframe.contentWindow;\n var wEval = win.eval, wExecScript = win.execScript;\n\n if (!wEval && wExecScript) {\n // win.eval() magically appears when this is called in IE:\n wExecScript.call(win, 'null');\n wEval = win.eval;\n }\n \n forEach(Object_keys(context), function (key) {\n win[key] = context[key];\n });\n forEach(globals, function (key) {\n if (context[key]) {\n win[key] = context[key];\n }\n });\n \n var winKeys = Object_keys(win);\n\n var res = wEval.call(win, this.code);\n \n forEach(Object_keys(win), function (key) {\n // Avoid copying circular objects like `top` and `window` by only\n // updating existing context properties or new properties in the `win`\n // that was only introduced after the eval.\n if (key in context || indexOf(winKeys, key) === -1) {\n context[key] = win[key];\n }\n });\n\n forEach(globals, function (key) {\n if (!(key in context)) {\n defineProp(context, key, win[key]);\n }\n });\n \n document.body.removeChild(iframe);\n \n return res;\n};\n\nScript.prototype.runInThisContext = function () {\n return eval(this.code); // maybe...\n};\n\nScript.prototype.runInNewContext = function (context) {\n var ctx = Script.createContext(context);\n var res = this.runInContext(ctx);\n\n forEach(Object_keys(ctx), function (key) {\n context[key] = ctx[key];\n });\n\n return res;\n};\n\nforEach(Object_keys(Script.prototype), function (name) {\n exports[name] = Script[name] = function (code) {\n var s = Script(code);\n return s[name].apply(s, [].slice.call(arguments, 1));\n };\n});\n\nexports.createScript = function (code) {\n return exports.Script(code);\n};\n\nexports.createContext = Script.createContext = function (context) {\n var copy = new Context();\n if(typeof context === 'object') {\n forEach(Object_keys(context), function (key) {\n copy[key] = context[key];\n });\n }\n return copy;\n};\n","\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n if (indexOf) return arr.indexOf(obj);\n for (var i = 0; i < arr.length; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1;\n};","var base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","var inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n var state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n var state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n var state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n var state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n var state = this._reporterState;\n\n var prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n var state = this._reporterState;\n\n var now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n var err;\n var state = this._reporterState;\n\n var inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n var state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n};\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","var inherits = require('inherits');\nvar Reporter = require('../base').Reporter;\nvar Buffer = require('buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n var res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n}\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n var res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n}\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n}\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!(item instanceof EncoderBuffer))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = new Buffer(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","var Reporter = require('../base').Reporter;\nvar EncoderBuffer = require('../base').EncoderBuffer;\nvar DecoderBuffer = require('../base').DecoderBuffer;\nvar assert = require('minimalistic-assert');\n\n// Supported tags\nvar tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nvar methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nvar overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent) {\n var state = {};\n this._baseState = state;\n\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nvar stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n var state = this._baseState;\n var cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n var res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n var state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n var clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n var state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n var state = this._baseState;\n\n // Filter children and args\n var children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n var res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n var value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n var state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n var state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n var state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n var state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n var state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n var state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n var state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n var state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n var state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n var state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n var state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n var result = state['default'];\n var present = true;\n\n var prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n var tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n var save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n var prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n var explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n var start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n if (state.any)\n var save = input.save();\n var body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any)\n result = result;\n else if (state.choice === null)\n result = this._decodeGeneric(state.tag, input, options);\n else\n result = this._decodeChoice(input, options);\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n var data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n var state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n var state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n var state = this._baseState;\n var result = null;\n var match = false;\n\n Object.keys(state.choice).some(function(key) {\n var save = input.save();\n var node = state.choice[key];\n try {\n var value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n var state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n var result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n var state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n var result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default']\n else\n return;\n }\n\n // Encode children first\n var content = null;\n var primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n var prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n var res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n var child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n var state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n var result;\n if (!state.any && state.choice === null) {\n var tag = state.implicit !== null ? state.implicit : state.tag;\n var cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n var state = this._baseState;\n\n var node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n var state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(str);\n};\n","var constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n var res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n var value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","var constants = require('../constants');\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = constants._reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = constants._reverse(exports.tag);\n","var decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","var inherits = require('inherits');\n\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\nvar bignum = asn1.bignum;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n};\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!(data instanceof base.DecoderBuffer))\n data = new base.DecoderBuffer(data, options);\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n var state = buffer.save();\n var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n var decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n var len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n var state = buffer.save();\n var res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n while (true) {\n var tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n var len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n var res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len)\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n var result = [];\n while (!buffer.isEmpty()) {\n var possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n var res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n var unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n var raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n var str = '';\n for (var i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n var numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n var printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n var result;\n var identifiers = [];\n var ident = 0;\n while (!buffer.isEmpty()) {\n var subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n var first = (identifiers[0] / 40) | 0;\n var second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n var tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n var str = buffer.raw().toString();\n if (tag === 'gentime') {\n var year = str.slice(0, 4) | 0;\n var mon = str.slice(4, 6) | 0;\n var day = str.slice(6, 8) | 0;\n var hour = str.slice(8, 10) | 0;\n var min = str.slice(10, 12) | 0;\n var sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n var year = str.slice(0, 2) | 0;\n var mon = str.slice(2, 4) | 0;\n var day = str.slice(4, 6) | 0;\n var hour = str.slice(6, 8) | 0;\n var min = str.slice(8, 10) | 0;\n var sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull(buffer) {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n var res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n var raw = buffer.raw();\n var res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n var tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n var cls = der.tagClass[tag >> 6];\n var primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n var oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n var tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n var len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n var num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (var i = 0; i < num; i++) {\n len <<= 8;\n var j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\n\nvar DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n};\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n var lines = data.toString().split(/[\\r\\n]+/g);\n\n var label = options.label.toUpperCase();\n\n var re = /^-----(BEGIN|END) ([^-]+)-----$/;\n var start = -1;\n var end = -1;\n for (var i = 0; i < lines.length; i++) {\n var match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n var base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9\\+\\/=]+/gi, '');\n\n var input = new Buffer(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","var encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\n\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\n\n// Import DER constants\nvar der = asn1.constants.der;\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n};\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n var encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n var header = new Buffer(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n var lenOctets = 1;\n for (var i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n var header = new Buffer(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n var buf = new Buffer(str.length * 2);\n for (var i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s\\.]+/g);\n for (var i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (var i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n var size = 0;\n for (var i = 0; i < id.length; i++) {\n var ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n var objid = new Buffer(size);\n var offset = objid.length - 1;\n for (var i = id.length - 1; i >= 0; i--) {\n var ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n var str;\n var date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n var numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = new Buffer(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n var size = num.length;\n if (num.length === 0)\n size++;\n\n var out = new Buffer(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n var size = 1;\n for (var i = num; i >= 0x100; i >>= 8)\n size++;\n\n var out = new Array(size);\n for (var i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(new Buffer(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n var state = this._baseState;\n var i;\n if (state['default'] === null)\n return false;\n\n var data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n var res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","var inherits = require('inherits');\n\nvar DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n};\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n var buf = DEREncoder.prototype.encode.call(this, data);\n\n var p = buf.toString('base64');\n var out = [ '-----BEGIN ' + options.label + '-----' ];\n for (var i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n","{\"2.16.840.1.101.3.4.1.1\": \"aes-128-ecb\",\n\"2.16.840.1.101.3.4.1.2\": \"aes-128-cbc\",\n\"2.16.840.1.101.3.4.1.3\": \"aes-128-ofb\",\n\"2.16.840.1.101.3.4.1.4\": \"aes-128-cfb\",\n\"2.16.840.1.101.3.4.1.21\": \"aes-192-ecb\",\n\"2.16.840.1.101.3.4.1.22\": \"aes-192-cbc\",\n\"2.16.840.1.101.3.4.1.23\": \"aes-192-ofb\",\n\"2.16.840.1.101.3.4.1.24\": \"aes-192-cfb\",\n\"2.16.840.1.101.3.4.1.41\": \"aes-256-ecb\",\n\"2.16.840.1.101.3.4.1.42\": \"aes-256-cbc\",\n\"2.16.840.1.101.3.4.1.43\": \"aes-256-ofb\",\n\"2.16.840.1.101.3.4.1.44\": \"aes-256-cfb\"\n}","// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r\\+\\/\\=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.* KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.* KEY)|CERTIFICATE)-----([0-9A-z\\n\\r\\+\\/\\=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = new Buffer(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = new Buffer(match[2], 'hex')\n var cipherText = new Buffer(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","var checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n 'sha': 'SHA-1',\n 'sha-1': 'SHA-1',\n 'sha1': 'SHA-1',\n 'sha256': 'SHA-256',\n 'sha-256': 'SHA-256',\n 'sha384': 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n 'sha512': 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\n\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, {name: 'PBKDF2'}, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n process.nextTick(function () {\n callback(null, out)\n })\n }, function (e) {\n process.nextTick(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n return process.nextTick(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n }\n\n checkParameters(password, salt, iterations, keylen)\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nfunction checkBuffer (buf, name) {\n if (typeof buf !== 'string' && !Buffer.isBuffer(buf)) {\n throw new TypeError(name + ' must be a buffer or string')\n }\n}\n\nmodule.exports = function (password, salt, iterations, keylen) {\n checkBuffer(password, 'Password')\n checkBuffer(salt, 'Salt')\n\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (process.browser) {\n defaultEncoding = 'utf-8'\n} else {\n var pVersionMajor = parseInt(\"v10.16.0\".split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n}\nmodule.exports = defaultEncoding\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar Buffer = require('safe-buffer').Buffer\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(password, salt, iterations, keylen)\n\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding)\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding)\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","{\n \"1.3.132.0.10\": \"secp256k1\",\n \"1.3.132.0.33\": \"p224\",\n \"1.2.840.10045.3.1.1\": \"p192\",\n \"1.2.840.10045.3.1.7\": \"p256\",\n \"1.3.132.0.34\": \"p384\",\n \"1.3.132.0.35\": \"p521\"\n}\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [ 1 ]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = new Buffer(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = new Buffer(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n","exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n","// Copyright 2019 @polkadot/wasm-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\nconst { assert } = require('@polkadot/util');\nconst stubbed = require('./wasm');\n\nconst INIT_ERRROR = '@polkadot/wasm-crypto has not been initialized';\n\nconst wrapReady = (fn) =>\n (...params) => {\n assert(stubbed.isReady(), INIT_ERRROR);\n\n return fn(...params);\n };\n\nmodule.exports.bip39Generate = wrapReady(stubbed.ext_bip39_generate);\nmodule.exports.bip39ToEntropy = wrapReady(stubbed.ext_bip39_to_entropy);\nmodule.exports.bip39ToMiniSecret = wrapReady(stubbed.ext_bip39_to_mini_secret);\nmodule.exports.bip39ToSeed = wrapReady(stubbed.ext_bip39_to_seed);\nmodule.exports.bip39Validate = wrapReady(stubbed.ext_bip39_validate);\n\nmodule.exports.ed25519KeypairFromSeed = wrapReady(stubbed.ext_ed_from_seed);\nmodule.exports.ed25519Sign = wrapReady(stubbed.ext_ed_sign);\nmodule.exports.ed25519Verify = wrapReady(stubbed.ext_ed_verify);\n\nmodule.exports.sr25519DeriveKeypairHard = wrapReady(stubbed.ext_sr_derive_keypair_hard);\nmodule.exports.sr25519DeriveKeypairSoft = wrapReady(stubbed.ext_sr_derive_keypair_soft);\nmodule.exports.sr25519DerivePublicSoft = wrapReady(stubbed.ext_sr_derive_public_soft);\nmodule.exports.sr25519KeypairFromSeed = wrapReady(stubbed.ext_sr_from_seed);\nmodule.exports.sr25519Sign = wrapReady(stubbed.ext_sr_sign);\nmodule.exports.sr25519Verify = wrapReady(stubbed.ext_sr_verify);\n\nmodule.exports.blake2b = wrapReady(stubbed.ext_blake2b);\nmodule.exports.keccak256 = wrapReady(stubbed.ext_keccak256);\nmodule.exports.pbkdf2 = wrapReady(stubbed.ext_pbkdf2);\n// module.exports.secp256k1IsRecoverable = wrapReady(stubbed.ext_secp256k1_is_recoverable);\n// module.exports.secp256k1Recover = wrapReady(stubbed.ext_secp256k1_recover);\nmodule.exports.sha512 = wrapReady(stubbed.ext_sha512);\nmodule.exports.twox = wrapReady(stubbed.ext_twox);\n\nmodule.exports.isReady = stubbed.isReady;\nmodule.exports.waitReady = stubbed.waitReady;\n","const crypto = require('crypto'); let wasm; const requires = { crypto };\n\nlet cachegetUint8Memory = null;\nfunction getUint8Memory() {\n if (cachegetUint8Memory === null || cachegetUint8Memory.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nfunction passArray8ToWasm(arg) {\n const ptr = wasm.__wbindgen_malloc(arg.length * 1);\n getUint8Memory().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction getArrayU8FromWasm(ptr, len) {\n return getUint8Memory().subarray(ptr / 1, ptr / 1 + len);\n}\n\nlet cachedGlobalArgumentPtr = null;\nfunction globalArgumentPtr() {\n if (cachedGlobalArgumentPtr === null) {\n cachedGlobalArgumentPtr = wasm.__wbindgen_global_argument_ptr();\n }\n return cachedGlobalArgumentPtr;\n}\n\nlet cachegetUint32Memory = null;\nfunction getUint32Memory() {\n if (cachegetUint32Memory === null || cachegetUint32Memory.buffer !== wasm.memory.buffer) {\n cachegetUint32Memory = new Uint32Array(wasm.memory.buffer);\n }\n return cachegetUint32Memory;\n}\n/**\n* Perform a derivation on a secret\n*\n* * secret: UIntArray with 64 bytes\n* * cc: UIntArray with 32 bytes\n*\n* returned vector the derived keypair as a array of 96 bytes\n* @param {Uint8Array} arg0\n* @param {Uint8Array} arg1\n* @returns {Uint8Array}\n*/\nmodule.exports.ext_sr_derive_keypair_hard = function(arg0, arg1) {\n const ptr0 = passArray8ToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray8ToWasm(arg1);\n const len1 = WASM_VECTOR_LEN;\n const retptr = globalArgumentPtr();\n try {\n wasm.ext_sr_derive_keypair_hard(retptr, ptr0, len0, ptr1, len1);\n const mem = getUint32Memory();\n const rustptr = mem[retptr / 4];\n const rustlen = mem[retptr / 4 + 1];\n\n const realRet = getArrayU8FromWasm(rustptr, rustlen).slice();\n wasm.__wbindgen_free(rustptr, rustlen * 1);\n return realRet;\n\n\n } finally {\n wasm.__wbindgen_free(ptr0, len0 * 1);\n wasm.__wbindgen_free(ptr1, len1 * 1);\n\n }\n\n};\n\n/**\n* Perform a derivation on a secret\n*\n* * secret: UIntArray with 64 bytes\n* * cc: UIntArray with 32 bytes\n*\n* returned vector the derived keypair as a array of 96 bytes\n* @param {Uint8Array} arg0\n* @param {Uint8Array} arg1\n* @returns {Uint8Array}\n*/\nmodule.exports.ext_sr_derive_keypair_soft = function(arg0, arg1) {\n const ptr0 = passArray8ToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray8ToWasm(arg1);\n const len1 = WASM_VECTOR_LEN;\n const retptr = globalArgumentPtr();\n try {\n wasm.ext_sr_derive_keypair_soft(retptr, ptr0, len0, ptr1, len1);\n const mem = getUint32Memory();\n const rustptr = mem[retptr / 4];\n const rustlen = mem[retptr / 4 + 1];\n\n const realRet = getArrayU8FromWasm(rustptr, rustlen).slice();\n wasm.__wbindgen_free(rustptr, rustlen * 1);\n return realRet;\n\n\n } finally {\n wasm.__wbindgen_free(ptr0, len0 * 1);\n wasm.__wbindgen_free(ptr1, len1 * 1);\n\n }\n\n};\n\n/**\n* Perform a derivation on a publicKey\n*\n* * pubkey: UIntArray with 32 bytes\n* * cc: UIntArray with 32 bytes\n*\n* returned vector is the derived publicKey as a array of 32 bytes\n* @param {Uint8Array} arg0\n* @param {Uint8Array} arg1\n* @returns {Uint8Array}\n*/\nmodule.exports.ext_sr_derive_public_soft = function(arg0, arg1) {\n const ptr0 = passArray8ToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray8ToWasm(arg1);\n const len1 = WASM_VECTOR_LEN;\n const retptr = globalArgumentPtr();\n try {\n wasm.ext_sr_derive_public_soft(retptr, ptr0, len0, ptr1, len1);\n const mem = getUint32Memory();\n const rustptr = mem[retptr / 4];\n const rustlen = mem[retptr / 4 + 1];\n\n const realRet = getArrayU8FromWasm(rustptr, rustlen).slice();\n wasm.__wbindgen_free(rustptr, rustlen * 1);\n return realRet;\n\n\n } finally {\n wasm.__wbindgen_free(ptr0, len0 * 1);\n wasm.__wbindgen_free(ptr1, len1 * 1);\n\n }\n\n};\n\n/**\n* Generate a key pair.\n*\n* * seed: UIntArray with 32 element\n*\n* returned vector is the concatenation of first the private key (64 bytes)\n* followed by the public key (32) bytes.\n* @param {Uint8Array} arg0\n* @returns {Uint8Array}\n*/\nmodule.exports.ext_sr_from_seed = function(arg0) {\n const ptr0 = passArray8ToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n const retptr = globalArgumentPtr();\n try {\n wasm.ext_sr_from_seed(retptr, ptr0, len0);\n const mem = getUint32Memory();\n const rustptr = mem[retptr / 4];\n const rustlen = mem[retptr / 4 + 1];\n\n const realRet = getArrayU8FromWasm(rustptr, rustlen).slice();\n wasm.__wbindgen_free(rustptr, rustlen * 1);\n return realRet;\n\n\n } finally {\n wasm.__wbindgen_free(ptr0, len0 * 1);\n\n }\n\n};\n\n/**\n* Sign a message\n*\n* The combination of both public and private key must be provided.\n* This is effectively equivalent to a keypair.\n*\n* * public: UIntArray with 32 element\n* * private: UIntArray with 64 element\n* * message: Arbitrary length UIntArray\n*\n* * returned vector is the signature consisting of 64 bytes.\n* @param {Uint8Array} arg0\n* @param {Uint8Array} arg1\n* @param {Uint8Array} arg2\n* @returns {Uint8Array}\n*/\nmodule.exports.ext_sr_sign = function(arg0, arg1, arg2) {\n const ptr0 = passArray8ToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray8ToWasm(arg1);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray8ToWasm(arg2);\n const len2 = WASM_VECTOR_LEN;\n const retptr = globalArgumentPtr();\n try {\n wasm.ext_sr_sign(retptr, ptr0, len0, ptr1, len1, ptr2, len2);\n const mem = getUint32Memory();\n const rustptr = mem[retptr / 4];\n const rustlen = mem[retptr / 4 + 1];\n\n const realRet = getArrayU8FromWasm(rustptr, rustlen).slice();\n wasm.__wbindgen_free(rustptr, rustlen * 1);\n return realRet;\n\n\n } finally {\n wasm.__wbindgen_free(ptr0, len0 * 1);\n wasm.__wbindgen_free(ptr1, len1 * 1);\n wasm.__wbindgen_free(ptr2, len2 * 1);\n\n }\n\n};\n\n/**\n* Verify a message and its corresponding against a public key;\n*\n* * signature: UIntArray with 64 element\n* * message: Arbitrary length UIntArray\n* * pubkey: UIntArray with 32 element\n* @param {Uint8Array} arg0\n* @param {Uint8Array} arg1\n* @param {Uint8Array} arg2\n* @returns {boolean}\n*/\nmodule.exports.ext_sr_verify = function(arg0, arg1, arg2) {\n const ptr0 = passArray8ToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray8ToWasm(arg1);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray8ToWasm(arg2);\n const len2 = WASM_VECTOR_LEN;\n try {\n return (wasm.ext_sr_verify(ptr0, len0, ptr1, len1, ptr2, len2)) !== 0;\n\n } finally {\n wasm.__wbindgen_free(ptr0, len0 * 1);\n wasm.__wbindgen_free(ptr1, len1 * 1);\n wasm.__wbindgen_free(ptr2, len2 * 1);\n\n }\n\n};\n\n/**\n* blake2b hash for the specified input\n*\n* * data: Arbitrary data to be hashed\n* * key: Key to add to the hashing (normally empty)\n* * size: Size in bytes of the resulting output\n*\n* Returns a vector with the hash result\n* @param {Uint8Array} arg0\n* @param {Uint8Array} arg1\n* @param {number} arg2\n* @returns {Uint8Array}\n*/\nmodule.exports.ext_blake2b = function(arg0, arg1, arg2) {\n const ptr0 = passArray8ToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray8ToWasm(arg1);\n const len1 = WASM_VECTOR_LEN;\n const retptr = globalArgumentPtr();\n try {\n wasm.ext_blake2b(retptr, ptr0, len0, ptr1, len1, arg2);\n const mem = getUint32Memory();\n const rustptr = mem[retptr / 4];\n const rustlen = mem[retptr / 4 + 1];\n\n const realRet = getArrayU8FromWasm(rustptr, rustlen).slice();\n wasm.__wbindgen_free(rustptr, rustlen * 1);\n return realRet;\n\n\n } finally {\n wasm.__wbindgen_free(ptr0, len0 * 1);\n wasm.__wbindgen_free(ptr1, len1 * 1);\n\n }\n\n};\n\n/**\n* Create a keccak256 hash for the specified input\n*\n*\n* Returns the hash as a vector\n* @param {Uint8Array} arg0\n* @returns {Uint8Array}\n*/\nmodule.exports.ext_keccak256 = function(arg0) {\n const ptr0 = passArray8ToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n const retptr = globalArgumentPtr();\n try {\n wasm.ext_keccak256(retptr, ptr0, len0);\n const mem = getUint32Memory();\n const rustptr = mem[retptr / 4];\n const rustlen = mem[retptr / 4 + 1];\n\n const realRet = getArrayU8FromWasm(rustptr, rustlen).slice();\n wasm.__wbindgen_free(rustptr, rustlen * 1);\n return realRet;\n\n\n } finally {\n wasm.__wbindgen_free(ptr0, len0 * 1);\n\n }\n\n};\n\n/**\n* pbkdf2 hash from an input, salt for the number of specified rounds\n*\n* * data: Arbitrary data to be hashed\n* * salt: Salt for this hash\n* * rounds: The number of rounds to perform\n*\n* Returns a vecor with the hash result\n* @param {Uint8Array} arg0\n* @param {Uint8Array} arg1\n* @param {number} arg2\n* @returns {Uint8Array}\n*/\nmodule.exports.ext_pbkdf2 = function(arg0, arg1, arg2) {\n const ptr0 = passArray8ToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray8ToWasm(arg1);\n const len1 = WASM_VECTOR_LEN;\n const retptr = globalArgumentPtr();\n try {\n wasm.ext_pbkdf2(retptr, ptr0, len0, ptr1, len1, arg2);\n const mem = getUint32Memory();\n const rustptr = mem[retptr / 4];\n const rustlen = mem[retptr / 4 + 1];\n\n const realRet = getArrayU8FromWasm(rustptr, rustlen).slice();\n wasm.__wbindgen_free(rustptr, rustlen * 1);\n return realRet;\n\n\n } finally {\n wasm.__wbindgen_free(ptr0, len0 * 1);\n wasm.__wbindgen_free(ptr1, len1 * 1);\n\n }\n\n};\n\n/**\n* sha512 hash for the specified input\n*\n* * data: Arbitrary data to be hashed\n*\n* Returns a vecor with the hash result\n* @param {Uint8Array} arg0\n* @returns {Uint8Array}\n*/\nmodule.exports.ext_sha512 = function(arg0) {\n const ptr0 = passArray8ToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n const retptr = globalArgumentPtr();\n try {\n wasm.ext_sha512(retptr, ptr0, len0);\n const mem = getUint32Memory();\n const rustptr = mem[retptr / 4];\n const rustlen = mem[retptr / 4 + 1];\n\n const realRet = getArrayU8FromWasm(rustptr, rustlen).slice();\n wasm.__wbindgen_free(rustptr, rustlen * 1);\n return realRet;\n\n\n } finally {\n wasm.__wbindgen_free(ptr0, len0 * 1);\n\n }\n\n};\n\n/**\n* twox hash for the specified input and rounds\n*\n* * data: Arbitrary data to be hashed\n* * rounds: Number of 8-byte rounds to add to the output\n*\n* Returns a vecor with the hash result\n* @param {Uint8Array} arg0\n* @param {number} arg1\n* @returns {Uint8Array}\n*/\nmodule.exports.ext_twox = function(arg0, arg1) {\n const ptr0 = passArray8ToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n const retptr = globalArgumentPtr();\n try {\n wasm.ext_twox(retptr, ptr0, len0, arg1);\n const mem = getUint32Memory();\n const rustptr = mem[retptr / 4];\n const rustlen = mem[retptr / 4 + 1];\n\n const realRet = getArrayU8FromWasm(rustptr, rustlen).slice();\n wasm.__wbindgen_free(rustptr, rustlen * 1);\n return realRet;\n\n\n } finally {\n wasm.__wbindgen_free(ptr0, len0 * 1);\n\n }\n\n};\n\nconst { u8aToString } = require('@polkadot/util');\n\n// let cachedTextDecoder = new TextDecoder('utf-8');\n\nfunction getStringFromWasm(ptr, len) {\n return u8aToString(getUint8Memory().subarray(ptr, ptr + len));\n}\n/**\n* Generate a bip39 phrase\n*\n* words: number of words, either 12, 15, 18 21 or 24\n*\n* Returns the bip 39 phrase\n* @param {number} arg0\n* @returns {string}\n*/\nmodule.exports.ext_bip39_generate = function(arg0) {\n const retptr = globalArgumentPtr();\n wasm.ext_bip39_generate(retptr, arg0);\n const mem = getUint32Memory();\n const rustptr = mem[retptr / 4];\n const rustlen = mem[retptr / 4 + 1];\n\n const realRet = getStringFromWasm(rustptr, rustlen).slice();\n wasm.__wbindgen_free(rustptr, rustlen * 1);\n return realRet;\n\n};\n\nconst { stringToU8a } = require('@polkadot/util');\n\n// let cachedTextEncoder = new TextEncoder('utf-8');\n\nlet passStringToWasm;\nif (typeof stringToU8aInto === 'function') {\n passStringToWasm = function(arg) {\n\n let size = arg.length;\n let ptr = wasm.__wbindgen_malloc(size);\n let writeOffset = 0;\n while (true) {\n const view = getUint8Memory().subarray(ptr + writeOffset, ptr + size);\n const { read, written } = stringToU8aInto(arg, view);\n arg = arg.substring(read);\n writeOffset += written;\n if (arg.length === 0) {\n break;\n }\n ptr = wasm.__wbindgen_realloc(ptr, size, size * 2);\n size *= 2;\n }\n WASM_VECTOR_LEN = writeOffset;\n return ptr;\n };\n} else {\n passStringToWasm = function(arg) {\n\n const buf = stringToU8a(arg);\n const ptr = wasm.__wbindgen_malloc(buf.length);\n getUint8Memory().set(buf, ptr);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n };\n}\n/**\n* Create entropy from a bip39 phrase\n*\n* * phrase: mnemonic phrase\n*\n* Returns the entropy\n* @param {string} arg0\n* @returns {Uint8Array}\n*/\nmodule.exports.ext_bip39_to_entropy = function(arg0) {\n const ptr0 = passStringToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n const retptr = globalArgumentPtr();\n try {\n wasm.ext_bip39_to_entropy(retptr, ptr0, len0);\n const mem = getUint32Memory();\n const rustptr = mem[retptr / 4];\n const rustlen = mem[retptr / 4 + 1];\n\n const realRet = getArrayU8FromWasm(rustptr, rustlen).slice();\n wasm.__wbindgen_free(rustptr, rustlen * 1);\n return realRet;\n\n\n } finally {\n wasm.__wbindgen_free(ptr0, len0 * 1);\n\n }\n\n};\n\n/**\n* Create a mini-secret from a bip39 phrase\n*\n* * phrase: mnemonic phrase\n*\n* Returns the 32-byte mini-secret via entropy\n* @param {string} arg0\n* @param {string} arg1\n* @returns {Uint8Array}\n*/\nmodule.exports.ext_bip39_to_mini_secret = function(arg0, arg1) {\n const ptr0 = passStringToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm(arg1);\n const len1 = WASM_VECTOR_LEN;\n const retptr = globalArgumentPtr();\n try {\n wasm.ext_bip39_to_mini_secret(retptr, ptr0, len0, ptr1, len1);\n const mem = getUint32Memory();\n const rustptr = mem[retptr / 4];\n const rustlen = mem[retptr / 4 + 1];\n\n const realRet = getArrayU8FromWasm(rustptr, rustlen).slice();\n wasm.__wbindgen_free(rustptr, rustlen * 1);\n return realRet;\n\n\n } finally {\n wasm.__wbindgen_free(ptr0, len0 * 1);\n wasm.__wbindgen_free(ptr1, len1 * 1);\n\n }\n\n};\n\n/**\n* Creates a see from a bip-39 phrase\n*\n* @phrase: mnemonic phrase\n*\n* Returns a 32-byte seed\n* @param {string} arg0\n* @param {string} arg1\n* @returns {Uint8Array}\n*/\nmodule.exports.ext_bip39_to_seed = function(arg0, arg1) {\n const ptr0 = passStringToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm(arg1);\n const len1 = WASM_VECTOR_LEN;\n const retptr = globalArgumentPtr();\n try {\n wasm.ext_bip39_to_seed(retptr, ptr0, len0, ptr1, len1);\n const mem = getUint32Memory();\n const rustptr = mem[retptr / 4];\n const rustlen = mem[retptr / 4 + 1];\n\n const realRet = getArrayU8FromWasm(rustptr, rustlen).slice();\n wasm.__wbindgen_free(rustptr, rustlen * 1);\n return realRet;\n\n\n } finally {\n wasm.__wbindgen_free(ptr0, len0 * 1);\n wasm.__wbindgen_free(ptr1, len1 * 1);\n\n }\n\n};\n\n/**\n* Validates a bip39 phrase\n*\n* * phrase: mnemonic phrase\n*\n* Returns the true/false\n* @param {string} arg0\n* @returns {boolean}\n*/\nmodule.exports.ext_bip39_validate = function(arg0) {\n const ptr0 = passStringToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n try {\n return (wasm.ext_bip39_validate(ptr0, len0)) !== 0;\n\n } finally {\n wasm.__wbindgen_free(ptr0, len0 * 1);\n\n }\n\n};\n\n/**\n* Generate a key pair.\n*\n* * seed: UIntArray with 32 element\n*\n* returned vector is the concatenation of first the private key (64 bytes)\n* followed by the public key (32) bytes.\n* @param {Uint8Array} arg0\n* @returns {Uint8Array}\n*/\nmodule.exports.ext_ed_from_seed = function(arg0) {\n const ptr0 = passArray8ToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n const retptr = globalArgumentPtr();\n try {\n wasm.ext_ed_from_seed(retptr, ptr0, len0);\n const mem = getUint32Memory();\n const rustptr = mem[retptr / 4];\n const rustlen = mem[retptr / 4 + 1];\n\n const realRet = getArrayU8FromWasm(rustptr, rustlen).slice();\n wasm.__wbindgen_free(rustptr, rustlen * 1);\n return realRet;\n\n\n } finally {\n wasm.__wbindgen_free(ptr0, len0 * 1);\n\n }\n\n};\n\n/**\n* Sign a message\n*\n* The combination of both public and private key must be provided.\n* This is effectively equivalent to a keypair.\n*\n* * public: UIntArray with 32 element\n* * private: UIntArray with 64 element\n* * message: Arbitrary length UIntArray\n*\n* * returned vector is the signature consisting of 64 bytes.\n* @param {Uint8Array} arg0\n* @param {Uint8Array} arg1\n* @param {Uint8Array} arg2\n* @returns {Uint8Array}\n*/\nmodule.exports.ext_ed_sign = function(arg0, arg1, arg2) {\n const ptr0 = passArray8ToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray8ToWasm(arg1);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray8ToWasm(arg2);\n const len2 = WASM_VECTOR_LEN;\n const retptr = globalArgumentPtr();\n try {\n wasm.ext_ed_sign(retptr, ptr0, len0, ptr1, len1, ptr2, len2);\n const mem = getUint32Memory();\n const rustptr = mem[retptr / 4];\n const rustlen = mem[retptr / 4 + 1];\n\n const realRet = getArrayU8FromWasm(rustptr, rustlen).slice();\n wasm.__wbindgen_free(rustptr, rustlen * 1);\n return realRet;\n\n\n } finally {\n wasm.__wbindgen_free(ptr0, len0 * 1);\n wasm.__wbindgen_free(ptr1, len1 * 1);\n wasm.__wbindgen_free(ptr2, len2 * 1);\n\n }\n\n};\n\n/**\n* Verify a message and its corresponding against a public key;\n*\n* * signature: UIntArray with 64 element\n* * message: Arbitrary length UIntArray\n* * pubkey: UIntArray with 32 element\n* @param {Uint8Array} arg0\n* @param {Uint8Array} arg1\n* @param {Uint8Array} arg2\n* @returns {boolean}\n*/\nmodule.exports.ext_ed_verify = function(arg0, arg1, arg2) {\n const ptr0 = passArray8ToWasm(arg0);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray8ToWasm(arg1);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray8ToWasm(arg2);\n const len2 = WASM_VECTOR_LEN;\n try {\n return (wasm.ext_ed_verify(ptr0, len0, ptr1, len1, ptr2, len2)) !== 0;\n\n } finally {\n wasm.__wbindgen_free(ptr0, len0 * 1);\n wasm.__wbindgen_free(ptr1, len1 * 1);\n wasm.__wbindgen_free(ptr2, len2 * 1);\n\n }\n\n};\n\nconst heap = new Array(32);\n\nheap.fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nlet heap_next = heap.length;\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nmodule.exports.__wbg_new_3a746f2619705add = function(arg0, arg1) {\n let varg0 = getStringFromWasm(arg0, arg1);\n return addHeapObject(new Function(varg0));\n};\n\nfunction getObject(idx) { return heap[idx]; }\n\nmodule.exports.__wbg_call_f54d3a6dadb199ca = function(arg0, arg1) {\n return addHeapObject(getObject(arg0).call(getObject(arg1)));\n};\n\nmodule.exports.__wbg_self_ac379e780a0d8b94 = function(arg0) {\n return addHeapObject(getObject(arg0).self);\n};\n\nmodule.exports.__wbg_crypto_1e4302b85d4f64a2 = function(arg0) {\n return addHeapObject(getObject(arg0).crypto);\n};\n\nmodule.exports.__wbg_getRandomValues_1b4ba144162a5c9e = function(arg0) {\n return addHeapObject(getObject(arg0).getRandomValues);\n};\n\nmodule.exports.__wbg_getRandomValues_1ef11e888e5228e9 = function(arg0, arg1, arg2) {\n let varg1 = getArrayU8FromWasm(arg1, arg2);\n getObject(arg0).getRandomValues(varg1);\n};\n\nmodule.exports.__wbg_require_6461b1e9a0d7c34a = function(arg0, arg1) {\n let varg0 = getStringFromWasm(arg0, arg1);\n return addHeapObject(requires[varg0]);\n};\n\nmodule.exports.__wbg_randomFillSync_1b52c8482374c55b = function(arg0, arg1, arg2) {\n let varg1 = getArrayU8FromWasm(arg1, arg2);\n getObject(arg0).randomFillSync(varg1);\n};\n\nmodule.exports.__wbindgen_is_undefined = function(i) { return getObject(i) === undefined ? 1 : 0; };\n\nmodule.exports.__wbindgen_jsval_eq = function(a, b) { return getObject(a) === getObject(b) ? 1 : 0; };\n\nfunction dropObject(idx) {\n if (idx < 36) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nmodule.exports.__wbindgen_object_drop_ref = function(i) { dropObject(i); };\n\n// wasm = require('./wasm_bg');\n\n\nmodule.exports.abort = function () { throw new Error('abort'); };\n\nconst createPromise = require('./wasm_bg');\nconst wasmPromise = createPromise().catch(() => null);\n\nmodule.exports.isReady = function () { return !!wasm; }\nmodule.exports.waitReady = function () { return wasmPromise.then(() => !!wasm); }\n\nwasmPromise.then((_wasm) => { wasm = _wasm });\n\n","\nconst pkg = require('./package.json');\nconst bytes = require('./wasm_wasm');\nconst js = require('./wasm');\n\nmodule.exports = async function createExportPromise () {\n const imports = {\n './wasm': js\n };\n\n if (!WebAssembly) {\n console.error(`ERROR: Unable to initialize ${pkg.name}, WebAssembly is not available in this environment`);\n\n // TODO: Return asm version when not detected\n return null;\n }\n\n try {\n const { instance } = await WebAssembly.instantiate(bytes, imports);\n\n return instance.exports;\n } catch (error) {\n console.error(`ERROR: Unable to initialize ${pkg.name}:: ${error.message}`);\n\n // TODO: Return asm version here as a fallback\n return null;\n }\n}\n\n","{\n \"_args\": [\n [\n \"@polkadot/wasm-crypto@0.10.1\",\n \"/Users/wushuaipeng/Documents/spwuc/polkdot\"\n ]\n ],\n \"_from\": \"@polkadot/wasm-crypto@0.10.1\",\n \"_id\": \"@polkadot/wasm-crypto@0.10.1\",\n \"_inBundle\": false,\n \"_integrity\": \"sha512-hI3OYftMGJkDetTe1DeU9aH4euk6WVmAMFszslNrCxHMFFkemEgACykwpyuOdCjv24VZP/cMsrVskKix1GzSYQ==\",\n \"_location\": \"/@polkadot/wasm-crypto\",\n \"_phantomChildren\": {},\n \"_requested\": {\n \"type\": \"version\",\n \"registry\": true,\n \"raw\": \"@polkadot/wasm-crypto@0.10.1\",\n \"name\": \"@polkadot/wasm-crypto\",\n \"escapedName\": \"@polkadot%2fwasm-crypto\",\n \"scope\": \"@polkadot\",\n \"rawSpec\": \"0.10.1\",\n \"saveSpec\": null,\n \"fetchSpec\": \"0.10.1\"\n },\n \"_requiredBy\": [\n \"/@polkadot/util-crypto\"\n ],\n \"_resolved\": \"https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-0.10.1.tgz\",\n \"_spec\": \"0.10.1\",\n \"_where\": \"/Users/wushuaipeng/Documents/spwuc/polkdot\",\n \"author\": {\n \"name\": \"Jaco Greeff\",\n \"email\": \"jacogr@gmail.com\"\n },\n \"description\": \"Wrapper around crypto hashing functions\",\n \"devDependencies\": {\n \"jest\": \"*\"\n },\n \"files\": [\n \"crypto-polyfill.js\",\n \"index.d.ts\",\n \"index.js\",\n \"wasm.d.ts\",\n \"wasm.js\",\n \"wasm_bg.js\",\n \"wasm_wasm.js\"\n ],\n \"main\": \"index.js\",\n \"name\": \"@polkadot/wasm-crypto\",\n \"peerDependencies\": {\n \"@polkadot/util\": \"*\"\n },\n \"types\": \"index.d.ts\",\n \"version\": \"0.10.1\",\n \"react-native\": {\n \"zlib\": \"browserify-zlib\",\n \"console\": \"console-browserify\",\n \"constants\": \"constants-browserify\",\n \"crypto\": \"react-native-crypto\",\n \"dns\": \"dns.js\",\n \"net\": \"react-native-tcp\",\n \"domain\": \"domain-browser\",\n \"http\": \"@tradle/react-native-http\",\n \"https\": \"https-browserify\",\n \"os\": \"react-native-os\",\n \"path\": \"path-browserify\",\n \"querystring\": \"querystring-es3\",\n \"fs\": \"react-native-level-fs\",\n \"_stream_transform\": \"readable-stream/transform\",\n \"_stream_readable\": \"readable-stream/readable\",\n \"_stream_writable\": \"readable-stream/writable\",\n \"_stream_duplex\": \"readable-stream/duplex\",\n \"_stream_passthrough\": \"readable-stream/passthrough\",\n \"dgram\": \"react-native-udp\",\n \"stream\": \"stream-browserify\",\n \"timers\": \"timers-browserify\",\n \"tty\": \"tty-browserify\",\n \"vm\": \"vm-browserify\",\n \"tls\": false\n },\n \"browser\": {\n \"zlib\": \"browserify-zlib\",\n \"console\": \"console-browserify\",\n \"constants\": \"constants-browserify\",\n \"crypto\": \"react-native-crypto\",\n \"dns\": \"dns.js\",\n \"net\": \"react-native-tcp\",\n \"domain\": \"domain-browser\",\n \"http\": \"@tradle/react-native-http\",\n \"https\": \"https-browserify\",\n \"os\": \"react-native-os\",\n \"path\": \"path-browserify\",\n \"querystring\": \"querystring-es3\",\n \"fs\": \"react-native-level-fs\",\n \"_stream_transform\": \"readable-stream/transform\",\n \"_stream_readable\": \"readable-stream/readable\",\n \"_stream_writable\": \"readable-stream/writable\",\n \"_stream_duplex\": \"readable-stream/duplex\",\n \"_stream_passthrough\": \"readable-stream/passthrough\",\n \"dgram\": \"react-native-udp\",\n \"stream\": \"stream-browserify\",\n \"timers\": \"timers-browserify\",\n \"tty\": \"tty-browserify\",\n \"vm\": \"vm-browserify\",\n \"tls\": false\n }\n}","\nmodule.exports = Buffer.from('AGFzbQEAAAAB3gEiYAF/AGACf38Bf2ABfwF/YAR/f39/AGACf38AYAN/f38AYAABf2ADf39/AX9gAABgBX9/f39/AGAHf39/f39/fwBgBn9/f39/fwF/YAR/f39/AX9gAX8BfmAGf39/f39/AGAFf39/f38Bf2ACf34AYAV/fn9+fwBgB39/f39/f38Bf2ACf34AYAF/AGADf39/AGACf38AYAZ/f39/f38AYAR/f39/AGAFf39/f38Bf2AFf39/f38AYAJ/fwF/YAR/f39/AX9gAn5/AX9gAX8Bf2AAAX9gA39+fgBgAAACrwMLBi4vd2FzbRpfX3diaW5kZ2VuX29iamVjdF9kcm9wX3JlZgAABi4vd2FzbRpfX3diZ19uZXdfM2E3NDZmMjYxOTcwNWFkZAABBi4vd2FzbRtfX3diZ19jYWxsX2Y1NGQzYTZkYWRiMTk5Y2EAAQYuL3dhc20TX193YmluZGdlbl9qc3ZhbF9lcQABBi4vd2FzbRtfX3diZ19zZWxmX2FjMzc5ZTc4MGEwZDhiOTQAAgYuL3dhc20eX193YmdfcmVxdWlyZV82NDYxYjFlOWEwZDdjMzRhAAEGLi93YXNtHV9fd2JnX2NyeXB0b18xZTQzMDJiODVkNGY2NGEyAAIGLi93YXNtF19fd2JpbmRnZW5faXNfdW5kZWZpbmVkAAIGLi93YXNtJl9fd2JnX2dldFJhbmRvbVZhbHVlc18xYjRiYTE0NDE2MmE1YzllAAIGLi93YXNtJl9fd2JnX2dldFJhbmRvbVZhbHVlc18xZWYxMWU4ODhlNTIyOGU5AAUGLi93YXNtJV9fd2JnX3JhbmRvbUZpbGxTeW5jXzFiNTJjODQ4MjM3NGM1NWIABQOaA5gDBAUEBAUTAQUABAkOBAkFBAMFBQUEFAQEFQUEFgUJBQQBFwQHAAAUBwoAAwsEBQsHBgUFBQUFBQQYCQUFAAAZBAMFFQkAAAMVBAQBDwkDDRoEBxsIAAMFDhYJCgEEBAQEBBYJFQkABBYFBQEBGhQVAQAFHB0ABAICEgAEBQQDBRQABAEEBB0AFRYEAQMEBQUECR4JCQQUBAUFBAMBBQEfBwEBAwAFFQQDAwEEBAQBFBUAFhYAFQUBAAoEDgEJCQkJCQEBBQUFAQECAQEFAwQBAwQOIAEBARYDBRYWFgQCABUFBAUUACEICAAIBAUEBQQBAQEFFAABAQEBAQQABAQEBAQEBAQEAQQRBAIBBQAMBAUHABAWBAAAAAQBBAAEAgEHDAEBCR4EAQYDBwMEBwUhBAUWISEhIQUFBQIABAcAHgQEAAQEBAQEBAQEAhUJAAEEAQEHAQEBAQIMBAQECwsBAQkJBAUFAQICAgUAAwQBAQcUAQUBAQIAAQEEBAEBAQQBBwECBAAACAghDQ0BAgECDQ0GBgYNDQAEBAcBcAG4AbgBBQMBABMGCQF/AUGAgMAACwfnAxgGbWVtb3J5AgAaZXh0X3NyX2Rlcml2ZV9rZXlwYWlyX2hhcmQAxwEaZXh0X3NyX2Rlcml2ZV9rZXlwYWlyX3NvZnQAyAEZZXh0X3NyX2Rlcml2ZV9wdWJsaWNfc29mdADJARBleHRfc3JfZnJvbV9zZWVkAM4BC2V4dF9zcl9zaWduAMMBDWV4dF9zcl92ZXJpZnkA5wILZXh0X2JsYWtlMmIA3AENZXh0X2tlY2NhazI1NgCWAgpleHRfcGJrZGYyAMUBCmV4dF9zaGE1MTIA6wEIZXh0X3R3b3gAiAESZXh0X2JpcDM5X2dlbmVyYXRlALYBFGV4dF9iaXAzOV90b19lbnRyb3B5AM8BGGV4dF9iaXAzOV90b19taW5pX3NlY3JldADKARFleHRfYmlwMzlfdG9fc2VlZADLARJleHRfYmlwMzlfdmFsaWRhdGUAjAMQZXh0X2VkX2Zyb21fc2VlZADQAQtleHRfZWRfc2lnbgBlDWV4dF9lZF92ZXJpZnkA6AIeX193YmluZGdlbl9nbG9iYWxfYXJndW1lbnRfcHRyAJwDEV9fd2JpbmRnZW5fbWFsbG9jAKgCEl9fd2JpbmRnZW5fcmVhbGxvYwDHAg9fX3diaW5kZ2VuX2ZyZWUA5QIJ8AIBAEEBC7cB+gGsAqEDhwLKApQDoQOVA+kCqwGkAqED4gGYA5kDoQOhA60BlgOXA9kBrQKhA4gCywKUA6EDlQOhA9kCrAL8AqED7QKOA5cDmgN2tAGhA6QBpAHEAcQBlwI0rALpAv4C/wKhA6EDiQLNApQDoQOVA6ED1QLVAoEDgQPuAu4CoQOKAs4ClAOhA5UDdYID6QKCA6EDiwLPApQDoQOVA6IChAOFA44DmwPfAaEDjALQApQDoQOVA6EDjQLRApQDoQOVA+AC6QKhA4MD2QKQAqED3wLBAeEChgPpAqEDjgLSApQDoQOVA48D+QKsAcYBqQKhA48C0wKUA6EDlQOhA+wBxgKHA+kCsQKeA50DuAHpAtwC6QKVAogD2wKsAqIDoQO0Ao0BgAKtAqEDnwPIApoBtQHYAqADoQOFAtQClAOVA/wB3gLpAqEDtAL4AoEC8ALgAVX5AqEDnwOhA1yoAYQCoQP6AooDggLUAQqlzg2YA/9cAgF/GH4jAEHwJGsiAiQAIAJBoB9qIAFBARA4IAJByCRqIAJBoB9qQQEQOCACQcgfaiACQcgkakEBEDggAkGgHGogASkDACIIIAIpA9AfIgkQ3QEgAkGwHWogASkDICIPIAIpA9gfIgRCE34iDBDdASACQfAdaiABKQMYIg0gAikD4B8iBUITfiIGEN0BIAJBsB5qIAEpAxAiECACKQPoHyILQhN+IgcQ3QEgAkHgHGogASkDCCIKIAIpA8gfIgMQ3QEgAkGQHGogAyAIEN0BIAJBoB1qIA8gCUITfhDdASACQeAdaiANIAwQ3QEgAkGgHmogECAGEN0BIAJB4B5qIAogBxDdASACQbAcaiAIIAQQ3QEgAkHAHWogDyAGEN0BIAJBgB5qIA0gBxDdASACQfAcaiAQIAMQ3QEgAkHwHmogCiAJEN0BIAJBwBxqIAggBRDdASACQdAdaiAPIAcQ3QEgAkGAHWogDSADEN0BIAJBwB5qIBAgCRDdASACQYAfaiAKIAQQ3QEgAkHQHGogCCALEN0BIAJBkB1qIA8gAxDdASACQZAeaiANIAkQ3QEgAkHQHmogECAEEN0BIAJBkB9qIAogBRDdASACQaAaaiACKQPAHSIOIAIpA7AcfCIIIAIpA4AefCIJIAIpA/AcfCINIAIpA/AefCIQIAIpA7AdIgsgAikDoBx8Ig8gAikD8B18IgogAikDsB58IgMgAikD4Bx8IgQgAikDoB0iFCACKQOQHHwiByACKQPgHXwiBSACKQOgHnwiBiACKQPgHnwiDEIziCAMIAZUrSACQegeaikDACAGIAVUrSACQageaikDACAFIAdUrSACQegdaikDACAHIBRUrSACQagdaikDACACQZgcaikDAHx8fHx8fHx8Qg2GhHwiBUIziCAFIARUrSAEIANUrSACQegcaikDACADIApUrSACQbgeaikDACAKIA9UrSACQfgdaikDACAPIAtUrSACQbgdaikDACACQagcaikDAHx8fHx8fHx8fEINhoR8IgNC/////////wODIg9CE34iESACKQPAHyIKEN0BIAJB0BpqIAIpA9AdIhIgAikDwBx8IgQgAikDgB18IgcgAikDwB58IgYgAikDgB98IgsgAyAQVK0gECANVK0gAkH4HmopAwAgDSAJVK0gAkH4HGopAwAgCSAIVK0gAkGIHmopAwAgCCAOVK0gAkHIHWopAwAgAkG4HGopAwB8fHx8fHx8fHxCDYYgA0IziIR8IghC/////////wODIg1CE34iDiACKQO4HyIDEN0BIAJBkBtqIAIpA5AdIhUgAikD0Bx8IgkgAikDkB58IhQgAikD0B58IhcgAikDkB98IhMgCCALVK0gCyAGVK0gAkGIH2opAwAgBiAHVK0gAkHIHmopAwAgByAEVK0gAkGIHWopAwAgBCASVK0gAkHYHWopAwAgAkHIHGopAwB8fHx8fHx8fHxCDYYgCEIziIR8IghC/////////wODIhBCE34iBiACKQOwHyIEEN0BIAJBsBlqIAggE1StIBMgF1StIAJBmB9qKQMAIBcgFFStIAJB2B5qKQMAIBQgCVStIAJBmB5qKQMAIAkgFVStIAJBmB1qKQMAIAJB2BxqKQMAfHx8fHx8fHx8Qg2GIAhCM4iEQhN+IAxC/////////wODfCIJQv////////8DgyIIIAIpA6gfIgcQ3QEgAkGAGmogBUL/////////A4MgCUIziHwiCSACKQOgHyIFEN0BIAJBsBpqIBEgAxDdASACQeAaaiAOIAQQ3QEgAkGgG2ogBiAHEN0BIAJBwBlqIAggBRDdASACQZAaaiAJQhN+IAoQ3QEgAkGwG2ogDyAFEN0BIAJBwBpqIA4gChDdASACQYAbaiAGIAMQ3QEgAkGgGWogCCAEEN0BIAJB8BlqIAkgBxDdASACQfAbaiAPIAcQ3QEgAkHAG2ogDSAFEN0BIAJB8BpqIAYgChDdASACQZAZaiAIIAMQ3QEgAkHgGWogCSAEEN0BIAJB4BtqIA8gBBDdASACQYAcaiANIAcQ3QEgAkHQG2ogECAFEN0BIAJBgBlqIAggChDdASACQdAZaiAJIAMQ3QEgAiACKQPAGiIRIAIpA7AbfCIKIAIpA4AbfCIDIAIpA6AZfCIEIAIpA/AZfCIHIAIpA9AaIhIgAikDoBp8IgUgAikDkBt8IgYgAikDsBl8IgwgAikDgBp8IgsgAikD4BoiFSACKQOwGnwiDiACKQOgG3wiFCACKQPAGXwiFyACKQOQGnwiE0IziCATIBdUrSACQZgaaikDACAXIBRUrSACQcgZaikDACAUIA5UrSACQagbaikDACAOIBVUrSACQegaaikDACACQbgaaikDAHx8fHx8fHx8Qg2GhHwiDkIziCAOIAtUrSALIAxUrSACQYgaaikDACAMIAZUrSACQbgZaikDACAGIAVUrSACQZgbaikDACAFIBJUrSACQdgaaikDACACQagaaikDAHx8fHx8fHx8fEINhoR8IgVC/////////wODNwOAICACIAIpA8AbIhcgAikD8Bt8IgYgAikD8Bp8IgwgAikDkBl8IgsgAikD4Bl8IhQgBSAHVK0gByAEVK0gAkH4GWopAwAgBCADVK0gAkGoGWopAwAgAyAKVK0gAkGIG2opAwAgCiARVK0gAkHIGmopAwAgAkG4G2opAwB8fHx8fHx8fHxCDYYgBUIziIR8IgpC/////////wODNwOIICACIAIpA4AcIhEgAikD4Bt8IgMgAikD0Bt8IgQgAikDgBl8IgcgAikD0Bl8IgUgCiAUVK0gFCALVK0gAkHoGWopAwAgCyAMVK0gAkGYGWopAwAgDCAGVK0gAkH4GmopAwAgBiAXVK0gAkHIG2opAwAgAkH4G2opAwB8fHx8fHx8fHxCDYYgCkIziIR8IgpC/////////wODNwOQICACIAogBVStIAUgB1StIAJB2BlqKQMAIAcgBFStIAJBiBlqKQMAIAQgA1StIAJB2BtqKQMAIAMgEVStIAJBiBxqKQMAIAJB6BtqKQMAfHx8fHx8fHx8Qg2GIApCM4iEQhN+IBNC/////////wODfCIKQv////////8DgzcD8B8gAiAOQv////////8DgyAKQjOIfDcD+B8gAkGYIGogAkHwH2pBARA4IAJBkBhqIBAgAikDqCAiBEITfiIMEN0BIAJBwBdqIAIpA7AgIgVCE34iBiANEN0BIAJB8BZqIAIpA7ggIgtCE34iByAPEN0BIAJB4BhqIAggAikDoCAiChDdASACQYAWaiAJIAIpA5ggIgMQ3QEgAkHwGGogECAKQhN+EN0B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fCIMIAIpA6ASfCILIAIpA+APfCIOIAIpA8ARIhkgAikD8BB8IhMgAikDkBJ8IhEgAikD0A98IhIgAikDoBB8IhVCM4ggFSASVK0gAkGoEGopAwAgEiARVK0gAkHYD2opAwAgESATVK0gAkGYEmopAwAgEyAZVK0gAkHIEWopAwAgAkH4EGopAwB8fHx8fHx8fEINhoR8IhFCM4ggESAOVK0gDiALVK0gAkHoD2opAwAgCyAMVK0gAkGoEmopAwAgDCAHVK0gAkHYEWopAwAgByAWVK0gAkGIEWopAwAgAkG4EGopAwB8fHx8fHx8fHxCDYaEfCIMQv////////8DgyIHNwPwISACIAIpA4AQIhkgAikDwBJ8IgsgAikD0BB8Ig4gAikDoBF8IhIgAikD8BF8IhYgDCAGVK0gBiAFVK0gAkG4EmopAwAgBSAEVK0gAkHoEWopAwAgBCADVK0gAkGYEWopAwAgAyAYVK0gAkHIEGopAwAgAkH4D2opAwB8fHx8fHx8fHxCDYYgDEIziIR8IgNC/////////wODIhM3A/ghIAIgAikD0BIiGCACKQOAEnwiBCACKQOQEHwiBSACKQPgEHwiBiACKQOwEXwiDCADIBZUrSAWIBJUrSACQfgRaikDACASIA5UrSACQagRaikDACAOIAtUrSACQdgQaikDACALIBlUrSACQYgQaikDACACQcgSaikDAHx8fHx8fHx8fEINhiADQjOIhHwiA0L/////////A4MiEjcDgCIgAiADIAxUrSAMIAZUrSACQbgRaikDACAGIAVUrSACQegQaikDACAFIARUrSACQZgQaikDACAEIBhUrSACQdgSaikDACACQYgSaikDAHx8fHx8fHx8fEINhiADQjOIhEITfiAVQv////////8Dg3wiBEL/////////A4MiAzcD4CEgAiARQv////////8DgyAEQjOIfCIENwPoISACQYgiaiACQeAhakEUEDggAkHgDWogB0ITfiIWIAIpA6giIgUQ3QEgAkGgDmogE0ITfiIVIAIpA6AiIgYQ3QEgAkHgDmogEkITfiIRIAIpA5giIgwQ3QEgAkHwDGogAyACKQOQIiILEN0BIAJBkA1qIAQgAikDiCIiDhDdASACQZAOaiAWIAYQ3QEgAkHQDmogFSAMEN0BIAJBkA9qIBEgCxDdASACQYANaiADIA4Q3QEgAkHQDWogBEITfiAFEN0BIAJBoA1qIAcgDhDdASACQfANaiAVIAUQ3QEgAkGwDmogESAGEN0BIAJB4AxqIAMgDBDdASACQaAPaiAEIAsQ3QEgAkGwD2ogByALEN0BIAJBsA1qIBMgDhDdASACQYAOaiARIAUQ3QEgAkHQDGogAyAGEN0BIAJB8A5qIAQgDBDdASACQYAPaiAHIAwQ3QEgAkHAD2ogEyALEN0BIAJBwA1qIBIgDhDdASACQcAMaiADIAUQ3QEgAkHADmogBCAGEN0BIAIgAikD8A0iFiACKQOgDXwiAyACKQOwDnwiBCACKQPgDHwiByACKQOgD3wiBSACKQOgDiIYIAIpA+ANfCIGIAIpA+AOfCIMIAIpA/AMfCILIAIpA5ANfCIOIAIpA9AOIhkgAikDkA58IhMgAikDkA98IhEgAikDgA18IhIgAikD0A18IhVCM4ggFSASVK0gAkHYDWopAwAgEiARVK0gAkGIDWopAwAgESATVK0gAkGYD2opAwAgEyAZVK0gAkHYDmopAwAgAkGYDmopAwB8fHx8fHx8fEINhoR8IhNCM4ggEyAOVK0gDiALVK0gAkGYDWopAwAgCyAMVK0gAkH4DGopAwAgDCAGVK0gAkHoDmopAwAgBiAYVK0gAkGoDmopAwAgAkHoDWopAwB8fHx8fHx8fHxCDYaEfCIGQv////////8DgzcDwCIgAiACKQOwDSISIAIpA7APfCIMIAIpA4AOfCILIAIpA9AMfCIOIAIpA/AOfCIRIAYgBVStIAUgB1StIAJBqA9qKQMAIAcgBFStIAJB6AxqKQMAIAQgA1StIAJBuA5qKQMAIAMgFlStIAJB+A1qKQMAIAJBqA1qKQMAfHx8fHx8fHx8Qg2GIAZCM4iEfCIDQv////////8DgzcDyCIgAiACKQPADyIWIAIpA4APfCIEIAIpA8ANfCIHIAIpA8AMfCIFIAIpA8AOfCIGIAMgEVStIBEgDlStIAJB+A5qKQMAIA4gC1StIAJB2AxqKQMAIAsgDFStIAJBiA5qKQMAIAwgElStIAJBuA1qKQMAIAJBuA9qKQMAfHx8fHx8fHx8Qg2GIANCM4iEfCIDQv////////8DgzcD0CIgAiADIAZUrSAGIAVUrSACQcgOaikDACAFIAdUrSACQcgMaikDACAHIARUrSACQcgNaikDACAEIBZUrSACQcgPaikDACACQYgPaikDAHx8fHx8fHx8fEINhiADQjOIhEITfiAVQv////////8Dg3wiA0L/////////A4M3A7AiIAIgE0L/////////A4MgA0IziHw3A7giIAJB2CJqIAJBsCJqQQoQOCACQcAJaiACKQPYIiIDIAkQ3QEgAkGQCmogAikD+CIiBCAXEN0BIAJB4ApqIAIpA/AiIgcgChDdASACQbALaiACKQPoIiIFIA0Q3QEgAkGADGogAikD4CIiBiAIEN0BIAJBsAlqIAMgCBDdASACQYAKaiAEIBoQ3QEgAkHQCmogByAXEN0BIAJBoAtqIAUgChDdASACQfALaiAGIA0Q3QEgAkHQCWogAyAPEN0BIAJBoApqIAQgChDdASACQfAKaiAHIA0Q3QEgAkHAC2ogBSAIEN0BIAJBkAxqIAYgCRDdASACQeAJaiADIBAQ3QEgAkGwCmogBCANEN0BIAJBgAtqIAcgCBDdASACQdALaiAFIAkQ3QEgAkGgDGogBiAPEN0BIAJB8AlqIAMgFBDdASACQcAKaiAEIAgQ3QEgAkGQC2ogByAJEN0BIAJB4AtqIAUgDxDdASACQbAMaiAGIBAQ3QEgAiACKQOgCiILIAIpA9AJfCIIIAIpA/AKfCIJIAIpA8ALfCINIAIpA5AMfCIQIAIpA5AKIg4gAikDwAl8Ig8gAikD4Ap8IgogAikDsAt8IgMgAikDgAx8IgQgAikDgAoiFCACKQOwCXwiByACKQPQCnwiBSACKQOgC3wiBiACKQPwC3wiDEIziCAMIAZUrSACQfgLaikDACAGIAVUrSACQagLaikDACAFIAdUrSACQdgKaikDACAHIBRUrSACQYgKaikDACACQbgJaikDAHx8fHx8fHx8Qg2GhHwiB0IziCAHIARUrSAEIANUrSACQYgMaikDACADIApUrSACQbgLaikDACAKIA9UrSACQegKaikDACAPIA5UrSACQZgKaikDACACQcgJaikDAHx8fHx8fHx8fEINhoR8IgpC/////////wODIg83A5AjIAIgAikDsAoiDiACKQPgCXwiAyACKQOAC3wiBCACKQPQC3wiBSACKQOgDHwiBiAKIBBUrSAQIA1UrSACQZgMaikDACANIAlUrSACQcgLaikDACAJ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ASACQdAEaiARIAYQ3QEgAkGgBWogAyAMEN0BIAJB8AVqIAQgCxDdASACQYAGaiAHIAsQ3QEgAkHAA2ogEyAOEN0BIAJBkARqIBEgBRDdASACQeAEaiADIAYQ3QEgAkGwBWogBCAMEN0BIAJBwAVqIAcgDBDdASACQZAGaiATIAsQ3QEgAkHQA2ogEiAOEN0BIAJBoARqIAMgBRDdASACQfAEaiAEIAYQ3QEgAiACKQOABCIWIAIpA7ADfCIDIAIpA9AEfCIEIAIpA6AFfCIHIAIpA/AFfCIFIAIpA8AEIhggAikD8AN8IgYgAikDkAV8IgwgAikD4AV8IgsgAikDoAN8Ig4gAikDgAUiGSACKQOwBHwiEyACKQPQBXwiESACKQOQA3wiEiACKQPgA3wiFUIziCAVIBJUrSACQegDaikDACASIBFUrSACQZgDaikDACARIBNUrSACQdgFaikDACATIBlUrSACQYgFaikDACACQbgEaikDAHx8fHx8fHx8Qg2GhHwiE0IziCATIA5UrSAOIAtUrSACQagDaikDACALIAxUrSACQegFaikDACAMIAZUrSACQZgFaikDACAGIBhUrSACQcgEaikDACACQfgDaikDAHx8fHx8fHx8fEINhoR8IgZC/////////wODNwOwJCACIAIpA8ADIhIgAikDgAZ8IgwgAikDkAR8IgsgAikD4AR8Ig4gAikDsAV8IhEgBiAFVK0gBSAHVK0gAkH4BWopAwAgByAEVK0gAkGoBWopAwAgBCADVK0gAkHYBGopAwAgAyAWVK0gAkGIBGopAwAgAkG4A2opAwB8fHx8fHx8fHxCDYYgBkIziIR8IgNC/////////wODNwO4JCACIAIpA5AGIhYgAikDwAV8IgQgAikD0AN8IgcgAikDoAR8IgUgAikD8AR8IgYgAyARVK0gESAOVK0gAkG4BWopAwAgDiALVK0gAkHoBGopAwAgCyAMVK0gAkGYBGopAwAgDCASVK0gAkHIA2opAwAgAkGIBmopAwB8fHx8fHx8fHxCDYYgA0IziIR8IgNC/////////wODNwPAJCACIAMgBlStIAYgBVStIAJB+ARqKQMAIAUgB1StIAJBqARqKQMAIAcgBFStIAJB2ANqKQMAIAQgFlStIAJBmAZqKQMAIAJByAVqKQMAfHx8fHx8fHx8Qg2GIANCM4iEQhN+IBVC/////////wODfCIDQv////////8DgzcDoCQgAiATQv////////8DgyADQjOIfDcDqCQgAkHIJGogAkGgJGpBMhA4IAJBEGogAikDyCQiAyAJEN0BIAJB4ABqIAIpA+gkIgQgFxDdASACQbABaiACKQPgJCIHIAoQ3QEgAkGAAmogAikD2CQiBSANEN0BIAJB0AJqIAIpA9AkIgYgCBDdASACIAMgCBDdASACQdAAaiAEIBoQ3QEgAkGgAWogByAXEN0BIAJB8AFqIAUgChDdASACQcACaiAGIA0Q3QEgAkEgaiADIA8Q3QEgAkHwAGogBCAKEN0BIAJBwAFqIAcgDRDdASACQZACaiAFIAgQ3QEgAkHgAmogBiAJEN0BIAJBMGogAyAQEN0BIAJBgAFqIAQgDRDdASACQdABaiAHIAgQ3QEgAkGgAmogBSAJEN0BIAJB8AJqIAYgDxDdASACQUBrIAMgFBDdASACQZABaiAEIAgQ3QEgAkHgAWogByAJEN0BIAJBsAJqIAUgDxDdASACQYADaiAGIBAQ3QEgACACKQPwHzcDKCAAQTBqIAIpA/gfNwMAIABBOGogAikDgCA3AwAgAEFAayACKQOIIDcDACAAQcgAaiACKQOQIDcDACAAIAIpA3AiCyACKQMgfCIIIAIpA8ABfCIJIAIpA5ACfCIPIAIpA+ACfCINIAIpA2AiDiACKQMQfCIQIAIpA7ABfCIKIAIpA4ACfCIDIAIpA9ACfCIEIAIpA1AiFCACKQMAfCIHIAIpA6ABfCIFIAIpA/ABfCIGIAIpA8ACfCIMQjOIIAwgBlStIAJByAJqKQMAIAYgBVStIAJB+AFqKQMAIAUgB1StIAJBqAFqKQMAIAcgFFStIAJB2ABqKQMAIAJBCGopAwB8fHx8fHx8fEINhoR8IgdCM4ggByAEVK0gBCADVK0gAkHYAmopAwAgAyAKVK0gAkGIAmopAwAgCiAQVK0gAkG4AWopAwAgECAOVK0gAkHoAGopAwAgAkEYaikDAHx8fHx8fHx8fEINhoR8IhBC/////////wODNwMQIAAgAikDgAEiBiACKQMwfCIKIAIpA9ABfCIDIAIpA6ACfCIEIAIpA/ACfCIFIBAgDVStIA0gD1StIAJB6AJqKQMAIA8gCVStIAJBmAJqKQMAIAkgCFStIAJByAFqKQMAIAggC1StIAJB+ABqKQMAIAJBKGopAwB8fHx8fHx8fHxCDYYgEEIziIR8IghC/////////wODNwMYIAAgAikDkAEiCyACKQNAfCIJIAIpA+ABfCIPIAIpA7ACfCINIAIpA4ADfCIQIAggBVStIAUgBFStIAJB+AJqKQMAIAQgA1StIAJBqAJqKQMAIAMgClStIAJB2AFqKQMAIAogBlStIAJBiAFqKQMAIAJBOGopAwB8fHx8fHx8fHxCDYYgCEIziIR8IghC/////////wODNwMgIAAgCCAQVK0gECANVK0gAkGIA2opAwAgDSAPVK0gAkG4AmopAwAgDyAJVK0gAkHoAWopAwAgCSALVK0gAkGYAWopAwAgAkHIAGopAwB8fHx8fHx8fHxCDYYgCEIziIRCE34gDEL/////////A4N8IghC/////////wODNwMAIAAgB0L/////////A4MgCEIziHw3AwggAkHwJGokAAvkWwIFfyZ+IwBBoB5rIgMkACADQdAdaiACQQEQOCADQZAZaiADKQPQHSINIAIpAwgiFhDdASADQaAaaiADKQPwHSITIAIpAxAiGUITfiIJEN0BIANB4BpqIAMpA+gdIhEgAikDGCIcQhN+IhUQ3QEgA0GgG2ogAykD4B0iEiACKQMgIh1CE34iFBDdASADQdAZaiADKQPYHSIOIAIpAwAiDBDdASADQYAZaiAMIA0Q3QEgA0GQGmogEyAWQhN+Ih8Q3QEgA0HQGmogESAJEN0BIANBkBtqIBIgFRDdASADQdAbaiAOIBQQ3QEgA0GgGWogDSAZEN0BIANBsBpqIBMgFRDdASADQfAaaiARIBQQ3QEgA0HgGWogEiAMEN0BIANB4BtqIA4gFhDdASADQbAZaiANIBwQ3QEgA0HAGmogEyAUEN0BIANB8BlqIBEgDBDdASADQbAbaiASIBYQ3QEgA0HwG2ogDiAZEN0BIANBwBlqIA0gHRDdASADQYAaaiATIAwQ3QEgA0GAG2ogESAWEN0BIANBwBtqIBIgGRDdASADQYAcaiAOIBwQ3QEgAyADKQOwGiIbIAMpA6AZfCINIAMpA/AafCITIAMpA+AZfCIRIAMpA+AbfCISIAMpA6AaIhcgAykDkBl8Ig4gAykD4Bp8IhggAykDoBt8IgggAykD0Bl8IgsgAykDkBoiHiADKQOAGXwiDyADKQPQGnwiCiADKQOQG3wiECADKQPQG3wiGkIziCAaIBBUrSADQdgbaikDACAQIApUrSADQZgbaikDACAKIA9UrSADQdgaaikDACAPIB5UrSADQZgaaikDACADQYgZaikDAHx8fHx8fHx8Qg2GhHwiCkIziCAKIAtUrSALIAhUrSADQdgZaikDACAIIBhUrSADQagbaikDACAYIA5UrSADQegaaikDACAOIBdUrSADQagaaikDACADQZgZaikDAHx8fHx8fHx8fEINhoR8Ig5C/////////wODIhg3A6AcIAMgAykDwBoiHiADKQOwGXwiCCADKQPwGXwiCyADKQOwG3wiECADKQPwG3wiFyAOIBJUrSASIBFUrSADQegbaikDACARIBNUrSADQegZaikDACATIA1UrSADQfgaaikDACANIBtUrSADQbgaaikDACADQagZaikDAHx8fHx8fHx8fEINhiAOQjOIhHwiDUL/////////A4MiDzcDqBwgAyADKQOAGiIbIAMpA8AZfCITIAMpA4AbfCIRIAMpA8AbfCISIAMpA4AcfCIOIA0gF1StIBcgEFStIANB+BtqKQMAIBAgC1StIANBuBtqKQMAIAsgCFStIANB+BlqKQMAIAggHlStIANByBpqKQMAIANBuBlqKQMAfHx8fHx8fHx8Qg2GIA1CM4iEfCINQv////////8DgyIQNwOwHCADIA0gDlStIA4gElStIANBiBxqKQMAIBIgEVStIANByBtqKQMAIBEgE1StIANBiBtqKQMAIBMgG1StIANBiBpqKQMAIANByBlqKQMAfHx8fHx8fHx8Qg2GIA1CM4iEQhN+IBpC/////////wODfCINQv////////8DgyISNwOQHCADIApC/////////wODIA1CM4h8Ig43A5gcIANB0B1qIANBkBxqQQEQOCADQYAWaiADKQPQHSINIBYQ3QEgA0HQFmogAykD8B0iEyAJEN0BIANBoBdqIAMpA+gdIhEgFRDdASADQfAXaiADKQPgHSIIIBQQ3QEgA0HAGGogAykD2B0iCyAMEN0BIANB8BVqIA0gDBDdASADQcAWaiATIB8Q3QEgA0GQF2ogESAJEN0BIANB4BdqIAggFRDdASADQbAYaiALIBQQ3QEgA0GQFmogDSAZEN0BIANB4BZqIBMgFRDdASADQbAXaiARIBQQ3QEgA0GAGGogCCAMEN0BIANB0BhqIAsgFhDdASADQaAWaiANIBwQ3QEgA0HwFmogEyAUEN0BIANBwBdqIBEgDBDdASADQZAYaiAIIBYQ3QEgA0HgGGogCyAZEN0BIANBsBZqIA0gHRDdASADQYAXaiATIAwQ3QEgA0HQF2ogESAWEN0BIANBoBhqIAggGRDdASADQfAYaiALIBwQ3QEgA0HAEWogAykD4BYiHiADKQOQFnwiFSADKQOwF3wiDSADKQOAGHwiEyADKQPQGHwiESADKQPQFiIbIAMpA4AWfCIUIAMpA6AXfCIIIAMpA/AXfCILIAMpA8AYfCIJIAMpA8AWIiAgAykD8BV8IgogAykDkBd8IhogAykD4Bd8IhcgAykDsBh8Ih9CM4ggHyAXVK0gA0G4GGopAwAgFyAaVK0gA0HoF2opAwAgGiAKVK0gA0GYF2opAwAgCiAgVK0gA0HIFmopAwAgA0H4FWopAwB8fHx8fHx8fEINhoR8IhpCM4ggGiAJVK0gCSALVK0gA0HIGGopAwAgCyAIVK0gA0H4F2opAwAgCCAUVK0gA0GoF2opAwAgFCAbVK0gA0HYFmopAwAgA0GIFmopAwB8fHx8fHx8fHxCDYaEfCIIQv////////8DgyIJQhN+IiQgASkDICIUEN0BIANB8BFqIAMpA/AWIiIgAykDoBZ8IgsgAykDwBd8IgogAykDkBh8IhcgAykD4Bh8IhsgCCARVK0gESATVK0gA0HYGGopAwAgEyANVK0gA0GIGGopAwAgDSAVVK0gA0G4F2opAwAgFSAeVK0gA0HoFmopAwAgA0GYFmopAwB8fHx8fHx8fHxCDYYgCEIziIR8Ig1C/////////wODIh5CE34iICABKQMYIhUQ3QEgA0GwEmogAykDgBciIyADKQOwFnwiEyADKQPQF3wiESADKQOgGHwiCCADKQPwGHwiISANIBtUrSAbIBdUrSADQegYaikDACAXIApUrSADQZgYaikDACAKIAtUrSADQcgXaikDACALICJUrSADQfgWaikDACADQagWaikDAHx8fHx8fHx8fEINhiANQjOIhHwiC0L/////////A4MiF0ITfiIKIAEpAxAiDRDdASADQdAQaiALICFUrSAhIAhUrSADQfgYaikDACAIIBFUrSADQagYaikDACARIBNUrSADQdgXaikDACATICNUrSADQYgXaikDACADQbgWaikDAHx8fHx8fHx8fEINhiALQjOIhEITfiAfQv////////8Dg3wiEUL/////////A4MiCCABKQMIIhMQ3QEgA0GgEWogGkL/////////A4MgEUIziHwiCyABKQMAIhEQ3QEgA0HQEWogJCAVEN0BIANBgBJqICAgDRDdASADQcASaiAKIBMQ3QEgA0HgEGogCCAREN0BIANBsBFqIAtCE34gFBDdASADQaAVaiAJIBEQ3QEgA0HgEWogICAUEN0BIANBoBJqIAogFRDdASADQcAQaiAIIA0Q3QEgA0GQEWogCyATEN0BIANB4BJqIAkgExDdASADQZAVaiAeIBEQ3QEgA0GQEmogCiAUEN0BIANBsBBqIAggFRDdASADQYARaiALIA0Q3QEgA0GwE2ogCSANEN0BIANB0BJqIB4gExDdASADQYAVaiAXIBEQ3QEgA0GgEGogCCAUEN0BIANB8BBqIAsgFRDdASADQeAUaiAUIBhCE34iCRDdASADQaAUaiAVIA9CE34iCxDdASADQeATaiANIBBCE34iCBDdASADQfAMaiATIBIQ3QEgA0HgFWogDiAREN0BIANBsBRqIBUgCRDdASADQfATaiANIAsQ3QEgA0GADWogEiAREN0BIANBoBNqIBMgCBDdASADQfAUaiAOQhN+IBQQ3QEgA0HQFWogESAYEN0BIANB0BRqIBQgCxDdASADQZAUaiAVIAgQ3QEgA0HgDGogEiANEN0BIANBkBNqIA4gExDdASADQcAVaiARIA8Q3QEgA0HAFGogCCAUEN0BIANBgAxqIBIgFRDdASADQYATaiATIBgQ3QEgA0HQE2ogDiANEN0BIANBsBVqIBAgERDdASADQcATaiANIBgQ3QEgA0GgC2ogEiAUEN0BIANB8BJqIBMgDxDdASADQYAUaiAOIBUQ3QEgAyADKQPgESIbIAMpA6AVfCIOIAMpA6ASfCIYIAMpA8AQfCIIIAMpA5ARfCILIAMpA/ARIh4gAykDwBF8IhIgAykDsBJ8IgkgAykD0BB8Ig8gAykDoBF8IgogAykDgBIiICADKQPQEXwiECADKQPAEnwiGiADKQPgEHwiFyADKQOwEXwiH0IziCAfIBdUrSADQbgRaikDACAXIBpUrSADQegQaikDACAaIBBUrSADQcgSaikDACAQICBUrSADQYgSaikDACADQdgRaikDAHx8fHx8fHx8Qg2GhHwiEEIziCAQIApUrSAKIA9UrSADQagRaikDACAPIAlUrSADQdgQaikDACAJIBJUrSADQbgSaikDACASIB5UrSADQfgRaikDACADQcgRaikDAHx8fHx8fHx8fEINhoR8IglC/////////wODIhI3A/AcIAMgAykDkBUiHiADKQPgEnwiDyADKQOQEnwiCiADKQOwEHwiGiADKQOAEXwiFyAJIAtUrSALIAhUrSADQZgRaikDACAIIBhUrSADQcgQaikDACAYIA5UrSADQagSaikDACAOIBtUrSADQegRaikDACADQagVaikDAHx8fHx8fHx8fEINhiAJQjOIhHwiGEL/////////A4MiDjcD+BwgAyADKQPQEiIgIAMpA7ATfCIIIAMpA4AVfCILIAMpA6AQfCIJIAMpA/AQfCIbIBggF1StIBcgGlStIANBiBFqKQMAIBogClStIANBuBBqKQMAIAogD1StIANBmBJqKQMAIA8gHlStIANBmBVqKQMAIANB6BJqKQMAfHx8fHx8fHx8Qg2GIBhCM4iEfCIPQv////////8DgyIYNwOAHSADIA8gG1StIBsgCVStIANB+BBqKQMAIAkgC1StIANBqBBqKQMAIAsgCFStIANBiBVqKQMAIAggIFStIANB2BJqKQMAIANBuBNqKQMAfHx8fHx8fHx8Qg2GIA9CM4iEQhN+IB9C/////////wODfCILQv////////8DgyIINwPgHCADIBBC/////////wODIAtCM4h8Igs3A+gcIANB0B1qIANB4BxqEAsgA0HIHWogA0HwHWopAwA3AwAgA0HAHWogA0HoHWopAwA3AwAgA0G4HWogA0HgHWopAwA3AwAgA0GwHWogA0HYHWopAwA3AwAgAyADKQPQHTcDqB0gA0HQHWogA0GoHWpBAhA4IANBkA5qIBIgAykD8B0iH0ITfiIKEN0BIANB4A5qIA4gAykD6B0iGkITfiIXEN0BIANBsA9qIBggAykD4B0iEEITfiIbEN0BIANBgBBqIAggAykD2B0iCRDdASADQaANaiALIAMpA9AdIg8Q3QEgA0HwDmogEiAXEN0BIANBwA9qIA4gGxDdASADQZAQaiAYIAlCE34Q3QEgA0GQDWogCCAPEN0BIANBoA5qIAsgChDdASADQbANaiASIA8Q3QEgA0GADmogDiAKEN0BIANB0A5qIBggFxDdASADQaAPaiAIIBAQ3QEgA0HwD2ogCyAJEN0BIANB4A9qIBIgCRDdASADQcANaiAOIA8Q3QEgA0HwDWogGCAKEN0BIANBwA5qIAggGhDdASADQZAPaiALIBAQ3QEgA0GAD2ogEiAQEN0BIANB0A9qIA4gCRDdASADQdANaiAYIA8Q3QEgA0HgDWogCCAfEN0BIANBsA5qIAsgGhDdASADQYALaiADKQPAEyIrIAMpA7AVfCILIAMpA6ALfCIJIAMpA/ASfCIPIAMpA4AUfCIaIAMpA8AUIiUgAykDwBV8IhIgAykDgAx8Ig4gAykDgBN8IhggAykD0BN8IgggAykD0BQiKCADKQPQFXwiCiADKQOQFHwiECADKQPgDHwiFyADKQOQE3wiHyADKQOgFCImIAMpA+AUfCIbIAMpA+ATfCIeIAMpA/AMfCIgIAMpA+AVfCIhIAMpA/ATIicgAykDsBR8IiQgAykDgA18IiIgAykDoBN8IiMgAykD8BR8IipCM4ggKiAjVK0gA0H4FGopAwAgIyAiVK0gA0GoE2opAwAgIiAkVK0gA0GIDWopAwAgJCAnVK0gA0H4E2opAwAgA0G4FGopAwB8fHx8fHx8fEINhoR8IiRCM4ggJCAhVK0gISAgVK0gA0HoFWopAwAgICAeVK0gA0H4DGopAwAgHiAbVK0gA0HoE2opAwAgGyAmVK0gA0GoFGopAwAgA0HoFGopAwB8fHx8fHx8fHxCDYaEfCIbQjOIIBsgH1StIB8gF1StIANBmBNqKQMAIBcgEFStIANB6AxqKQMAIBAgClStIANBmBRqKQMAIAogKFStIANB2BRqKQMAIANB2BVqKQMAfHx8fHx8fHx8Qg2GhHwiEEIziCAQIAhUrSAIIBhUrSADQdgTaikDACAYIA5UrSADQYgTaikDACAOIBJUrSADQYgMaikDACASICVUrSADQcgUaikDACADQcgVaikDAHx8fHx8fHx8fEINhoR8IhdC/////////wODIhIgAykDgA4iJiADKQOwDXwiGCADKQPQDnwiCCADKQOgD3wiHyADKQPwD3wiHiADKQPgDiInIAMpA5AOfCIOIAMpA7APfCIKIAMpA4AQfCIgIAMpA6ANfCIhIAMpA8APIikgAykD8A58IiIgAykDkBB8IiMgAykDkA18IiUgAykDoA58IihCM4ggKCAlVK0gA0GoDmopAwAgJSAjVK0gA0GYDWopAwAgIyAiVK0gA0GYEGopAwAgIiApVK0gA0HID2opAwAgA0H4DmopAwB8fHx8fHx8fEINhoR8IiJCM4ggIiAhVK0gISAgVK0gA0GoDWopAwAgICAKVK0gA0GIEGopAwAgCiAOVK0gA0G4D2opAwAgDiAnVK0gA0HoDmopAwAgA0GYDmopAwB8fHx8fHx8fHxCDYaEfCIgQv////////8DgyIKQhN+IikQ3QEgA0HgC2ogEEL/////////A4MiDiADKQPADSIsIAMpA+APfCIQIAMpA/ANfCIhIAMpA8AOfCIjIAMpA5APfCIlICAgHlStIB4gH1StIANB+A9qKQMAIB8gCFStIANBqA9qKQMAIAggGFStIANB2A5qKQMAIBggJlStIANBiA5qKQMAIANBuA1qKQMAfHx8fHx8fHx8Qg2GICBCM4iEfCIIQv////////8DgyIfQhN+Ih4Q3QEgA0HADGogG0L/////////A4MiGCADKQPQDyItIAMpA4APfCIbIAMpA9ANfCIgIAMpA+ANfCImIAMpA7AOfCInIAggJVStICUgI1StIANBmA9qKQMAICMgIVStIANByA5qKQMAICEgEFStIANB+A1qKQMAIBAgLFStIANByA1qKQMAIANB6A9qKQMAfHx8fHx8fHx8Qg2GIAhCM4iEfCIIQv////////8DgyIhQhN+IhAQ3QEgA0GwCmogCCAnVK0gJyAmVK0gA0G4DmopAwAgJiAgVK0gA0HoDWopAwAgICAbVK0gA0HYDWopAwAgGyAtVK0gA0HYD2opAwAgA0GID2opAwB8fHx8fHx8fHxCDYYgCEIziIRCE34gKEL/////////A4N8IhtC/////////wODIgggJEL/////////A4MgFyAaVK0gGiAPVK0gA0GIFGopAwAgDyAJVK0gA0H4EmopAwAgCSALVK0gA0GoC2opAwAgCyArVK0gA0HIE2opAwAgA0G4FWopAwB8fHx8fHx8fHxCDYYgF0IziIRCE34gKkL/////////A4N8Ig9CM4h8IgsQ3QEgA0HgCWogIkL/////////A4MgG0IziHwiCSAPQv////////8DgyIPEN0BIANB8AtqIA4gKRDdASADQdAMaiAYIB4Q3QEgA0HACmogECALEN0BIANB8AlqIAggDxDdASADQZALaiASIAlCE34Q3QEgA0HQCWogCiAPEN0BIANB8ApqIBIgHhDdASADQdALaiAOIBAQ3QEgA0GwDGogGCAIEN0BIANBoApqIAkgCxDdASADQZAKaiAKIAsQ3QEgA0HACWogHyAPEN0BIANB4ApqIBIgEBDdASADQcALaiAOIAgQ3QEgA0GgDGogGCAJEN0BIANBkAxqIBggChDdASADQYAKaiAfIAsQ3QEgA0GwCWogISAPEN0BIANB0ApqIBIgCBDdASADQbALaiAOIAkQ3QEgAyADKQPwCiIbIAMpA9AJfCISIAMpA9ALfCIOIAMpA7AMfCIIIAMpA6AKfCILIAMpA+ALIh4gAykDgAt8IhggAykDwAx8IgkgAykDsAp8Ig8gAykD4Al8IgogAykD0AwiICADKQPwC3wiECADKQPACnwiGiADKQPwCXwiFyADKQOQC3wiH0IziCAfIBdUrSADQZgLaikDACAXIBpUrSADQfgJaikDACAaIBBUrSADQcgKaikDACAQICBUrSADQdgMaikDACADQfgLaikDAHx8fHx8fHx8Qg2GhHwiEEIziCAQIApUrSAKIA9UrSADQegJaikDACAPIAlUrSADQbgKaikDACAJIBhUrSADQcgMaikDACAYIB5UrSADQegLaikDACADQYgLaikDAHx8fHx8fHx8fEINhoR8IglC/////////wODIhg3A8gcIAMgAykDwAkiICADKQOQCnwiDyADKQPgCnwiCiADKQPAC3wiGiADKQOgDHwiFyAJIAtUrSALIAhUrSADQagKaikDACAIIA5UrSADQbgMaikDACAOIBJUrSADQdgLaikDACASIBtUrSADQfgKaikDACADQdgJaikDAHx8fHx8fHx8fEINhiAJQjOIhHwiEkL/////////A4MiCDcD0BwgAyADKQOACiIhIAMpA5AMfCIOIAMpA7AJfCIJIAMpA9AKfCIbIAMpA7ALfCIeIBIgF1StIBcgGlStIANBqAxqKQMAIBogClStIANByAtqKQMAIAogD1StIANB6ApqKQMAIA8gIFStIANByAlqKQMAIANBmApqKQMAfHx8fHx8fHx8Qg2GIBJCM4iEfCISQv////////8DgyILNwPYHCADIBIgHlStIB4gG1StIANBuAtqKQMAIBsgCVStIANB2ApqKQMAIAkgDlStIANBuAlqKQMAIA4gIVStIANBiApqKQMAIANBmAxqKQMAfHx8fHx8fHx8Qg2GIBJCM4iEQhN+IB9C/////////wODfCIOQv////////8DgyISNwO4HCADIBBC/////////wODIA5CM4h8Ig43A8AcIANB0B1qIANBuBxqQQEQOCADQZAJaiADKQPYHSIJIAwQ3QEgA0HACGogAykD4B0iCkITfiIfIB0Q3QEgA0HwB2ogAykD6B0iGkITfiIXIBwQ3QEgA0GgB2ogAykD8B0iG0ITfiIQIBkQ3QEgA0GwBmogAykD0B0iDyAWEN0BIANBoAlqIAlCE34gHRDdASADQdAIaiAfIBwQ3QEgA0GACGogFyAZEN0BIANBoAZqIA8gDBDdASADQbAHaiAQIBYQ3QEgA0GACWogCSAWEN0BIANBsAhqIAogDBDdASADQeAHaiAXIB0Q3QEgA0GQB2ogECAcEN0BIANBwAZqIA8gGRDdASADQfAIaiAJIBkQ3QEgA0GgCGogCiAWEN0BIANB0AdqIBogDBDdASADQYAHaiAQIB0Q3QEgA0HQBmogDyAcEN0BIANB4AhqIAkgHBDdASADQZAIaiAKIBkQ3QEgA0HAB2ogGiAWEN0BIANB8AZqIBsgDBDdASADQeAGaiAPIB0Q3QEgAyADKQOwCCIbIAMpA4AJfCIMIAMpA+AHfCIWIAMpA5AHfCIZIAMpA8AGfCIcIAMpA8AIIh4gAykDkAl8Ih0gAykD8Ad8IgkgAykDoAd8Ig8gAykDsAZ8IgogAykD0AgiICADKQOgCXwiECADKQOACHwiGiADKQOgBnwiFyADKQOwB3wiH0IziCAfIBdUrSADQbgHaikDACAXIBpUrSADQagGaikDACAaIBBUrSADQYgIaikDACAQICBUrSADQdgIaikDACADQagJaikDAHx8fHx8fHx8Qg2GhHwiEEIziCAQIApUrSAKIA9UrSADQbgGaikDACAPIAlUrSADQagHaikDACAJIB1UrSADQfgHaikDACAdIB5UrSADQcgIaikDACADQZgJaikDAHx8fHx8fHx8fEINhoR8Ih1C/////////wODNwO4HSADIAMpA6AIIhcgAykD8Ah8IgkgAykD0Ad8Ig8gAykDgAd8IgogAykD0AZ8IhogHSAcVK0gHCAZVK0gA0HIBmopAwAgGSAWVK0gA0GYB2opAwAgFiAMVK0gA0HoB2opAwAgDCAbVK0gA0G4CGopAwAgA0GICWopAwB8fHx8fHx8fHxCDYYgHUIziIR8IgxC/////////wODNwPAHSADIAMpA5AIIhsgAykD4Ah8IhYgAykDwAd8IhkgAykD8AZ8IhwgAykD4AZ8Ih0gDCAaVK0gGiAKVK0gA0HYBmopAwAgCiAPVK0gA0GIB2opAwAgDyAJVK0gA0HYB2opAwAgCSAXVK0gA0GoCGopAwAgA0H4CGopAwB8fHx8fHx8fHxCDYYgDEIziIR8IgxC/////////wODNwPIHSADIAwgHVStIB0gHFStIANB6AZqKQMAIBwgGVStIANB+AZqKQMAIBkgFlStIANByAdqKQMAIBYgG1StIANBmAhqKQMAIANB6AhqKQMAfHx8fHx8fHx8Qg2GIAxCM4iEQhN+IB9C/////////wODfCIMQv////////8DgzcDqB0gAyAQQv////////8DgyAMQjOIfDcDsB0gA0HgHGogA0GoHWoQWyADQYgdaiABEFtBACEBQQEhAgNAIAIgA0GIHWogAWotAAAgA0HgHGogAWotAABzQX9zIgRB8AFxQQR2IARxIgRBAnYgBHEiBEEBdiAEcXEhAiABQQFqIgFBIEcNAAsgAiEHIANC8P///////z8gFH0iHEL/////////A4NC8P///////z8gFX0iFkIziHwiDDcD8B0gAyAWQv////////8Dg0Lw////////PyANfSIZQjOIfCIWNwPoHSADIBlC/////////wODQvD///////8/IBN9IhRCM4h8Ihk3A+AdIAMgFEL/////////A4NC0P3//////z8gEX0iFUIziHwiFDcD2B0gAyAcQjOIQhN+IBVC/////////wODfCIVNwPQHSADQeAcaiADQagdahBbIANBiB1qIANB0B1qEFtBACEBQQEhAgNAIAIgA0GIHWogAWotAAAgA0HgHGogAWotAABzQX9zIgRB8AFxQQR2IARxIgRBAnYgBHEiBEEBdiAEcXEhAiABQQFqIgFBIEcNAAsgA0GwBWogDEKg1p+Q2oCxywAQ3QEgA0GABmogFUKdsbzk37Q1EN0BIANB4ARqIBZCut+W3LXDuscAEN0BIANBwANqIBRCsMG60PTkhgMQ3QEgA0GQBGogGUKn7PrCtffqGRDdASADQcAFaiAMQqen+/Sb6vYHEN0BIANBkAZqIBVCsMG60PTkhgMQ3QEgA0HwBGogFkKg1p+Q2oCxywAQ3QEgA0HQA2ogFEKn7PrCtffqGRDdASADQaAEaiAZQrrflty1w7rHABDdASADQaAFaiAMQrrflty1w7rHABDdASADQfAFaiAVQuCY9OXp6/sDEN0BIANB0ARqIBZCp+z6wrX36hkQ3QEgA0GwA2ogFEKdsbzk37Q1EN0BIANBgARqIBlCsMG60PTkhgMQ3QEgA0GQBWogDEKn7PrCtffqGRDdASADQeAFaiAVQp6ZgbTasuEDEN0BIANBwARqIBZCsMG60PTkhgMQ3QEgA0GgA2ogFELgmPTl6ev7AxDdASADQfADaiAZQp2xvOTftDUQ3QEgA0GABWogDEKwwbrQ9OSGAxDdASADQdAFaiAVQp34k8Ckhq4BEN0BIANBsARqIBZCnbG85N+0NRDdASADQZADaiAUQp6ZgbTasuEDEN0BIANB4ANqIBlC4Jj05enr+wMQ3QEgAiEEIAMgAykD8AUiCiADKQOgBXwiDCADKQPQBHwiFiADKQOwA3wiGSADKQOABHwiFCADKQOABiIQIAMpA7AFfCIVIAMpA+AEfCINIAMpA8ADfCITIAMpA5AEfCIRIAMpA5AGIhogAykDwAV8IhwgAykD8AR8Ih0gAykD0AN8IgkgAykDoAR8Ig9CM4ggDyAJVK0gA0GoBGopAwAgCSAdVK0gA0HYA2opAwAgHSAcVK0gA0H4BGopAwAgHCAaVK0gA0HIBWopAwAgA0GYBmopAwB8fHx8fHx8fEINhoR8IhxCM4ggHCARVK0gESATVK0gA0GYBGopAwAgEyANVK0gA0HIA2opAwAgDSAVVK0gA0HoBGopAwAgFSAQVK0gA0G4BWopAwAgA0GIBmopAwB8fHx8fHx8fHxCDYaEfCIVQv////////8DgzcD4B0gAyADKQPgBSIJIAMpA5AFfCINIAMpA8AEfCITIAMpA6ADfCIRIAMpA/ADfCIdIBUgFFStIBQgGVStIANBiARqKQMAIBkgFlStIANBuANqKQMAIBYgDFStIANB2ARqKQMAIAwgClStIANB+AVqKQMAIANBqAVqKQMAfHx8fHx8fHx8Qg2GIBVCM4iEfCIMQv////////8DgzcD6B0gAyADKQPQBSIKIAMpA4AFfCIWIAMpA7AEfCIZIAMpA5ADfCIUIAMpA+ADfCIVIAwgHVStIB0gEVStIANB+ANqKQMAIBEgE1StIANBqANqKQMAIBMgDVStIANByARqKQMAIA0gCVStIANB6AVqKQMAIANBmAVqKQMAfHx8fHx8fHx8Qg2GIAxCM4iEfCIMQv////////8DgzcD8B0gAyAMIBVUrSAVIBRUrSADQegDaikDACAUIBlUrSADQZgDaikDACAZIBZUrSADQbgEaikDACAWIApUrSADQdgFaikDACADQYgFaikDAHx8fHx8fHx8fEINhiAMQjOIhEITfiAPQv////////8Dg3wiDEL/////////A4M3A9AdIAMgHEL/////////A4MgDEIziHw3A9gdIANB4BxqIANBqB1qEFsgA0GIHWogA0HQHWoQW0EAIQFBASECA0AgAiADQYgdaiABai0AACADQeAcaiABai0AAHNBf3MiBUHwAXFBBHYgBXEiBUECdiAFcSIFQQF2IAVxcSECIAFBAWoiAUEgRw0ACyADQaACaiAYQhN+IhlCnfiTwKSGrgEQ3QEgA0HQAWogCEITfiIWQp6ZgbTasuEDEN0BIANBgAFqIAtCE34iDELgmPTl6ev7AxDdASADQTBqIBJCnbG85N+0NRDdASADQfACaiAOQrDButD05IYDEN0BIANBsAJqIBlCnpmBtNqy4QMQ3QEgA0HgAWogFkLgmPTl6ev7AxDdASADQZABaiAMQp2xvOTftDUQ3QEgA0FAayASQrDButD05IYDEN0BIANBgANqIA5CE35CnfiTwKSGrgEQ3QEgA0GQAmogGEKwwbrQ9OSGAxDdASADQcABaiAWQp34k8Ckhq4BEN0BIANB8ABqIAxCnpmBtNqy4QMQ3QEgA0EgaiASQuCY9OXp6/sDEN0BIANB4AJqIA5CnbG85N+0NRDdASADQYACaiAYQp2xvOTftDUQ3QEgA0GwAWogCEKwwbrQ9OSGAxDdASADQeAAaiAMQp34k8Ckhq4BEN0BIANBEGogEkKemYG02rLhAxDdASADQdACaiAOQuCY9OXp6/sDEN0BIANB8AFqIBhC4Jj05enr+wMQ3QEgA0GgAWogCEKdsbzk37Q1EN0BIANB0ABqIAtCsMG60PTkhgMQ3QEgAyASQp34k8Ckhq4BEN0BIANBwAJqIA5CnpmBtNqy4QMQ3QEgA0HIHGoiASAYQgAgAiAEcq1C/wGDfSIMIBggAykDwAEiECADKQOQAnwiGSADKQNwfCIUIAMpAyB8IhUgAykD4AJ8Ig0gAykD0AEiGiADKQOgAnwiFiADKQOAAXwiEyADKQMwfCIRIAMpA/ACfCIcIAMpA+ABIhcgAykDsAJ8Ih0gAykDkAF8IgkgAykDQHwiDyADKQOAA3wiCkIziCAKIA9UrSADQYgDaikDACAPIAlUrSADQcgAaikDACAJIB1UrSADQZgBaikDACAdIBdUrSADQegBaikDACADQbgCaikDAHx8fHx8fHx8Qg2GhHwiHUIziCAdIBxUrSAcIBFUrSADQfgCaikDACARIBNUrSADQThqKQMAIBMgFlStIANBiAFqKQMAIBYgGlStIANB2AFqKQMAIANBqAJqKQMAfHx8fHx8fHx8Qg2GhHwiE0L/////////A4OFg4UiFjcDACADQdAcaiICIAggCCADKQOwASIPIAMpA4ACfCIRIAMpA2B8IhwgAykDEHwiGCADKQPQAnwiCSATIA1UrSANIBVUrSADQegCaikDACAVIBRUrSADQShqKQMAIBQgGVStIANB+ABqKQMAIBkgEFStIANByAFqKQMAIANBmAJqKQMAfHx8fHx8fHx8Qg2GIBNCM4iEfCIUQv////////8Dg4UgDIOFIhk3AwAgA0HYHGoiBSALIAsgAykDoAEiECADKQPwAXwiFSADKQNQfCINIAMpAwB8IhMgAykDwAJ8IgggFCAJVK0gCSAYVK0gA0HYAmopAwAgGCAcVK0gA0EYaikDACAcIBFUrSADQegAaikDACARIA9UrSADQbgBaikDACADQYgCaikDAHx8fHx8fHx8fEINhiAUQjOIhHwiEUL/////////A4OFIAyDhSIUNwMAIANBwBxqIgYgHUL/////////A4MgESAIVK0gCCATVK0gA0HIAmopAwAgEyANVK0gA0EIaikDACANIBVUrSADQdgAaikDACAVIBBUrSADQagBaikDACADQfgBaikDAHx8fHx8fHx8fEINhiARQjOIhEITfiAKQv////////8Dg3wiDUIziHwgDoUgDIMgDoUiFTcDACADIA1C/////////wODIBKFIAyDIBKFIg03A7gcIANBiB1qIANBuBxqEFsgBSAUQgAgAy0AiB1BAXGtQv8Bg30iDCAUQvD///////8/IBR9IhNC/////////wODQvD///////8/IBl9IhFCM4h8hYOFNwMAIAIgGSAZIBFC/////////wODQvD///////8/IBZ9IhRCM4h8hSAMg4U3AwAgASAWIBYgFEL/////////A4NC8P///////z8gFX0iGUIziHyFIAyDhTcDACAGIBlC/////////wODQtD9//////8/IA19IhZCM4h8IBWFIAyDIBWFNwMAIAMgE0IziEITfiAWQv////////8Dg3wgDYUgDIMgDYU3A7gcIAAgBCAHcjoAACAAIAMpA7gcNwMIIABBEGogBikDADcDACAAQRhqIAEpAwA3AwAgAEEgaiACKQMANwMAIABBKGogBSkDADcDACADQaAeaiQAC4xMAVZ+IAAgASkDeCICIAEpA0giGiABKQMAIhcgASkDCCILQjiJIAtCB4iFIAtCP4mFfHwgASkDcCIDQgOJIANCBoiFIANCLYmFfCIEQjiJIARCB4iFIARCP4mFfCABKQNQIj4gASkDECIJQjiJIAlCB4iFIAlCP4mFIAt8fCACQgaIIAJCA4mFIAJCLYmFfCIHIAEpA0AiEyAaQgeIIBpCOImFIBpCP4mFfHwgASkDMCIUIAEpAzgiQkI4iSBCQgeIhSBCQj+JhXwgAnwgASkDaCJEIAEpAyAiFSABKQMoIkNCOIkgQ0IHiIUgQ0I/iYV8fCABKQNYIj8gASkDGCIKQjiJIApCB4iFIApCP4mFIAl8fCAEQgaIIARCA4mFIARCLYmFfCIGQgOJIAZCBoiFIAZCLYmFfCIFQgOJIAVCBoiFIAVCLYmFfCIIQgOJIAhCBoiFIAhCLYmFfCIMfCADQgeIIANCOImFIANCP4mFIER8IAh8IAEpA2AiQEI4iSBAQgeIhSBAQj+JhSA/fCAFfCA+QgeIID5COImFID5CP4mFIBp8IAZ8IBNCB4ggE0I4iYUgE0I/iYUgQnwgBHwgFEIHiCAUQjiJhSAUQj+JhSBDfCADfCAV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CyAJEN0BIANBkAdqIAIpAxAiByAFEN0BIANB0AdqIAEpAxAiCiAEEN0BIANBkAZqIAxC+b3TABDdASADQbAGaiAIQoHLtc73xfoGEN0BIANBgAZqIAMpA5AHIhsgAykDgAh8IhQgAykD0Ad8Ig4gAykDkAZ8Ig8gAykDsAZ8IhUgAykDwAYiEyAQfCIWQjSIIBYgE1StIANByAZqKQMAIBAgBlStIAYgDVStIANB2AZqKQMAIA0gEVStIANByAdqKQMAIANBiAdqKQMAfHx8fCASQjSIfHx8fCIcQgyGhHwiEUKb/NGSsbTHAn5C/////////weDIg1C7afX56XjmAEQ3QEgA0HACGogByALEN0BIANBkAhqIAogCRDdASADQaAHaiACKQMYIgYgBRDdASADQeAHaiABKQMYIhAgBBDdASADQaAGaiAIQvm90wAQ3QEgA0HwBWogDUKBy7XO98X6BhDdASADQeAFaiADKQOQCCIdIAMpA8AIfCISIAMpA6AHfCITIAMpA+AHfCIWIAMpA6AGfCIaIAMpA/AFfCIXIAMpA4AGIhggEXwiGUI0iCAZIBhUrSADQYgGaikDACARIBVUrSAVIA9UrSADQbgGaikDACAPIA5UrSADQZgGaikDACAOIBRUrSADQdgHaikDACAUIBtUrSADQZgHaikDACADQYgIaikDAHx8fHx8fHx8IBxCNIh8fHx8Ih5CDIaEfCIPQpv80ZKxtMcCfkL/////////B4MiFELtp9fnpeOYARDdASADQfAIaiAKIAcQ3QEgA0HQCGogBiALEN0BIANBoAhqIBAgCRDdASADQbAHaiACKQMgIg4gBRDdASADQfAHaiABKQMgIgUgBBDdASADQbAFaiANQvm90wAQ3QEgA0HQBWogFEKBy7XO98X6BhDdASADQaAFaiADKQPQCCIhIAMpA/AIfCIVIAxCLIZ8IhEgAykDoAh8IhsgAykDsAd8IhwgAykD8Ad8IhggAykDsAV8IhkgAykD0AV8Ih8gAykD4AUiBCAPfCIgQjSIICAgBFStIANB6AVqKQMAIA8gF1StIBcgGlStIANB+AVqKQMAIBogFlStIANBqAZqKQMAIBYgE1StIANB6AdqKQMAIBMgElStIANBqAdqKQMAIBIgHVStIANBmAhqKQMAIANByAhqKQMAfHx8fHx8fHx8fCAeQjSIfHx8fCIdQgyGhHwiD0Kb/NGSsbTHAn5C/////////weDIgRC7afX56XjmAEQ3QEgA0GgCWogBiAKEN0BIANBgAlqIBAgBxDdASADQeAIaiAOIAsQ3QEgA0GwCGogBSAJEN0BIANBwAVqIBRC+b3TABDdASADQZAFaiAEQoHLtc73xfoGEN0BIANBwAlqIBAgBhDdASADQbAJaiAOIAoQ3QEgA0GQCWogBSAHEN0BIANBgAVqIARC+b3TABDdASADQeAJaiAOIBAQ3QEgA0HQCWogBSAGEN0BIANB8AlqIAUgDhDdASADQfAEaiAEQiyGIh4gAykD8Al8IgUgAykD0AkiICADKQPgCXwiCSAUQiyGfCILIAMpA7AJIiIgAykDwAl8IgcgAykDkAl8IgogDUIshnwiBiADKQOABXwiECADKQOACSIjIAMpA6AJfCIOIAMpA+AIfCISIAMpA7AIfCITIAhCLIZ8IhYgAykDwAV8IhogAykDkAV8IhcgAykDoAUiJCAPfCIlQjSIICUgJFStIANBqAVqKQMAIA8gH1StIB8gGVStIANB2AVqKQMAIBkgGFStIANBuAVqKQMAIBggHFStIANB+AdqKQMAIBwgG1StIANBuAdqKQMAIBsgEVStIANBqAhqKQMAIBEgFVStIBUgIVStIANB2AhqKQMAIANB+AhqKQMAfHwgDEIUiHx8fHx8fHx8fHx8fCAdQjSIfHx8fCIPQgyGhHwiDEI0iCAMIBdUrSAXIBpUrSADQZgFaikDACAaIBZUrSADQcgFaikDACAWIBNUrSATIBJUrSADQbgIaikDACASIA5UrSADQegIaikDACAOICNUrSADQYgJaikDACADQagJaikDAHx8fHx8fCAIQhSIfHx8fHx8IA9CNIh8fCIOQgyGhHwiCEI0iCAIIBBUrSAQIAZUrSADQYgFaikDACAGIApUrSAKIAdUrSADQZgJaikDACAHICJUrSADQbgJaikDACADQcgJaikDAHx8fHwgDUIUiHx8fHwgDkI0iHx8IgpCDIaEfCIHQjSIIAcgC1StIAsgCVStIAkgIFStIANB2AlqKQMAIANB6AlqKQMAfHwgFEIUiHx8IApCNIh8fCILQgyGhHwiCUI0iCAJIAVUrSAFIB5UrSADQfgJaikDACAEQhSIfHwgC0I0iHx8QgyGhCAJQv////////8HgyAHQv////////8HgyAIQv////////8HgyAMQv////////8Hg0KT2KiY2pznfnwiBEI/h3xC/7TKsYi6hXl8IgxCP4d8QofCrH98IgtCP4d8Ig9CP4d8QoCAgICAgHx8IhZCP4ciDULtp9fnpeOYAYMgBEL/////////B4N8IglC/////////weDIgRCu6LLyt7M9AQQ3QEgA0HgBGogAykD8AQiCkKb/NGSsbTHAn5C/////////weDIgVC7afX56XjmAEQ3QEgA0GwBGogBEKfzfqt8fjYBhDdASADQfADaiANQoHLtc73xfoGgyAMQv////////8Hg3wgCUI0iHwiBkL/////////B4MiDEK7osvK3sz0BBDdASADQdAEaiAFQoHLtc73xfoGEN0BIANB4ANqIAMpA/ADIhUgAykDsAR8IgggAykD0AR8IgcgCiADKQPgBCIJfCIKQjSIIAogCVStIANB6ARqKQMAIANB+ARqKQMAfHwiEUIMhoR8IgpCm/zRkrG0xwJ+Qv////////8HgyIJQu2n1+el45gBEN0BIANBoARqIARChOyh29zM7wIQ3QEgA0GwA2ogDEKfzfqt8fjYBhDdASADQcAEaiAFQvm90wAQ3QEgA0HwAmogDUL5vdMAgyALQv////////8Hg3wgBkI0iHwiEkL/////////B4MiC0K7osvK3sz0BBDdASADQdADaiAJQoHLtc73xfoGEN0BIANB4AJqIAMpA7ADIhogAykDoAR8IgYgAykDwAR8IhAgAykD8AJ8IhQgAykD0AN8Ig4gAykD4AMiEyAKfCIXQjSIIBcgE1StIANB6ANqKQMAIAogB1StIAcgCFStIANB2ARqKQMAIAggFVStIANB+ANqKQMAIANBuARqKQMAfHx8fCARQjSIfHx8fCIXQgyGhHwiCkKb/NGSsbTHAn5C/////////weDIghC7afX56XjmAEQ3QEgA0GQBGogBEL/wvS57J33ARDdASADQaADaiAMQoTsodvczO8CEN0BIANBsAJqIAtCn836rfH42AYQ3QEgA0HwAWogD0L/////////B4MgEkI0iHwiG0L/////////B4MiB0K7osvK3sz0BBDdASADQcADaiAJQvm90wAQ3QEgA0HQAmogCEKBy7XO98X6BhDdASADQeABaiADKQOgAyIcIAMpA5AEfCIPIAMpA7ACfCIVIAMpA/ABfCIRIAMpA8ADfCISIAMpA9ACfCITIAMpA+ACIhggCnwiGUI0iCAZIBhUrSADQegCaikDACAKIA5UrSAOIBRUrSADQdgDaikDACAUIBBUrSADQfgCaikDACAQIAZUrSADQcgEaikDACAGIBpUrSADQbgDaikDACADQagEaikDAHx8fHx8fHx8IBdCNIh8fHx8IhhCDIaEfCIGQpv80ZKxtMcCfkL/////////B4MiCkLtp9fnpeOYARDdASADQYAEaiAEQprh8NuRqAIQ3QEgA0GQA2ogDEL/wvS57J33ARDdASADQaACaiALQoTsodvczO8CEN0BIANBsAFqIAdCn836rfH42AYQ3QEgA0HwAGogDUKAgICAgIAEgyAWfCAbQjSIfEL/////////B4MiBEK7osvK3sz0BBDdASADQcACaiAIQvm90wAQ3QEgA0HQAWogCkKBy7XO98X6BhDdASADQeAAaiADKQOQAyIdIAMpA4AEfCIQIAVCLIZ8IhQgAykDoAJ8Ig4gAykDsAF8IhYgAykDcHwiGiADKQPAAnwiFyADKQPQAXwiGyADKQPgASINIAZ8IhlCNIggGSANVK0gA0HoAWopAwAgBiATVK0gEyASVK0gA0HYAmopAwAgEiARVK0gA0HIA2opAwAgESAVVK0gA0H4AWopAwAgFSAPVK0gA0G4AmopAwAgDyAcVK0gA0GoA2opAwAgA0GYBGopAwB8fHx8fHx8fHx8IBhCNIh8fHx8Ih5CDIaEfCIGQpv80ZKxtMcCfkL/////////B4MiDULtp9fnpeOYARDdASADQYADaiAMQprh8NuRqAIQ3QEgA0GQAmogC0L/wvS57J33ARDdASADQaABaiAHQoTsodvczO8CEN0BIANBMGogBEKfzfqt8fjYBhDdASADQcABaiAKQvm90wAQ3QEgA0HQAGogDUKBy7XO98X6BhDdASADQYACaiALQprh8NuRqAIQ3QEgA0GQAWogB0L/wvS57J33ARDdASADQSBqIARChOyh29zM7wIQ3QEgA0FAayANQvm90wAQ3QEgA0GAAWogB0Ka4fDbkagCEN0BIANBEGogBEL/wvS57J33ARDdASADIARCmuHw25GoAhDdASAAIA1CLIYiISADKQMAfCIEIAMpAxAiICADKQOAAXwiDCAKQiyGfCILIAMpA5ABIiIgAykDgAJ8IgcgAykDIHwiDyAIQiyGfCIVIAMpA0B8IhEgAykDkAIiIyADKQOAA3wiEiADKQOgAXwiEyADKQMwfCIcIAlCLIZ8IhggAykDwAF8IhkgAykDUHwiHyADKQNgIiQgBnwiJUI0iCAlICRUrSADQegAaikDACAGIBtUrSAbIBdUrSADQdgBaikDACAXIBpUrSADQcgCaikDACAaIBZUrSADQfgAaikDACAWIA5UrSADQbgBaikDACAOIBRUrSADQagCaikDACAUIBBUrSAQIB1UrSADQZgDaikDACADQYgEaikDAHx8IAVCFIh8fHx8fHx8fHx8fHwgHkI0iHx8fHwiBkIMhoR8IgVCNIggBSAfVK0gHyAZVK0gA0HYAGopAwAgGSAYVK0gA0HIAWopAwAgGCAcVK0gHCATVK0gA0E4aikDACATIBJUrSADQagBaikDACASICNUrSADQZgCaikDACADQYgDaikDAHx8fHx8fCAJQhSIfHx8fHx8IAZCNIh8fCIGQgyGhHwiCUI0iCAJIBFUrSARIBVUrSADQcgAaikDACAVIA9UrSAPIAdUrSADQShqKQMAIAcgIlStIANBmAFqKQMAIANBiAJqKQMAfHx8fCAIQhSIfHx8fCAGQjSIfHwiB0IMhoR8IghCNIggCCALVK0gCyAMVK0gDCAgVK0gA0EYaikDACADQYgBaikDAHx8IApCFIh8fCAHQjSIfHwiC0IMhoR8IgxCNIggDCAEVK0gBCAhVK0gA0EIaikDACANQhSIfHwgC0I0iHx8QgyGhCAMQv////////8HgyAIQv////////8HgyAJQv////////8HgyAFQv////////8Hg0KT2KiY2pznfnwiBUI/h3xC/7TKsYi6hXl8IgxCP4d8QofCrH98IglCP4d8IgtCP4d8QoCAgICAgHx8IghCP4ciBELtp9fnpeOYAYMgBUL/////////B4N8IgVC/////////weDNwMAIAAgBEKBy7XO98X6BoMgDEL/////////B4N8IAVCNIh8IgVC/////////weDNwMIIAAgBEL5vdMAgyAJQv////////8Hg3wgBUI0iHwiBUL/////////B4M3AxAgACALQv////////8HgyAFQjSIfCIF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/gODIAZCOIiEhIQ3AzAgASABKQM4IgZCOIYgBkIohkKAgICAgIDA/wCDhCAGQhiGQoCAgICA4D+DIAZCCIZCgICAgPAfg4SEIAZCCIhCgICA+A+DIAZCGIhCgID8B4OEIAZCKIhCgP4DgyAGQjiIhISENwM4IAEgASkDQCIGQjiGIAZCKIZCgICAgICAwP8Ag4QgBkIYhkKAgICAgOA/gyAGQgiGQoCAgIDwH4OEhCAGQgiIQoCAgPgPgyAGQhiIQoCA/AeDhCAGQiiIQoD+A4MgBkI4iISEhDcDQCABIAEpA0giBkI4hiAGQiiGQoCAgICAgMD/AIOEIAZCGIZCgICAgIDgP4MgBkIIhkKAgICA8B+DhIQgBkIIiEKAgID4D4MgBkIYiEKAgPwHg4QgBkIoiEKA/gODIAZCOIiEhIQ3A0ggASABKQNQIgZCOIYgBkIohkKAgICAgIDA/wCDhCAGQhiGQoCAgICA4D+DIAZCCIZCgICAgPAfg4SEIAZCCIhCgICA+A+DIAZCGIhCgID8B4OEIAZCKIhCgP4DgyAGQjiIhISENwNQIAEgASkDWCIGQjiGIAZCKIZCgICAgICAwP8Ag4QgBkIYhkKAgICAgOA/gyAGQgiGQoCAgIDwH4OEhCAGQgiIQoCAgPgPgyAGQhiIQoCA/AeDhCAGQiiIQoD+A4MgBkI4iISEhDcDWCABIAEpA2AiBkI4hiAGQiiGQoCAgICAgMD/AIOEIAZCGIZCgICAgIDgP4MgBkIIhkKAgICA8B+DhIQgBkIIiEKAgID4D4MgBkIYiEKAgPwHg4QgBkIoiEKA/gODIAZCOIiEhIQ3A2AgASABKQNoIgZCOIYgBkIohkKAgICAgIDA/wCDhCAGQhiGQoCAgICA4D+DIAZCCIZCgICAgPAfg4SEIAZCCIhCgICA+A+DIAZCGIhCgID8B4OEIAZCKIhCgP4DgyAGQjiIhISENwNoIAEgASkDcCIGQjiGIAZCKIZCgICAgICAwP8Ag4QgBkIYhkKAgICAgOA/gyAGQgiGQoCAgIDwH4OEhCAGQgiIQoCAgPgPgyAGQhiIQoCA/AeDhCAGQiiIQoD+A4MgBkI4iISEhDcDcCABIAEpA3giBkI4hiAGQiiGQoCAgICAgMD/AIOEIAZCGIZCgICAgIDgP4MgBkIIhkKAgICA8B+DhIQgBkII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IAZB0AVqIgopAwA3AwAgBkGABWoiHCAGQcgFaiILKQMANwMAIAZB+ARqIh0gBkHABWoiDCkDADcDACAGQfAEaiIeIAZBuAVqIgkpAwA3AwAgBkHoBGoiISAGQbAFaiINKQMANwMAIAZB4ARqIiIgBkGoBWoiEykDADcDACAGQdgEaiIjIAZBoAVqIhQpAwA3AwAgBiAGKQOYBTcD0AQgBUECTwRAIAZB0ApqIRUgBkGYC2ohF0EBIQEDQCAGQfgOaiAGQZADakGAARCqAhogBkHwB2ogBkH4DmpBgAEQqgIaIAZB6AdqIgcgBkHIBGopAwA3AwAgBkHgB2oiCCAGQcAEaikDADcDACAGQdgHaiIOIAZBuARqKQMANwMAIAZB0AdqIg8gBkGwBGopAwA3AwAgBkHIB2oiECAGQagEaikDADcDACAGQcAHaiIRIAZBoARqKQMANwMAIAZBuAdqIhIgBkGYBGopAwA3AwAgBiAGKQOQBDcDsAcgBkH4DmogKUGAARCqAhogBkHYBWogBkH4DmpBgAEQqgIaIAZB+A5qIAZB0AFqQYABEKoCGiAGQaANaiAGQfgOakGAARCqAhogBkH4CGogLTcDACAEIAYpA7AHNwMAIARBCGogEikDADcDACAEQRBqIBEpAwA3AwAgBEEYaiAQKQMANwMAIARBIGogDykDADcDACAEQShqIA4pAwA3AwAgBEEwaiAIKQMANwMAIARBOGogBykDADcDACAGICw3A/AIIAZBwAlqICQ2AgAgHyAGQfAHakGAARCqAhogICAGQdgFakGAARCqAhogFSAuNwMAIAZByApqIgcgLzcDACACIAYpA9ACNwMAIAJBCGoiCCAGQdgCaikDADcDACACQRBqIg4gBkHgAmopAwA3AwAgAkEYaiIPIAZB6AJqKQMANwMAIAJBIGoiECAGQfACaikDADcDACACQShqIhEgBkH4AmopAwA3AwAgAkEwaiISIAZBgANqKQMANwMAIAJBOGoiFiAGQYgDaikDADcDACAXICU2AgAgGSAGQaANakGAARCqAiEYIAZB8AhqIAZB0ARqQcAAEBkgBkHYBWogBkHwCGpB2AEQqgIaIBQgCCkDADcDACATIA4pAwA3AwAgDSAPKQMANwMAIAkgECkDADcDACAMIBEpAwA3AwAgCyASKQMANwMAIAogFikDADcDACAGIAIpAwA3A5gFIAcpAwAhKiAVKQMAISsgFygCACEIIAZB+A5qIBhBgAEQqgIaIAZB8AdqIAZB+A5qQYABEKoCGiAGQagNaiIHICs3AwAgAyAGKQOYBTcDACADQQhqIBQpAwA3AwAgA0EQaiATKQMANwMAIANBGGogDSkDADcDACADQSBqIAkpAwA3AwAgA0EoaiAMKQMANwMAIANBMGogCykDADcDACADQThqIAopAwA3AwAgBiAqNwOgDSAGQfANaiAINgIAIBogBkHwB2pBgAEQqgIaIAZB+A5qIAZB2AVqQdgBEKoCGiAGQbAHaiAGQfgOahBCIAZBoA1qIAZBsAdqQcAAEBkgBkH4DmogBkGgDWpB2AEQqgIaIAZB8AdqIAZB+A5qEEIgBkGwD2oiCCAGQagIaikDADcDACAGQagPaiIOIAZBoAhqKQMANwMAIAZBoA9qIg8gBkGYCGopAwA3AwAgBkGYD2oiECAGQZAIaikDADcDACAGQZAPaiIRIAZBiAhqKQMANwMAIAZBiA9qIhIgBkGACGopAwA3AwAgBkGAD2oiFiAGQfgHaikDADcDACAGIAYpA/AHNwP4DiAGQdgNaiIYIAgpAwA3AwAgBkHQDWoiCCAOKQMANwMAIAZByA1qIg4gDykDADcDACAGQcANaiIPIBApAwA3AwAgBkG4DWoiECARKQMANwMAIAZBsA1qIhEgEikDADcDACAHIBYpAwA3AwAgBiAGKQP4DjcDoA0gGyAYKQMANwMAIBwgCCkDADcDACAdIA4pAwA3AwAgHiAPKQMANwMAICEgECkDADcDACAiIBEpAwA3AwAgIyAHKQMANwMAIAYgBikDoA03A9AEIAFBAWohAUEAIQcDQCAGQQhqIAdqIgggCC0AACAGQdAEaiAHai0AAHM6AAAgB0EBaiIHQcAASQ0ACyABIAVJDQALC0HAAEEBEOoCIgFFDQEgAUHAACAGQQhqQcAAELIBIABCwICAgIAINwIEIAAgATYCACAGQdAQaiQADwtB5PTBACAHQYABEPgBAAtBwABBARCJAwALgx8CIH8QfiMAQeAOayICJAAgAUEwaiILKQMAISIgAUE4aiIMKQMAISMgAUHIAGoiDSkDACEkIAFBQGsiDikDACElIAEpAyghJiABKQMAIS0gASkDCCErIAEpAxAhLiABKQMgIS8gASkDGCEwIAJB2A5qIg8gAUHwAGoiECkDADcDACACQdAOaiIRIAFB6ABqIhIpAwA3AwAgAkHIDmoiEyABQeAAaiIUKQMANwMAIAJBwA5qIhUgAUHYAGoiFikDADcDACACIAEpA1A3A7gOIAJBqAtqIAFB+ABqQfCUyAAQKSACQegMaiIDIA8pAwA3AwAgAkHgDGoiBCARKQMANwMAIAJB2AxqIgUgEykDADcDACACQdAMaiIGIBUpAwA3AwAgAiACKQO4DjcDyAwgAkHQAGogJELw////////PyAvfXwiJ0L/////////A4MgJULw////////PyAwfXwiKEIziHwiLDcDACACQcgAaiAoQv////////8DgyAjQvD///////8/IC59fCIpQjOIfCIoNwMAIAJBQGsgKUL/////////A4MgIkLw////////PyArfXwiKkIziHwiKTcDACACQThqICpC/////////wODICZC0P3//////z8gLX18IjFCM4h8Iio3AwAgAkHgAGogBikDADcDACACQegAaiAFKQMANwMAIAJB8ABqIAQpAwA3AwAgAkH4AGogAykDADcDACACICdCM4hCE34gMUL/////////A4N8Iic3AzAgAiAkIC98IiQ3AyggAiAlIDB8IiU3AyAgAiAjIC58IiM3AxggAiAiICt8IiI3AxAgAiAmIC18IiY3AwggAiACKQPIDDcDWCACQaABaiACQcgLaiIHKQMANwMAIAJBmAFqIAJBwAtqIggpAwA3AwAgAkGQAWogAkG4C2oiCSkDADcDACACQYgBaiACQbALaiIKKQMANwMAIAJB8AFqICw3AwAgAkHoAWogKDcDACACQeABaiApNwMAIAJB2AFqICo3AwAgAkHQAWogJzcDACACQcgBaiAkNwMAIAJBwAFqICU3AwAgAkG4AWogIzcDACACQbABaiAiNwMAIAIgAikDqAs3A4ABIAIgJjcDqAEgAkGYAmogAykDADcDACACQZACaiAEKQMANwMAIAJBiAJqIAUpAwA3AwAgAkGAAmogBikDADcDACACQfgBaiACKQPIDDcDACACQcACaiAHKQMANwMAIAJBuAJqIAgpAwA3AwAgAkGwAmogCSkDADcDACACQagCaiAKKQMANwMAIAJBoAJqIAIpA6gLNwMAIAJBkANqICw3AwAgAkGIA2ogKDcDACACQYADaiApNwMAIAJB+AJqICo3AwAgAkHwAmogJzcDACACQegCaiAkNwMAIAJB4AJqICU3AwAgAkHYAmogIzcDACACQdACaiAiNwMAIAIgJjcDyAIgAkG4A2ogAykDADcDACACQbADaiAEKQMANwMAIAJBqANqIAUpAwA3AwAgAkGgA2ogBikDADcDACACQZgDaiACKQPIDDcDACACQeADaiAHKQMANwMAIAJB2ANqIAgpAwA3AwAgAkHQA2ogCSkDADcDACACQcgDaiAKKQMANwMAIAJBwANqIAIpA6gLNwMAIAJBsARqICw3AwAgAkGoBGogKDcDACACQaAEaiApNwMAIAJBmARqICo3AwAgAkGQBGogJzcDACACQYgEaiAkNwMAIAJBgARqICU3AwAgAkH4A2ogIzcDACACQfADaiAiNwMAIAIgJjcD6AMgAkHYBGogAykDADcDACACQdAEaiAEKQMANwMAIAJByARqIAUpAwA3AwAgAkHABGogBikDADcDACACQbgEaiACKQPIDDcDACACQYAFaiAHKQMANwMAIAJB+ARqIAgpAwA3AwAgAkHwBGogCSkDADcDACACQegEaiAKKQMANwMAIAJB4ARqIAIpA6gLNwMAIAJB0AVqICw3AwAgAkHIBWogKDcDACACQcAFaiApNwMAIAJBuAVqICo3AwAgAkGwBWogJzcDACACQagFaiAkNwMAIAJBoAVqICU3AwAgAkGYBWogIzcDACACQZAFaiAiNwMAIAIgJjcDiAUgAkH4BWogAykDADcDACACQfAFaiAEKQMANwMAIAJB6AVqIAUpAwA3AwAgAkHgBWogBikDADcDACACQdgFaiACKQPIDDcDACACQaAGaiAHKQMANwMAIAJBmAZqIAgpAwA3AwAgAkGQBmogCSkDADcDACACQYgGaiAKKQMANwMAIAJBgAZqIAIpA6gLNwMAIAJB8AZqICw3AwAgAkHoBmogKDcDACACQeAGaiApNwMAIAJB2AZqICo3AwAgAkHQBmogJzcDACACQcgGaiAkNwMAIAJBwAZqICU3AwAgAkG4BmogIzcDACACQbAGaiAiNwMAIAIgJjcDqAYgAkGYB2ogAykDADcDACACQZAHaiAEKQMANwMAIAJBiAdqIAUpAwA3AwAgAkGAB2ogBikDADcDACACQfgGaiACKQPIDDcDACACQcAHaiAHKQMANwMAIAJBuAdqIAgpAwA3AwAgAkGwB2ogCSkDADcDACACQagHaiAKKQMANwMAIAJBoAdqIAIpA6gLNwMAIAJBkAhqICw3AwAgAkGICGogKDcDACACQYAIaiApNwMAIAJB+AdqICo3AwAgAkHwB2ogJzcDACACQegHaiAkNwMAIAJB4AdqICU3AwAgAkHYB2ogIzcDACACQdAHaiAiNwMAIAIgJjcDyAcgAkG4CGogAykDADcDACACQbAIaiAEKQMANwMAIAJBqAhqIAUpAwA3AwAgAkGgCGogBikDADcDACACQZgIaiACKQPIDDcDACACQeAIaiAHKQMANwMAIAJB2AhqIAgpAwA3AwAgAkHQCGogCSkDADcDACACQcgIaiAKKQMANwMAIAJBwAhqIAIpA6gLNwMAIAJBsAlqICw3AwAgAkGoCWogKDcDACACQaAJaiApNwMAIAJBmAlqICo3AwAgAkGQCWogJzcDACACQYgJaiAkNwMAIAJBgAlqICU3AwAgAkH4CGogIzcDACACQfAIaiAiNwMAIAIgJjcD6AggAkHYCWogAykDADcDACACQdAJaiAEKQMANwMAIAJByAlqIAUpAwA3AwAgAkHACWogBikDADcDACACQbgJaiACKQPIDDcDACACQYAKaiAHKQMANwMAIAJB+AlqIAgpAwA3AwAgAkHwCWogCSkDADcDACACQegJaiAKKQMANwMAIAJB4AlqIAIpA6gLNwMAIAcgASkDIDcDACAIIAEpAxg3AwAgCSABKQMQNwMAIAogASkDCDcDACACQdgLaiIaIAspAwA3AwAgAkHgC2oiGyAMKQMANwMAIAJB6AtqIhwgDikDADcDACACQfALaiIdIA0pAwA3AwAgAiABKQMANwOoCyACIAEpAyg3A9ALIAJBmAxqIBApAwA3AwAgAkGQDGogEikDADcDACACQYgMaiAUKQMANwMAIAJBgAxqIBYpAwA3AwAgAiABKQNQNwP4CyACQcgMaiACQagLahBKIAJBiApqIAJByAxqIAJBwA1qIgYQKSACQegNaiACQfAMaiILIAJBmA1qIgwQKSACQZAOaiAMIAYQKSACQbgOaiACQcgMaiALECkgAkHQCmogAkGIDmoiFikDADcDACACQcgKaiACQYAOaiIXKQMANwMAIAJBwApqIAJB+A1qIhgpAwA3AwAgAkG4CmogAkHwDWoiGSkDADcDACACQeAKaiACQZgOaiINKQMANwMAIAJB6ApqIAJBoA5qIg4pAwA3AwAgAkHwCmogAkGoDmoiECkDADcDACACQfgKaiACQbAOaiISKQMANwMAIAIgAikD6A03A7AKIAIgAikDkA43A9gKIAJBoAtqIA8pAwA3AwAgAkGYC2ogESkDADcDACACQZALaiATKQMANwMAIAJBiAtqIBUpAwA3AwAgAiACKQO4DjcDgAsgAkGgDGohAyACQfgLaiEEIAJB0AtqIQVBACEUA0AgAkHIDGogAkGICmogAkEIaiAUaiIBED4gAkGoC2ogAkHIDGogBhApIAJB6A1qIAsgDBApIAJBkA5qIAwgBhApIAJBuA5qIAJByAxqIAsQKSAFQSBqIBYpAwA3AwAgBUEYaiAXKQMANwMAIAVBEGogGCkDADcDACAFQQhqIBkpAwA3AwAgBSACKQPoDTcDACAEIAIpA5AONwMAIARBCGoiHiANKQMANwMAIARBEGoiHyAOKQMANwMAIARBGGoiICAQKQMANwMAIARBIGoiISASKQMANwMAIANBIGogDykDADcDACADQRhqIBEpAwA3AwAgA0EQaiATKQMANwMAIANBCGogFSkDADcDACADIAIpA7gONwMAIAUpAwAhLCAaKQMAISggCikDACEpIBspAwAhKiAJKQMAIScgHSkDACEkIAcpAwAhJSAcKQMAISMgCCkDACEiIAIpA6gLISYgDyAhKQMANwMAIBEgICkDADcDACATIB8pAwA3AwAgFSAeKQMANwMAIAIgBCkDADcDuA4gAkHoDWogA0HwlMgAECkgEiAPKQMANwMAIBAgESkDADcDACAOIBMpAwA3AwAgDSAVKQMANwMAIAIgAikDuA43A5AOIAFB6AFqICRC8P///////z8gJX18Ii1C/////////wODICNC8P///////z8gIn18IitCM4h8NwMAIAFB4AFqICtC/////////wODICpC8P///////z8gJ318IitCM4h8NwMAIAFB2AFqICtC/////////wODIChC8P///////z8gKX18IitCM4h8NwMAIAFB0AFqICtC/////////wODICxC0P3//////z8gJn18IitCM4h8NwMAIAFB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gAEQqgIaIAVBuA5qIAVBkAFqQYABEKoCGiAFQeAMaiAFQbgOakGAARCqAhogBUG4CGogLTcDACAEIAUpA/AGNwMAIARBCGogEikDADcDACAEQRBqIBEpAwA3AwAgBEEYaiAQKQMANwMAIARBIGogDykDADcDACAEQShqIA4pAwA3AwAgBEEwaiAHKQMANwMAIARBOGogBikDADcDACAFICw3A7AIIAVBgAlqICQ2AgAgHyAFQbAHakGAARCqAhogICAFQZgFakGAARCqAhogFSAuNwMAIAVBiApqIgYgLzcDACACIAUpA5ACNwMAIAJBCGoiByAFQZgCaikDADcDACACQRBqIg4gBUGgAmopAwA3AwAgAkEYaiIPIAVBqAJqKQMANwMAIAJBIGoiECAFQbACaikDADcDACACQShqIhEgBUG4AmopAwA3AwAgAkEwaiISIAVBwAJqKQMANwMAIAJBOGoiFiAFQcgCaikDADcDACAXICU2AgAgGSAFQeAMakGAARCqAiEYIAVBsAhqIAVBkARqQcAAEBkgBUGYBWogBUGwCGpB2AEQqgIaIBQgBykDADcDACATIA4pAwA3AwAgDSAPKQMANwMAIAggECkDADcDACAMIBEpAwA3AwAgCyASKQMANwMAIAogFikDADcDACAFIAIpAwA3A9gEIAYpAwAhKiAVKQMAISsgFygCACEHIAVBuA5qIBhBgAEQqgIaIAVBsAdqIAVBuA5qQYABEKoCGiAFQegMaiIGICs3AwAgAyAFKQPYBDcDACADQQhqIBQpAwA3AwAgA0EQaiATKQMANwMAIANBGGogDSkDADcDACADQSBqIAgpAwA3AwAgA0EoaiAMKQMANwMAIANBMGogCykDADcDACADQThqIAopAwA3AwAgBSAqNwPgDCAFQbANaiAHNgIAIBogBUGwB2pBgAEQqgIaIAVBuA5qIAVBmAVqQdgBEKoCGiAFQfAGaiAFQbgOahBCIAVB4AxqIAVB8AZqQcAAEBkgBUG4DmogBUHgDGpB2AEQqgIaIAVBsAdqIAVBuA5qEEIgBUHwDmoiByAFQegHaikDADcDACAFQegOaiIOIAVB4AdqKQMANwMAIAVB4A5qIg8gBUHYB2opAwA3AwAgBUHYDmoiECAFQdAHaikDADcDACAFQdAOaiIRIAVByAdqKQMANwMAIAVB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iEKAgPwHg4QgFkIoiEKA/gODIBZCOIiEhIQ3AwAgCyALKQMAIhZCOIYgFkIohkKAgICAgIDA/wCDhCAWQhiGQoCAgICA4D+DIBZCCIZCgICAgPAfg4SEIBZCCIhCgICA+A+DIBZCGIhCgID8B4OEIBZCKIhCgP4DgyAWQjiIhISENwMAIAwgDCkDACIWQjiGIBZCKIZCgICAgICAwP8Ag4QgFkIYhkKAgICAgOA/gyAWQgiGQoCAgIDwH4OEhCAWQgiIQoCAgPgPgyAWQhiIQoCA/AeDhCAWQiiIQoD+A4MgFkI4iISEhDcDACANIA0pAwAiFkI4hiAWQiiGQoCAgICAgMD/AIOEIBZCGIZCgICAgIDgP4MgFkIIhkKAgICA8B+DhIQgFkIIiEKAgID4D4MgFkIYiEKAgPwHg4QgFkIoiEKA/gODIBZCOIiEhIQ3AwAgDiAOKQMAIhZCOIYgFkIohkKAgICAgIDA/wCDhCAWQhiGQoCAgICA4D+DIBZCCIZCgICAgPAfg4SEIBZCCIhCgICA+A+DIBZCGIhCgID8B4OEIBZCKIhCgP4DgyAWQjiIhISENwMAIAUgBSkDACIWQjiGIBZCKIZCgICAgICAwP8Ag4QgFkIYhkKAgICAgOA/gyAWQgiGQoCAgIDwH4OEhCAWQgiIQoCAgPgPgyAWQhiIQoCA/AeDhCAWQiiIQoD+A4MgFkI4iISEhDcDACAPIA8pAwAiFkI4hiAWQiiGQoCAgICAgMD/AIOEIBZCGIZCgICAgIDgP4MgFkIIhkKAgICA8B+DhIQgFkIIiEKAgID4D4MgFkIYiEKAgPwHg4QgFkIoiEKA/gODIBZCOIiEhIQ3AwAgECAQKQMAIhZCOIYgFkIohkKAgICAgIDA/wCDhCAWQhiGQoCAgICA4D+DIBZCCIZCgICAgPAfg4SEIBZCCIhCgICA+A+DIBZCGIhCgID8B4OEIBZCKIhCgP4DgyAWQjiIhISENwMAIBEgESkDACIWQjiGIBZCKIZCgICAgICAwP8Ag4QgFkIYhkKAgICAgOA/gyAWQgiGQoCAgIDwH4OEhCAWQgiIQoCAgPgPgyAWQhiIQoCA/AeDhCAWQiiIQoD+A4MgFkI4iISEhDcDACASIBIpAwAiFkI4hiAWQiiGQoCAgICAgMD/AIOEIBZCGIZCgICAgIDgP4MgFkII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Qf8BcUEQTw0DIARB2BJqIARBgARqIAhBoAFsakGgARCqAhogBEGYEGogBEG4EWogBEHYEmoQPyAEQfgOaiAEQZgQakGgARCqAhoLAkAgBEGAAmogBWosAAAiCEEBTgRAIARB2BJqIARB+A5qIAsQKSAEQfgTaiAMIAoQKSAEQZgQaiAKIAsQKSAEQbgRaiAEQfgOaiAMECkgAkEgaiAEQZgUaikDADcDACACQRhqIARBkBRqKQMANwMAIAJBEGogBEGIFGopAwA3AwAgAkEIaiAEQYAUaikDADcDACACIAQpA/gTNwMAIAEgBCkDmBA3AwAgAUEIaiAEQaAQaikDADcDACABQRBqIARBqBBqKQMANwMAIAFBGGogBEGwEGopAwA3AwAgAUEgaiAEQbgQaikDADcDACADQSBqIARB2BFqKQMANwMAIANBGGogBEHQEWopAwA3AwAgA0EQaiAEQcgRaikDADcDACADQQhqIARBwBFqKQMANwMAIAMgBCkDuBE3AwAgBEGYEGogCEEBdkH4AGxByNjHAGpB+AAQqgIaIARBuBFqIARB2BJqIARBmBBqEEAgBEH4DmogBEG4EWpBoAEQqgIaDAELIAhBf0oNACAEQdgSaiAEQfgOaiALECkgBEH4E2ogDCAKECkgBEGYEGogCiALECkgBEG4EWogBEH4DmogDBApIAJBIGogBEGYFGopAwA3AwAgAkEYaiAEQZAUaikDADcDACACQRBqIARBiBRqKQMANwMAIAJBCGogBEGAFGopAwA3AwAgAiAEKQP4EzcDACABIAQpA5gQNwMAIAFBCGogBEGgEGopAwA3AwAgAUEQaiAEQagQaikDADcDACABQRhqIARBsBBqKQMANwMAIAFBIGogBEG4EGopAwA3AwAgA0EgaiAEQdgRaikDADcDACADQRhqIARB0BFqKQMANwMAIANBEGogBEHIEWopAwA3AwAgA0EIaiAEQcARaikDADcDACADIAQpA7gRNwMAQQAgCGtBGHRBGHUiDUEBdiEIIA1Bf0wNBCAEQZgQaiAIQfgAbEHI2McAakH4ABCqAhogBEG4EWogBEHYEmogBEGYEGoQQSAEQfgOaiAEQbgRakGgARCqAhoLIARB2BJqIARB+A5qIAsQKSAEQZgQaiAMIAoQKSAEQbgRaiAKIAsQKSACQSBqIARBuBBqKQMANwMAIAJBGGogBEGwEGopAwA3AwAgAkEQaiAEQagQaikDADcDACACQQhqIARBoBBqKQMANwMAIAIgBCkDmBA3AwAgASAEKQO4ETcDACABQQhqIARBwBFqKQMANwMAIAFBEGogBEHIEWopAwA3AwAgAUEYaiAEQdARaikDADcDACABQSBqIARB2BFqKQMANwMAIARBgA5qIARB2BJqQfgAEKoCGiAFBEAgBUF/aiEFDAELCyAAIARBgA5qIARB0A5qIgEQKSAEQZgQaiAEQagOaiICIAEQKSAEQbgRaiABQQEQOCAEQdgSaiAEQYAOaiACECkgAEHIAGogBEG4EGopAwA3AwAgAEFAayAEQbAQaikDADcDACAAQThqIARBqBBqKQMANwMAIABBMGogBEGgEGopAwA3AwAgACAEKQOYEDcDKCAAIAQpA7gRNwNQIABB2ABqIARBwBFqKQMANwMAIABB4ABqIARByBFqKQMANwMAIABB6ABqIARB0BFqKQMANwMAIABB8ABqIARB2BFqKQMANwMAIABBmAFqIARB+BJqKQMANwMAIABBkAFqIARB8BJqKQMANwMAIABBiAFqIARB6BJqKQMANwMAIABBgAFqIARB4BJqKQMANwMAIAAgBCkD2BI3A3ggBEGgFGokAA8LQaSXyAAgDUEIEPgBAAtBpJfIACAIQQgQ+AEAC0G0l8gAIAhBwAAQ+AEAC0EAIQUMAQtBASEFDAALAAvOFgIbfwR+IwBBoAJrIgMkACADQZT2yQA2AgggA0GU9skANgIgQZT2yQAoAgBBAUcEQCADIANBIGo2ArQBIAMgA0EIajYCsAEgAyADQbABajYCQEGU9skAIANBQGtBjJnIABBNCwJAAkACQCADKAIgIgUtAABBAXFFDQAgBSgCBEUNAEEhQQEQ6gIiBgRAIAVBBGohFyADQRRqIhhCITcCACADIAY2AhAgA0IANwMIIANBsAFqIAEgAkG4hMkAQQEQKCADQQE7AfgBIAMgAjYC9AEgA0EANgLwASADKALoASIUIANBwAFqKAIAIgpqIRkgAygC4AEiCyAKaiEaQQAgCmshGyADQewBaigCACINIANByAFqKAIAIhVrIRwgA0G4AWopAwAiIEL/////j2CDIR8gDUF/aiESIAsgA0HkAWooAgAiCGohECAgQiCIpyEMIANB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6gIiCUUNBSAJIAMpA7ABNwIAIAlBIGogBigCADYCACAJQRhqIAIpAwA3AgAgCUEQaiADQcABaikDADcCACAJQQhqIAEpAwA3AgAgAEEIakHEl8gANgIAIAAgCTYCBCAAQQE2AgAgA0EUaigCACIERQ0JCyADQRBqKAIAIARBARD0AgwIC0GGgAMhBAwCC0GHwAMhBAwBC0GIgAQhBAsgA0HAAWoiBiADQRhqKAIANgIAIANBuAFqIgIgA0EQaikDADcDACADIAMpAwgiHjcDsAECQCAepwRAIAMtALcBIQEgBigCACIGIANBvAFqKAIARgR/IAIgBkEBENYBIANBwAFqKAIABSAGCyADQbgBaigCAGogAToAACADQcABaiIBIAEoAgBBAWoiAjYCACACIARBC3YiAU0NAQwFCyAGKAIAIgIgBEELdiIBSw0EC0GohMkAIAEgAhD4AQALQSRBBBCJAwALQSFBARCJAwALQfSZyAAQhgIACyADQbwBaigCACEQIAMoArgBIgUgAWotAAAgA0FAaxCmAiADQUBrIAUgARCjASADQbABaiADQUBrQfAAEKoCGiADQSBqIANBsAFqEGpBACAEa0EHcSICdkH/AXEgAy0AICACdkH/AXFGBEAgACAFNgIEIABBADYCACAAQQxqIAE2AgAgAEEIaiAQNgIADAELIANBQGsQfyADQQA2AlggA0HQAWoiCSADQeAAaigCADYCACADQcgBaiIGIAMpA1g3AwAgA0HAAWoiAiADQdAAaikDADcDACADQbgBaiIBIANByABqKQMANwMAIAMgAykDQDcDsAFBJEEEEOoCIgoEQCAKIAMpA7ABNwIAIApBIGogCSgCADYCACAKQRhqIAYpAwA3AgAgCkEQaiACKQMANwIAIApBCGogASkDADcCACAAQQhqQcSXyAA2AgAgACAKNgIEIABBATYCACAQRQ0BIAUgEEEBEPQCDAELQSRBBBCJAwALIANBoAJqJAALtBQBF38jAEGwB2siAyQAIANB0AVqQgA3AwAgA0HIBWpCADcDACADQcAFakIANwMAIANBuAVqQgA3AwAgA0GwBWpCADcDACADQagFakIANwMAIANBoAVqQgA3AwAgA0IANwOYBSADQZgFaiEFA0AgBUEBaiACIARqLQAAIgZBBHY6AAAgBSAGQQ9xOgAAIAVBAmohBSAEQQFqIgRBIEcNAAtBACEFIAMtAJgFIQQDQCADQZgFaiAFaiICIAQgBEEIaiIEQfABcWs6AAAgAkEBaiICIAItAAAgBEEYdEEcdWoiBDoAACAFQQFqIgVBP0cNAAsgA0E4aiADQdAFaikDADcDACADQTBqIANByAVqKQMANwMAIANBKGogA0HABWoiCykDADcDACADQSBqIANBuAVqKQMANwMAIANBGGogA0GwBWopAwA3AwAgA0EQaiADQagFaikDADcDACADQQhqIANBoAVqKQMANwMAIAMgAykDmAU3AwAgA0HgAGpCADcDACADQdgAakIANwMAIANB0ABqQgA3AwAgA0HIAGpCADcDACADQYgBakIANwMAIANBgAFqQgA3AwAgA0H4AGpCADcDACADQfAAakIANwMAIANCADcDQCADQgE3A2ggA0IBNwOQAUEAIQIgA0GYAWpBAEHIABC3AhogA0H4A2ohBCADQdADaiEGIANBqANqIQcgA0HoBWohDCADQZAGaiEKIANBkAFqIQggA0HoAGohCQNAIAIiBUE/TQRAIAVBAWohAiAFQQFxRQ0BIANB4AFqIAEgBUEBdkHAB2xqIAMgBWotAAAQRiADQZgFaiADQUBrIANB4AFqEEAgA0GAA2ogA0GYBWogChApIANB4AZqIAsgDBApIANBiAdqIAwgChApIANBoARqIANBmAVqIAsQKSAHQSBqIANBgAdqKQMANwMAIAdBGGogA0H4BmopAwA3AwAgB0EQaiADQfAGaikDADcDACAHQQhqIANB6AZqKQMANwMAIAcgAykD4AY3AwAgBiADKQOIBzcDACAGQQhqIANBkAdqKQMANwMAIAZBEGogA0GYB2opAwA3AwAgBkEYaiADQaAHaikDADcDACAGQSBqIANBqAdqKQMANwMAIARBIGogA0HABGopAwA3AwAgBEEYaiADQbgEaikDADcDACAEQRBqIANBsARqKQMANwMAIARBCGogA0GoBGopAwA3AwAgBCADKQOgBDcDACADQUBrIANBgANqQaABEKoCGgwBCwsgA0HABGoiFiADQeAAaikDADcDACADQbgEaiIXIANB2ABqKQMANwMAIANBsARqIhggA0HQAGopAwA3AwAgA0GoBGoiGSADQcgAaikDADcDACADQdAEaiAJQQhqKQMANwMAIANB2ARqIAlBEGopAwA3AwAgA0HgBGogCUEYaikDADcDACADQegEaiAJQSBqKQMANwMAIAMgAykDQDcDoAQgAyAJKQMANwPIBCADQZAFaiAIQSBqKQMANwMAIANBiAVqIAhBGGopAwA3AwAgA0GABWogCEEQaikDADcDACADQfgEaiAIQQhqKQMANwMAIAMgCCkDADcD8AQgA0GYBWogA0GgBGoQSiADQYADaiADQZgFakGgARCqAhogA0GYBWogA0GAA2ogA0H4A2oiBBApIANBiAdqIANBqANqIgcgA0HQA2oiBhApIANB4AFqIAYgBBApIANB4AVqIgIgA0GoB2oiCCkDADcDACADQdgFaiIFIANBoAdqIgkpAwA3AwAgA0HQBWoiCiADQZgHaiILKQMANwMAIANByAVqIg0gA0GQB2oiDCkDADcDACADQfAFaiIOIANB6AFqIg8pAwA3AwAgA0H4BWoiECADQfABaiIRKQMANwMAIANBgAZqIhIgA0H4AWoiEykDADcDACADQYgGaiIUIANBgAJqIhUpAwA3AwAgAyADKQOIBzcDwAUgAyADKQPgATcD6AUgA0GgBGogA0GYBWpB+AAQqgIaIANBmAVqIANBoARqEEogA0GAA2ogA0GYBWpBoAEQqgIaIANBmAVqIANBgANqIAQQKSADQYgHaiAHIAYQKSADQeABaiAGIAQQKSACIAgpAwA3AwAgBSAJKQMANwMAIAogCykDADcDACANIAwpAwA3AwAgDiAPKQMANwMAIBAgESkDADcDACASIBMpAwA3AwAgFCAVKQMANwMAIAMgAykDiAc3A8AFIAMgAykD4AE3A+gFIANBoARqIANBmAVqQfgAEKoCGiADQZgFaiADQaAEahBKIANBgANqIANBmAVqQaABEKoCGiADQZgFaiADQYADaiAEECkgA0GIB2ogByAGECkgA0HgAWogBiAEECkgAiAIKQMANwMAIAUgCSkDADcDACAKIAspAwA3AwAgDSAMKQMANwMAIA4gDykDADcDACAQIBEpAwA3AwAgEiATKQMANwMAIBQgFSkDADcDACADIAMpA4gHNwPABSADIAMpA+ABNwPoBSADQaAEaiADQZgFakH4ABCqAhogA0GYBWogA0GgBGoQSiADQeABaiADQZgFaiADQZAGaiIKECkgA0G4BmogA0HABWoiDSADQegFaiIOECkgA0HgBmogDiAKECkgA0GIB2ogA0GYBWogDRApIANBqAJqIANB2AZqKQMANwMAIANBoAJqIANB0AZqKQMANwMAIANBmAJqIANByAZqKQMANwMAIANBkAJqIANBwAZqKQMANwMAIANBuAJqIANB6AZqIg8pAwA3AwAgA0HAAmogA0HwBmoiECkDADcDACADQcgCaiADQfgGaiIRKQMANwMAIANB0AJqIANBgAdqIhIpAwA3AwAgAyADKQO4BjcDiAIgAyADKQPgBjcDsAIgA0H4AmogCCkDADcDACADQfACaiAJKQMANwMAIANB6AJqIAspAwA3AwAgA0HgAmogDCkDADcDACADIAMpA4gHNwPYAiADQUBrIANB4AFqQaABEKoCGkEAIQIDQCACIgVBP00EQCAFQQFqIQIgBUEBcQ0BIANB4AFqIAEgBUEBdkHAB2xqIAMgBWotAAAQRiADQZgFaiADQUBrIANB4AFqEEAgA0GAA2ogA0GYBWogChApIANB4AZqIA0gDhApIANBiAdqIA4gChApIANBoARqIANBmAVqIA0QKSAHQSBqIBIpAwA3AwAgB0EYaiARKQMANwMAIAdBEGogECkDADcDACAHQQhqIA8pAwA3AwAgByADKQPgBjcDACAGIAMpA4gHNwMAIAZBCGogDCkDADcDACAGQRBqIAspAwA3AwAgBkEYaiAJKQMANwMAIAZBIGogCCkDADcDACAEQSBqIBYpAwA3AwAgBEEYaiAXKQMANwMAIARBEGogGCkDADcDACAEQQhqIBkpAwA3AwAgBCADKQOgBDcDACADQUBrIANBgANqQaABEKoCGgwBCwsgACADQUBrQaABEKoCGiADQbAHaiQAC74SAgF/In4jAEGABWsiAyQAIANB8AFqIAIpAwAiBSABKQMAIgQQ3QEgA0HgAWogAykD8AEiBkKb/NGSsbTHAn5C/////////weDIg5C7afX56XjmAEQ3QEgA0GAAmogAikDCCIHIAQQ3QEgA0HAAmogASkDCCIKIAUQ3QEgA0HQAWogDkKBy7XO98X6BhDdASADQcABaiADKQPAAiIQIAMpA4ACfCIRIAMpA9ABfCILIAYgAykD4AEiCHwiBkI0iCAGIAhUrSADQegBaikDACADQfgBaikDAHx8IhJCDIaEfCIMQpv8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FIh8fCAKQjSIfHxCDIaEIAdC/////////weDIAhC/////////weDIAZC/////////weDIA5C/////////weDQpPYqJjanOd+fCIEQj+HfEL/tMqxiLqFeXwiDkI/h3xCh8Ksf3wiB0I/h3wiCkI/h3xCgICAgICAfHwiBkI/hyIFQu2n1+el45gBgyAEQv////////8Hg3wiBEL/////////B4M3AwAgACAFQoHLtc73xfoGgyAOQv////////8Hg3wgBEI0iHwiBEL/////////B4M3AwggACAFQvm90wCDIAdC/////////weDfCAEQjSIfCIEQv////////8HgzcDECAAIApC/////////weDIARCNIh8IgRC/////////weDNwMYIAAgBUKAgICAgIAEgyAGfCAEQjSIfEL/////////B4M3AyAgA0GABWokAAvuEwIBfyJ+IwBB0AVrIgIkACACQYAFaiABEGggAkHwAWogAikDgAUiBELtzYe51pfSBxDdASACQeABaiACKQPwASIFQpv80ZKxtMcCfkL/////////B4MiA0Ltp9fnpeOYARDdASACQYACaiAEQtrIn+Pa1u4BEN0BIAJBwAJqIAIpA4gFIgdC7c2HudaX0gcQ3QEgAkHQAWogA0KBy7XO98X6BhDdASACQcABaiACKQPAAiINIAIpA4ACfCIIIAIpA9ABfCIJIAUgAikD4AEiBnwiBUI0iCAFIAZUrSACQegBaikDACACQfgBaikDAHx8Ig5CDIaEfCIKQpv80ZKxtMcCfkL/////////B4MiBULtp9fnpeOYARDdASACQZACaiAEQpvK19n+//8HEN0BIAJB0AJqIAdC2sif49rW7gEQ3QEgAkGQA2ogAikDkAUiBkLtzYe51pfSBxDdASACQZABaiADQvm90wAQ3QEgAkGwAWogBUKBy7XO98X6BhDdASACQYABaiACKQPQAiIUIAIpA5ACfCILIAIpA5ADfCIMIAIpA5ABfCIRIAIpA7ABfCISIAIpA8ABIg8gCnwiEEI0iCAQIA9UrSACQcgBaikDACAKIAlUrSAJIAhUrSACQdgBaikDACAIIA1UrSACQcgCaikDACACQYgCaikDAHx8fHwgDkI0iHx8fHwiFUIMhoR8IgpCm/zRkrG0xwJ+Qv////////8HgyIIQu2n1+el45gBEN0BIAJBoAJqIARC/////////wcQ3QEgAkHgAmogB0KbytfZ/v//BxDdASACQaADaiAGQtrIn+Pa1u4BEN0BIAJB4ANqIAIpA5gFIglC7c2HudaX0gcQ3QEgAkGgAWogBUL5vdMAEN0BIAJB8ABqIAhCgcu1zvfF+gYQ3QEgAkHgAGogAikD4AIiFiACKQOgAnwiDSACKQOgA3wiDiACKQPgA3wiDyACKQOgAXwiECACKQNwfCITIAIpA4ABIhcgCnwiGEI0iCAYIBdUrSACQYgBaikDACAKIBJUrSASIBFUrSACQbgBaikDACARIAxUrSACQZgBaikDACAMIAtUrSACQZgDaikDACALIBRUrSACQdgCaikDACACQZgCaikDAHx8fHx8fHx8IBVCNIh8fHx8IhlCDIaEfCILQpv80ZKxtMcCfkL/////////B4MiCkLtp9fnpeOYARDdASACQbACaiAEQv///////wMQ3QEgAkHwAmogB0L/////////BxDdASACQbADaiAGQpvK19n+//8HEN0BIAJB8ANqIAlC2sif49rW7gEQ3QEgAkGwBGogAikDoAUiBELtzYe51pfSBxDdASACQTBqIAhC+b3TABDdASACQdAAaiAKQoHLtc73xfoGEN0BIAJBIGogAikD8AIiHSACKQOwAnwiDCACKQOwA3wiESACKQPwA3wiEiACKQOwBHwiFCADQiyGfCIVIAIpAzB8IhcgAikDUHwiGCACKQNgIhogC3wiG0I0iCAbIBpUrSACQegAaikDACALIBNUrSATIBBUrSACQfgAaikDACAQIA9UrSACQagBaikDACAPIA5UrSACQegDaikDACAOIA1UrSACQagDaikDACANIBZUrSACQegCaikDACACQagCaikDAHx8fHx8fHx8fHwgGUI0iHx8fHwiHkIMhoR8Ig1Cm/zRkrG0xwJ+Qv////////8HgyILQu2n1+el45gBEN0BIAJBgANqIAdC////////AxDdASACQcADaiAGQv////////8HEN0BIAJBgARqIAlCm8rX2f7//wcQ3QEgAkHABGogBELayJ/j2tbuARDdASACQUBrIApC+b3TABDdASACQRBqIAtCgcu1zvfF+gYQ3QEgAkHQA2ogBkL///////8DEN0BIAJBkARqIAlC/////////wcQ3QEgAkHQBGogBEKbytfZ/v//BxDdASACIAtC+b3TABDdASACQaAEaiAJQv///////wMQ3QEgAkHgBGogBEL/////////BxDdASACQfAEaiAEQv///////wMQ3QEgAiALQiyGIh8gAikD8AR8IgQgAikD4AQiICACKQOgBHwiByAKQiyGfCIGIAIpA5AEIiEgAikD0AN8IgkgAikD0AR8Ig4gCEIshnwiDyACKQMAfCIQIAIpA8ADIiIgAikDgAN8IhMgAikDgAR8IhYgAikDwAR8IhkgBUIshnwiGiACKQNAfCIbIAIpAxB8IhwgAikDICIjIA18IiRCNIggJCAjVK0gAkEoaikDACANIBhUrSAYIBdUrSACQdgAaikDACAXIBVUrSACQThqKQMAIBUgFFStIBQgElStIAJBuARqKQMAIBIgEVStIAJB+ANqKQMAIBEgDFStIAJBuANqKQMAIAwgHVStIAJB+AJqKQMAIAJBuAJqKQMAfHx8fHx8fHwgA0IUiHx8fHx8fCAeQjSIfHx8fCIMQgyGhHwiA0I0iCADIBxUrSAcIBtUrSACQRhqKQMAIBsgGlStIAJByABqKQMAIBogGVStIBkgFlStIAJByARqKQMAIBYgE1StIAJBiARqKQMAIBMgIlStIAJByANqKQMAIAJBiANqKQMAfHx8fHx8IAVCFIh8fHx8fHwgDEI0iHx8IgxCDIaEfCIFQjSIIAUgEFStIBAgD1StIAJBCGopAwAgDyAOVK0gDiAJVK0gAkHYBGopAwAgCSAhVK0gAkGYBGopAwAgAkHYA2opAwB8fHx8IAhCFIh8fHx8IAxCNIh8fCIJQgyGhHwiCEI0iCAIIAZUrSAGIAdUrSAHICBUrSACQegEaikDACACQagEaikDAHx8IApCFIh8fCAJQjSIfHwiBkIMhoR8IgdCNIggByAEVK0gBCAfVK0gAkH4BGopAwAgC0IUiHx8IAZCNIh8fEIMhoQgB0L/////////B4MgCEL/////////B4MgBUL/////////B4MgA0L/////////B4NCk9iomNqc5358IgNCP4d8Qv+0yrGIuoV5fCIHQj+HfEKHwqx/fCIFQj+HfCIGQj+HfEKAgICAgIB8fCIIQj+HIgRC7afX56XjmAGDIANC/////////weDfCIDQv////////8HgzcDqAUgAiAEQoHLtc73xfoGgyAHQv////////8Hg3wgA0I0iHwiA0L/////////B4M3A7AFIAIgBEL5vdMAgyAFQv////////8Hg3wgA0I0iHwiA0L/////////B4M3A7gFIAIgBkL/////////B4MgA0I0iHwiA0L/////////B4M3A8AFIAIgBEKAgICAgIAEgyAIfCADQjSIfEL/////////B4M3A8gFIAAgAkGoBWoQjAEgAkHQBWokAAviDwI8fwF+IwBBIGsiBiQAAkACQAJ/AkACQAJAIAAoAgwiAkEBaiIBIAJPBEAgASACSQ0FIABBBGooAgAiAiEDIAEgAkEBakEDdkEHbCADIAJBCE8bQQF2SQRAIAJBAWohDUEEISlBAyEqQf/+/fsHIStBByEsQX8hLUGBgoQIIS4MAgsgBkEIaiABEGwgBi0ACEEBRgRAIAYtAAkaIAZBIGokAA8LIAZBHGooAgAhL0EMISIgBkEUaigCACEjQQghJCAGQRBqKAIAIRQgBigCDCEKQX8hMEGAgYKEeCEOQQQhCEEBITEgACgCACIbIABBBGooAgBqQQFqITIgAEEMaigCACElIAAoAgghHEEwITNBfCEPQQUhFUG5893xeSEWQQMhNEECITVBfiE2Qf8BITdBGSE4IBsoAgBBf3NBgIGChHhxIhANAwwCC0HwmMgAEIYCAAtBAAwCC0EDDAELQQQLIQEDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQCABDgQBAAgEBQsgESAqaiIBIBFJIgIgASANT3INAiANIBEgKWogAhsgDSABIA1JGwwBCyARIA1PDQEgESIBQQFqCyERIAAoAgAgAWoiASABKAIAIgEgLHYgLXMgLnEgASArcmo2AgBBASEBDA8LIAAoAgAhASAAQQRqIgMoAgBBAWoiAkEDSw0CIAFBBGogASACEOoBIAMoAgAiASAAKAIAakEBakGAAUEDIAFrELcCGgwDCyAIIBtqIQEDQCABIDJPDQUgHCAzaiEcIAEoAgAgASAIaiIDIQEgDnEiAiAORg0ACyACIA5zIRAgAyAPaiEbQQQhAQwNCyAcIBAQgAMgImxqIgcoAgAhAkEAIQQgBygCBCIDIAhPBEAgAiEBIAMhBQNAIAEoAAAgBCAVd3MgFmwhBCABIAhqIQEgBSAPaiIFIDRLDQALIAMgD2oiASABIA9xIgFrIQMgASACaiAIaiECCwJAAkAgAyAxSwRAIAIgNWohASACLwAAIAQgFXdzIBZsIQQgAyA2ag0BDAILIAIhASADRQ0BCyABLQAAIAQgFXdzIBZsIQQLQQAhASAEIBV3IDdzIBZsIgMhBANAIAEgCGoiASAEIBRxIgJqIQQgAiAKaigAACAOcSIFRQ0ACyAKIAUQgAMgAmogFHEiAWosAABBAE4EQCAKKAIAIA5xEIADIQELIAEgCmogAyA4diICOgAAIAogASAPaiAUcWogCGogAjoAACAHKQIAIT0gIyABICJsaiIBICRqIAcgJGooAgA2AgAgASA9NwIAIBAgMGogEHEiEA0LQQMhAQwMCyABIAJqIAEoAAA2AAALQQQhCUEBIR0gAEEEaiIeKAIAQQFqIh9FDQJBgAEhOUEMISBBCCESIABBCGohIUEFIRdBufPd8XkhGEF8IQtBAyEmQQIhOkF+ITtB/wEhGUGAgYKEeCEnQRkhKEEAIRNBAiEBDAoLIBMiByAdaiETAkAgOSAHIAAoAgBqLQAARwRAIBMgH0cNBwwBCwJAA0AgISgCACAHICBsaiIMKAIAIQJBACEEIAwoAgQiAyAJTwRAIAIhASADIQUDQCABKAAAIAQgF3dzIBhsIQQgASAJaiEBIAUgC2oiBSAmSw0ACyADIAtqIgEgASALcSIBayEDIAEgAmogCWohAgsCQAJAIAMgHUsEQCACIDpqIQEgAi8AACAEIBd3cyAYbCEEIAMgO2oNAQwCCyACIQEgA0UNAQsgAS0AACAEIBd3cyAYbCEECyAeKAIAIQUgACgCACECQQAhASAEIBd3IBlzIBhsIgMhBANAIAEgCWoiASAEIAVxIhpqIQQgAiAaaigAACAncSI8RQ0ACyACIDwQgAMgGmogBXEiAWosAABBAE4EQCACKAIAICdxEIADIQELIAEgHigCACICIANxIgVrIAcgBWtzIAJxICZNDQEgACgCACIFIAFqIgQtAAAhGiAEIAMgKHYiAzoAACAFIAIgASALanFqIAlqIAM6AAAgGSAaRwRAICEoAgAgASAgbGoiASkCACE9IAEgDCkCADcCACABIBJqIgIoAgAhASACIAwgEmoiAigCADYCACAGQQhqIBJqIAE2AgAgDCA9NwIAIAIgATYCACAGID03AwgMAQsLIAAoAgAiAiAHaiAZOgAAIAIgHigCACAHIAtqcWogCWogGToAACAMIBJqKAIAIQIgISgCACABICBsaiIBIAwpAgA3AgAgASASaiACNgIAIBMgH0cNCAwBCyAAKAIAIgEgB2ogAyAodiIDOgAAIAEgAiAHIAtqcWogCWogAzoAACATIB9HDQgLIABBBGooAgAiAUEITw0CDAMLIAAgLyAlazYCECAAQQxqICU2AgAgAEEIaiAjNgIAIAAoAgAhASAAIAo2AgAgAEEEaiICKAIAIQAgAiAUNgIAQQIhBSAARQ0JQQAhBCAAQQhqIgIgAEEFak8NAyABQQBBABD0AgwJC0F/IQELIAEgHWpBA3ZBB2whAQsgACABIABBDGooAgBrNgIQDAcLIABBAWqtQgx+Ij1CIIinRQRAIAJBfHEiACA9p2oiBSAAT0ECdCEECyABIAUgBBD0AgwGC0ECIQEMAwtBAiEBDAILQQIhAQwBC0EEIQEMAAsACyAGQSBqJAAPCyAGQSBqJAALvhECEn8KfiMAQeAEayICJAAgAkEoaiIHIAFBIGopAwA3AwAgAkEgaiIIIAFBGGopAwA3AwAgAkEYaiIJIAFBEGopAwA3AwAgAkEQaiIKIAFBCGopAwA3AwAgAiABKQMANwMIIAJB0ABqIgMgAUHIAGopAwA3AwAgAkHIAGoiBCABQUBrKQMANwMAIAJBQGsiBSABQThqKQMANwMAIAJBOGoiBiABQTBqKQMANwMAIAIgASkDKDcDMCACIAMpAwAiFSABQfAAaiIPKQMAIhR8NwPYBCACIAQpAwAiFiABQegAaiIQKQMAIhh8NwPQBCACIAUpAwAiFyABQeAAaiIRKQMAIhl8NwPIBCACIAYpAwAiGiABQdgAaiISKQMAIht8NwPABCACIAIpAzAiHCABKQNQIh18NwO4BCACIBRC8P///////z8gFX18IhVC/////////wODIBhC8P///////z8gFn18IhRCM4h8NwPwASACIBRC/////////wODIBlC8P///////z8gF318IhRCM4h8NwPoASACIBRC/////////wODIBtC8P///////z8gGn18IhRCM4h8NwPgASACIBRC/////////wODIB1C0P3//////z8gHH18IhRCM4h8NwPYASACIBVCM4hCE34gFEL/////////A4N8NwPQASACQdgAaiACQbgEaiACQdABahApIAJBgAFqIAJBCGogAkEwahApIAJB8ANqIAJBgAFqQQEQOCACQcgDaiACQdgAaiACQfADahApIAJB2ARqQgA3AwAgAkHQBGpCADcDACACQcgEakIANwMAIAJCADcDwAQgAkIBNwO4BCACQdABaiACQbgEaiACQcgDahAMIAJByAFqIAJB+AFqKQMANwMAIAJBwAFqIAJB8AFqKQMANwMAIAJBuAFqIAJB6AFqKQMANwMAIAJBsAFqIAJB4AFqKQMANwMAIAIgAikD2AE3A6gBIAJBgAJqIAJBqAFqIAJB2ABqECkgAkGoAmogAkGoAWogAkGAAWoQKSACQdABaiACQagCaiABQfgAaiITECkgAkHQAmogAkGAAmogAkHQAWoQKSACQZgDaiILIAJByAJqKQMANwMAIAJBkANqIgwgAkHAAmopAwA3AwAgAkGIA2oiDSACQbgCaikDADcDACACQYADaiIOIAJBsAJqKQMANwMAIAIgAikDqAI3A/gCIAJBoANqIAJBCGpBmJXIABApIAJByANqIAJBMGpBmJXIABApIAJB8ANqIAJBgAJqQcCVyAAQKSACQdABaiATIAJB0AJqECkgAkGYBGogAkHQAWoQWyAKQgAgAi0AmARBAXGtQv8Bg30iFSAKKQMAIhQgAikD0AOFgyAUhTcDACAJIAkpAwAiFCACKQPYA4UgFYMgFIU3AwAgCCAIKQMAIhQgAikD4AOFIBWDIBSFNwMAIAcgBykDACIUIAIpA+gDhSAVgyAUhTcDACACIAIpAwgiFCACKQPIA4UgFYMgFIU3AwggAiACKQMwIhQgAikDoAOFIBWDIBSFNwMwIAYgBikDACIUIAIpA6gDhSAVgyAUhTcDACAFIAUpAwAiFCACKQOwA4UgFYMgFIU3AwAgBCAEKQMAIhQgAikDuAOFIBWDIBSFNwMAIAMgAykDACIUIAIpA8ADhSAVgyAUhTcDACACIAIpA/gCIhQgAikD8AOFIBWDIBSFNwP4AiAOIA4pAwAiFCACKQP4A4UgFYMgFIU3AwAgDSANKQMAIhQgAikDgASFIBWDIBSFNwMAIAwgDCkDACIUIAIpA4gEhSAVgyAUhTcDACALIBUgCykDACIUIAIpA5AEhYMgFIU3AwAgAkHQAWogAkEIaiACQdACahApIAJBmARqIAJB0AFqEFsgA0IAIAItAJgEQQFxrUL/AYN9IhVC8P///////z8gAykDACIUfSIYQv////////8Dg0Lw////////PyAEKQMAIhZ9IhdCM4h8IBSFgyAUhSIZNwMAIAQgFiAWIBdC/////////wODQvD///////8/IAUpAwAiFH0iF0IziHyFIBWDhSIaNwMAIAUgFCAUIBdC/////////wODQvD///////8/IAYpAwAiFn0iF0IziHyFIBWDhSIbNwMAIAYgFiAWIBdC/////////wODQtD9//////8/IAIpAzAiFH0iF0IziHyFIBWDhSIWNwMAIAIgFCAUIBhCM4hCE34gF0L/////////A4N8hSAVg4UiFTcDMCACIA8pAwBC8P///////z8gGX18IhRC/////////wODIBApAwBC8P///////z8gGn18IhhCM4h8NwPwASACIBhC/////////wODIBEpAwBC8P///////z8gG318IhhCM4h8NwPoASACIBhC/////////wODIBIpAwBC8P///////z8gFn18IhZCM4h8NwPgASACIBZC/////////wODIAEpA1BC0P3//////z8gFX18IhVCM4h8NwPYASACIBRCM4hCE34gFUL/////////A4N8NwPQASACQbgEaiACQfgCaiACQdABahApIAJBmARqIAJBuARqEFsgAkIAIAItAJgEQQFxrUL/AYN9IhVC8P///////z8gAikD2AQiFH0iGEL/////////A4NC8P///////z8gAikD0AQiFn0iF0IziHwgFIWDIBSFNwPYBCACIBYgFiAXQv////////8Dg0Lw////////PyACKQPIBCIUfSIXQjOIfIUgFYOFNwPQBCACIBQgFCAXQv////////8Dg0Lw////////PyACKQPABCIWfSIXQjOIfIUgFYOFNwPIBCACIBYgFiAXQv////////8Dg0LQ/f//////PyACKQO4BCIUfSIXQjOIfIUgFYOFNwPABCACIBQgFCAYQjOIQhN+IBdC/////////wODfIUgFYOFNwO4BCAAIAJBuARqEFsgAkHgBGokAAuCDwIEfwd+IwBBoAVrIgIkACACIAEQZyACQShqIAIQW0EBIQMDQCADIAEgBGotAAAgAkEoaiAEai0AAHNBf3MiBUHwAXFBBHYgBXEiBUECdiAFcSIFQQF2IAVxcSEDIARBAWoiBEEgRw0ACyACQYAEaiACEFsCQAJAIANB/wFxRSACLQCABEEBcUEBRnJFBEAgAkHIAGogAkEBEDggAkLw////////PyACKQNoIgh9IgZC/////////wODQvD///////8/IAIpA2AiCX0iCkIziHw3A5ABIAIgCkL/////////A4NC8P///////z8gAikDWCIKfSIHQjOIfDcDiAEgAiAHQv////////8Dg0Lw////////PyACKQNQIgd9IgtCM4h8NwOAASACIAtC/////////wODQtH9//////8/IAIpA0giC30iDEIziHw3A3ggAiAGQjOIQhN+IAxC/////////wODfDcDcCACIAg3A7gBIAIgCTcDsAEgAiAKNwOoASACIAc3A6ABIAIgC0IBfDcDmAEgAkHAAWogAkGYAWpBARA4IAJCgJL1iJP5twE3A6AEIAJCxIb/4pnHMTcDmAQgAkLW//j/2YuGATcDkAQgAkLCoqqn/PqVAzcDiAQgAkLKjprl3sasAjcDgAQgAkHQBGogAkHwAGpBARA4IAJB2ANqIAJBgARqIAJB0ARqECkgAiACKQP4A0Lw////////P3wgAikD4AF9IghC/////////wODIAIpA/ADQvD///////8/fCACKQPYAX0iBkIziHw3A4gCIAIgBkL/////////A4MgAikD6ANC8P///////z98IAIpA9ABfSIGQjOIfDcDgAIgAiAGQv////////8DgyACKQPgA0Lw////////P3wgAikDyAF9IgZCM4h8NwP4ASACIAZC/////////wODIAIpA9gDQtD9//////8/fCACKQPAAX0iBkIziHw3A/ABIAIgCEIziEITfiAGQv////////8Dg3w3A+gBIAJB2ANqIAJB6AFqIAJBwAFqECkgAkGgBGpCADcDACACQZgEakIANwMAIAJBkARqQgA3AwAgAkIANwOIBCACQgE3A4AEIAJB0ARqIAJBgARqIAJB2ANqEAwgAi0A0AQhASACQbACaiACQfgEaikDADcDACACQagCaiACQfAEaikDADcDACACQaACaiACQegEaikDADcDACACQZgCaiACQeAEaikDADcDACACIAIpA9gENwOQAiACQbgCaiACQZACaiACQZgBahApIAJB0ARqIAJBuAJqIAJB6AFqECkgAkHgAmogAkGQAmogAkHQBGoQKSACIAIpAyBCAYY3A/AEIAIgAikDGEIBhjcD6AQgAiACKQMQQgGGNwPgBCACIAIpAwhCAYY3A9gEIAIgAikDAEIBhjcD0AQgAkGIA2ogAkHQBGogAkG4AmoQKSACQYAEaiACQYgDahBbIAJCACACLQCABEEBca1C/wGDfSIIQvD///////8/IAIpA6gDIgZ9IgpC/////////wODQvD///////8/IAIpA6ADIgl9IgdCM4h8IAaFgyAGhTcDqAMgAiAJIAkgB0L/////////A4NC8P///////z8gAikDmAMiBn0iB0IziHyFIAiDhTcDoAMgAiAGIAYgB0L/////////A4NC8P///////z8gAikDkAMiCX0iB0IziHyFIAiDhTcDmAMgAiAJIAkgB0L/////////A4NC0P3//////z8gAikDiAMiBn0iB0IziHyFIAiDhTcDkAMgAiAGIAYgCkIziEITfiAHQv////////8Dg3yFIAiDhTcDiAMgAkGwA2ogAkHwAGogAkHgAmoQKSACQdgDaiACQYgDaiACQbADahApAkAgAUUNACACQYAEaiACQdgDahBbIAItAIAEQQFxQQFGDQAgAkHoBGoiAUIANwMAIAJB4ARqIgNCADcDACACQdgEaiIEQgA3AwAgAkIANwPQBCACQYAEaiACQbADahBbIAJBgARqIAJB0ARqEIMCQf8BcUEBRw0CCwwCCwwBCyACQfAEaiACQagDaikDADcDACABIAJBoANqKQMANwMAIAMgAkGYA2opAwA3AwAgBCACQZADaikDADcDACACQYAFaiACQbgDaikDADcDACACQYgFaiACQcADaikDADcDACACQZAFaiACQcgDaikDADcDACACQZgFaiACQdADaikDADcDACACIAIpA4gDNwPQBCACIAIpA7ADNwP4BCACQYAEaiACQdAEakHQABCqAhogAEEIaiACQYAEakHQABCqAhogAEH4AGpCADcDACAAQfAAakIANwMAIABB6ABqQgA3AwAgAEHgAGpCADcDACAAQdgAakIBNwMAIABCATcDACAAQYABaiACKQPYAzcDACAAQYgBaiACQeADaikDADcDACAAQZABaiACQegDaikDADcDACAAQZgBaiACQfADaikDADcDACAAQaABaiACQfgDaikDADcDACACQaAFaiQADwsgAEIANwMAIAJBoAVqJAALoQ0CGn8HfiMAQcAHayIDJAAgA0GABGoQ+wIgAyADQYAEahCeAiADQYAEahD1AiADQbACaiADQdABEKoCGiADQfgGaiIMIAJBGGopAAA3AwAgA0HwBmoiDSACQRBqKQAANwMAIANB6AZqIg4gAkEIaikAADcDACADIAIpAAA3A+AGIANBsAJqQcyDwABBCiADQeAGakEgEOsCIANBsAJqQdaDwABBCiABEI0DQSAQ6wIgA0G4BGpCADcDACADQbAEakIANwMAIANBqARqQgA3AwAgA0GgBGpCADcDACADQZgEakIANwMAIANBkARqQgA3AwAgA0GIBGpCADcDACADQgA3A4AEIANBsAJqQeCDwABBCyADQYAEakHAABDsAiADQdABaiADQYAEahC6AiADQbgHaiICQgA3AwAgA0GwB2oiBEIANwMAIANBqAdqIgVCADcDACADQgA3A6AHIANBsAJqQeuDwABBDiADQaAHakEgEOwCIANBiAJqIgYgAikDADcDACADQYACaiIHIAQpAwA3AwAgA0H4AWoiCCAFKQMANwMAIAMgAykDoAc3A/ABIANBmAZqIg8gA0HoAWoiCSkDADcDACADQZAGaiIQIANB4AFqIgopAwA3AwAgA0GIBmoiFiADQdgBaiILKQMANwMAIAMgAykD0AE3A4AGIANBuAZqIhcgBikDADcDACADQbAGaiIYIAcpAwA3AwAgA0GoBmoiGSAIKQMANwMAIAMgAykD8AE3A6AGIANB2AZqIhpCADcDACADQdAGaiIbQgA3AwAgA0HIBmoiHEIANwMAIANCADcDwAYgAxA7NgKABCADQYAEaiADQcAGakEgEKcBIANBgARqIANBsAJqQcgBEKoCGiADIAMtAPoDOgDKBSADIAMvAfgDOwHIBSAGQgA3AwAgB0IANwMAIAhCADcDACADQfABaiIRQgA3AwAgCUIANwMAIApCADcDACALQgA3AwAgA0IANwPQASADQaAHaiABQcABahClAiADQaAHahBQIAkgAikDACIdNwMAIAogBCkDACIeNwMAIAsgBSkDACIfNwMAIBEgAUHgAWopAAAiIDcDACAIIAFB6AFqKQAAIiE3AwAgByABQfABaikAACIiNwMAIAYgAUH4AWopAAAiIzcDACAOIB83AwAgDSAeNwMAIAwgHTcDACADQYAHaiIVICA3AwAgA0GIB2oiEiAhNwMAIANBkAdqIhMgIjcDACADQZgHaiIUICM3AwAgAyADKQOgByIdNwPQASADIB03A+AGIANBgARqQcyDwABBACADQeAGakHAABDrAiADQYAEakHMg8AAQQAgA0HABmpBIBDrAiADQYAEakHMg8AAQQAgA0HABmpBIBDsAiACIAFB2AFqKQAANwMAIAQgAUHQAWopAAA3AwAgBSABQcgBaikAADcDACADIAEpAMABNwOgByAJIA8pAwA3AwAgCiAQKQMANwMAIAsgFikDADcDACADIAMpA4AGNwPQASADQeAGaiADQaAHaiADQdABahCJASAUIBopAwAiHTcDACATIBspAwAiHjcDACASIBwpAwAiHzcDACALIA4pAwA3AwAgCiANKQMANwMAIAkgDCkDADcDACARIAMpA8AGIiA3AwAgCCAfNwMAIAcgHjcDACAGIB03AwAgAyAgNwOAByADIAMpA+AGNwPQASADQagCaiIBIBcpAwA3AwAgA0GgAmoiDyAYKQMANwMAIANBmAJqIhAgGSkDADcDACADIAMpA6AGNwOQAiADQYAEahD1AiADQbACahD1AiAUIAYpAwA3AwAgEyAHKQMANwMAIBIgCCkDADcDACAVIBEpAwA3AwAgDCAJKQMANwMAIA0gCikDADcDACAOIAspAwA3AwAgAyADKQPQATcD4AYgAiABKQMANwMAIAQgDykDADcDACAFIBApAwA3AwAgAyADKQOQAjcDoAcgA0GwAmogA0HgBmoQ2wEgA0GABGogA0GwAmpBwAEQqgIaIANB+AVqIBQpAwA3AwAgA0HwBWogEykDADcDACADQegFaiASKQMANwMAIANB4AVqIBUpAwA3AwAgA0HYBWogDCkDADcDACADQdAFaiANKQMANwMAIANByAVqIA4pAwA3AwAgAyADKQPgBjcDwAUgACADQYAEakGAAhCqAiIAQZgCaiACKQMANwAAIABBkAJqIAQpAwA3AAAgAEGIAmogBSkDADcAACAAIAMpA6AHNwCAAiADQcAHaiQAC/4MAQV/IwBB0AFrIgQkACAEEIoBIARBEkEAEEUCQCAELQDI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QZgDakEFEDggAkEYaiACKQPAAyIHIAMQ3QEgAkHoAGogAikD4AMiBCAGQhN+Ig4Q3QEgAkG4AWogAikD2AMiCCALQhN+Ig8Q3QEgAkGIAmogAikD0AMiCSANQhN+IgwQ3QEgAkHYAmogAikDyAMiCiAFEN0BIAJBCGogByAFEN0BIAJB2ABqIAQgA0ITfhDdASACQagBaiAIIA4Q3QEgAkH4AWogCSAPEN0BIAJByAJqIAogDBDdASACQShqIAcgBhDdASACQfgAaiAEIA8Q3QEgAkHIAWogCCAMEN0BIAJBmAJqIAkgBRDdASACQegCaiAKIAMQ3QEgAkE4aiAHIAsQ3QEgAkGIAWogBCAMEN0BIAJB2AFqIAggBRDdASACQagCaiAJIAMQ3QEgAkH4AmogCiAGEN0BIAJByABqIAcgDRDdASACQZgBaiAEIAUQ3QEgAkHoAWogCCADEN0BIAJBuAJqIAkgBhDdASACQYgDaiAKIAsQ3QEgACACKQN4Ig4gAikDKHwiAyACKQPIAXwiBSACKQOYAnwiBiACKQPoAnwiByACKQNoIhAgAikDGHwiBCACKQO4AXwiCCACKQOIAnwiCSACKQPYAnwiCiACKQNYIhEgAikDCHwiCyACKQOoAXwiDCACKQP4AXwiDSACKQPIAnwiD0IziCAPIA1UrSACQdACaikDACANIAxUrSACQYACaikDACAMIAtUrSACQbABaikDACALIBFUrSACQeAAaikDACACQRBqKQMAfHx8fHx8fHxCDYaEfCILQjOIIAsgClStIAogCVStIAJB4AJqKQMAIAkgCFStIAJBkAJqKQMAIAggBFStIAJBwAFqKQMAIAQgEFStIAJB8ABqKQMAIAJBIGopAwB8fHx8fHx8fHxCDYaEfCIEQv////////8DgzcDECAAIAIpA4gBIg0gAikDOHwiCCACKQPYAXwiCSACKQOoAnwiCiACKQP4AnwiDCAEIAdUrSAHIAZUrSACQfACaikDACAGIAVUrSACQaACaikDACAFIANUrSACQdABaikDACADIA5UrSACQYABaikDACACQTBqKQMAfHx8fHx8fHx8Qg2GIARCM4iEfCIDQv////////8DgzcDGCAAIAIpA5gBIg4gAikDSHwiBSACKQPoAXwiBiACKQO4AnwiByACKQOIA3wiBCADIAxUrSAMIApUrSACQYADaikDACAKIAlUrSACQbACaikDACAJIAhUrSACQeABaikDACAIIA1UrSACQZABaikDACACQUBrKQMAfHx8fHx8fHx8Qg2GIANCM4iEfCIDQv////////8DgzcDICAAIAMgBFStIAQgB1StIAJBkANqKQMAIAcgBlStIAJBwAJqKQMAIAYgBVStIAJB8AFqKQMAIAUgDlStIAJBoAFqKQMAIAJB0ABqKQMAfHx8fHx8fHx8Qg2GIANCM4iEQhN+IA9C/////////wODfCIDQv////////8DgzcDACAAIAtC/////////wODIANCM4h8NwMIIAJBkARqJAALgQsCD38BfgJAAkACQAJAAkACQAJAAkACQAJAAkACQCABKAIYIgVBC0kEQEE4IAVrIQYgAUEUaiIKLQAAIQcgAUEMaiEJIAFBCGohCyABQRhqIQIgAUEQaiEMA0ACQAJAIAdB/wFxIgNBAUcEQCADQQJHBEBBACEHIAsoAgAiBCAJKAIARw0CIApBAjoAAAsgDCgCACEEQQAhAyAMQQA2AgBBAiEHIAQNAgwGC0EBIQcgCygCACIEIAkoAgBGDQYLIAsgBEEBajYCAAsgBDEAACERIAIgBUEIaiIFNgIAIAEgASkDACARIAZBP3GthoQiETcDACAGQXhqIQYgBUELSQ0ACwwBCyABKQMAIRELIAFBGGogBUF1ajYCACABIBFCC4Y3AwAgASgCICgCACIKKAIIIgMgEUI1iKciDE0NA0F/IAFBDGooAgAgASgCCGsiAiABQRBqKAIAQQBHaiIDIAMgAkkbQQN0QQtuQQtsIgNBf0wNBCAKKAIAIAxBA3RqIgIoAgQhCCACKAIAIQoCQCADBEAgA0EBEOoCIgdFDQcgAyAISQ0BDAkLQQEhByADIAhPDQgLIANBAXQiAiAIIAggAkkbIgJBAEgNCQJAIAMEQCAHIANBASACEOMCIgdFDQEMCAsgAkEBEOoCIgcNBwsMCgtBASEHDAELQQAhAwsMBQtBmIHJACAMIAMQ+AEACxCSAwALIANBARCJAwALIAIhAwsgByAIIAogCBCzAQJAIAFBGGoiDCgCACIFQQtJBEBBOCAFayEGIAFBFGoiCi0AACECIAFBDGohCyABQQhqIQ0gAUEQaiEJA0ACQAJAIAJBAUcEQCACQQJHBEBBACECIA0oAgAiBCALKAIARw0CIApBAjoAAAsgCSgCACEEIAlBADYCAEECIQIgBA0CDAYLQQEhAiANKAIAIgQgCygCAEYNBQsgDSAEQQFqNgIACyAEMQAAIREgDCAFQQhqIgU2AgAgASABKQMAIBEgBkE/ca2GhCIRNwMAIAZBeGohBiAFQQtJDQALDAELIAEpAwAhEQsgAUEYaiIOIAVBdWo2AgAgASARQguGNwMAIAFBIGoiDCgCACgCACIFKAIIIgYgEUI1iKciBEsEQCABQRRqIRAgAUEMaiENIAFBCGohDyABQRBqIQsDQCAFKAIAIARBA3RqIgIoAgQhBiACKAIAIQogAyAIa0EBSQRAIAhBAWoiCSAISQ0EIANBAXQiAiAJIAkgAkkbIgJBAEgNBAJAIAMEQCAHIANBASACEOMCIgcNAQwHCyACQQEQ6gIiB0UNBgsgAiEDCyAHIAhqQQFBuITJAEEBELMBIAMgCEEBaiIIayAGSQRAIAYgCGoiCSAISQ0EIANBAXQiAiAJIAkgAkkbIgJBAEgNBAJAIAMEQCAHIANBASACEOMCIgcNAQwHCyACQQEQ6gIiB0UNBgsgAiEDCyAHIAhqIAYgCiAGELMBIAYgCGohCAJAIA4oAgAiBUELSQRAQTggBWshBiAQLQAAIQIDQAJAAkAgAkEBRwRAIAJBAkcEQEEAIQIgDygCACIEIA0oAgBHDQIgEEECOgAACyALKAIAIQQgC0EANgIAQQIhAiAEDQIMCAtBASECIA8oAgAiBCANKAIARg0HCyAPIARBAWo2AgALIAQxAAAhESAOIAVBCGoiBTYCACABIAEpAwAgESAGQT9xrYaEIhE3AwAgBkF4aiEGIAVBC0kNAAsMAQsgASkDACERCyAOIAVBdWo2AgAgASARQguGNwMAIAwoAgAoAgAiBSgCCCIGIBFCNYinIgRLDQALC0GYgckAIAQgBhD4AQALIAAgCDYCCCAAIAM2AgQgACAHNgIADwsQkQMACyACQQEQiQMAC74LAgh/An4jAEGgDWsiAyQAAkAgAkHgAEYEQCADQeADaiICIAFBGGopAAA3AwAgA0HYA2oiBCABQRBqKQAANwMAIANB0ANqIgYgAUEIaikAADcDACADIAEpAAA3A8gDIANByANqEE8gA0GoB2oiBSACKQMANwMAIANBoAdqIgcgBCkDADcDACADQZgHaiICIAYpAwA3AwAgAyADKQPIAzcDkAcgA0GQBWogA0GQB2oQmQIgA0HIBWoiBCABQThqKQAANwMAIANBwAVqIAFBMGopAAA3AwAgA0G4BWogAUEoaikAADcDACADQYYCaiIIIAMtAJYFOgAAIAMgASkAIDcDsAUgAyADLwGQBTsBACADIAMtAJIFOgACIAMgAy8BlAU7AYQCIAMtAJMFIQkgA0GtB2oiCiAEKQAANwAAIAUgA0HDBWopAAA3AwAgByADQbsFaikAADcDACACIANBswVqKQAANwMAIAMgAykAqwU3A5AHIAMpAJcFIQsgAykAnwUhDCADKACnBSEEIANBI2ogAikDADcAACADQStqIAcpAwA3AAAgA0EzaiAFKQMANwAAIANBOGoiBSAKKQAANwAAIAMgCToAAyADIAQ2ABcgAyAMNwAPIAMgCzcAByADIAMvAYQCOwEEIAMgCC0AADoABiADIAMpA5AHNwAbIANB8AhqIgcgAUHYAGopAAA3AwAgA0HoCGoiBCABQdAAaikAADcDACADQeAIaiIIIAFByABqKQAANwMAIAMgASkAQDcD2AggA0H4CGogA0HYCGoQIiADKQP4CEIBUg0BIANB4AtqQQNyIANBgAlqQaABEKoCGiADQb0KaiADQeALakGjARCqAhogA0H4CGogA0HACmpBoAEQqgIaIANBsApqIAcpAwA3AwAgA0GoCmogBCkDADcDACADQaAKaiAIKQMANwMAIAMgAykD2Ag3A5gKIANBkAVqQQNyIANB+AhqQcABEKoCGiADQZAHaiADQZAFakHDARCqAhogA0HIA2pBA3IgA0GTB2pBwAEQqgIaIANBhAJqIANByANqQcMBEKoCGiADQUBrIANBhwJqQcABEKoCGiADQZAFaiADQUBrQcABEKoCGiADQYgHaiAFKQMANwMAIANBgAdqIANBMGopAwA3AwAgA0H4BmogA0EoaikDADcDACADQfAGaiADQSBqKQMANwMAIANB6AZqIANBGGopAwA3AwAgA0HgBmogA0EQaikDADcDACADQdgGaiADQQhqKQMANwMAIAMgAykDADcD0AYgAEEIaiADQZAFakGAAhCqAhogAEEANgIAIANBoA1qJAAPCyAAQQM6AAQgAEEBNgIAIABBFGpCpICAgIAMNwIAIABBEGpBh+rDADYCACAAQQxqQQc2AgAgAEEIakGA6sMANgIAIANBoA1qJAAPCyADQe8LaiADQZgNaikAADcAACADQegLaiADQZENaikAADcDACADIAMpAIkNNwPgCyADQb0KaiADQeALakGjARCqAhogA0GfBWogA0HMCmopAAA3AAAgA0GYBWoiASADQcUKaikAADcDACADIAMpAL0KNwOQBSADQZAHaiADQZAFakHDARCqAhogA0HXA2ogA0GfB2opAAA3AAAgBiACKQAANwMAIAMgAykAkAc3A8gDIANBhAJqIANByANqQcMBEKoCGiAAQQE6AAQgAEEBNgIAIAAgAykAhAI3AAUgAEENaiADQYwCaikAADcAACAAQRRqIANBkwJqKQAANwAAIANBGGoiAEIANwMAIANBEGoiAkIANwMAIANBCGoiBkIANwMAIANCADcDACADQZAFahDFAiAAIANBqAVqKQMANwMAIAIgA0GgBWopAwA3AwAgBiABKQMANwMAIAMgAykDkAU3AwAgBUIANwMAIANBMGpCADcDACADQShqQgA3AwAgA0IANwMgIANBoA1qJAALgwoCCn8BfgJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAIAQEQCAEIQkgBCEKIARBAUcEQEEBIQVBASEGQQEhCQNAIAcgC2oiDCAETw0GIAYhCAJAIAMgBWotAAAiBiADIAxqLQAAIgVJBEAgByAIakEBaiIGIAtrIQlBACEHDAELIAUgBkYEQEEAIAdBAWoiBiAGIAlGIgUbIQcgBkEAIAUbIAhqIQYMAQtBASEJIAhBAWohBkEAIQcgCCELCyAGIAdqIgUgBEkNAAtBASEFQQAhDEEBIQZBACEHQQEhCgNAIAcgDGoiDSAETw0HIAYhCAJAIAMgBWotAAAiBiADIA1qLQAAIgVLBEAgByAIakEBaiIGIAxrIQpBACEHDAELIAUgBkYEQEEAIAdBAWoiBiAGIApGIgUbIQcgBkEAIAUbIAhqIQYMAQtBASEKIAhBAWohBkEAIQcgCCEMCyAGIAdqIgUgBEkNAAsLIAsgDCALIAxLIgUbIgsgBEsNCiAJIAogBRsiBiALaiIFIAZJDQsgBSAESw0MAkAgBkUNACADIAMgBmogCxCbAkUNACALIAQgC2siBSAFIAtJGyAEIQYgAyEHA0BCASAHMQAAQj+DhiAPhCEPIAdBAWohByAGQX9qIgYNAAtBAWohBkF/IQggCyEFQX8MBAtBASEKQQAhB0EBIQVBACEMA0ACQCAFIgggB2oiDSAETw0AIAQgB2sgCEF/c2oiCSAETw0IIAdBf3MgBGogDGsiBSAETw0JIAMgCWotAAAiCSADIAVqLQAAIgVJBEBBACEHIA1BAWoiBSAMayIKIAZHDQIMAQsgBSAJRgRAQQAgB0EBaiIJIAkgCkYiBRshByAJQQAgBRsgCGohBSAGIApHDQIMAQsgCEEBaiEFQQAhB0EBIQogCCEMIAZBAUcNAQsLQQEhDkEAIQdBASEFQQAhCQNAAkAgBSIIIAdqIg0gBE8NACAEIAdrIAhBf3NqIgogBE8NCiAHQX9zIARqIAlrIgUgBE8NCyADIApqLQAAIgogAyAFai0AACIFSwRAQQAhByANQQFqIgUgCWsiDiAGRw0CDAELIAUgCkYEQEEAIAdBAWoiCiAKIA5GIgUbIQcgCkEAIAUbIAhqIQUgBiAORw0CDAELIAhBAWohBUEAIQdBASEOIAghCSAGQQFHDQELCyAGIARLDQ0gBCAMIAkgCSAMSRtrIQUgBkUNAUEAIQhBACEHA0BCASADIAdqMQAAQj+DhiAPhCEPIAYgB0EBaiIHRw0ACwwCCyAAIAM2AjggACABNgIwIABCADcDACAAQTxqQQA2AgAgAEE0aiACNgIAIABBDGpBgQI7AQAgAEEIaiACNgIADwtBACEGQQAhCAsgBAshByAAIAM2AjggACABNgIwIABBATYCACAAQTxqIAQ2AgAgAEE0aiACNgIAIABBKGogBzYCACAAQSRqIAg2AgAgAEEgaiACNgIAIABBHGpBADYCACAAQRhqIAY2AgAgAEEUaiAFNgIAIABBEGogCzYCACAAQQhqIA83AgAPC0GMv8kAIAwgBBD4AQALQYy/yQAgDSAEEPgBAAtBnL/JACAJIAQQ+AEAC0Gsv8kAIAUgBBD4AQALQZy/yQAgCiAEEPgBAAtBrL/JACAFIAQQ+AEACyALIAQQ9wEACyAGIAUQ+QEACyAFIAQQ9wEACyAGIAQQ9wEAC6AJAgF/D34jAEGQA2siAyQAIANBEGogASkDACIEIAIpAwgiBhDdASADQaABaiABKQMgIgcgAikDECILQhN+IhAQ3QEgA0HgAWogASkDGCIIIAIpAxgiDUITfiIOEN0BIANBoAJqIAEpAxAiBSACKQMgIg9CE34iDBDdASADQdAAaiABKQMIIgkgAikDACIKEN0BIAMgCiAEEN0BIANBkAFqIAcgBkITfhDdASADQdABaiAIIBAQ3QEgA0GQAmogBSAOEN0BIANB0AJqIAkgDBDdASADQSBqIAQgCxDdASADQbABaiAHIA4Q3QEgA0HwAWogCCAMEN0BIANB4ABqIAUgChDdASADQeACaiAJIAYQ3QEgA0EwaiAEIA0Q3QEgA0HAAWogByAMEN0BIANB8ABqIAggChDdASADQbACaiAFIAYQ3QEgA0HwAmogCSALEN0BIANBQGsgBCAPEN0BIANBgAFqIAcgChDdASADQYACaiAIIAYQ3QEgA0HAAmogBSALEN0BIANBgANqIAkgDRDdASAAIAMpA7ABIg8gAykDIHwiBCADKQPwAXwiBiADKQNgfCIHIAMpA+ACfCIIIAMpA6ABIhEgAykDEHwiBSADKQPgAXwiCSADKQOgAnwiCiADKQNQfCILIAMpA5ABIhIgAykDAHwiDCADKQPQAXwiDSADKQOQAnwiDiADKQPQAnwiEEIziCAQIA5UrSADQdgCaikDACAOIA1UrSADQZgCaikDACANIAxUrSADQdgBaikDACAMIBJUrSADQZgBaikDACADQQhqKQMAfHx8fHx8fHxCDYaEfCIMQjOIIAwgC1StIAsgClStIANB2ABqKQMAIAogCVStIANBqAJqKQMAIAkgBVStIANB6AFqKQMAIAUgEVStIANBqAFqKQMAIANBGGopAwB8fHx8fHx8fHxCDYaEfCIFQv////////8DgzcDECAAIAMpA8ABIg4gAykDMHwiCSADKQNwfCIKIAMpA7ACfCILIAMpA/ACfCINIAUgCFStIAggB1StIANB6AJqKQMAIAcgBlStIANB6ABqKQMAIAYgBFStIANB+AFqKQMAIAQgD1StIANBuAFqKQMAIANBKGopAwB8fHx8fHx8fHxCDYYgBUIziIR8IgRC/////////wODNwMYIAAgAykDgAEiDyADKQNAfCIGIAMpA4ACfCIHIAMpA8ACfCIIIAMpA4ADfCIFIAQgDVStIA0gC1StIANB+AJqKQMAIAsgClStIANBuAJqKQMAIAogCVStIANB+ABqKQMA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IAE2AgAgCSACQfAAbGoiAygCKEHA9skARg0BQQEhBiABRQ0DA0AgASgCFCAIRg0DIAEoAhgiAQ0ACwwDCyAJIAJB8ABsaiIBIAEoAiAiAkF/ajYCICACQQJxIAJBBElyDQogAUEgahCLAQwKCyADQShqIAo2AgBBASEGDAELQQAhBgsgBCAIIAZBxIvJACgCABEFAAsgCSACQfAAbGoiASABKAIgIgZBf2o2AiAgBkECcSAGQQRJcg0CIAFBIGoQiwEMAgtByI/JAEG4j8kAELwCAAtBwPbJACABEOQBAAsgB0EYai0AAEECRwRAQfT0yQBB9PTJACgCAEF/ajYCACAHKAIIQQFBARD0AgtBAiEBDAULAkBB+PTJACgCACIGDQBBA0EAEGYhAUH49MkAQfj0yQAoAgAiBiABIAYbNgIAIAZFBEAgASEGDAELIAEoAgRB8ABsIgIEQCABKAIAIAJBCBD0AgsgAUEQQQQQ9AILQdT2yQAoAgAiCEG5893xeWxBACAGKAIIa0EfcXYiAiAGKAIEIgFJDQALC0G4jskAIAIgARD4AQALQQAhAUHc9skAKAIAIQYLIAdBGGotAABBAkYNAEH09MkAQfT0yQAoAgBBf2o2AgAgBygCCEEBQQEQ9AILIAAgBjYCBCAAIAE2AgAgB0GAAWokAAugCwIIfwh+IwBBwAFrIgIkACACQUBrIgZCADcDACACQThqIgdCADcDACACQTBqIgNCADcDACACQShqIgRCADcDACACQSBqIgVCADcDACACQRhqIghCADcDACACQRBqIgkgASkACDcDACACIAEpAAA3AwggCCABMQAQIAExABFCCIaEIAExABJCEIaEIAExABNCGIaEIAExABRCIIaEIAExABVCKIaEIAExABZCMIaEIAExABdCOIaENwMAIAUgBSkDACABMQAYhCABMQAZQgiGhCABMQAaQhCGhCABMQAbQhiGhCABMQAcQiCGhCABMQAdQiiGhCABMQAeQjCGhCABMQAfQjiGhDcDACAEIAQpAwAgATEAIIQgATEAIUIIhoQgATEAIkIQhoQgATEAI0IYhoQgATEAJEIghoQgATEAJUIohoQgATEAJkIwhoQgATEAJ0I4hoQ3AwAgAyADKQMAIAExACiEIAExAClCCIaEIAExACpCEIaEIAExACtCGIaEIAExACxCIIaEIAExAC1CKIaEIAExAC5CMIaEIAExAC9COIaENwMAIAcgBykDACABMQAwhCABMQAxQgiGhCABMQAyQhCGhCABMQAzQhiGhCABMQA0QiCGhCABMQA1QiiGhCABMQA2QjCGhCABMQA3QjiGhCIKNwMAIAYgBikDACABMQA4hCABMQA5QgiGhCABMQA6QhCGhCABMQA7QhiGhCABMQA8QiCGhCABMQA9QiiGhCABMQA+QjCGhCABMQA/QjiGhCIMNwMAIAkpAwAhDSAIKQMAIQ4gBSkDACEPIAQpAwAhCyADKQMAIRAgAiACKQMIIhFC/////////weDNwNIIAIgDEIUiDcDkAEgAiAMQiCGQoCAgIDw//8HgyAKQiCIhDcDiAEgAiAKQhSGQoCAwP////8HgyAQQiyIhDcDgAEgAiALQgSIQv////////8HgzcDcCACIAtCMIZCgICAgICAwAeDIA9CEIiENwNoIAIgD0IkhkKAgICAgP7/B4MgDkIciIQ3A2AgAiAOQhiGQoCAgPj///8HgyANQiiIhDcDWCACIA1CDIZCgOD//////weDIBFCNIiENwNQIAIgEEIIhkKA/v//////B4MgC0I4iIQ3A3ggAkGYAWogAkHIAGpB6JXIABAeIAIgAkG4AWoiASkDADcDaCACIAJBsAFqIgMpAwA3A2AgAiACQagBaiIEKQMANwNYIAIgAkGgAWoiBSkDADcDUCACIAIpA5gBNwNIIAJBmAFqIAJB8ABqQZCWyAAQHiACIAEpAwA3A5ABIAIgAykDADcDiAEgAiAEKQMANwOAASACIAUpAwA3A3ggAiACKQOYATcDcCAAIAIpA2ggAikDkAEgAikDYCACKQOIASACKQNYIAIpA4ABIAIpA1AgAikDeCACKQNwIAIpA0h8IgtCNIh8fCIKQjSIfHwiDEI0iHx8Ig1CNIh8fEL/////////B4MgDUL/////////B4MgDEL/////////B4MgCkL/////////B4MgC0L/////////B4NCk9iomNqc5358IgpCP4d8Qv+0yrGIuoV5fCIMQj+HfEKHwqx/fCINQj+HfCIOQj+HfEKAgICAgIB8fCIPQj+HIgtC7afX56XjmAGDIApC/////////weDfCIKQv////////8HgzcDACAAIAtCgcu1zvfF+gaDIAxC/////////weDfCAKQjSIfCIKQv////////8HgzcDCCAAIAtC+b3TAIMgDUL/////////B4N8IApCNIh8IgpC/////////weDNwMQIAAgDkL/////////B4MgCkI0iHwiCkL/////////B4M3AxggACALQoCAgICAgASDIA98IApCNIh8Qv////////8HgzcDICACQcABaiQAC7cKAg9/AX4jAEEgayIIJABBASELAkAgAigCGEEiIAJBHGooAgAoAhARAQANAAJAIAEEQCAAIAFqIQogAkEYaiEOIAJBHGohDyAAIQYDQAJAIAYhESAGQQFqIQUCQCAGLAAAIgNBAE4EQCADQf8BcSEDIAUhBgwBCwJAIAUgCkcEQCAFLQAAQT9xIQcgBkECaiIGIQUMAQtBACEHIAohBgsgA0EfcSEMAn8CQCADQf8BcSINQeABTwRAIAYgCkYNASAGLQAAQT9xIRAgBkEBaiIFDAILIAcgDEEGdHIhAyAFIQYMAgtBACEQIAoLIQMgECAHQQZ0ciEHAn8CQCANQfABTwRAIAMgCkYNASADQQFqIQYgAy0AAEE/cQwCCyAHIAxBDHRyIQMgBSEGDAILIAUhBkEACyAMQRJ0QYCA8ABxIAdBBnRyciIDQYCAxABGDQELQQIhBQJAAkACQAJAAkACQAJAIANBd2oiDUEeTQRAQfQAIQcCQCANQQFrDh4AAwMEAwMDAwMDAwMDAwMDAwMDAwMDAwMCAwMDAwIHC0HuACEHDAYLIANB3ABHDQELIAMhBwwECyADEJwBRQ0BDAILQfIAIQcMAgsgA0H//wNNBEAgA0GQyMkAQShB4MjJAEGvAkGPy8kAQbwCEIMBRQ0BDAMLIANB//8HTQRAIANBy83JAEEhQY3OyQBBngFBq8/JAEH9AhCDAUUNAQwDCyADQeKLdGpB4o0sSSADQe+DOEtyIANBn6h0akGfGEkgA0He4nRqQQ5JcnIgA0H+//8AcUGe8ApGIANBqbJ1akEpSXJyDQAgA0HLkXVqQQpLDQILIANBAXJnQQJ2QQdzrUKAgICA0ACEIRJBAyEFIAMhBwsgCCABNgIEIAggADYCACAIIAQ2AgggCCAJNgIMAkAgCSAESQ0AIARFIAEgBEZyRQRAIAQgAU8NASAAIARqLAAAQb9/TA0BCyAJRSABIAlGckUEQCAJIAFPDQEg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QRBqKAIAIgRBAUcEQCAEQQJHBEAgBEEDRg0EIAZBFGooAgAMAgsgA0EoaiIFKAIAIgQgA0EsaigCAEYNAyAFIARBCGo2AgAgBCgCBEGsAUcNAyAEKAIAKAIADAELIAZBFGooAgAiBCAAKAIAIgVPDQEgASgCACAEQQN0aiIEKAIEQawBRw0CIAQoAgAoAgALIQVBASECDAELQfjGyQAgBCAFEPgBAAsgA0EcaiAFNgIAIANBGGogAjYCAAJAAkAgBigCAEEBRgRAIAZBBGooAgAiAiAAKAIAIgVPDQIgASgCACACQQN0aiECDAELIANBKGoiBSgCACICIANBLGooAgBGDQMgBSACQQhqNgIACyACKAIAIANBCGogAkEEaigCABEBAA0FIAggC08NBCAHQXxqIQIgBygCACEFIAdBCGohByAGQSRqIQYgCEEBaiEIIANBIGooAgAgAigCACAFIANBJGooAgAoAgwRBwBFDQEMBQsLQejGyQAgAiAFEPgBAAtBlL3JABCGAgALIAIoAgAhCSACKAIEIgogBSAFIApLGyICRQ0AIAAgCSgCACAJKAIEIAEoAgwRBwANASAJQQxqIQYgA0EgaiEAIANBJGohAUEBIQgDQCAHKAIAIANBCGogB0EEaigCABEBAA0CIAggAk8NASAGQXxqIQUgBigCACEEIAZBCGohBiAHQQhqIQcgCEEBaiEIIAAoAgAgBSgCACAEIAEoAgAoAgwRBwBFDQALDAELIAogCE0NASADQSBqKAIAIAkgCEEDdGoiACgCACAAKAIEIANBJGooAgAoAgwRBwBFDQELQQEMAQtBAAsgA0FAayQAC9sIAgV/BH4jAEHQBGsiByQAAkACQAJAIARBwABGBEAgB0HYAGoiBCADQRhqKQAANwMAIAdB0ABqIgggA0EQaikAADcDACAHQcgAaiIJIANBCGopAAA3AwAgByADKQAANwNAIAdBQGsQTyAHQdgBaiAEKQMANwMAIAdB0AFqIAgpAwA3AwAgB0HIAWogCSkDADcDACAHIAcpA0A3A8ABIAdBiANqIAdBwAFqEJkCIAdBwANqIANBOGopAAAiDDcDACAHQbgDaiADQTBqKQAAIg03AwAgB0GwA2ogA0EoaikAACIONwMAIAdBiAFqIAdBkANqIgopAwA3AwAgB0GQAWogB0GYA2oiCykD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Bi8BbDsBACAGIAYvAWg7AWQgBkEjaiABOgAAIAZBJGogBikDSDcCACAGQSxqIAgpAwA3AgAgBkEzaiAAKQAANwAAIAYgCzoAAyAGIBIgEUIghoRC//////8fgyAHrUIohoQ3ABsgBiAQNgAXIAYgDzYAEyAGIA42AA8gBiANNgALIAYgDDYAByAGIAYvAWQ7AQQgBiAKLQAAOgAGIAZBP2ogCS0AADoAACAGQTtqIAYoAkA2AAACQCAFQSBGBEAgBkG4BGogBEEYaikAADcDACAGQbAEaiAEQRBqKQAANwMAIAZBqARqIARBCGopAAA3AwAgBiAEKQAANwOgBCAGQdgCaiAGQaAEahCOASAGKALYAiAGQZABaiAGQdgCakEEckHEARCqAhpBAUYNASAGQZABaiAGQdwCaiAGQZQBakHAARCqAkHAARCqAhogBkGQAWogAiADIAYQfSAGQcAEaiQADwsgBkHsAmpC0oCAgIAENwIAIAZB6AJqQd2AwAA2AgAgBkHkAmpBCTYCACAGQeACakHUgMAANgIAIAZBAzoA3AIgBkEBNgLYAiAGQZABaiAGQdgCakEEckHEARCqAhoLQaiCwABBH0GYgsAAELgCAAuLCQIFfwZ+IwBB8AJrIgIkACACQQhqIAEQZyACQTBqIAJBCGpBARA4IAIgAikDUELw////////P3wiCkL/////////A4MgAikDSELw////////P3wiB0IziHw3A3ggAiAHQv////////8DgyACKQNAQvD///////8/fCIHQjOIfDcDcCACIAdC/////////wODIAIpAzhC8P///////z98IgdCM4h8NwNoIAIgB0L/////////A4MgAikDMELP/f//////P3wiB0IziHw3A2AgAiAKQjOIQhN+IAdC/////////wODfDcDWCACQfgBaiACQTBqQciUyAAQKSACIAIpA5gCNwOgASACIAIpA5ACNwOYASACIAIpA4gCNwOQASACIAIpA4ACNwOIAUIBIQcgAiACKQP4AUIBfDcDgAEgAkH4AWogAkHYAGogAkGAAWoQDCACLQD4ASEDIAJByAFqIAJBoAJqKQMANwMAIAJBwAFqIAJBmAJqIgQpAwA3AwAgAkG4AWogAkGQAmoiBSkDADcDACACQbABaiACQYgCaiIGKQMANwMAIAIgAikDgAI3A6gBAkAgA0EBRgRAIAEtAB9BB3YhASACQfgBaiACQagBahBbIAJCACABIAItAPgBQQFxc61C/wGDfSIKQvD///////8/IAIpA8gBIgh9IgxC/////////wODQvD///////8/IAIpA8ABIgt9IglCM4h8IAiFgyAIhTcDyAEgAiALIAsgCUL/////////A4NC8P///////z8gAikDuAEiCH0iCUIziHyFIAqDhTcDwAEgAiAIIAggCUL/////////A4NC8P///////z8gAikDsAEiC30iCUIziHyFIAqDhTcDuAEgAiALIAsgCUL/////////A4NC0P3//////z8gAikDqAEiCH0iCUIziHyFIAqDhTcDsAEgAiAIIAggDEIziEITfiAJQv////////8Dg3yFIAqDhTcDqAEgBCACKQPIATcDACAFIAIpA8ABNwMAIAYgAikDuAE3AwAgAkGAAmogAikDsAE3AwAgAiACKQOoATcD+AEgAkHoAmoiASACQShqKQMANwMAIAJB4AJqIgMgAkEgaikDADcDACACQdgCaiIEIAJBGGopAwA3AwAgAkHQAmoiBSACQRBqKQMANwMAIAIgAikDCDcDyAIgAkHQAWogAkGoAWogAkEIahApIAJBwAJqIAEpAwA3AwAgAkG4AmogAykDADcDACACQbACaiAEKQMANwMAIAJBqAJqIAUpAwA3AwAgAiACKQPIAjcDoAIgAEEIaiACQfgBakHQABCqAhogAEH4AGpCADcDACAAQfAAakIANwMAIABB6ABqQgA3AwAgAEHgAGpCADcDACAAQdgAakIBNwMAIABBgAFqIAIpA9ABNwMAIABBiAFqIAJB2AFqKQMANwMAIABBkAFqIAJB4AFqKQMANwMAIABBmAFqIAJB6AFqKQMANwMAIABBoAFqIAJB8AFqKQMANwMADAELQgAhBwsgACAHNwMAIAJB8AJqJAAL6QYCAX8UfiMAQfABayIDJAAgASkDICEFIAEpAxghBiABKQMQIQQgASkDCCEHIAEpAwAhCANAIANB8ABqIAggBxDdASADQTBqIAQgBUITfiIKEN0BIANB4AFqIAZCE34iCSAGEN0BIANBQGsgCSAEEN0BIANBgAFqIAcgChDdASADQSBqIAggBBDdASADQdABaiAJIAUQ3QEgA0EQaiAHIAQQ3QEgA0GgAWogCCAGEN0BIANBwAFqIAogBRDdASADQdAAaiAHIAYQ3QEgA0GQAWogCCAFEN0BIANBsAFqIAggCBDdASADQeAAaiAHIAcQ3QEgAyAEIAQQ3QEgAykDkAEiDiADKQNQfCIEQgGGIg8gAykDAHwiByADKQOgASIQIAMpAxB8IghCAYYiESADKQPAAXwiBSADKQMgIhIgAykD0AF8IgZCAYYiEyADKQNgfCIKIAMpA3AiFCADKQMwfCIJQgGGIhUgAykD4AF8IgwgAykDgAEiFiADKQNAfCILQgGGIhcgAykDsAF8Ig1CM4ggDSAXVK0gA0G4AWopAwAgCyAWVK0gA0GIAWopAwAgA0HIAGopAwB8fEIBhiALQj+IhHx8Qg2GhHwiC0IziCALIAxUrSAMIBVUrSADQegBaikDACAJIBRUrSADQfgAaikDACADQThqKQMAfHxCAYYgCUI/iIR8fHxCDYaEfCIJQjOIIAkgClStIAogE1StIANB6ABqKQMAIAYgElStIANBKGopAwAgA0HYAWopAwB8fEIBhiAGQj+IhHx8fEINhoR8IgZCM4ggBiAFVK0gBSARVK0gA0HIAWopAwAgCCAQVK0gA0GoAWopAwAgA0EYaikDAHx8QgGGIAhCP4iEfHx8Qg2GhHwiBUIziCAFIAdUrSAHIA9UrSADQQhqKQMAIAQgDlStIANBmAFqKQMAIANB2ABqKQMAfHxCAYYgBEI/iIR8fHxCDYaEQhN+IA1C/////////wODfCIEQv////////8DgyEIIAtC/////////wODIARCM4h8IQcgBUL/////////A4MhBSAGQv////////8DgyEGIAlC/////////wODIQQgAkF/aiICDQALIAAgBTcDICAAIAY3AxggACAENwMQIAAgBzcDCCAAIAg3AwAgA0HwAWokAAvuBwIJfwF+IwBBsAVrIgYkAAJAIAFBwABGBEAgBkGeAmoiASAAQQJqLQAAOgAAIAZBgARqIgcgAEEoaikAADcDACAGQYgEaiIIIABBMGopAAA3AwAgBkGPBGoiCSAAQTdqKQAANwAAIAYgAC8AADsBnAIgBiAAKQATNwOIAiAGIABBGGopAAA3AI0CIAYgACkAIDcD+AMgAC0APyIKQSBJDQELIAZBsAVqJABBAA8LIAAoAAMhCyAAKAAHIQwgACgA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YDsAiSAgAEH4H2oQoQIACyABEAALIABB4OAAaiQAQaD3yQALmAcCBn8KfiMAQcADayIDJAAgAyACKQMgIgogAkHIAGopAwAiCXw3A8gBIAMgAikDGCILIAJBQGspAwAiDHw3A8ABIAMgAikDECINIAJBOGopAwAiDnw3A7gBIAMgAikDCCIPIAJBMGopAwAiEHw3A7ABIAMgAikDACIRIAIpAygiEnw3A6gBIANBuANqIgQgAkHwAGopAwA3AwAgA0GwA2oiBSACQegAaikDADcDACADQagDaiIGIAJB4ABqKQMANwMAIANBoANqIgcgAkHYAGopAwA3AwAgAyACKQNQNwOYAyADQQhqIAJB+ABqQfCUyAAQKSADQfABaiAJQvD///////8/IAp9fCIKQv////////8DgyAMQvD///////8/IAt9fCIJQjOIfDcDACADQegBaiAJQv////////8DgyAOQvD///////8/IA19fCIJQjOIfDcDACADQeABaiAJQv////////8DgyAQQvD///////8/IA99fCIJQjOIfDcDACADQdgBaiAJQv////////8DgyASQtD9//////8/IBF9fCIJQjOIfDcDACADQYACaiAHKQMANwMAIANBiAJqIAYpAwA3AwAgA0GQAmogBSkDADcDACADQZgCaiAEKQMANwMAIANBqAJqIANBEGopAwA3AwAgA0GwAmogA0EYaikDADcDACADQbgCaiADQSBqKQMANwMAIANBwAJqIANBKGopAwA3AwAgAyAKQjOIQhN+IAlC/////////wODfDcD0AEgAyADKQOYAzcD+AEgAyADKQMINwOgAiADQQhqIAEgA0GoAWoQPiAAIANBCGogA0GAAWoiARApIANByAJqIANBMGoiAiADQdgAaiIIECkgA0HwAmogCCABECkgA0GYA2ogA0EIaiACECkgAEHIAGogA0HoAmopAwA3AwAgAEFAayADQeACaikDADcDACAAQThqIANB2AJqKQMANwMAIABBMGogA0HQAmopAwA3AwAgACADKQPIAjcDKCAAIAMpA/ACNwNQIABB2ABqIANB+AJqKQMANwMAIABB4ABqIANBgANqKQMANwMAIABB6ABqIANBiANqKQMANwMAIABB8ABqIANBkANqKQMANwMAIABBmAFqIAQpAwA3AwAgAEGQAWogBSkDADcDACAAQYgBaiAGKQMANwMAIABBgAFqIAcpAwA3AwAgACADKQOYAzcDeCADQcADaiQAC8AFAQV/AkACQAJAAkACQAJAIAJFDQAgAkF5akEAIAJBB0sbIQcDQAJAAkACQAJAAkACQAJAAkACQAJAIAEgBGoiAy0AACIFQRh0QRh1IgZBAE4EQCADQQNxRQ0BIARBAWoiBCACSQ0LDAwLIAVBkMDJAGotAAAiA0EERg0BIANBA0YNAiADQQJHDQ0gBEEBaiIDIAJPDQ4gASADai0AAEHAAXFBgAFGDQkMDQsCQCAEIAdPDQADQCABIARqIgNBBGooAgAgAygCAHJBgIGChHhxDQEgBEEIaiIEIAdJDQALCwJAIAQgAk8NAANAIAEgBGosAABBAEgNASAEQQFqIgQgAkkNAAsLIAQgAkkNCQwKCyAEQQFqIgMgAk8NDCABIANqLQAAIQMgBUHwAUYNASAFQfQBRw0CIANBGHRBGHVBf0oNCyADQY8BTQ0DDAsLIARBAWoiAyACTw0LIAEgA2otAAAhAyAFQeABRg0DIAVB7QFHDQQgA0EYdEEYdUF/Sg0KIANBoAFJDQUMCgsgA0HwAGpB/wFxQTBJDQEMCQsgA0G/AUsgBkEPakH/AXFBAktyIANBGHRBGHVBAE5yDQgLIARBAmoiAyACTw0IIAEgA2otAABBwAFxQYABRw0JIARBA2oiAyACTw0IIAEgA2otAABBwAFxQYABRg0DDAYLIANB4AFxQaABRg0BDAYLIAZBH2pB/wFxQQxJBEAgA0EYdEEYdUF/Sg0GIANBvwFNDQEMBgsgBkH+AXFB7gFHIANBvwFLciADQRh0QRh1QQBOcg0FCyAEQQJqIgMgAk8NBSABIANqLQAAQcABcUGAAUcNBgsgA0EBaiIEIAJJDQALCyAAQQI6AAQPCyAAQYEGOwEEIAAgBDYCAA8LIABBgQI7AQQMAgsgAEEAOgAEDAELIABBgQQ7AQQLIAAgBDYCAAu4CAIBfw9+IwBB8AFrIgMkACADIAEpAwAiBiABKQMoIgR8NwMAIAMgASkDICIHIAFByABqKQMAIgV8NwMgIAMgASkDGCILIAFBQGspAwAiCHw3AxggAyABKQMQIgwgAUE4aikDACIJfDcDECADIAEpAwgiDSABQTBqKQMAIgp8NwMIIAMgBULw////////PyAHfXwiB0L/////////A4MgCELw////////PyALfXwiBUIziHw3A0ggAyAFQv////////8DgyAJQvD///////8/IAx9fCIFQjOIfDcDQCADIAVC/////////wODIApC8P///////z8gDX18IgVCM4h8NwM4IAMgBUL/////////A4MgBELQ/f//////PyAGfXwiBkIziHw3AzAgAyAHQjOIQhN+IAZC/////////wODfDcDKCADQdAAaiADIAIQKSADQfgAaiADQShqIAJBKGoQKSADQaABaiABQfgAaiACQfgAahApIANByAFqIAFB0ABqIAJB0ABqECkgACADKQNwIgZC8P///////z98IAMpA5gBIgR9IgdC/////////wODIAMpA2giBULw////////P3wgAykDkAEiC30iCEIziHw3AyAgACAIQv////////8DgyADKQNgIghC8P///////z98IAMpA4gBIgx9IglCM4h8NwMYIAAgCUL/////////A4MgAykDWCIJQvD///////8/fCADKQOAASINfSIKQjOIfDcDECAAIApC/////////wODIAMpA1AiCkLQ/f//////P3wgAykDeCIPfSIOQjOIfDcDCCAAIAdCM4hCE34gDkL/////////A4N8NwMAIAMpA8gBIQcgAykD0AEhDiADKQPYASEQIAMpA+ABIREgAykD6AEhEiAAQcgAaiAEIAZ8NwMAIABBQGsgBSALfDcDACAAQThqIAggDHw3AwAgAEEwaiAJIA18NwMAIAAgCiAPfDcDKCAAQfAAaiADKQPAASIGIBJCAYYiBHw3AwAgAEHoAGogAykDuAEiBSARQgGGIgt8NwMAIABB4ABqIAMpA7ABIgggEEIBhiIMfDcDACAAQdgAaiADKQOoASIJIA5CAYYiDXw3AwAgACADKQOgASIKIAdCAYYiB3w3A1AgAEGYAWogBELw////////P3wgBn0iBkL/////////A4MgC0Lw////////P3wgBX0iBEIziHw3AwAgAEGQAWogBEL/////////A4MgDELw////////P3wgCH0iBEIziHw3AwAgAEGIAWogBEL/////////A4MgDULw////////P3wgCX0iBEIziHw3AwAgAEGAAWogBEL/////////A4MgB0LQ/f//////P3wgCn0iBEIziHw3AwAgACAGQjOIQhN+IARC/////////wODfDcDeCADQfABaiQAC7gIAgF/D34jAEHwAWsiAyQAIAMgASkDACIGIAEpAygiBHw3AwAgAyABKQMgIgcgAUHIAGopAwAiBXw3AyAgAyABKQMYIgsgAUFAaykDACIIfDcDGCADIAEpAxAiDCABQThqKQMAIgl8NwMQIAMgASkDCCINIAFBMGopAwAiCnw3AwggAyAFQvD///////8/IAd9fCIHQv////////8DgyAIQvD///////8/IAt9fCIFQjOIfDcDSCADIAVC/////////wODIAlC8P///////z8gDH18IgVCM4h8NwNAIAMgBUL/////////A4MgCkLw////////PyANfXwiBUIziHw3AzggAyAFQv////////8DgyAEQtD9//////8/IAZ9fCIGQjOIfDcDMCADIAdCM4hCE34gBkL/////////A4N8NwMoIANB0ABqIAMgAkEoahApIANB+ABqIANBKGogAhApIANBoAFqIAFB+ABqIAJB+ABqECkgA0HIAWogAUHQAGogAkHQAGoQKSAAIAMpA3AiBkLw////////P3wgAykDmAEiBH0iB0L/////////A4MgAykDaCIFQvD///////8/fCADKQOQASILfSIIQjOIfDcDICAAIAhC/////////wODIAMpA2AiCELw////////P3wgAykDiAEiDH0iCUIziHw3AxggACAJQv////////8DgyADKQNYIglC8P///////z98IAMpA4ABIg19IgpCM4h8NwMQIAAgCkL/////////A4MgAykDUCIKQtD9//////8/fCADKQN4Ig99Ig5CM4h8NwMIIAAgB0IziEITfiAOQv////////8Dg3w3AwAgAykDyAEhByADKQPQASEOIAMpA9gBIRAgAykD4AEhESADKQPoASESIABByABqIAQgBnw3AwAgAEFAayAFIAt8NwMAIABBOGogCCAMfDcDACAAQTBqIAkgDXw3AwAgACAKIA98NwMoIABBmAFqIAMpA8ABIgYgEkIBhiIEfDcDACAAQZABaiADKQO4ASIFIBFCAYYiC3w3AwAgAEGIAWogAykDsAEiCCAQQgGGIgx8NwMAIABBgAFqIAMpA6gBIgkgDkIBhiINfDcDACAAIAMpA6ABIgogB0IBhiIHfDcDeCAAQfAAaiAEQvD///////8/fCAGfSIGQv////////8DgyALQvD///////8/fCAFfSIEQjOIfDcDACAAQegAaiAEQv////////8DgyAMQvD///////8/fCAIfSIEQjOIfDcDACAAQeAAaiAEQv////////8DgyANQvD///////8/fCAJfSIEQjOIfDcDACAAQdgAaiAEQv////////8DgyAHQtD9//////8/fCAKfSIEQjOIfDcDACAAIAZCM4hCE34gBEL/////////A4N8NwNQIANB8AFqJAALswgCAX8PfiMAQdABayIDJAAgAyABKQMAIgYgASkDKCIEfDcDCCADIAEpAyAiByABQcgAaikDACIFfDcDKCADIAEpAxgiCyABQUBrKQMAIgh8NwMgIAMgASkDECIMIAFBOGopAwAiCXw3AxggAyABKQMIIg0gAUEwaikDACIKfDcDECADIAVC8P///////z8gB318IgdC/////////wODIAhC8P///////z8gC318IgVCM4h8NwNQIAMgBUL/////////A4MgCULw////////PyAMfXwiBUIziHw3A0ggAyAFQv////////8DgyAKQvD///////8/IA19fCIFQjOIfDcDQCADIAVC/////////wODIARC0P3//////z8gBn18IgZCM4h8NwM4IAMgB0IziEITfiAGQv////////8Dg3w3AzAgA0HYAGogA0EIaiACECkgA0GAAWogA0EwaiACQShqECkgA0GoAWogAUH4AGogAkHQAGoQKSAAIAMpA3giBkLw////////P3wgAykDoAEiBH0iB0L/////////A4MgAykDcCIFQvD///////8/fCADKQOYASILfSIIQjOIfDcDICAAIAhC/////////wODIAMpA2giCELw////////P3wgAykDkAEiDH0iCUIziHw3AxggACAJQv////////8DgyADKQNgIglC8P///////z98IAMpA4gBIg19IgpCM4h8NwMQIAAgCkL/////////A4MgAykDWCIKQtD9//////8/fCADKQOAASIPfSIOQjOIfDcDCCAAIAdCM4hCE34gDkL/////////A4N8NwMAIAFB2ABqKQMAIQcgAUHgAGopAwAhDiABQegAaikDACEQIAFB8ABqKQMAIREgASkDUCESIABByABqIAQgBnw3AwAgAEFAayAFIAt8NwMAIABBOGogCCAMfDcDACAAQTBqIAkgDXw3AwAgACAKIA98NwMoIABB8ABqIAMpA8gBIgYgEUIBhiIEfDcDACAAQegAaiADKQPAASIFIBBCAYYiC3w3AwAgAEHgAGogAykDuAEiCCAOQgGGIgx8NwMAIABB2ABqIAMpA7ABIgkgB0IBhiIHfDcDACAAIAMpA6gBIg0gEkIBhiIKfDcDUCAAQZgBaiAEQvD///////8/fCAGfSIGQv////////8DgyALQvD///////8/fCAFfSIEQjOIfDcDACAAQZABaiAEQv////////8DgyAMQvD///////8/fCAIfSIEQjOIfDcDACAAQYgBaiAEQv////////8DgyAHQvD///////8/fCAJfSIEQjOIfDcDACAAQYABaiAEQv////////8DgyAKQtD9//////8/fCANfSIEQjOIfDcDACAAIAZCM4hCE34gBEL/////////A4N8NwN4IANB0AFqJAALswgCAX8PfiMAQdABayIDJAAgAyABKQMAIgYgASkDKCIEfDcDCCADIAEpAyAiByABQcgAaikDACIFfDcDKCADIAEpAxgiCyABQUBrKQMAIgh8NwMgIAMgASkDECIMIAFBOGopAwAiCXw3AxggAyABKQMIIg0gAUEwaikDACIKfDcDECADIAVC8P///////z8gB318IgdC/////////wODIAhC8P///////z8gC318IgVCM4h8NwNQIAMgBUL/////////A4MgCULw////////PyAMfXwiBUIziHw3A0ggAyAFQv////////8DgyAKQvD///////8/IA19fCIFQjOIfDcDQCADIAVC/////////wODIARC0P3//////z8gBn18IgZCM4h8NwM4IAMgB0IziEITfiAGQv////////8Dg3w3AzAgA0HYAGogA0EIaiACQShqECkgA0GAAWogA0EwaiACECkgA0GoAWogAUH4AGogAkHQAGoQKSAAIAMpA3giBkLw////////P3wgAykDoAEiBH0iB0L/////////A4MgAykDcCIFQvD///////8/fCADKQOYASILfSIIQjOIfDcDICAAIAhC/////////wODIAMpA2giCELw////////P3wgAykDkAEiDH0iCUIziHw3AxggACAJQv////////8DgyADKQNgIglC8P///////z98IAMpA4gBIg19IgpCM4h8NwMQIAAgCkL/////////A4MgAykDWCIKQtD9//////8/fCADKQOAASIPfSIOQjOIfDcDCCAAIAdCM4hCE34gDkL/////////A4N8NwMAIAFB2ABqKQMAIQcgAUHgAGopAwAhDiABQegAaikDACEQIAFB8ABqKQMAIREgASkDUCESIABByABqIAQgBnw3AwAgAEFAayAFIAt8NwMAIABBOGogCCAMfDcDACAAQTBqIAkgDXw3AwAgACAKIA98NwMoIABBmAFqIAMpA8gBIgYgEUIBhiIEfDcDACAAQZABaiADKQPAASIFIBBCAYYiC3w3AwAgAEGIAWogAykDuAEiCCAOQgGGIgx8NwMAIABBgAFqIAMpA7ABIgkgB0IBhiIHfDcDACAAIAMpA6gBIg0gEkIBhiIKfDcDeCAAQfAAaiAEQvD///////8/fCAGfSIGQv////////8DgyALQvD///////8/fCAFfSIEQjOIfDcDACAAQegAaiAEQv////////8DgyAMQvD///////8/fCAIfSIEQjOIfDcDACAAQeAAaiAEQv////////8DgyAHQvD///////8/fCAJfSIEQjOIfDcDACAAQdgAaiAEQv////////8DgyAKQtD9//////8/fCANfSIEQjOIfDcDACAAIAZCM4hCE34gBEL/////////A4N8NwNQIANB0AFqJAALxQcCAX8IfiMAQUBqIgIkACABEBMgACABKQMQIgNCOIYgA0IohkKAgICAgIDA/wCDhCADQhiGQoCAgICA4D+DIANCCIZCgICAgPAfg4SEIANCCIhCgICA+A+DIANCGIhCgID8B4OEIANCKIhCgP4DgyADQjiIhISEIgQ3AAAgAEEIaiABQRhqKQMAIgNCOIYgA0IohkKAgICAgIDA/wCDhCADQhiGQoCAgICA4D+DIANCCIZCgICAgPAfg4SEIANCCIhCgICA+A+DIANCGIhCgID8B4OEIANCKIhCgP4DgyADQjiIhISEIgU3AAAgAEEQaiABQSBqKQMAIgNCOIYgA0IohkKAgICAgIDA/wCDhCADQhiGQoCAgICA4D+DIANCCIZCgICAgPAfg4SEIANCCIhCgICA+A+DIANCGIhC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AiACLQAAIABByQFqLQAAczoAACAAQacBaiICIAItAABBhAFzOgAAIAAQL0EAIQIgBEEAOwEADAELIAJByAFPDQILIAAgAmoiAiACLQAAIAFzOgAAIABByAFqIgEgAS0AAEEBaiICOgAAIAJB/wFxIgRBpgFGBEAgAEGmAWoiAiACLQAAIABByQFqLQAAczoAACAAQacBaiICIAItAABBhAFzOgAAIAAQLyABQQA7AQAgA0HwAGokAA8LIARFDQAgAy0AC0EkcUUNACACQf8BcSIBQccBSw0DIAAgAWoiASABLQAAIABByQFqLQAAczoAACAAQcgBaiICLQAAQQFqQf8BcSIBQcgBTw0EIAAgAWoiASABLQAAQQRzOgAAIABBpwFqIgEgAS0AAEGAAXM6AAAgABAvIAJBADsBAAsgA0HwAGokAA8LQejrwwAgAkHIARD4AQALIAMgA0EMajYCVCADQezuwwA2AhAgA0HsAGpBADYCACADQcwAakEBNgIAIANBxABqQRY2AgAgA0E0akEDNgIAIANB1OrDADYCaCADQgE3AlwgA0Gs78MANgJYIANBFjYCPCADQgM3AiQgA0Hk7MMANgIgIAMgA0HYAGo2AkggAyADQRBqNgJAIAMgA0HUAGo2AjggAyADQThqNgIwIANBIGpBtO/DABCRAgALQcjrwwAgAUHIARD4AQALQdjrwwAgAUHIARD4AQALnAYCA38SfiACQRh0QR91IgQgAmogBHNBf3MhBUIBIQtCASEMQQEhAgNAQgAgAiAFcyIDQfABcUEEdiADcSIDQQJ2IANxIgNBAXYgA3GtQv8Bg30iBiABQfAAaikDACAHhYMgB4UhByABQegAaikDACAIhSAGgyAIhSEIIAFB4ABqKQMAIAmFIAaDIAmFIQkgAUHYAGopAwAgCoUgBoMgCoUhCiABQdAAaikDACANhSAGgyANhSENIAFByABqKQMAIA6FIAaDIA6FIQ4gAUFAaykDACAPhSAGgyAPhSEPIAFBOGopAwAgEIUgBoMgEIUhECABQTBqKQMAIBGFIAaDIBGFIREgAUEoaikDACALhSAGgyALhSELIAFBIGopAwAgEoUgBoMgEoUhEiABQRhqKQMAIBOFIAaDIBOFIRMgAUEQaikDACAUhSAGgyAUhSEUIAFBCGopAwAgFYUgBoMgFYUhFSABKQMAIAyFIAaDIAyFIQwgAUH4AGohASACQQFqIgJBCUkNAAsgAEHwAGogB0IAIARBAXGtQv8Bg30iBiAHQvD///////8/IAd9IhZC/////////wODQvD///////8/IAh9IhdCM4h8hYOFNwMAIABB6ABqIAggCCAXQv////////8Dg0Lw////////PyAJfSIHQjOIfIUgBoOFNwMAIABB4ABqIAdC/////////wODQvD///////8/IAp9IgdCM4h8IAmFIAaDIAmFNwMAIABB2ABqIAdC/////////wODQtD9//////8/IA19IgdCM4h8IAqFIAaDIAqFNwMAIAAgFkIziEITfiAHQv////////8Dg3wgDYUgBoMgDYU3A1AgAEHIAGogDiAShSAGgyIHIA6FNwMAIABBQGsgDyAThSAGgyIIIA+FNwMAIABBOGogECAUhSAGgyIJIBCFNwMAIABBMGogESAVhSAGgyIKIBGFNwMAIAAgCyAMhSAGgyIGIAuFNwMoIAAgByAShTcDICAAIAggE4U3AxggACAJIBSFNwMQIAAgCiAVhTcDCCAAIAYgDIU3AwALiAcBFn8jAEEQayIIJABB9PTJAEH09MkAKAIAQQFqIgk2AgACQEH49MkAKAIARQRAIAlBABBmIQFB+PTJAEH49MkAKAIAIgIgASACGzYCACACRQ0BIAEoAgRB8ABsIgIEQCABKAIAIAJBCBD0AgsgAUEQQQQQ9AILQfj0yQAoAgAiBCgCBCIKIAlBA2wiD08NACAEQQRqIQZBACEBA0ACQAJAAkACQAJAIAFFBEACQCAKRQ0AIApB8ABsIQMgBCgCAEEgaiEBA0AgASABKAIAIgJBASACGzYCACACRQRAIAFB8ABqIQEgA0GQf2oiAw0BDAILIAEQSCABQfAAaiEBIANBkH9qIgMNAAsLIARB+PTJACgCAEcEQAJAIAYoAgAiAkUNACACQfAAbCEDIAQoAgBBIGohAQNAIAEgASgCACICQX9qNgIAAkAgAkEETwRAIAJBAnFFDQELIAFB8ABqIQEgA0GQf2oiAw0BDAILIAEQiwEgAUHwAGohASADQZB/aiIDDQALC0H49MkAKAIAIgRBBGohBiAEKAIEIgogD0kNBQwICyAJIAQQZiEFIAYoAgAiAkUNAUHwACEMIAQoAgAiCyACQfAAbGoh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DQEMBwsLIABBBGooAgAhBiAAIAogASACEJgCDQUgAEEYaiIBKAIAIAMgBCAAQRxqIgAoAgAoAgwRBwANBSABKAIAIQFBfyEHIAAoAgBBEGohAANAIAdBAWoiByAFTw0EIAEgBiAAKAIAEQEARQ0ACwwFCyABIQVBAAwBCyABQQFqQQF2IQUgAUEBdgshAUF/IQYgAEEEaiECIABBGGohCCAAQRxqIQcCQANAIAZBAWoiBiABTw0BIAgoAgAgAigCACAHKAIAKAIQEQEARQ0ACwwDCyAAQQRqKAIAIQEgAEEYaiICKAIAIAMgBCAAQRxqIgAoAgAoAgwRBwANAiACKAIAIQJBfyEHIAAoAgBBEGohAANAIAdBAWoiByAFTw0CIAIgASAAKAIAEQEARQ0ACwwCC0EADwtBAA8LQQEPCyAAKAIYIAMgBCAAQRxqKAIAKAIMEQcAC/MHAgF/FH4jAEGgAWsiAiQAIAIgAUEBEDggAkEoaiABQShqQQEQOCACQfgAaiABQdAAakEBEDggAiACKQN4QgGGIgY3A3ggAiACKQOAAUIBhiIHNwOAASACIAIpA4gBQgGGIgg3A4gBIAIgAikDkAFCAYYiCTcDkAEgAikDmAEhCiACIAFByABqKQMAIAEpAyB8NwNwIAIgAUFAaykDACABKQMYfDcDaCACIAFBOGopAwAgASkDEHw3A2AgAiABQTBqKQMAIAEpAwh8NwNYIAIgASkDKCABKQMAfDcDUCACQfgAaiACQdAAakEBEDggAEHIAGogAikDICIFIAIpA0giA3wiBDcDACAAQUBrIAIpAxgiCyACKQNAIgx8Ig83AwAgAEE4aiACKQMQIg0gAikDOCIOfCIQNwMAIABBMGogAikDCCIRIAIpAzAiEnwiEzcDACAAIAIpAwAiFCACKQMoIhV8IhY3AyggAEHwAGogA0Lw////////P3wgBX0iBUL/////////A4MgDELw////////P3wgC30iA0IziHwiCzcDACAAQegAaiADQv////////8DgyAOQvD///////8/fCANfSIDQjOIfCIMNwMAIABB4ABqIANC/////////wODIBJC8P///////z98IBF9IgNCM4h8Ig03AwAgAEHYAGogA0L/////////A4MgFULQ/f//////P3wgFH0iA0IziHwiDjcDACAAIAVCM4hCE34gA0L/////////A4N8IgU3A1AgACACKQOYAULw////////PyAEfXwiA0L/////////A4MgAikDkAFC8P///////z8gD318IgRCM4h8NwMgIAAgBEL/////////A4MgAikDiAFC8P///////z8gEH18IgRCM4h8NwMYIAAgBEL/////////A4MgAikDgAFC8P///////z8gE318IgRCM4h8NwMQIAAgBEL/////////A4MgAikDeELQ/f//////PyAWfXwiBEIziHw3AwggACADQjOIQhN+IARC/////////wODfDcDACAAQZgBaiAKQgGGQvD///////8/fCALfSIKQv////////8DgyAJQvD///////8/fCAMfSIJQjOIfDcDACAAQZABaiAJQv////////8DgyAIQvD///////8/fCANfSIIQjOIfDcDACAAQYgBaiAIQv////////8DgyAHQvD///////8/fCAOfSIHQjOIfDcDACAAQYABaiAHQv////////8DgyAGQtD9//////8/fCAFfSIGQjOIfDcDACAAIApCM4hCE34gBkL/////////A4N8NwN4IAJBoAFqJAALrwUBB38CQAJAIAJBA3EiBUUNAEEEIAVrIgVFDQAgAiADIAUgBSADSxsiCGohCiABQf8BcSEGIAghByACIQUCQANAIAogBWtBA0sEQCAEIAUtAAAiCSAGR2ohBCAGIAlGDQIgBCAFQQFqLQAAIgkgBkdqIQQgBiAJRg0CIAQgBUECai0AACIJIAZHaiEEIAYgCUYNAiAEIAVBA2otAAAiCSAGR2ohBCAHQXxqIQcgBUEEaiEFIAYgCUcNAQwCCwtBACEGIAFB/wFxIQoDQCAHRQ0CIAUgBmogB0F/aiEHIAZBAWohBi0AACIJIApHDQALIAkgAUH/AXFGQQFqQQFxIARqIAZqQX9qIQQLQQEhBQwBCyABQf8BcSEGAkACQCADQQhJDQAgCCADQXhqIgdLDQAgBkGBgoQIbCEFA0AgAiAIaiIEQQRqKAIAIAVzIgpBf3MgCkH//ft3anEgBCgCACAFcyIEQX9zIARB//37d2pxckGAgYKEeHFFBEAgCEEIaiIIIAdNDQELCyAIIANLDQELIAIgCGohBSACIANqIQIgAyAIayEHQQAhBAJAAkADQCACIAVrQQNLBEAg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akHgg8AAQQsgA0GABWpBwAAQ7AIgA0HgA2ogA0GABWoQugIgAkIANwMAIARCADcDACAIQgA3AwAgA0IANwOABSADQdABakHrg8AAQQ4gA0GABWpBIBDsAiADQZgEaiIJIAIpAwA3AwAgA0GQBGoiAiAEKQMANwMAIANBiARqIgQgCCkDADcDACADIAMpA4AFNwOABCADQbgDaiADQfgDaikDADcDACADQbADaiADQfADaikDADcDACADQagDaiADQegDaikDADcDACADIAMpA+ADNwOgAyAFIAkpAwA3AwAgBiACKQMANwMAIAcgBCkDADcDACADIAMpA4AENwPAAyADQYAFaiADQaADakGQhMAAEP0CIANB4ANqIAEgA0GABWoQPCADQYAFaiADQeADakGgARCqAhogACADQYAFahD1ASAAQdgBaiAFKQMANwAAIABB0AFqIAYpAwA3AAAgAEHIAWogBykDADcAACAAIAMpA8ADNwDAASADQdABahD1AiADQaAGaiQAC4UFARB/IAFBHWohCyABQRRqIQggAUEYaiEMIAFBCGohDSABQRxqIRAgAUEEaiEOIAFBEGohDwJAA0AgCy0AAA0BAkACQAJAAkAgDCgCACIHIAgoAgAiAkcEQCANKAIAIREgAiEJA0ACQCAIIAJBAWoiAzYCAAJAIAIsAAAiBUEATgRAIAVB/wFxIQQgAyECDAELAkACQCADIAdHBEAgCCACQQJqIgI2AgAgAy0AAEE/cSEGIAIhAyAFQR9xIQogBUH/AXEiBEHgAUkNAQwCC0EAIQYgByECIAVBH3EhCiAFQf8BcSIEQeABTw0BCyAGIApBBnRyIQQgAyECDAELAkACQCACIAdHBEAgCCACQQFqIgM2AgAgAyEFIAItAABBP3EgBkEGdHIhBiAEQfABSQ0BDAILIAchBSAGQQZ0IQYgBEHwAU8NAQsgBiAKQQx0ciEEIAMhAgwBCwJ/IAUgB0cEQCAIIAVBAWoiAjYCACAFLQAAQT9xDAELIAMhAkEACyAKQRJ0QYCA8ABxIAZBBnRyciIEQYCAxABGDQELIA8gDygCACIFIAIgCWtqIgM2AgAgBEF3aiIJQRdNBEBBASAJdEGfgIAEcQ0ECyAEQYABTwRAIAQQlAINBCAMKAIAIQcgCCgCACECCyACIQkgAiAHRw0BCwsgCy0AAA0GCyAQLQAARQ0BIA4oAgAhBCABKAIAIQIMAgsgASgCACECIAEgAzYCACACIBFqIQMgBSACayICRQ0DDAILIA4oAgAiBCABKAIAIgJGDQMLIAtBAToAACANKAIAIAJqIQMgBCACayICRQ0BCwsgACACNgIEIAAgAzYCAA8LIABBADYCBCAAQQA2AgALkwUCDH8BfiMAQdAEayICJAAgAkFAaxCuASACQUBrIAFBIBAZIAJB2AJqIAJBQGtB2AEQqgIaIAJBmAJqIAJB2AJqEEIgAkHIBGoiASACQbACaiIEKQMANwMAIAJBwARqIgUgAkGoAmoiBikDADcDACACQbgEaiIHIAJBoAJqIggpAwA3AwAgAiACKQOYAiIONwOwBCACIA6nQfgBcToAsAQgAiACLQDPBEE/cUHAAHI6AM8EIAJBsARqEE8gAkHwAmogASkDADcDACACQegCaiAFKQMANwMAIAJB4AJqIAcpAwA3AwAgAiACKQOwBDcD2AIgAiACQdgCahCZAiACQThqIgMgAkHQAmoiCSkDADcDACACQTBqIgwgAkHIAmoiCikDADcDACACQShqIg0gAkHAAmoiCykDADcDACACIAIpA7gCNwMgIAkgAykDADcDACAKIAwpAwA3AwAgCyANKQMANwMAIAJBuAJqIgMgAikDIDcDACAEIAJBGGopAwA3AwAgBiACQRBqKQMANwMAIAggAkEIaikDADcDACACIAIpAwA3A5gCIAJBQGsgAkGYAmpBgPrBABD9AiACQdgCaiACQUBrQaABEKoCGiACQbAEaiACQdgCahAhIAAgAkHYAmpBoAEQqgIiAEG4AWogASkDADcAACAAQbABaiAFKQMANwAAIABBqAFqIAcpAwA3AAAgACACKQOwBDcAoAEgAEH4AWogCSkDADcAACAAQfABaiAKKQMANwAAIABB6AFqIAspAwA3AAAgAEHgAWogAykDADcAACAAQdgBaiAEKQMANwAAIABB0AFqIAYpAwA3AAAgAEHIAWogCCkDADcAACAAIAIpA5gCNwDAASACQdAEaiQAC9QFAgR/AX5BASECIAEoAhhBJyABQRxqKAIAKAIQEQEABH8gAgVBAiECAkACQAJ+AkACQAJAIAAoAgAiAEF3aiIEQR5NBEBB9AAhAwJAIARBAWsOHgACAgMCAgICAgICAgIC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ADcDACACQeABakIANwMAIAJB2AFqQgA3AwAgAkIANwPQASACQaAEakG66sMAQQAgAkHQAWpBwAAQTiACQYAEaiACQdABahC6AiACQdABaiACQYAEaiABEJoCIAJB4ANqIAJB0AFqIAJBwANqEIkBIABBGGogAkG4A2opAwA3AAAgAEEQaiACQbADaikDADcAACAAQQhqIAJBqANqKQMANwAAIAAgAikDoAM3AAAgACACKQDgAzcAICAAQShqIAJB6ANqKQAANwAAIABBMGogAkHwA2opAAA3AAAgAEE4aiACQfgDaikAADcAACACQaAEahD1AiACQfAFaiQAC8gEAQZ+IAAgASkDICIDQjOIQhN+IAEpAwAiAkL/////////A4N8IgRCE3xCM4ggASkDCCIFQv////////8DgyACQjOIfCICfEIziCABKQMQIgZC/////////wODIAVCM4h8IgV8QjOIIAEpAxgiB0L/////////A4MgBkIziHwiBnxCM4ggA0L/////////A4MgB0IziHwiB3xCM4hCE34gBHwiAzwAACAAIANCKIg8AAUgACADQiCIPAAEIAAgA0IYiDwAAyAAIANCEIg8AAIgACADQgiIPAABIAAgA0IziCACfCIEQiWIPAALIAAgBEIdiDwACiAAIARCFYg8AAkgACAEQg2IPAAIIAAgBEIFiDwAByAAIARCM4ggBXwiAkIqiDwAEiAAIAJCIog8ABEgACACQhqIPAAQIAAgAkISiDwADyAAIAJCCog8AA4gACACQgKIPAANIAAgA0IwiEIHgyAEQv////////8DgyIEQgOGhDwABiAAIAJCM4ggBnwiA0IniDwAGCAAIANCH4g8ABcgACADQheIPAAWIAAgA0IPiDwAFSAAIANCB4g8ABQgACACQv////////8DgyIFQgaGIARCLYiEPAAMIAAgA0IziCAHfCICQiSIPAAeIAAgAkIciDwAHSAAIAJCFIg8ABwgACACQgyIPAAbIAAgAkIEiDwAGiAAIANC/////////wODIgNCAYYgBUIyiIQ8ABMgACACQv////////8DgyICQiyIPAAfIAAgAkIEhiADQi+IhDwAGQumBAENfyMAQTBrIgQkAAJAAkACfwJAIAIEQCAEQShqIQkgAEEIaiEKIARBIGohDSAEQRxqIQsgBEEkaiEO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0AIgAwRAIAZB0AFqIAIgAxCqAhogBkGQA2pCgAE3AwALIAYgBkHQAWpB0AEQqgIiASAEIAUQmQEgAUHQAWogAUHQARCqAhogASgCkANB/wBxIgIEQCABQdABaiACakEAQYABIAJrELcCGgsgAUHQAWpCfxAQIAFBuANqIAFB6AJqKQMAIgc3AwAgAUGwA2ogAUHgAmopAwAiCDcDACABQagDaiABQdgCaikDACIJNwMAIAFByANqIAFB+AJqKQMAIgo3AwAgAUHQA2ogAUGAA2opAwAiCzcDACABQdgDaiABQYgDaikDACIMNwMAIAEgASkD0AIiDTcDoAMgASABQfACaikDACIONwPAAyABKAKYAyECIABBOGogDDcDACAAQTBqIAs3AwAgAEEoaiAKNwMAIABBIGogDjcDACAAQRhqIAc3AwAgAEEQaiAINwMAIABBCGogCTcDACAAIA03AwAgACACNgJAIAFB4ANqJAAPCxC5AgALmwQBAn8gAEESQQAQRQJAIAAtAMgBIgJBxwFLDQAgACACaiICIAItAABBwABzOgAAIABByAFqIgMgAy0AAEEBaiICOgAAAkAgAkH/AXEiAkGmAUYEQCAAQaYBaiICIAItAAAgAEHJAWotAABzOgAAIABBpwFqIgIgAi0AAEGEAXM6AAAgABAvQQAhAiADQQA7AQAMAQsgAkHIAU8NAQsgACACaiICIAItAAA6AAAgAEHIAWoiAyADLQAAQQFqIgI6AAACQCACQf8BcSICQaYBRgRAIABBpgFqIgIgAi0AACAAQckBai0AAHM6AAAgAEGnAWoiAiACLQAAQYQBczoAACAAEC9BACECIANBADsBAAwBCyACQccBSw0BCyAAIAJqIgIgAi0AADoAACAAQcgBaiIDIAMtAABBAWoiAjoAAAJAIAJB/wFxIgJBpgFGBEAgAEGmAWoiAiACLQAAIABByQFqLQAAczoAACAAQacBaiICIAItAABBhAFzOgAAIAAQL0EAIQIgA0EAOwEADAELIAJBxwFLDQELIAAgAmoiAiACLQAAOgAAIABByAFqIgIgAi0AAEEBaiIDOgAAIANB/wFxQaYBRgRAIABBpgFqIgMgAy0AACAAQckBai0AAHM6AAAgAEGnAWoiAyADLQAAQYQBczoAACAAEC8gAkEAOwEACyAAIAFBwAAQsAEPC0Ho68MAIAJByAEQ+AEAC5IEAQh/IwBB0ARrIgUkACAFEK4BIAUgAUEgakEgEBkgBSACIAMQGSAFQfACaiIJQgA3AwAgBUHoAmoiCkIANwMAIAVB4AJqIgtCADcDACAFQdgCaiIMQgA3AwAgBUHQAmoiBkIANwMAIAVByAJqIgdCADcDACAFQcACaiIIQgA3AwAgBUIANwO4AiAFQfgCaiAFQdgBEKoCGiAFQbgCaiAFQfgCahBCIAVB+AFqIAVBuAJqELoCIAVB+AJqIAVB+AFqQcj4wwAQ/QIgBUHYAWogBUH4AmoQtwEgBUH4AmoQrgEgBSAFQfgCakHYARCqAiIFIAVB2AFqQSAQGSAFIARBoAFqQSAQGSAFIAIgAxAZIAlCADcDACAKQgA3AwAgC0IANwMAIAxCADcDACAGQgA3AwAgB0IANwMAIAhCADcDACAFQgA3A7gCIAVB+AJqIAVB2AEQqgIaIAVBuAJqIAVB+AJqEEIgBUGYAmogBUG4AmoQugIgBUH4AmogBUGYAmogARCaAiAFQbgCaiAFQfgCaiAFQfgBahCJASAAQRhqIAVB8AFqKQMANwAAIABBEGogBUHoAWopAwA3AAAgAEEIaiAFQeABaikDADcAACAAIAUpA9gBNwAAIAAgBSkAuAI3ACAgAEEoaiAIKQAANwAAIABBMGogBykAADcAACAAQThqIAYpAAA3AAAgBUHQBGokAAuPBAIDfwN+IwBBoANrIgckACAHQYABaiABIAIgAyAEEJ4BIAdBQGsgB0GAAWogBSAGEFggB0GYA2oiBUIANwMAIAdBkANqIgZCADcDACAHQYgDaiIIQgA3AwAgB0GAA2oiCUIANwMAIAdB+AJqIgJCADcDACAHQfACaiIDQgA3AwAgB0HoAmoiBEIANwMAIAdCADcD4AIgAiAHQUBrIgFBGGopAAA3AwAgAyABQRBqKQAANwMAIAQgAUEIaikAADcDACAHIAEpAAA3A+ACIAkgB0HgAGoiASkAACIKNwMAIAdBCGoiCSAEKQMANwMAIAdBEGoiBCADKQMANwMAIAdBGGoiAyACKQMANwMAIAdBIGoiAiAKNwMAIAUgAUEYaikAACIKNwMAIAYgAUEQaikAACILNwMAIAggAUEIaikAACIMNwMAIAdBKGoiBSAMNwMAIAdBMGoiBiALNwMAIAdBOGoiCCAKNwMAIAcgBykD4AI3AwBBwABBARDqAiIBBEAgASAHKQMANwAAIAFBOGogCCkDADcAACABQTBqIAYpAwA3AAAgAUEoaiAFKQMANwAAIAFBIGogAikDADcAACABQRhqIAMpAwA3AAAgAUEQaiAEKQMANwAAIAFBCGogCSkDADcAACAHQcACahCcAiAAQcAANgIEIAAgATYCACAHQaADaiQADwtBwABBARCJAwALjQQCBn8DfiMAQfABayICJABBASEGEJMDIAIoAiAhAyACKQMYIQkgAkEIahB7AkACQAJAAkACQCAAQQNsIgBBAk8EQEF/IABBf2pndkEBaiEGCyAGrULwAH4iCEIgiKdFBEAgCKciAEF/TA0BIAIpAxAhCCACKQMIIQoCQCAABEAgAEEIEOoCIgUNASAAQQgQiQMAC0EIIQULIAJBADYCeCACIAY2AnQgAiAFNgJwIAJBmAFqIAg3AwAgAkEANgKoASACQgA3A6ABIAIgCjcDkAEgAiADNgKIASACIAk3A4ABIAJBrAFqIAJBKGpBxAAQqgIaIAJB8ABqIAYgAkGAAWoQcyACKAJwIQQgAigCdCIAIAIoAngiA0YEQCAEIQUgACEDQQQhBEEQIQdBEEEEEOoCIgANBgwFCyAAIANJDQIgAwRAIAQgAEHwAGxBCCADQfAAbCIAEOMCIgVFDQRBBCEEQRAhB0EQQQQQ6gIiAEUNBQwGC0EAIQMgAARAQQghBSAEIABB8ABsQQgQ9AJBBCEEQRAhB0EQQQQQ6gIiAA0GDAULQQghBUEEIQRBECEHQRBBBBDqAiIADQUMBAsQkgMACxCSAwALQYSPyQAQhgIACyAAQQgQiQMACyAHIAQQiQMACyAAIAE2AgwgACADNgIEIAAgBTYCACAAQR8gBmdrNgIIIAJB8AFqJAAgAAvrAwEafiABMQASIQYgATEAESEHIAExABAhCCABMQAPIQkgATEADSEKIAExAA4hCyABMQAfIQwgATEAHiENIAExAB0hDiABMQAcIQ8gATEAGyEQIAExABohESABMQAMIQIgATEACyESIAExAAohEyABMQAJIRQgATEAByEVIAExAAghFiABMQAZIQMgATEAGCEEIAExABchFyABMQAWIRggATEAEyEFIAExABQhGSABMQAVIRogACABMQAAIAExAAFCCIaEIAExAAJCEIaEIAExAANCGIaEIAExAARCIIaEIAExAAVCKIaEIAExAAYiG0IwhoRC/////////wODNwMAIAAgBSAZQgiGhCAaQhCGhCAYQhiGhCAXQiCGhCAEQiiGhCADQjCGhEIBiEL/////////A4M3AxggACAbIBVCCIaEIBZCEIaEIBRCGIaEIBNCIIaEIBJCKIaEIAJCMIaEQgOIQv////////8DgzcDCCAAIAQgA0IIhoQgEUIQhoQgEEIYhoQgD0IghoQgDkIohoQgDUIwhoQgDEI4hoRCDIhC/////////wODNwMgIAAgAiAKQgiGhCALQhCGhCAJQhiGhCAIQiCGhCAHQiiGhCAGQjCGhCAFQjiGhEIGiEL/////////A4M3AxAL1wMBGn4gATEAByEFIAExAA8hBiABMQAOIQcgATEADSEIIAExAAwhAiABMQALIQkgATEACCEKIAExAAkhCyABMQAKIQwgATEAFyENIAExABYhDiABMQAVIQ8gATEAFCEQIAExABMhAyABMQAQIREgATEAESESIAExABIhEyABMQAfIRQgATEAHiEVIAExAB0hFiABMQAcIRcgATEAGyEYIAExABghBCABMQAZIRkgATEAGiEaIAAgATEAACABMQABQgiGhCABMQACQhCGhCABMQADQhiGhCABMQAEQiCGhCABMQAFQiiGhCABMQAGQjCGhCIbQv////////8HgzcDACAAIAQgGUIIhoQiBCAaQhCGhCAYQhiGhCAXQiCGhCAWQiiGhCAVQjCGhCAUQjiGhEIQiDcDICAAIARCJIYgESASQgiGhCATQhCGhCADQhiGhCIDIBBCIIaEIA9CKIaEIA5CMIaEIA1COIaEQhyIhDcDGCAAIANCGIZCgICA+P///weDIAogC0IIhoQgDEIQhoQgCUIYhoQgAkIghoQiAiAIQiiGhCAHQjCGhCAGQjiGhEIoiIQ3AxAgACACQgyGQoDg//////8HgyAFQjiGIBuEQjSIhDcDCAvYBAEFfiAAIAEpAyg3AyggAEEwaiABQTBqKQMANwMAIABBOGogAUE4aikDADcDACAAQUBrIAFBQGspAwA3AwAgAEHIAGogAUHIAGopAwA3AwAgAELw////////PyABKQMgfSIDQv////////8Dg0Lw////////PyABKQMYfSICQjOIfDcDICAAIAJC/////////wODQvD///////8/IAEpAxB9IgJCM4h8NwMYIAAgAkL/////////A4NC8P///////z8gASkDCH0iAkIziHw3AxAgACACQv////////8Dg0LQ/f//////PyABKQMAfSICQjOIfDcDCCAAIANCM4hCE34gAkL/////////A4N8NwMAIAFBgAFqKQMAIQMgAUGIAWopAwAhAiABQZgBaikDACEEIAFBkAFqKQMAIQUgASkDeCEGIABB8ABqIAFB8ABqKQMANwMAIABB6ABqIAFB6ABqKQMANwMAIABB4ABqIAFB4ABqKQMANwMAIABB2ABqIAFB2ABqKQMANwMAIAAgASkDUDcDUCAAQZgBakLw////////PyAEfSIEQv////////8Dg0Lw////////PyAFfSIFQjOIfDcDACAAQZABaiAFQv////////8Dg0Lw////////PyACfSICQjOIfDcDACAAQYgBaiACQv////////8Dg0Lw////////PyADfSIDQjOIfDcDACAAQYABaiADQv////////8Dg0LQ/f//////PyAGfSIDQjOIfDcDACAAIARCM4hCE34gA0L/////////A4N8NwN4C8YDAQJ/IwBBIGsiAyQAIAEQkQEgAyABKAJMIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZycjYCACADIAFB0ABqKAIAIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZycjYCBCAAIAMpAwA3AAAgAyABQdQAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AgggAyABQdgAaigCACICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnI2AgwgAEEIaiADKQMINwAAIAMgAUHkAGooAgAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgIYIAMgAUHoAGooAgAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyNgIcIABBGGogAykDGDcAACADIAFB3ABqKAIAIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZycjYCECADIAFB4ABqKAIAIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFB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IANBsANqIgJCADcDACADQagDaiIEQgA3AwAgA0IANwOgAyADQYOEwABBCSADQaADakEgEE4gA0HoAWoiBUIANwMAIANB4AFqIgZCADcDACADQdgBaiIHQgA3AwAgA0IANwPQASADQeuDwABBDiADQdABakEgEE4gAEEYaiABKQMANwAAIABBEGogAikDADcAACAAQQhqIAQpAwA3AAAgACADKQOgAzcAACAAIAMpA9ABNwAgIABBKGogBykDADcAACAAQTBqIAYpAwA3AAAgAEE4aiAFKQMANwAAIAMQ9QIgA0HAA2okAAv6AgEIfyMAQRBrIgMkACADQQhqIAAgARD2AQJAIAMoAggiAkUNACADKAIMIQQCQCACLQAFQQJGDQAgAigCAEEBQQEQ9AIgAigCECIABEAgAigCCCIFIABBFGxqIQkDQCAFIgFBFGohBQJAIAEoAggiAEUNACABQRBqKAIAIgYEQCAAIAZBKGxqIQYDQAJAIAAoAgAiB0UNACAAQQRqKAIAIghFDQAgByAIQQEQ9AILAkAgAEEUaigCACIHRQ0AIABBGGooAgAiCEUNACAHIAhBARD0AgsgAEEoaiIAIAZHDQALCyABQQxqKAIAIgBFDQAgAUEIaigCACAAQShsQQQQ9AILIAUgCUcNAAsLIAJBDGooAgAiAEUNACACQQhqKAIAIABBFGxBBBD0AgsgAiAEKAIIIgBBF2pBACAAa3FqIAQoAgARAAAgAEEEIABBBEsbIgAgBCgCBGpBF2pBACAAa3EiAUUNACACIAEgABD0AgsgA0EQaiQAIAJFC4cDAgN/A34jAEHgAGsiASQAIAFBGGpBBDYCACABIAEpAxg3AzAgAUFAayICQgA3AwAgAUIANwM4IAFByABqIAFBMGogAUE4akEQEGACQAJAIAExAFgiBUIFUQRAIAFB0ABqIAIpAwA3AwAgASABKQM4NwNIIAFBCGogAUHIAGoQnwIgASkDECEEIAEgASkDCCIFNwIkIAEoAjAiA0F+akEDSQ0CIAEoAjQhAiADBEAgAkEkSQ0DDAILIAJBJE8NAQwCCyABQdsAai0AACEAIAEvAFkhAiABNQJUIAEpA0ghBCABIAEoAlA2AiggBUIghoQgAiAAQRB0cq1CKIaEIQUgASAENwMgIASnIQICQCABKAIwIgNBfmpBA0kNACAB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CGohBAwCCyAEIQMLIANBf0wNAiACQQhqIQQgAwRAIANBARDqAiIFDQEgA0EBEIkDAAtBASEFQQAhAwsgAkEANgIQIAIgAzYCDCACIAU2AgggAiACQQhqNgIUIAJBKGogAUEQaikCADcDACACQSBqIAFBCGopAgA3AwAgAiABKQIANwMYIAJBFGpBtLnJACACQRhqEDJFBEAgACAEKQIANwIAIABBCGogBEEIaigCADYCACACQTBqJAAPCxD0AQALQZi6yQBBAEEAEPgBAAsQkgMAC/sCAQF/IwBBwANrIgMkAAJAIAJBIEYEQCADQfgBaiABQRhqKQAANwAAIAMgAS8AADsB4AEgAyABKQALNwDrASADIAEpAAM3AOMBIAMgASkAEzcA8wEgAyABQQJqLQAAOgDiASADQYACaiADQeABahCAASADIANBoANqQSAgAUEgEJ4BIANB4AFqEJwCIANBgAJqIAMQsQFBwABBARDqAiIBRQ0BIAEgAykAgAI3AAAgAELAgICAgAg3AgQgACABNgIAIAFBOGogA0G4AmopAAA3AAAgAUEwaiADQbACaikAADcAACABQShqIANBqAJqKQAANwAAIAFBIGogA0GgAmopAAA3AAAgAUEYaiADQZgCaikAADcAACABQRBqIANBkAJqKQAANwAAIAFBCGogA0GIAmopAAA3AAAgA0HAAWoQnAIgA0HAA2okAA8LIANBCGpCiYCAgIAENwMAIANBlPbBADYCBCADQQI2AgAgAxD+AQALQcAAQQEQiQMAC4UDAQN/IwBBkAJrIgIkACACEDs2ApgBQQEhAwJAAkAgAUELdiIBBEAgARDJAiIDRQ0BCyACQZgBaiADIAEQpwEgAkGA9skANgKMAiACQYD2yQA2AghBgPbJACgCAEEBRg0BIAIgAkEIajYCnAEgAiACQYwCajYCmAEgAiACQZgBajYCKEGA9skAIAJBKGpBoJnIABBNDAELIAFBARCJAwALAkAgAigCCCIELQAAQQFxRQ0AIAQoAgRFDQAgAiAEQQRqNgKMAiACQShqEKYCIAJBKGogAyABEKMBIAJBmAFqIAJBKGpB8AAQqgIaIAJBCGogAkGYAWoQaiACIAItAAg6ACggAkGsAWpBADoAACACQaQBaiABIANqNgIAIAJBADYCsAEgAkGoAWogAkEoajYCACACIAM2AqABIAJCADcDmAEgAiACQYwCajYCuAEgACACQZgBahAmIABBFGogATYCACAAQRBqIAE2AgAgACADNgIMIAJBkAJqJAAPC0H0mcgAEIYCAAvQAgIFfwJ+IwBB4ABrIgckAAJAAkACQAJAAkAgAwRAIAOtIQpBASEGQQAhAwNAIAdBCGogCRCdAiAHQQhqIAEgAhBMIAcgB0EIahBZNwMAAkACQAJAIAUgA2tBCEkEQCADQQhqIgQgA0kNCCAFQQF0IgggBCAEIAhJGyIIQQBIDQggBUUNASAGIAVBASAIEOMCIgYNAgwJCyADQQhqIQQMAgsgCEEBEOoCIgZFDQcLIAghBQsgAyAGakEIIAdBCBCyASAEIQMgCiAJQgF8IglSDQALIAQgBUcNASAGIQMMAgtBASEDDAELIAUgBEkNAyAEBEAgBiAFQQEgBBDjAiIDDQEgBEEBEIkDAAtBACEEQQEhAyAFRQ0AIAYgBUEBEPQCCyAAIAQ2AgQgACADNgIAIAdB4ABqJAAPCxCRAwALIAhBARCJAwALQbyAwAAQhgIAC8oDAgF/Bn4jAEGAAWsiAyQAIANBMGogARBoIANB2ABqIAIQaCADIAMpA3ggAykDUHwgAykDcCADKQNIfCADKQNoIAMpA0B8IAMpA2AgAykDOCADKQNYIAMpAzB8IgVCNIh8fCIEQjSIfCIGQjSIfCIHQjSIfEL/////////B4MgB0L/////////B4MgBkL/////////B4MgBEL/////////B4MgBUL/////////B4NCk9iomNqc5358IgRCP4d8Qv+0yrGIuoV5fCIGQj+HfEKHwqx/fCIHQj+HfCIIQj+HfEKAgICAgIB8fCIJQj+HIgVC7afX56XjmAGDIARC/////////weDfCIEQv////////8HgzcDCCADIAVCgcu1zvfF+gaDIAZC/////////weDfCAEQjSIfCIEQv////////8HgzcDECADIAVC+b3TAIMgB0L/////////B4N8IARCNIh8IgRC/////////weDNwMYIAMgCEL/////////B4MgBEI0iHwiBEL/////////B4M3AyAgAyAFQoCAgICAgASDIAl8IARCNIh8Qv////////8HgzcDKCAAIANBCGoQjAEgA0GAAWokAAv+AgEHf0ELIQVBx+rDACEDIwBBoANrIgEkACABQeIBakEAQbYBELcCGiABQd4BakHi6sMAKAAANgEAIAFB2OrDAC8AADsB1AEgAUHU6sMAKAAANgLQASABQdrqwwApAAA3AdYBIAFB0AFqEC8gAUEIaiABQdABakHIARCqAhogAUHQAWogAUEIakHIARCqAhogAUEAOgCaAyABQQA7AZgDIAFB0AFqQRJBABBFIAFBmANqIgQtAAAhAiABQZkDaiEHIAFB9wJqIQYCQANAIAJB/wFxIgJBxwFLDQEgAUHQAWogAmoiAiACLQAAIAMtAABzOgAAIAQgBC0AAEEBaiICOgAAIAJB/wFxQaYBRgRAIAFB9gJqIgIgAi0AACAHLQAAczoAACAGIAYtAABBhAFzOgAAIAFB0AFqEC8gBEEAOwEAQQAhAgsgA0EBaiEDIAVBf2oiBQ0ACyAAIAFB0AFqQdABEKoCGiABQaADaiQADwtB6OvDACACQcgBEPgBAAvgAgEEfyAAKAIAIQECQAJAAkADQCABIgJBBEkgAkECcXINASAAIAJBAnIgACgCACIBIAEgAkYbNgIAIAEgAkcNAAsDQCACQXxxIgQoAhQiA0UEQCAEIQEDQCABKAIcIgMgATYCGCADIgEoAhQiA0UNAAsLIARBFGogAzYCACACQQFxRQRAIAIhASADKAIYIgINAwNAIAAgAUEBcSAAKAIAIgIgASACRiIBGzYCACABDQUgAiEBIAJBBEkNAAsMAQsgACACQX1xIAAoAgAiASABIAJGIgQbNgIAIAEhAiAERQ0ACwsPCyAEQRRqIAI2AgAgACAAKAIAQX1xNgIACwJAIAMoAgAiAC0AAEUEQCAAQQE6AAAQsgIhACADLQAEDQEgA0EAOgAQAkAgAA0AELICRQ0AIANBBGpBAToAAAsgAygCAEEAOgAADwtByI/JAEG4j8kAELwCAAsgAyAAEOQBAAvgAgEEfiAAIAEpAyAiAjwAGiAAIAEpAxAiAzwADSAAIAEpAwAiBDwAACAAIAJCKIg8AB8gACACQiCIPAAeIAAgAkIYiDwAHSAAIAJCEIg8ABwgACACQgiIPAAbIAAgASkDGCICQiyIPAAZIAAgAkIkiDwAGCAAIAJCHIg8ABcgACACQhSIPAAWIAAgAkIMiDwAFSAAIAJCBIg8ABQgACADQiiIPAASIAAgA0IgiDwAESAAIANCGIg8ABAgACADQhCIPAAPIAAgA0IIiDwADiAAIAEpAwgiBUIsiDwADCAAIAVCJIg8AAsgACAFQhyIPAAKIAAgBUIUiDwACSAAIAVCDIg8AAggACAFQgSIPAAHIAAgBEIoiDwABSAAIARCIIg8AAQgACAEQhiIPAADIAAgBEIQiDwAAiAAIARCCIg8AAEgACACQgSGIANCMIiEPAATIAAgBUIEhiAEQjCIhDwABgvHAgECfyMAQRBrIgIkACAAKAIAIQACQCABQYABSQRAIAAoAggiAyAAKAIERgR/IABBARDYASAAQQhqKAIABSADCyAAKAIAaiABOgAAIABBCGoiACAAKAIAQQFqNgIADAELIAJBADYCDCAAAn8gAUGAEEkEQCACIAFBP3FBgAFyOgANIAIgAUEGdkEfcUHAAXI6AAxBAgwBCyABQf//A00EQCACIAFBP3FBgAFyOgAOIAIgAUEGdkE/cUGAAXI6AA0gAiABQQx2QQ9xQeABcjoADEEDDAELIAIgAUE/cUGAAXI6AA8gAiABQRJ2QfABcjoADCACIAFBBnZBP3FBgAFyOgAOIAIgAUEMdkE/cUGAAXI6AA1BBAsiARDYASAAIAAoAggiAyABajYCCCADIAAoAgBqIAJBDGogARCqAhoLIAJBEGokAEEAC7gCAQF/IwBBsARrIgIkACACQQhqIAEQIiAAAn8gAikDCEIBUQRAIAJB8AJqQQNyIAJBEGpBoAEQqgIaIAJBzQFqIAJB8AJqQaMBEKoCGiACQQhqIAJB0AFqQaABEKoCGiACQcABaiABQRhqKQAANwMAIAJBuAFqIAFBEGopAAA3AwAgAkGwAWogAUEIaikAADcDACACIAEpAAA3A6gBIABBCGogAkEIakHAARCqAhpBAAwBCyACQf8CaiACQagEaikAADcAACACQfgCaiACQaEEaikAADcDACACIAIpAJkENwPwAiACQc0BaiACQfACakGjARCqAhogAEEBOgAEIAAgAikAzQE3AAUgAEENaiACQdUBaikAADcAACAAQRRqIAJB3AFqKQAANwAAQQELNgIAIAJBsARqJAALvgIBAn8jAEEQayICJAACQCABQYABSQRAIAAoAggiAyAAKAIERgR/IABBARDYASAAQQhqKAIABSADCyAAKAIAaiABOgAAIABBCGoiACAAKAIAQQFqNgIADAELIAJBADYCDCAAAn8gAUGAEEkEQCACIAFBP3FBgAFyOgANIAIgAUEGdkEfcUHAAXI6AAxBAgwBCyABQf//A00EQCACIAFBP3FBgAFyOgAOIAIgAUEGdkE/cUGAAXI6AA0gAiABQQx2QQ9xQeABcjoADEEDDAELIAIgAUE/cUGAAXI6AA8gAiABQRJ2QfABcjoADCACIAFBBnZBP3FBgAFyOgAOIAIgAUEMdkE/cUGAAXI6AA1BBAsiARDYASAAIAAoAggiAyABajYCCCADIAAoAgBqIAJBDGogARCqAhoLIAJBEGokAAu0AgIFfwF+IwBBMGsiBCQAQSchAgJAIABCkM4AWgRAA0AgBEEJaiACaiIDQXxqIAAgAEKQzgCAIgdCkM4Afn2nIgVB5ABuIgZBAXRBuMTJAGovAAA7AAAgA0F+aiAFIAZB5ABsa0EBdEG4xMkAai8AADsAACACQXxqIQIgAEL/wdcvViAHIQANAAsMAQsgACEHCyAHpyIDQeMASgRAIAJBfmoiAiAEQQlqaiAHpyIDIANB//8DcUHkAG4iA0HkAGxrQf//A3FBAXRBuMTJAGovAAA7AAALAkAgA0EJTARAIAJBf2oiAiAEQQlqaiADQTBqOgAADAELIAJBfmoiAiAEQQlqaiADQQF0QbjEyQBqLwAAOwAACyABQdi7yQBBACAEQQlqIAJqQScgAmsQSSAEQTBqJAALzgICBH8BfiAAQcwAaiEDIAApAwAhBQJAAkACQCAAQQhqKAIAIgFBwABGBEAgAyAAQQxqEA5BACEBIABBADYCCAwBCyABQT9LDQELIAEgAEEMaiIBakGAAToAACAAIAAoAggiBEEBaiICNgIIIAJBwQBJBEAgAiAAQQhqIgJqQQRqQQBBPyAEaxC3AhpBwAAgACgCCGtBB00EQCADIAEQDiACKAIAIgJBwQBPDQMgAUEAIAIQtwIaCyAAQcQAaiAFQiiGQoCAgICAgMD/AIMgBUI4hoQgBUIYhkKAgICAgOA/gyAFQgiGQoCAgIDwH4OEhCAFQgiIQoCAgPgPgyAFQhiIQoCA/AeDhCAFQiiIQoD+A4MgBUI4iISEhDcCACADIAEQDiAAQQA2AggPCyACQcAAEPkBAAtBzIrJACABQcAAEPgBAAsgAkHAABD3AQAL4wICA38FfiMAQdAAayIDJAAgAEEIagJ/QQEgAC0ACA0AGiAAKAIEIQUgACgCACIELQAAQQRxRQRAQQEgBCgCGEGhxskAQavGyQAgBRtBAkEBIAUbIARBHGooAgAoAgwRBwANARogASAAKAIAIAIoAgwRAQAMAQsgBUUEQEEBIAQoAhhBqcbJAEECIARBHGooAgAoAgwRBwANARogACgCACEECyADQQE6ABAgBCkCECEGIAQpAgghByADQTRqIgVBgMbJADYCACADIAQpAhg3AwggBCkCICEIIAQpAighCSADIAQtADA6AEggBCkCACEKIAMgBzcDICADIAY3AyggAyAJNwNAIAMgCDcDOCADIAo3AxggAyADQQhqNgIwQQEgASADQRhqIAIoAgwRAQANABogA0EwaigCAEGfxskAQQIgBSgCACgCDBEHAAs6AAAgACAAKAIEQQFqNgIEIANB0ABqJAAL4gICA38FfiMAQdAAayICJAACf0EBIAAtAAQNABogAC0ABSEEIAAoAgAiAy0AAEEEcUUEQCABIAQEf0EBIAMoAhhBocbJAEECIANBHGooAgAoAgwRBwANAhogACgCAAUgAwtB9K3JACgCABEBAAwBCyAERQRAQQEgAygCGEGuxskAQQEgA0EcaigCACgCDBEHAA0BGiAAKAIAIQMLIAJBAToAECADKQIQIQUgAykCCCEGIAJBNGoiBEGAxskANgIAIAIgAykCGDcDCCADKQIgIQcgAykCKCEIIAIgAy0AMDoASCADKQIAIQkgAiAGNwMgIAIgBTcDKCACIAg3A0AgAiAHNwM4IAIgCTcDGCACIAJBCGo2AjBBASABIAJBGGpB9K3JACgCABEBAA0AGiACQTBqKAIAQZ/GyQBBAiAEKAIAKAIMEQcACyEBIABBAToABSAAQQRqIAE6AAAgAkHQAGokAAvRAgEFfyMAQdAAayICJAACQCAAAn8CQAJAAkACQAJAIAFBdGoiBEEMSw0AQYSAAiEDAkAgBEEBaw4MAQEAAQECAQEDAQEEBQtBhcACIQMMBAsgAhB/IAJBHGogAa03AgAgAkEDNgIYIAJByABqIgMgAkEgaigCADYCACACQUBrIgQgAikDGDcDACACQThqIgUgAkEQaikDADcDACACQTBqIgYgAkEIaikDADcDACACIAIpAwA3AyhBJEEEEOoCIgFFDQUgASACKQMoNwIA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a3FqIAEgACgCMBEBACACQUBrJAAPCyACQSxqQesANgIAIAJBHGpBAjYCACACQewANgIkIAJCAjcCDCACQfigyQA2AgggAiAAKAIEIgA2AjwgAiADIAAoAggiAEEXakEAIABrcWo2AjggAiACQThqNgI0IAIgAkEEajYCKCACIAJBNGo2AiAgAiACQSBqNgIYIAEgAkEIahD7ASACQUBrJAAL8QEBBH8jAEEgayICJAACQAJAAkACQCAAQSRqLQAAQQJGBEAgACgCBCIDRQ0EIAAoAgAhAANAIAJBCGogACADEP0BIAIoAghBAUcNAiACIAIpAgw3AxhB0KXJAEEDIAEQiwMNAyACIAJBGGoiBEEFai0AADYCBCACIAQtAAQ2AgAgAigCAEUNBSADIAJBGGooAgAgAigCBGoiBEkNBCAAIARqIQAgAyAEayIDDQALDAQLIABBCGogARARIQUMAwsgAigCDCACQRBqKAIAIAEQiwNFDQILIAJBIGokAEEBDwsgBCADEPkBAAsgAkEgaiQAIAUL8gEBAX8jAEEQayIDJAAgAyABKAIAIgEoAgA2AgwCfwJAIAJBAmoiAiACbCICQYAQIAJBgBBLGyIEQQQgA0EMakGo+cEAQaj5wQAQViICBEAgASADKAIMNgIADAELIANBqPnBACAEQQQQ4gECQCADKAIABEAgASADKAIMNgIADAELIAMoAgQiAiADKAIMNgIIIAMgAjYCDCAEQQQgA0EMakGo+cEAQaj5wQAQViECIAEgAygCDDYCACACDQELQQEMAQsgAkIANwIEIAIgAiAEQQJ0akECcjYCAEEACyEBIAAgAjYCBCAAIAE2AgAgA0EQaiQAC5ECAQF/IwBBkANrIgEkACABQYABakEEckEAQYABELcCGiABQYABNgKAASABQYgCaiABQYABakGEARCqAhogASABQYgCakEEckGAARCqAiIBQZACakIANwMAIAFBoAJqQciIyQApAwA3AwAgAUGoAmpB0IjJACkDADcDACABQbACakHYiMkAKQMANwMAIAFBuAJqQeCIyQApAwA3AwAgAUHAAmpB6IjJACkDADcDACABQcgCakHwiMkAKQMANwMAIAFB0AJqQfiIyQApAwA3AwAgAUIANwOIAiABQcCIyQApAwA3A5gCIAAgAUGIAmpB0AAQqgIiAEEANgJQ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QRBqJAALwwEBAX8jAEHgAmsiAyQAAkAgAkEgRgRAIANBGGogAUEYaikAADcDACADQRBqIAFBEGopAAA3AwAgA0EIaiABQQhqKQAANwMAIAMgASkAADcDACADQeAAaiADEFQgAxCcAiADIANB4ABqEGtB4ABBARDqAiIBRQ0BIAEgA0HgABCqAiEBIABC4ICAgIAMNwIEIAAgATYCACADQaACahC7ASADQeACaiQADwtB0IHAAEEZQcCBwAAQuAIAC0HgAEEBEIkDAAujAQECfyAAKAIAIgAtAAVBAkcEfwJAAkACQCAAKAIAIgItAABFBEAgAkEBOgAAELICIQIgAC0ABA0BIABBBWoiAy0AAARAIABBCGohAyACDQQMAwsgAEEIahBfIANBAToAACAAQQhqIQMgAkUNAgwDCxDAAgALIAAgAhDlAQALELICRQ0AIABBBGpBAToAAAsgACgCAEEAOgAAIAMgARArBSACCwumAQEFfwJAIAAoAgAiAS0AAEUEQCABQQE6AAAQsgIhASAALQAEDQECQCAALQAQBEAgAEEIaiECIABBBGohAyAAQRBqIQQDQCACIAAoAgAiBRCwAiACKAIAIAUQ9wIgAy0AAA0CIAQtAAANAAsLAkAgAQ0AELICRQ0AIABBAToABAsgACgCAEEAOgAADwsMAQtByI/JAEG4j8kAELwCAAsgACABEOQBAAueAQEBfyMAQRBrIgckACAHIAEgAiADIAQgBSAGEDMgBygCACEEAkACQCAHKAIEIgIgBygCCCIBRgRAIAQhAyACIQEMAQsgAiABSQ0BIAEEQCAEIAJBASABEOMCIgMNASABQQEQiQMAC0EAIQFBASEDIAJFDQAgBCACQQEQ9AILIAAgATYCBCAAIAM2AgAgB0EQaiQADwtBvIDAABCGAgALngEBA38jAEEgayIBJAAgACgCACIAKAIAIQIgAEEANgIAIAAoAgQgASACKAIAKAIQEQAAKAIAIQAgAUEYaiIDIAFBCGooAgA2AgAgASABKQMANwMQIABBBGohAgJAIAAoAgQiBEUNACAAQQhqKAIAIgBFDQAgBCAAQQN0QQQQ9AILIAIgASkDEDcCACACQQhqIAMoAgA2AgAgAUEgaiQAC5wBAQF/IwBBEGsiBiQAIAYgASACIAMgBCAFEBYgBigCACEEAkACQCAGKAIE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MGo2AiggAkEYakH0kskAEKMCAAuGAQEBfyMAQUBqIgIkACACQSs2AgwgAkGIockANgIIIAIgAToAFCACIAA2AhAgAkE8akHtADYCACACQSxqQQI2AgAgAkHuADYCNCACQgI3AhwgAkH0ockANgIYIAIgAkEQajYCOCACIAJBCGo2AjAgAiACQTBqNgIoIAJBGGpBnKLJABCjAgALhgEBAX8jAEFAaiICJAAgAkErNgIMIAJBnKnJADYCCCACIAE6ABQgAiAANgIQIAJBPGpBgwE2AgAgAkEsakECNgIAIAJBhAE2AjQgAkICNwIcIAJBmKjJADYCGCACIAJBEGo2AjggAiACQQhqNgIwIAIgAkEwajYCKCACQRhqQcCoyQAQowIAC4YBAQF/IwBBQGoiAiQAIAJBKzYCDCACQbSwyQA2AgggAiABOgAUIAIgADYCECACQTxqQY0BNgIAIAJBLGpBAjYCACACQYsBNgI0IAJCAjcCHCACQfyvyQA2AhggAiACQRBqNgI4IAIgAkEIajYCMCACIAJBMGo2AiggAkEYakGksMkAEKMCAAt7AQJ/IAAtAAQhASAALQAFBEAgAUH/AXEhAiAAQQRqAn9BASACDQAaIAAoAgAiAUEcaigCACgCDCECIAEoAhghACABLQAAQQRxRQRAIABBp8bJAEECIAIRBwAMAQsgAEGmxskAQQEgAhEHAAsiAToAAAsgAUH/AXFBAEcLbwECfyMAQSBrIgEkACABQQhqEIQBQQEhAgJAIAEoAghBAUYEQCAAIAEpAgw3AgQgAEEUaiABQRxqKAIANgIAIABBDGogAUEUaikCADcCAAwBCyAAIAEpAgw3AgRBACECCyAAIAI2AgAgAUEgaiQAC2cAAkAgASAASQRAIAJFDQEgAUF/aiEBIABBf2ohAANAIAAgAmogASACai0AADoAACACQX9qIgINAAsMAQsgAkUNAANAIAAgAS0AADoAACABQQFqIQEgAEEBaiEAIAJBf2oiAg0ACwsLdwEBfyMAQfADayIDJAAgAxCuASADIAEgAhAZIANBmAJqIANB2AEQqgIaIANB2AFqIANBmAJqEEJBwABBARDqAiIBBEAgAUHAACADQdgBakHAABCyASAAQcAANgIEIAAgATYCACADQfADaiQADwtBwABBARCJAwALdAAgACgCACIALQAAIQEgAEEAOgAAAkACQCABQQFxBEBBAUEBEOoCIgFFDQEgAUEAOgAAQQhBBBDqAiIARQ0CIABBADoABCAAIAE2AgBBxPXJACAANgIADwtB5KfJABCGAgALQQFBARCJAwALQQhBBBCJAwALbQEBfyMAQSBrIgMkACADIAEgAhAPIAMtABwEQCAAIAMpAwA3AgAgAEEYaiADQRhqKQMANwIAIABBEGogA0EQaikDADcCACAAQQhqIANBCGopAwA3AgAgA0EgaiQADwsgAEECOgAcIANBIGokAAt/AQF/IwBBQGoiASQAIAFBKzYCDCABQeSryQA2AgggASAAOgAXIAFBPGpBiAE2AgAgAUEsakECNgIAIAFBiQE2AjQgAUICNwIcIAFBmK3JADYCGCABIAFBF2o2AjggASABQQhqNgIwIAEgAUEwajYCKCABQRhqQcCtyQAQowIAC3MBAn8CQCAAKAIAIgFBEGooAgAiAkUNACACQQA6AAAgAUEUaigCACICRQ0AIAFBEGooAgAgAkEBEPQCCyABQRxqKAIAQQFBARD0AiAAKAIAIgEgASgCBCIBQX9qNgIEIAFBAUYEQCAAKAIAQTBBCBD0AgsLeAEBfyMAQUBqIgAkACAAQTk2AgwgAEHTpckANgIIIABBNGpBhQE2AgAgAEEkakECNgIAIABBhAE2AiwgAEICNwIUIABBmKjJADYCECAAIABBOGo2AjAgACAAQQhqNgIoIAAgAEEoajYCICAAQRBqQcCoyQAQowIAC3gBAX8jAEFAaiIAJAAgAEEQNgIMIABB+K3JADYCCCAAQTRqQYoBNgIAIABBJGpBAjYCACAAQYsBNgIsIABCAjcCFCAAQfyvyQA2AhAgACAAQThqNgIwIAAgAEEIajYCKCAAIABBKGo2AiAgAEEQakGksMkAEKMCAAt4AQF/IwBBQGoiACQAIABBGDYCDCAAQYiuyQA2AgggAEE0akGOATYCACAAQSRqQQI2AgAgAEGLATYCLCAAQgI3AhQgAEH8r8kANgIQIAAgAEE4ajYCMCAAIABBCGo2AiggACAAQShqNgIgIABBEGpBpLDJABCjAgALeQIEfwF+IwBBMGsiASQAIABBDGoQ4gIhAiAAKAIIEOICIQMgAUEIaiACEIQDIAEpAwghBSACKAIIIQQgASACKAIMNgIcIAEgBDYCGCABIAU3AxAgAUEANgIkIAEgAzYCICABQSBqQbS2yQAgACgCCCABQRBqEKUBAAt4AQF/IwBBQGoiACQAIABBMzYCDCAAQaS7yQA2AgggAEE0akGjATYCACAAQSRqQQI2AgAgAEGkATYCLCAAQgI3AhQgAEGsuskANgIQIAAgAEE4ajYCMCAAIABBCGo2AiggACAAQShqNgIgIABBEGpB1LrJABCjAgALdgEBfyMAQcABayICJAAgAiABQaABEKoCIgFBoAFqIAEQISAAIAFBoAEQqgIiAEG4AWogAUG4AWopAwA3AAAgAEGwAWogAUGwAWopAwA3AAAgAEGoAWogAUGoAWopAwA3AAAgACABKQOgATcAoAEgAUHAAWokAAtmAQF/IwBBEGsiAyQAIAMgASACEBwCfyADKAIAQQFGBEAgA0EIaigCACEBIAMoAgQMAQsgA0EIaigCACIBBEAgAygCBCABQQEQ9AILQQALIQIgACABNgIEIAAgAjYCACADQRBqJAALcgEBfyMAQTBrIgIkACACIAE2AgQgAiAANgIAIAJBLGpB9gA2AgAgAkEcakECNgIAIAJB9gA2AiQgAkICNwIMIAJBiL7JADYCCCACIAJBBGo2AiggAiACNgIgIAIgAkEgajYCGCACQQhqQZi+yQAQowIAC28BAX8jAEEwayIDJAAgAyACNgIEIAMgATYCACADQSxqQfYANgIAIANBHGpBAjYCACADQfYANgIkIANCAjcCDCADQcS8yQA2AgggAyADNgIoIAMgA0EEajYCICADIANBIGo2AhggA0EIaiAAEKMCAAtyAQF/IwBBMGsiAiQAIAIgATYCBCACIAA2AgAgAkEsakH2ADYCACACQRxqQQI2AgAgAkH2ADYCJCACQgI3AgwgAkHMvskANgIIIAIgAkEEajYCKCACIAI2AiAgAiACQSBqNgIYIAJBCGpB3L7JABCjAgALVgECfyMAQSBrIgIkACABQRxqKAIAIQMgASgCGCACQRhqIABBEGopAgA3AwAgAkEQaiAAQQhqKQIANwMAIAIgACkCADcDCCADIAJBCGoQMiACQSBqJAALVgECfyMAQSBrIgIkACAAQRxqKAIAIQMgACgCGCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCADIAJBCGoQMiACQSBq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CDcCACACIAM3AgwgAiAANgIIIAJBgLzJADYCBCACQdi7yQA2AgAgAhDzAQALPQEBfyMAQRBrIgIkACACIAFBpPjDAEEOELMCIAIgADYCDCACIAJBDGpBtPjDABCSASACENMBIAJBEGokAAs8ACAAIAEpAAA3AAAgAEEYaiABQRhqKQAANwAAIABBEGogAUEQaikAADcAACAAQQhqIAFBCGopAAA3AAALTAAgAEEAQcwAELcCIgBB5ABqQbSIyQApAgA3AgAgAEHcAGpBrIjJACkCADcCACAAQdQAakGkiMkAKQIANwIAIABBnIjJACkCADcCTAs1ACAAIAEpAgA3AgAgAEEIaiABQQhqKAIANgIAIAFBEGooAgAiAARAIAEoAgwgAEEBEPQCCwsqAAJAIABBfEsNACAABEAgACAAQX1JQQJ0EOoCIgBFDQEgAA8LQQQPCwALNQEBfyMAQRBrIgIkACACQQhqIAAoAgAgACgCBBDvAiACKAIIIAIoAgwgARCqASACQRBqJAALMwEBfyACBEAgACEDA0AgAyABLQAAOgAAIANBAWohAyABQQFqIQEgAkF/aiICDQALCyAACywBAX8gAyACEF0iBARAIAQgACADIAEgASADSxsQqgIaIAAgASACEL8BCyAECzAAIAAoAgAhACABEPICBEAgACABENEBDwsgARDzAgRAIAAgARDSAQ8LIAAgARD5AgszACAAKAIAIQAgARDyAgRAIAAgARDMAQ8LIAEQ8wIEQCAAIAEQzQEPCyAAMQAAIAEQkAELLwAgAyABIAQgAkECdCIBIAEgBEsbIgEQqgIaIAAgATYCBCAAIAFBA2pBAnY2AgALMgACQCAAKAIIQQFGBH8gACgCACIAQcmhyQBGDQEgAEHJockAQQEQmwJFBUEACw8LQQELMwAgACAAKAIEIgAgASAAGzYCBAJAIAAEQCAAIAFHDQELDwtBnLTJAEE2QYy0yQAQwgIACysAIwBBEGsiACQAIABBCGogAUHEsckAQQsQtQIgAEEIahDoASAAQRBqJAALOgEBfwJAQej1yQAoAgBBAUYEQEHs9ckAKAIAIQAMAQtB6PXJAEIBNwMAC0Hs9ckAIAA2AgAgAEEARws0ACAAIAEoAhggAiADIAFBHGooAgAoAgwRBwA6AAggACABNgIAIAAgA0U6AAkgAEEANgIECzEBAX8gACgCACIAIAIQ2AEgACAAKAIIIgMgAmo2AgggAyAAKAIAaiABIAIQqgIaQQALMAAgASgCGCACIAMgAUEcaigCACgCDBEHACECIABBADoABSAAIAI6AAQgACABNgIACzUBAX8gASgCGEGvxskAQQEgAUEcaigCACgCDBEHACECIABBADoABSAAIAI6AAQgACABNgIACykBAX8gAgRAIAAhAwNAIAMgAToAACADQQFqIQMgAkF/aiICDQALCyAACy0BAX8jAEEQayIDJAAgAyABNgIMIAMgADYCCCADQQhqQYSDwABBACACEKUBAAszAQF/IwBBEGsiACQAIABBMTYCDCAAQaz2wwA2AgggAEEIakH49sMAQQBBnPbDABClAQALJwEBfyMAQTBrIgIkACACQQhqIAEQLSAAIAJBCGoQjAEgAkEwaiQACy0BAX8jAEEQayIDJAAgAyABNgIMIAMgADYCCCADQQhqQdyKyQBBACACEKUBAAstAQF/IwBBEGsiAiQAIAJBIDYCDCACIAA2AgggAkEIakHoj8kAQQAgARClAQALMwEBfyMAQRBrIgAkACAAQSg2AgwgAEGglskANgIIIABBCGpBsJPJAEEAQZCWyQAQpQEACzMBAX8jAEEQayIAJAAgAEEuNgIMIABB7JvJADYCCCAAQQhqQdycyQBBAEHcm8kAEKUBAAszAQF/IwBBEGsiACQAIABBKDYCDCAAQbCeyQA2AgggAEEIakGQnckAQQBBoJ7JABClAQALMwEBfyMAQRBrIgAkACAAQSA2AgwgAEGMo8kANgIIIABBCGpBrKLJAEEAQfyiyQAQpQEACy0BAX8jAEEQayIDJAAgAyABNgIMIAMgADYCCCADQQhqQZylyQBBACACEKUBAAstAQF/IwBBEGsiAyQAIAMgATYCDCADIAA2AgggA0EIakHYtskAQQAgAhClAQALKABBwAAQyQIiAQRAIAFBwABBARD0AiAAQQA2AgAPC0HAAEEBEIkDAAssACAALQAEBEBBAQ8LIAAoAgAiACgCGEGwxskAQQEgAEEcaigCACgCDBEHAAsnACAAQgA3AAAgAEEYakIANwAAIABBEGpCADcAACAAQQhqQgA3AAALKAEBfyMAQRBrIgIkACACIAAoAgA2AgwgAkEMaiABEOwBIAJBEGokAAsgAAJAIAFBfEsNACAAIAFBBCACEOMCIgBFDQAgAA8LAAsnAQF/AkAgACgCBCIBRQ0AIABBCGooAgAiAEUNACABIABBARD0AgsLGwEBfyAAQQEQXSIBBEAgAUEAIAAQtwIaCyABCyoBAX8gAEGYg8AAQaiDwAAgASgCACICGzYCBCAAIAFBqIPAACACGzYCAAsqAQF/IABBjPfDAEGc98MAIAEoAgAiAhs2AgQgACABQZz3wwAgAhs2AgALJgEBfyAAKAIAIgEoAgAgASgCBCAAKAIEKAIAIAAoAggoAgAQNQALKgEBfyAAQfCKyQBBgIvJACABKAIAIgIbNgIEIAAgAUGAi8kAIAIbNgIACyoBAX8gAEH8j8kAQYyQyQAgASgCACICGzYCBCAAIAFBjJDJACACGzYCAAsqAQF/IABBxJPJAEHUk8kAIAEoAgAiAhs2AgQgACABQdSTyQAgAhs2AgALKgEBfyAAQfCcyQBBgJ3JACABKAIAIgIbNgIEIAAgAUGAnckAIAIbNgIACyoBAX8gAEGknckAQbSdyQAgASgCACICGzYCBCAAIAFBtJ3JACACGzYCAAsqAQF/IABBwKLJAEHQoskAIAEoAgAiAhs2AgQgACABQdCiyQAgAhs2AgALKgEBfyAAQbClyQBBwKXJACABKAIAIgIbNgIEIAAgAUHApckAIAIbNgIACyoBAX8gAEHstskAQfy2yQAgASgCACICGzYCBCAAIAFB9K7JACACGzYCAAseAQF/IAAoAgAiACgCACAAQQA2AgAoAgAoAgBBDEYLHgAgAEEANgIIIAAgAjYCBCAAIAE2AgAgAEEAOgAQCx4AIAAgBDYCDCAAIAM2AgggACACNgIEIAAgATYCAAsaAQF/IAAoAgQiAQRAIAAoAgAgAUEBEPQCCwsYACAAKAIAIgAoAgAgAEEEaigCACABEC4LGQAgACABQRRqKAIANgIEIAAgASgCDDYCAAscACABKAIYQeS7yQBBCyABQRxqKAIAKAIMEQcACxwAIAEoAhhB77vJAEEOIAFBHGooAgAoAgwRBwALGQAgACgCGCABIAIgAEEcaigCACgCDBEHAAscACABKAIYQensyQBBBSABQRxqKAIAKAIMEQcACxkAIAAoAgAiACgCACABIAAoAgQoAiARAQALGQAgACgCACIAKAIAIAEgACgCBCgCHBEBAAsZACAAKAIAIgAoAgAgASAAKAIEKAIwEQEACxMAIAAEQCAADwtB4K/JABCGAgALDQAgACABIAIgAxCrAgsWACAAIAEoAgg2AgQgACABKAIANgIACxAAIAEEQCAAIAFBBBD0AgsLEwAgACgCACAAKAIEQQAgARA1AAsQACAAIAEgAiADIAQgBRA2CxAAIAAgASACIAMgBCAFEDkLEQAgACgCACAAKAIEIAEQiwMLCAAgACABEF0LDgAgACABIAIgAyAEEEQLDgAgACABIAIgAyAEEE4LEwAgAEEXNgIEIABBtIXJADYCAAscACAAKAIAQQA6AABB9IzJAEEoQeSMyQAQuwIACxAAIAAgAjYCBCAAIAE2AgALEAAgASAAKAIAIAAoAgQQOgsNACAALQAAQQRxQQJ2Cw0AIAAtAABBEHFBBHYLDQAgAC0AAEEgcUEFdgsLACAAIAEgAhC/AQsNACAAQQBByAEQtwIaCwwAIAAgASACIAMQGwsSAEG4uMkAQR1BqLjJABDCAgALDgAgACgCACABEI8BQQALDAAgADUCACABEJABCw0AIAAoAgAgASACEFwLDQAgAEG4g8AAQRQQJAsMACAAKAIAIAEQpgELCgAgACACIAEQHQsMACAAKAIAIAEQ+QILDAAgACgCACABENUBCwgAIABoQQN2CwwAIAAoAgBBADoAAAsNAEGwkskAQRkgARAuCwwAIAAoAgAgARDeAQsMACAAIAEpAgA3AgALDAAgACABKQIINwIACw0AQdihyQBBGSABEC4LDQBB/KfJAEEZIAEQLgsNAEGbtskAQRkgARAuCxoAIAAgAUHM9ckAKAIAIgBBkAEgABsRBAAACwwAIAAoAgAgARCoAQsKACACIAAgARA6CwgAIAAgARB6CwgAIABBoAFqCwkAIABBADYCAAsHACAAEKABCwkAIABCATcCAAsLAEGMu8kAEIYCAAsGABCRAwALEgBB0LfJAEE3QcC3yQAQwgIACwwAQuSuwoWXm6WIEQsNAEKEltuB3eCg4+gACwQAIAELBABBAAsFAEGABAsEAEEBCw0AQs/M1LqJx42roH8LDQBCoP7z0LC+lYzfAAsHAEGA9ckACwQAQQALBwBBiJjKAAsMAELEvLH88IyA9V0LDQBC99rop679of2QfwsDAAELAwABCwvn6Ak8AEGAgMAAC+bqA1Ry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ACQAQeyXyAAL3GglAAAAJgAAACcAAABIYXNoIHRhYmxlIGNhcGFjaXR5IG92ZXJmbG93L2hvbWUvdHJhdmlzLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2hhc2hicm93bi0wLjEuOC9zcmMvcmF3L21vZC5ycwD4CxIAHAAAABQMEgBbAAAATQAAACgAAAD/////KAAAAAQAAAAEAAAAKQAAACoAAAAoAAAABAAAAAQAAAArAAAALAAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWVzcmMvbGliY29yZS9vcHRpb24ucnO0DBIAKwAAAN8MEgAVAAAAWwEAABUAAABhYmFuZG9uCmFiaWxpdHkKYWJsZQphYm91dAphYm92ZQphYnNlbnQKYWJzb3JiCmFic3RyYWN0CmFic3VyZAphYnVzZQphY2Nlc3MKYWNjaWRlbnQKYWNjb3VudAphY2N1c2UKYWNoaWV2ZQphY2lkCmFjb3VzdGljCmFjcXVpcmUKYWNyb3NzCmFjdAphY3Rpb24KYWN0b3IKYWN0cmVzcwphY3R1YWwKYWRhcHQKYWRkCmFkZGljdAphZGRyZXNzCmFkanVzdAphZG1pdAphZHVsdAphZHZhbmNlCmFkdmljZQphZXJvYmljCmFmZmFpcgphZmZvcmQKYWZyYWlkCmFnYWluCmFnZQphZ2VudAphZ3JlZQphaGVhZAphaW0KYWlyCmFpcnBvcnQKYWlzbGUKYWxhcm0KYWxidW0KYWxjb2hvbAphbGVydAphbGllbgphbGwKYWxsZXkKYWxsb3cKYWxtb3N0CmFsb25lCmFscGhhCmFscmVhZHkKYWxzbwphbHRlcgphbHdheXMKYW1hdGV1cgphbWF6aW5nCmFtb25nCmFtb3VudAphbXVzZWQKYW5hbHlzdAphbmNob3IKYW5jaWVudAphbmdlcgphbmdsZQphbmdyeQphbmltYWwKYW5rbGUKYW5ub3VuY2UKYW5udWFsCmFub3RoZXIKYW5zd2VyCmFudGVubmEKYW50aXF1ZQphbnhpZXR5CmFueQphcGFydAphcG9sb2d5CmFwcGVhcgphcHBsZQphcHByb3ZlCmFwcmlsCmFyY2gKYXJjdGljCmFyZWEKYXJlbmEKYXJndWUKYXJtCmFybWVkCmFybW9yCmFybXkKYXJvdW5kCmFycmFuZ2UKYXJyZXN0CmFycml2ZQphcnJvdwphcnQKYXJ0ZWZhY3QKYXJ0aXN0CmFydHdvcmsKYXNrCmFzcGVjdAphc3NhdWx0CmFzc2V0CmFzc2lzdAphc3N1bWUKYXN0aG1hCmF0aGxldGUKYXRvbQphdHRhY2sKYXR0ZW5kCmF0dGl0dWRlCmF0dHJhY3QKYXVjdGlvbgphdWRpdAphdWd1c3QKYXVudAphdXRob3IKYXV0bwphdXR1bW4KYXZlcmFnZQphdm9jYWRvCmF2b2lkCmF3YWtlCmF3YXJlCmF3YXkKYXdlc29tZQphd2Z1bAphd2t3YXJkCmF4aXMKYmFieQpiYWNoZWxvcgpiYWNvbgpiYWRnZQpiYWcKYmFsYW5jZQpiYWxjb255CmJhbGwKYmFtYm9vCmJhbmFuYQpiYW5uZXIKYmFyCmJhcmVseQpiYXJnYWluCmJhcnJlbApiYXNlCmJhc2ljCmJhc2tldApiYXR0bGUKYmVhY2gKYmVhbgpiZWF1dHkKYmVjYXVzZQpiZWNvbWUKYmVlZgpiZWZvcmUKYmVnaW4KYmVoYXZlCmJlaGluZApiZWxpZXZlCmJlbG93CmJlbHQKYmVuY2gKYmVuZWZpdApiZXN0CmJldHJheQpiZXR0ZXIKYmV0d2VlbgpiZXlvbmQKYmljeWNsZQpiaWQKYmlrZQpiaW5kCmJpb2xvZ3kKYmlyZApiaXJ0aApiaXR0ZXIKYmxhY2sKYmxhZGUKYmxhbWUKYmxhbmtldApibGFzdApibGVhawpibGVzcwpibGluZApibG9vZApibG9zc29tCmJsb3VzZQpibHVlCmJsdXIKYmx1c2gKYm9hcmQKYm9hdApib2R5CmJvaWwKYm9tYgpib25lCmJvbnVzCmJvb2sKYm9vc3QKYm9yZGVyCmJvcmluZwpib3Jyb3cKYm9zcwpib3R0b20KYm91bmNlCmJveApib3kKYnJhY2tldApicmFpbgpicmFuZApicmFzcwpicmF2ZQpicmVhZApicmVlemUKYnJpY2sKYnJpZGdlCmJyaWVmCmJyaWdodApicmluZwpicmlzawpicm9jY29saQpicm9rZW4KYnJvbnplCmJyb29tCmJyb3RoZXIKYnJvd24KYnJ1c2gKYnViYmxlCmJ1ZGR5CmJ1ZGdldApidWZmYWxvCmJ1aWxkCmJ1bGIKYnVsawpidWxsZXQKYnVuZGxlCmJ1bmtlcgpidXJkZW4KYnVyZ2VyCmJ1cnN0CmJ1cwpidXNpbmVzcwpidXN5CmJ1dHRlcgpidXllcgpidXp6CmNhYmJhZ2UKY2FiaW4KY2FibGUKY2FjdHVzCmNhZ2UKY2FrZQpjYWxsCmNhbG0KY2FtZXJhCmNhbXAKY2FuCmNhbmFsCmNhbmNlbApjYW5keQpjYW5ub24KY2Fub2UKY2FudmFzCmNhbnlvbgpjYXBhYmxlCmNhcGl0YWwKY2FwdGFpbgpjYXIKY2FyYm9uCmNhcmQKY2FyZ28KY2FycGV0CmNhcnJ5CmNhcnQKY2FzZQpjYXNoCmNhc2lubwpjYXN0bGUKY2FzdWFsCmNhdApjYXRhbG9nCmNhdGNoCmNhdGVnb3J5CmNhdHRsZQpjYXVnaHQKY2F1c2UKY2F1dGlvbgpjYXZlCmNlaWxpbmcKY2VsZXJ5CmNlbWVudApjZW5zdXMKY2VudHVyeQpjZXJlYWwKY2VydGFpbgpjaGFpcgpjaGFsawpjaGFtcGlvbgpjaGFuZ2UKY2hhb3MKY2hhcHRlcgpjaGFyZ2UKY2hhc2UKY2hhdApjaGVhcApjaGVjawpjaGVlc2UKY2hlZgpjaGVycnkKY2hlc3QKY2hpY2tlbgpjaGllZgpjaGlsZApjaGltbmV5CmNob2ljZQpjaG9vc2UKY2hyb25pYwpjaHVja2xlCmNodW5rCmNodXJuCmNpZ2FyCmNpbm5hbW9uCmNpcmNsZQpjaXRpemVuCmNpdHkKY2l2aWwKY2xhaW0KY2xhcApjbGFyaWZ5CmNsYXcKY2xheQpjbGVhbgpjbGVyawpjbGV2ZXIKY2xpY2sKY2xpZW50CmNsaWZmCmNsaW1iCmNsaW5pYwpjbGlwCmNsb2NrCmNsb2cKY2xvc2UKY2xvdGgKY2xvdWQKY2xvd24KY2x1YgpjbHVtcApjbHVzdGVyCmNsdXRjaApjb2FjaApjb2FzdApjb2NvbnV0CmNvZGUKY29mZmVlCmNvaWwKY29pbgpjb2xsZWN0CmNvbG9yCmNvbHVtbgpjb21iaW5lCmNvbWUKY29tZm9ydApjb21pYwpjb21tb24KY29tcGFueQpjb25jZXJ0CmNvbmR1Y3QKY29uZmlybQpjb25ncmVzcwpjb25uZWN0CmNvbnNpZGVyCmNvbnRyb2wKY29udmluY2UKY29vawpjb29sCmNvcHBlcgpjb3B5CmNvcmFsCmNvcmUKY29ybgpjb3JyZWN0CmNvc3QKY290dG9uCmNvdWNoCmNvdW50cnkKY291cGxlCmNvdXJzZQpjb3VzaW4KY292ZXIKY295b3RlCmNyYWNrCmNyYWRsZQpjcmFmdApjcmFtCmNyYW5lCmNyYXNoCmNyYXRlcgpjcmF3bApjcmF6eQpjcmVhbQpjcmVkaXQKY3JlZWsKY3Jldwpjcmlja2V0CmNyaW1lCmNyaXNwCmNyaXRpYwpjcm9wCmNyb3NzCmNyb3VjaApjcm93ZApjcnVjaWFsCmNydWVsCmNydWlzZQpjcnVtYmxlCmNydW5jaApjcnVzaApjcnkKY3J5c3RhbApjdWJlCmN1bHR1cmUKY3VwCmN1cGJvYXJkCmN1cmlvdXMKY3VycmVudApjdXJ0YWluCmN1cnZlCmN1c2hpb24KY3VzdG9tCmN1dGUKY3ljbGUKZGFkCmRhbWFnZQpkYW1wCmRhbmNlCmRhbmdlcgpkYXJpbmcKZGFzaApkYXVnaHRlcgpkYXduCmRheQpkZWFsCmRlYmF0ZQpkZWJyaXMKZGVjYWRlCmRlY2VtYmVyCmRlY2lkZQpkZWNsaW5lCmRlY29yYXRlCmRlY3JlYXNlCmRlZXIKZGVmZW5zZQpkZWZpbmUKZGVmeQpkZWdyZWUKZGVsYXkKZGVsaXZlcgpkZW1hbmQKZGVtaXNlCmRlbmlhbApkZW50aXN0CmRlbnkKZGVwYXJ0CmRlcGVuZApkZXBvc2l0CmRlcHRoCmRlcHV0eQpkZXJpdmUKZGVzY3JpYmUKZGVzZXJ0CmRlc2lnbgpkZXNrCmRlc3BhaXIKZGVzdHJveQpkZXRhaWwKZGV0ZWN0CmRldmVsb3AKZGV2aWNlCmRldm90ZQpkaWFncmFtCmRpYWwKZGlhbW9uZApkaWFyeQpkaWNlCmRpZXNlbApkaWV0CmRpZmZlcgpkaWdpdGFsCmRpZ25pdHkKZGlsZW1tYQpkaW5uZXIKZGlub3NhdXIKZGlyZWN0CmRpcnQKZGlzYWdyZWUKZGlzY292ZXIKZGlzZWFzZQpkaXNoCmRpc21pc3MKZGlzb3JkZXIKZGlzcGxheQpkaXN0YW5jZQpkaXZlcnQKZGl2aWRlCmRpdm9yY2UKZGl6enkKZG9jdG9yCmRvY3VtZW50CmRvZwpkb2xsCmRvbHBoaW4KZG9tYWluCmRvbmF0ZQpkb25rZXkKZG9ub3IKZG9vcgpkb3NlCmRvdWJsZQpkb3ZlCmRyYWZ0CmRyYWdvbgpkcmFtYQpkcmFzdGljCmRyYXcKZHJlYW0KZHJlc3MKZHJpZnQKZHJpbGwKZHJpbmsKZHJpcApkcml2ZQpkcm9wCmRydW0KZHJ5CmR1Y2sKZHVtYgpkdW5lCmR1cmluZwpkdXN0CmR1dGNoCmR1dHkKZHdhcmYKZHluYW1pYwplYWdlcgplYWdsZQplYXJseQplYXJuCmVhcnRoCmVhc2lseQplYXN0CmVhc3kKZWNobwplY29sb2d5CmVjb25vbXkKZWRnZQplZGl0CmVkdWNhdGUKZWZmb3J0CmVnZwplaWdodAplaXRoZXIKZWxib3cKZWxkZXIKZWxlY3RyaWMKZWxlZ2FudAplbGVtZW50CmVsZXBoYW50CmVsZXZhdG9yCmVsaXRlCmVsc2UKZW1iYXJrCmVtYm9keQplbWJyYWNlCmVtZXJnZQplbW90aW9uCmVtcGxveQplbXBvd2VyCmVtcHR5CmVuYWJsZQplbmFjdAplbmQKZW5kbGVzcwplbmRvcnNlCmVuZW15CmVuZXJneQplbmZvcmNlCmVuZ2FnZQplbmdpbmUKZW5oYW5jZQplbmpveQplbmxpc3QKZW5vdWdoCmVucmljaAplbnJvbGwKZW5zdXJlCmVudGVyCmVudGlyZQplbnRyeQplbnZlbG9wZQplcGlzb2RlCmVxdWFsCmVxdWlwCmVyYQplcmFzZQplcm9kZQplcm9zaW9uCmVycm9yCmVydXB0CmVzY2FwZQplc3NheQplc3NlbmNlCmVzdGF0ZQpldGVybmFsCmV0aGljcwpldmlkZW5jZQpldmlsCmV2b2tlCmV2b2x2ZQpleGFjdApleGFtcGxlCmV4Y2VzcwpleGNoYW5nZQpleGNpdGUKZXhjbHVkZQpleGN1c2UKZXhlY3V0ZQpleGVyY2lzZQpleGhhdXN0CmV4aGliaXQKZXhpbGUKZXhpc3QKZXhpdApleG90aWMKZXhwYW5kCmV4cGVjdApleHBpcmUKZXhwbGFpbgpleHBvc2UKZXhwcmVzcwpleHRlbmQKZXh0cmEKZXllCmV5ZWJyb3cKZmFicmljCmZhY2UKZmFjdWx0eQpmYWRlCmZhaW50CmZhaXRoCmZhbGwKZmFsc2UKZmFtZQpmYW1pbHkKZmFtb3VzCmZhbgpmYW5jeQpmYW50YXN5CmZhcm0KZmFzaGlvbgpmYXQKZmF0YWwKZmF0aGVyCmZhdGlndWUKZmF1bHQKZmF2b3JpdGUKZmVhdHVyZQpmZWJydWFyeQpmZWRlcmFsCmZlZQpmZWVkCmZlZWwKZmVtYWxlCmZlbmNlCmZlc3RpdmFsCmZldGNoCmZldmVyCmZldwpmaWJlcgpmaWN0aW9uCmZpZWxkCmZpZ3VyZQpmaWxlCmZpbG0KZmlsdGVyCmZpbmFsCmZpbmQKZmluZQpmaW5nZXIKZmluaXNoCmZpcmUKZmlybQpmaXJzdApmaXNjYWwKZmlzaApmaXQKZml0bmVzcwpmaXgKZmxhZwpmbGFtZQpmbGFzaApmbGF0CmZsYXZvcgpmbGVlCmZsaWdodApmbGlwCmZsb2F0CmZsb2NrCmZsb29yCmZsb3dlcgpmbHVpZApmbHVzaApmbHkKZm9hbQpmb2N1cwpmb2cKZm9pbApmb2xkCmZvbGxvdwpmb29kCmZvb3QKZm9yY2UKZm9yZXN0CmZvcmdldApmb3JrCmZvcnR1bmUKZm9ydW0KZm9yd2FyZApmb3NzaWwKZm9zdGVyCmZvdW5kCmZveApmcmFnaWxlCmZyYW1lCmZyZXF1ZW50CmZyZXNoCmZyaWVuZApmcmluZ2UKZnJvZwpmcm9udApmcm9zdApmcm93bgpmcm96ZW4KZnJ1aXQKZnVlbApmdW4KZnVubnkKZnVybmFjZQpmdXJ5CmZ1dHVyZQpnYWRnZXQKZ2FpbgpnYWxheHkKZ2FsbGVyeQpnYW1lCmdhcApnYXJhZ2UKZ2FyYmFnZQpnYXJkZW4KZ2FybGljCmdhcm1lbnQKZ2FzCmdhc3AKZ2F0ZQpnYXRoZXIKZ2F1Z2UKZ2F6ZQpnZW5lcmFsCmdlbml1cwpnZW5yZQpnZW50bGUKZ2VudWluZQpnZXN0dXJlCmdob3N0CmdpYW50CmdpZnQKZ2lnZ2xlCmdpbmdlcgpnaXJhZmZlCmdpcmwKZ2l2ZQpnbGFkCmdsYW5jZQpnbGFyZQpnbGFzcwpnbGlkZQpnbGltcHNlCmdsb2JlCmdsb29tCmdsb3J5Cmdsb3ZlCmdsb3cKZ2x1ZQpnb2F0CmdvZGRlc3MKZ29sZApnb29kCmdvb3NlCmdvcmlsbGEKZ29zcGVsCmdvc3NpcApnb3Zlcm4KZ293bgpncmFiCmdyYWNlCmdyYWluCmdyYW50CmdyYXBlCmdyYXNzCmdyYXZpdHkKZ3JlYXQKZ3JlZW4KZ3JpZApncmllZgpncml0Cmdyb2NlcnkKZ3JvdXAKZ3JvdwpncnVudApndWFyZApndWVzcwpndWlkZQpndWlsdApndWl0YXIKZ3VuCmd5bQpoYWJpdApoYWlyCmhhbGYKaGFtbWVyCmhhbXN0ZXIKaGFuZApoYXBweQpoYXJib3IKaGFyZApoYXJzaApoYXJ2ZXN0CmhhdApoYXZlCmhhd2sKaGF6YXJkCmhlYWQKaGVhbHRoCmhlYXJ0CmhlYXZ5CmhlZGdlaG9nCmhlaWdodApoZWxsbwpoZWxtZXQKaGVscApoZW4KaGVybwpoaWRkZW4KaGlnaApoaWxsCmhpbnQKaGlwCmhpcmUKaGlzdG9yeQpob2JieQpob2NrZXkKaG9sZApob2xlCmhvbGlkYXkKaG9sbG93CmhvbWUKaG9uZXkKaG9vZApob3BlCmhvcm4KaG9ycm9yCmhvcnNlCmhvc3BpdGFsCmhvc3QKaG90ZWwKaG91cgpob3ZlcgpodWIKaHVnZQpodW1hbgpodW1ibGUKaHVtb3IKaHVuZHJlZApodW5ncnkKaHVudApodXJkbGUKaHVycnkKaHVydApodXNiYW5kCmh5YnJpZAppY2UKaWNvbgppZGVhCmlkZW50aWZ5CmlkbGUKaWdub3JlCmlsbAppbGxlZ2FsCmlsbG5lc3MKaW1hZ2UKaW1pdGF0ZQppbW1lbnNlCmltbXVuZQppbXBhY3QKaW1wb3NlCmltcHJvdmUKaW1wdWxzZQppbmNoCmluY2x1ZGUKaW5jb21lCmluY3JlYXNlCmluZGV4CmluZGljYXRlCmluZG9vcgppbmR1c3RyeQppbmZhbnQKaW5mbGljdAppbmZvcm0KaW5oYWxlCmluaGVyaXQKaW5pdGlhbAppbmplY3QKaW5qdXJ5CmlubWF0ZQppbm5lcgppbm5vY2VudAppbnB1dAppbnF1aXJ5Cmluc2FuZQppbnNlY3QKaW5zaWRlCmluc3BpcmUKaW5zdGFsbAppbnRhY3QKaW50ZXJlc3QKaW50bwppbnZlc3QKaW52aXRlCmludm9sdmUKaXJvbgppc2xhbmQKaXNvbGF0ZQppc3N1ZQppdGVtCml2b3J5CmphY2tldApqYWd1YXIKamFyCmphenoKamVhbG91cwpqZWFucwpqZWxseQpqZXdlbApqb2IKam9pbgpqb2tlCmpvdXJuZXkKam95Cmp1ZGdlCmp1aWNlCmp1bXAKanVuZ2xlCmp1bmlvcgpqdW5rCmp1c3QKa2FuZ2Fyb28Ka2VlbgprZWVwCmtldGNodXAKa2V5CmtpY2sKa2lkCmtpZG5leQpraW5kCmtpbmdkb20Ka2lzcwpraXQKa2l0Y2hlbgpraXRlCmtpdHRlbgpraXdpCmtuZWUKa25pZmUKa25vY2sKa25vdwpsYWIKbGFiZWwKbGFib3IKbGFkZGVyCmxhZHkKbGFrZQpsYW1wCmxhbmd1YWdlCmxhcHRvcApsYXJnZQpsYXRlcgpsYXRpbgpsYXVnaApsYXVuZHJ5CmxhdmEKbGF3Cmxhd24KbGF3c3VpdApsYXllcgpsYXp5CmxlYWRlcgpsZWFmCmxlYXJuCmxlYXZlCmxlY3R1cmUKbGVmdApsZWcKbGVnYWwKbGVnZW5kCmxlaXN1cmUKbGVtb24KbGVuZApsZW5ndGgKbGVucwpsZW9wYXJkCmxlc3NvbgpsZXR0ZXIKbGV2ZWwKbGlhcgpsaWJlcnR5CmxpYnJhcnkKbGljZW5zZQpsaWZlCmxpZnQKbGlnaHQKbGlrZQpsaW1iCmxpbWl0CmxpbmsKbGlvbgpsaXF1aWQKbGlzdApsaXR0bGUKbGl2ZQpsaXphcmQKbG9hZApsb2FuCmxvYnN0ZXIKbG9jYWwKbG9jawpsb2dpYwpsb25lbHkKbG9uZwpsb29wCmxvdHRlcnkKbG91ZApsb3VuZ2UKbG92ZQpsb3lhbApsdWNreQpsdWdnYWdlCmx1bWJlcgpsdW5hcgpsdW5jaApsdXh1cnkKbHlyaWNzCm1hY2hpbmUKbWFkCm1hZ2ljCm1hZ25ldAptYWlkCm1haWwKbWFpbgptYWpvcgptYWtlCm1hbW1hbAptYW4KbWFuYWdlCm1hbmRhdGUKbWFuZ28KbWFuc2lvbgptYW51YWwKbWFwbGUKbWFyYmxlCm1hcmNoCm1hcmdpbgptYXJpbmUKbWFya2V0Cm1hcnJpYWdlCm1hc2sKbWFzcwptYXN0ZXIKbWF0Y2gKbWF0ZXJpYWwKbWF0aAptYXRyaXgKbWF0dGVyCm1heGltdW0KbWF6ZQptZWFkb3cKbWVhbgptZWFzdXJlCm1lYXQKbWVjaGFuaWMKbWVkYWwKbWVkaWEKbWVsb2R5Cm1lbHQKbWVtYmVyCm1lbW9yeQptZW50aW9uCm1lbnUKbWVyY3kKbWVyZ2UKbWVyaXQKbWVycnkKbWVzaAptZXNzYWdlCm1ldGFsCm1ldGhvZAptaWRkbGUKbWlkbmlnaHQKbWlsawptaWxsaW9uCm1pbWljCm1pbmQKbWluaW11bQptaW5vcgptaW51dGUKbWlyYWNsZQptaXJyb3IKbWlzZXJ5Cm1pc3MKbWlzdGFrZQptaXgKbWl4ZWQKbWl4dHVyZQptb2JpbGUKbW9kZWwKbW9kaWZ5Cm1vbQptb21lbnQKbW9uaXRvcgptb25rZXkKbW9uc3Rlcgptb250aAptb29uCm1vcmFsCm1vcmUKbW9ybmluZwptb3NxdWl0bwptb3RoZXIKbW90aW9uCm1vdG9yCm1vdW50YWluCm1vdXNlCm1vdmUKbW92aWUKbXVjaAptdWZmaW4KbXVsZQptdWx0aXBseQptdXNjbGUKbXVzZXVtCm11c2hyb29tCm11c2ljCm11c3QKbXV0dWFsCm15c2VsZgpteXN0ZXJ5Cm15dGgKbmFpdmUKbmFtZQpuYXBraW4KbmFycm93Cm5hc3R5Cm5hdGlvbgpuYXR1cmUKbmVhcgpuZWNrCm5lZWQKbmVnYXRpdmUKbmVnbGVjdApuZWl0aGVyCm5lcGhldwpuZXJ2ZQpuZXN0Cm5ldApuZXR3b3JrCm5ldXRyYWwKbmV2ZXIKbmV3cwpuZXh0Cm5pY2UKbmlnaHQKbm9ibGUKbm9pc2UKbm9taW5lZQpub29kbGUKbm9ybWFsCm5vcnRoCm5vc2UKbm90YWJsZQpub3RlCm5vdGhpbmcKbm90aWNlCm5vdmVsCm5vdwpudWNsZWFyCm51bWJlcgpudXJzZQpudXQKb2FrCm9iZXkKb2JqZWN0Cm9ibGlnZQpvYnNjdXJlCm9ic2VydmUKb2J0YWluCm9idmlvdXMKb2NjdXIKb2NlYW4Kb2N0b2JlcgpvZG9yCm9mZgpvZmZlcgpvZmZpY2UKb2Z0ZW4Kb2lsCm9rYXkKb2xkCm9saXZlCm9seW1waWMKb21pdApvbmNlCm9uZQpvbmlvbgpvbmxpbmUKb25seQpvcGVuCm9wZXJhCm9waW5pb24Kb3Bwb3NlCm9wdGlvbgpvcmFuZ2UKb3JiaXQKb3JjaGFyZApvcmRlcgpvcmRpbmFyeQpvcmdhbgpvcmllbnQKb3JpZ2luYWwKb3JwaGFuCm9zdHJpY2gKb3RoZXIKb3V0ZG9vcgpvdXRlcgpvdXRwdXQKb3V0c2lkZQpvdmFsCm92ZW4Kb3Zlcgpvd24Kb3duZXIKb3h5Z2VuCm95c3Rlcgpvem9uZQpwYWN0CnBhZGRsZQpwYWdlCnBhaXIKcGFsYWNlCnBhbG0KcGFuZGEKcGFuZWwKcGFuaWMKcGFudGhlcgpwYXBlcgpwYXJhZGUKcGFyZW50CnBhcmsKcGFycm90CnBhcnR5CnBhc3MKcGF0Y2gKcGF0aApwYXRpZW50CnBhdHJvbApwYXR0ZXJuCnBhdXNlCnBhdmUKcGF5bWVudApwZWFjZQpwZWFudXQKcGVhcgpwZWFzYW50CnBlbGljYW4KcGVuCnBlbmFsdHkKcGVuY2lsCnBlb3BsZQpwZXBwZXIKcGVyZmVjdApwZXJtaXQKcGVyc29uCnBldApwaG9uZQpwaG90bwpwaHJhc2UKcGh5c2ljYWwKcGlhbm8KcGljbmljCnBpY3R1cmUKcGllY2UKcGlnCnBpZ2VvbgpwaWxsCnBpbG90CnBpbmsKcGlvbmVlcgpwaXBlCnBpc3RvbApwaXRjaApwaXp6YQpwbGFjZQpwbGFuZXQKcGxhc3RpYwpwbGF0ZQpwbGF5CnBsZWFzZQpwbGVkZ2UKcGx1Y2sKcGx1ZwpwbHVuZ2UKcG9lbQpwb2V0CnBvaW50CnBvbGFyCnBvbGUKcG9saWNlCnBvbmQKcG9ueQpwb29sCnBvcHVsYXIKcG9ydGlvbgpwb3NpdGlvbgpwb3NzaWJsZQpwb3N0CnBvdGF0bwpwb3R0ZXJ5CnBvdmVydHkKcG93ZGVyCnBvd2VyCnByYWN0aWNlCnByYWlzZQpwcmVkaWN0CnByZWZlcgpwcmVwYXJlCnByZXNlbnQKcHJldHR5CnByZXZlbnQKcHJpY2UKcHJpZGUKcHJpbWFyeQpwcmludApwcmlvcml0eQpwcmlzb24KcHJpdmF0ZQpwcml6ZQpwcm9ibGVtCnByb2Nlc3MKcHJvZHVjZQpwcm9maXQKcHJvZ3JhbQpwcm9qZWN0CnByb21vdGUKcHJvb2YKcHJvcGVydHkKcHJvc3Blcgpwcm90ZWN0CnByb3VkCnByb3ZpZGUKcHVibGljCnB1ZGRpbmcKcHVsbApwdWxwCnB1bHNlCnB1bXBraW4KcHVuY2gKcHVwaWwKcHVwcHkKcHVyY2hhc2UKcHVyaXR5CnB1cnBvc2UKcHVyc2UKcHVzaApwdXQKcHV6emxlCnB5cmFtaWQKcXVhbGl0eQpxdWFudHVtCnF1YXJ0ZXIKcXVlc3Rpb24KcXVpY2sKcXVpdApxdWl6CnF1b3RlCnJhYmJpdApyYWNjb29uCnJhY2UKcmFjawpyYWRhcgpyYWRpbwpyYWlsCnJhaW4KcmFpc2UKcmFsbHkKcmFtcApyYW5jaApyYW5kb20KcmFuZ2UKcmFwaWQKcmFyZQpyYXRlCnJhdGhlcgpyYXZlbgpyYXcKcmF6b3IKcmVhZHkKcmVhbApyZWFzb24KcmViZWwKcmVidWlsZApyZWNhbGwKcmVjZWl2ZQpyZWNpcGUKcmVjb3JkCnJlY3ljbGUKcmVkdWNlCnJlZmxlY3QKcmVmb3JtCnJlZnVzZQpyZWdpb24KcmVncmV0CnJlZ3VsYXIKcmVqZWN0CnJlbGF4CnJlbGVhc2UKcmVsaWVmCnJlbHkKcmVtYWluCnJlbWVtYmVyCnJlbWluZApyZW1vdmUKcmVuZGVyCnJlbmV3CnJlbnQKcmVvcGVuCnJlcGFpcgpyZXBlYXQKcmVwbGFjZQpyZXBvcnQKcmVxdWlyZQpyZXNjdWUKcmVzZW1ibGUKcmVzaXN0CnJlc291cmNlCnJlc3BvbnNlCnJlc3VsdApyZXRpcmUKcmV0cmVhdApyZXR1cm4KcmV1bmlvbgpyZXZlYWwKcmV2aWV3CnJld2FyZApyaHl0aG0KcmliCnJpYmJvbgpyaWNlCnJpY2gKcmlkZQpyaWRnZQpyaWZsZQpyaWdodApyaWdpZApyaW5nCnJpb3QKcmlwcGxlCnJpc2sKcml0dWFsCnJpdmFsCnJpdmVyCnJvYWQKcm9hc3QKcm9ib3QKcm9idXN0CnJvY2tldApyb21hbmNlCnJvb2YKcm9va2llCnJvb20Kcm9zZQpyb3RhdGUKcm91Z2gKcm91bmQKcm91dGUKcm95YWwKcnViYmVyCnJ1ZGUKcnVnCnJ1bGUKcnVuCnJ1bndheQpydXJhbApzYWQKc2FkZGxlCnNhZG5lc3MKc2FmZQpzYWlsCnNhbGFkCnNhbG1vbgpzYWxvbgpzYWx0CnNhbHV0ZQpzYW1lCnNhbXBsZQpzYW5kCnNhdGlzZnkKc2F0b3NoaQpzYXVjZQpzYXVzYWdlCnNhdmUKc2F5CnNjYWxlCnNjYW4Kc2NhcmUKc2NhdHRlcgpzY2VuZQpzY2hlbWUKc2Nob29sCnNjaWVuY2UKc2Npc3NvcnMKc2NvcnBpb24Kc2NvdXQKc2NyYXAKc2NyZWVuCnNjcmlwdApzY3J1YgpzZWEKc2VhcmNoCnNlYXNvbgpzZWF0CnNlY29uZApzZWNyZXQKc2VjdGlvbgpzZWN1cml0eQpzZWVkCnNlZWsKc2VnbWVudApzZWxlY3QKc2VsbApzZW1pbmFyCnNlbmlvcgpzZW5zZQpzZW50ZW5jZQpzZXJpZXMKc2VydmljZQpzZXNzaW9uCnNldHRsZQpzZXR1cApzZXZlbgpzaGFkb3cKc2hhZnQKc2hhbGxvdwpzaGFyZQpzaGVkCnNoZWxsCnNoZXJpZmYKc2hpZWxkCnNoaWZ0CnNoaW5lCnNoaXAKc2hpdmVyCnNob2NrCnNob2UKc2hvb3QKc2hvcApzaG9ydApzaG91bGRlcgpzaG92ZQpzaHJpbXAKc2hydWcKc2h1ZmZsZQpzaHkKc2libGluZwpzaWNrCnNpZGUKc2llZ2UKc2lnaHQKc2lnbgpzaWxlbnQKc2lsawpzaWxseQpzaWx2ZXIKc2ltaWxhcgpzaW1wbGUKc2luY2UKc2luZwpzaXJlbgpzaXN0ZXIKc2l0dWF0ZQpzaXgKc2l6ZQpza2F0ZQpza2V0Y2gKc2tpCnNraWxsCnNraW4Kc2tpcnQKc2t1bGwKc2xhYgpzbGFtCnNsZWVwCnNsZW5kZXIKc2xpY2UKc2xpZGUKc2xpZ2h0CnNsaW0Kc2xvZ2FuCnNsb3QKc2xvdwpzbHVzaApzbWFsbApzbWFydApzbWlsZQpzbW9rZQpzbW9vdGgKc25hY2sKc25ha2UKc25hcApzbmlmZgpzbm93CnNvYXAKc29jY2VyCnNvY2lhbApzb2NrCnNvZGEKc29mdApzb2xhcgpzb2xkaWVyCnNvbGlkCnNvbHV0aW9uCnNvbHZlCnNvbWVvbmUKc29uZwpzb29uCnNvcnJ5CnNvcnQKc291bApzb3VuZApzb3VwCnNvdXJjZQpzb3V0aApzcGFjZQpzcGFyZQpzcGF0aWFsCnNwYXduCnNwZWFrCnNwZWNpYWwKc3BlZWQKc3BlbGwKc3BlbmQKc3BoZXJlCnNwaWNlCnNwaWRlcgpzcGlrZQpzcGluCnNwaXJpdApzcGxpdApzcG9pbApzcG9uc29yCnNwb29uCnNwb3J0CnNwb3QKc3ByYXkKc3ByZWFkCnNwcmluZwpzcHkKc3F1YXJlCnNxdWVlemUKc3F1aXJyZWwKc3RhYmxlCnN0YWRpdW0Kc3RhZmYKc3RhZ2UKc3RhaXJzCnN0YW1wCnN0YW5kCnN0YXJ0CnN0YXRlCnN0YXkKc3RlYWsKc3RlZWwKc3RlbQpzdGVwCnN0ZXJlbwpzdGljawpzdGlsbApzdGluZwpzdG9jawpzdG9tYWNoCnN0b25lCnN0b29sCnN0b3J5CnN0b3ZlCnN0cmF0ZWd5CnN0cmVldApzdHJpa2UKc3Ryb25nCnN0cnVnZ2xlCnN0dWRlbnQKc3R1ZmYKc3R1bWJsZQpzdHlsZQpzdWJqZWN0CnN1Ym1pdApzdWJ3YXkKc3VjY2VzcwpzdWNoCnN1ZGRlbgpzdWZmZXIKc3VnYXIKc3VnZ2VzdApzdWl0CnN1bW1lcgpzdW4Kc3VubnkKc3Vuc2V0CnN1cGVyCnN1cHBseQpzdXByZW1lCnN1cmUKc3VyZmFjZQpzdXJnZQpzdXJwcmlzZQpzdXJyb3VuZApzdXJ2ZXkKc3VzcGVjdApzdXN0YWluCnN3YWxsb3cKc3dhbXAKc3dhcApzd2FybQpzd2Vhcgpzd2VldApzd2lmdApzd2ltCnN3aW5nCnN3aXRjaApzd29yZApzeW1ib2wKc3ltcHRvbQpzeXJ1cApzeXN0ZW0KdGFibGUKdGFja2xlCnRhZwp0YWlsCnRhbGVudAp0YWxrCnRhbmsKdGFwZQp0YXJnZXQKdGFzawp0YXN0ZQp0YXR0b28KdGF4aQp0ZWFjaAp0ZWFtCnRlbGwKdGVuCnRlbmFudAp0ZW5uaXMKdGVudAp0ZXJtCnRlc3QKdGV4dAp0aGFuawp0aGF0CnRoZW1lCnRoZW4KdGhlb3J5CnRoZXJlCnRoZXkKdGhpbmcKdGhpcwp0aG91Z2h0CnRocmVlCnRocml2ZQp0aHJvdwp0aHVtYgp0aHVuZGVyCnRpY2tldAp0aWRlCnRpZ2VyCnRpbHQKdGltYmVyCnRpbWUKdGlueQp0aXAKdGlyZWQKdGlzc3VlCnRpdGxlCnRvYXN0CnRvYmFjY28KdG9kYXkKdG9kZGxlcgp0b2UKdG9nZXRoZXIKdG9pbGV0CnRva2VuCnRvbWF0bwp0b21vcnJvdwp0b25lCnRvbmd1ZQp0b25pZ2h0CnRvb2wKdG9vdGgKdG9wCnRvcGljCnRvcHBsZQp0b3JjaAp0b3JuYWRvCnRvcnRvaXNlCnRvc3MKdG90YWwKdG91cmlzdAp0b3dhcmQKdG93ZXIKdG93bgp0b3kKdHJhY2sKdHJhZGUKdHJhZmZpYwp0cmFnaWMKdHJhaW4KdHJhbnNmZXIKdHJhcAp0cmFzaAp0cmF2ZWwKdHJheQp0cmVhdAp0cmVlCnRyZW5kCnRyaWFsCnRyaWJlCnRyaWNrCnRyaWdnZXIKdHJpbQp0cmlwCnRyb3BoeQp0cm91YmxlCnRydWNrCnRydWUKdHJ1bHkKdHJ1bXBldAp0cnVzdAp0cnV0aAp0cnkKdHViZQp0dWl0aW9uCnR1bWJsZQp0dW5hCnR1bm5lbAp0dXJrZXkKdHVybgp0dXJ0bGUKdHdlbHZlCnR3ZW50eQp0d2ljZQp0d2luCnR3aXN0CnR3bwp0eXBlCnR5cGljYWwKdWdseQp1bWJyZWxsYQp1bmFibGUKdW5hd2FyZQp1bmNsZQp1bmNvdmVyCnVuZGVyCnVuZG8KdW5mYWlyCnVuZm9sZAp1bmhhcHB5CnVuaWZvcm0KdW5pcXVlCnVuaXQKdW5pdmVyc2UKdW5rbm93bgp1bmxvY2sKdW50aWwKdW51c3VhbAp1bnZlaWwKdXBkYXRlCnVwZ3JhZGUKdXBob2xkCnVwb24KdXBwZXIKdXBzZXQKdXJiYW4KdXJnZQp1c2FnZQp1c2UKdXNlZAp1c2VmdWwKdXNlbGVzcwp1c3VhbAp1dGlsaXR5CnZhY2FudAp2YWN1dW0KdmFndWUKdmFsaWQKdmFsbGV5CnZhbHZlCnZhbgp2YW5pc2gKdmFwb3IKdmFyaW91cwp2YXN0CnZhdWx0CnZlaGljbGUKdmVsdmV0CnZlbmRvcgp2ZW50dXJlCnZlbnVlCnZlcmIKdmVyaWZ5CnZlcnNpb24KdmVyeQp2ZXNzZWwKdmV0ZXJhbgp2aWFibGUKdmlicmFudAp2aWNpb3VzCnZpY3RvcnkKdmlkZW8Kdmlldwp2aWxsYWdlCnZpbnRhZ2UKdmlvbGluCnZpcnR1YWwKdmlydXMKdmlzYQp2aXNpdAp2aXN1YWwKdml0YWwKdml2aWQKdm9jYWwKdm9pY2UKdm9pZAp2b2xjYW5vCnZvbHVtZQp2b3RlCnZveWFnZQp3YWdlCndhZ29uCndhaXQKd2Fsawp3YWxsCndhbG51dAp3YW50CndhcmZhcmUKd2FybQp3YXJyaW9yCndhc2gKd2FzcAp3YXN0ZQp3YXRlcgp3YXZlCndheQp3ZWFsdGgKd2VhcG9uCndlYXIKd2Vhc2VsCndlYXRoZXIKd2ViCndlZGRpbmcKd2Vla2VuZAp3ZWlyZAp3ZWxjb21lCndlc3QKd2V0CndoYWxlCndoYXQKd2hlYXQKd2hlZWwKd2hlbgp3aGVyZQp3aGlwCndoaXNwZXIKd2lkZQp3aWR0aAp3aWZlCndpbGQKd2lsbAp3aW4Kd2luZG93CndpbmUKd2luZwp3aW5rCndpbm5lcgp3aW50ZXIKd2lyZQp3aXNkb20Kd2lzZQp3aXNoCndpdG5lc3MKd29sZgp3b21hbgp3b25kZXIKd29vZAp3b29sCndvcmQKd29yawp3b3JsZAp3b3JyeQp3b3J0aAp3cmFwCndyZWNrCndyZXN0bGUKd3Jpc3QKd3JpdGUKd3JvbmcKeWFyZAp5ZWFyCnllbGxvdwp5b3UKeW91bmcKeW91dGgKemVicmEKemVybwp6b25lCnpvbwoAQdCAyQALtRcvcnVzdGMvM2Y1MTUyZTIwMGMwYzAyZGZlMGY3OTM2Nzk0OGM5ODA1M2QzNTg1NS9zcmMvbGliY29yZS9zbGljZS9tb2QucnNQQBIASAAAAIEKAAAKAAAAYXNzZXJ0aW9uIGZhaWxlZDogYChsZWZ0ID09IHJpZ2h0KWAKICBsZWZ0OiBgYCwKIHJpZ2h0OiBgYDogqEASAC0AAADVQBIADAAAAOFAEgADAAAAZGVzdGluYXRpb24gYW5kIHNvdXJjZSBzbGljZXMgaGF2ZSBkaWZmZXJlbnQgbGVuZ3Roc/xAEgA0AAAAc3JjL2xpYmNvcmUvc2xpY2UvbW9kLnJzOEESABgAAABFCAAACQAAAC9ydXN0Yy8zZjUxNTJlMjAwYzBjMDJkZmUwZjc5MzY3OTQ4Yzk4MDUzZDM1ODU1L3NyYy9saWJjb3JlL3N0ci9wYXR0ZXJuLnJzAABgQRIASgAAAHwEAAAhAAAAYEESAEoAAACIBAAAFAAAAGBBEgBKAAAAiAQAACEAAAAAAAAAL3J1c3RjLzNmNTE1MmUyMDBjMGMwMmRmZTBmNzkzNjc5NDhjOTgwNTNkMzU4NTUvc3JjL2xpYmNvcmUvc2xpY2UvbW9kLnJz4EESAEgAAACBCgAACgAAACAAAAAAAAAAL2hvbWUvdHJhdmlzLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2htYWMtMC43LjAvc3JjL2xpYi5ycwAAQEISAFIAAAB2AAAAEQAAAG1uZW1vbmljpEISAAgAAABiaXAzOTo6ZXJyb3I6OkVycm9yS2luZGludmFsaWQgZW50cm9weSBsZW5ndGggYml0cyBmb3IgbW5lbW9uaWMgdHlwZSAAAADLQhIAFwAAAOJCEgAXAAAAaW52YWxpZCBudW1iZXIgb2Ygd29yZHMgaW4gcGhyYXNlOiAADEMSACMAAABpbnZhbGlkIGtleXNpemU6IAAAADhDEgARAAAAaW52YWxpZCB3b3JkIGluIHBocmFzZQAAVEMSABYAAABpbnZhbGlkIGNoZWNrc3VtdEMSABAAAABJbnZhbGlkRW50cm9weUxlbmd0aDMAAAAEAAAABAAAAC8AAAAzAAAABAAAAAQAAAAyAAAASW52YWxpZFdvcmRMZW5ndGhJbnZhbGlkS2V5c2l6ZUludmFsaWRXb3JkSW52YWxpZENoZWNrc3VtV29yZHMyNFdvcmRzMjFXb3JkczE4V29yZHMxNVdvcmRzMTJn5glqha5nu3Lzbjw69U+lf1IOUYxoBZur2YMfGc3gWwAAAAAIybzzZ+YJajunyoSFrme7K/iU/nLzbjzxNh1fOvVPpdGC5q1/Ug5RH2w+K4xoBZtrvUH7q9mDH3khfhMZzeBbL2hvbWUvdHJhdmlzLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2Jsb2NrLWJ1ZmZlci0wLjcuMC9zcmMvbGliLnJzAACARBIAWgAAAF0AAAAJAAAAAAAAAC9ob21lL3RyYXZpcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9ibG9jay1idWZmZXItMC43LjAvc3JjL2xpYi5ycwAA8EQSAFoAAABdAAAACQAAADQAAAAIAAAABAAAADUAAAA2AAAANAAAAAgAAAAEAAAANwAAADgAAAAAAAAAAQAAADkAAAA6AAAABAAAAAQAAAA7AAAAPAAAADoAAAAEAAAABAAAAD0AAAA+AAAAOgAAAAQAAAAEAAAAPwAAAEAAAAAvaG9tZS90cmF2aXMvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvcGFya2luZ19sb3QtMC43LjEvc3JjL29uY2UucnMAAMxFEgBaAAAA8gAAABEAAABPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAAMxFEgBaAAAAHgEAACgAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlAAAAAC9ob21lL3RyYXZpcy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9wYXJraW5nX2xvdF9jb3JlLTAuNC4wL3NyYy9wYXJraW5nX2xvdC5ycwAAoEYSAGYAAAAXAQAAEAAAAKBGEgBmAAAAHgEAAA0AAACgRhIAZgAAAEABAAATAAAAoEYSAGYAAABZAQAAEwAAAFRyaWVkIHRvIHNocmluayB0byBhIGxhcmdlciBjYXBhY2l0eXNyYy9saWJhbGxvYy9yYXdfdmVjLnJzAEhHEgAkAAAAbEcSABcAAABAAgAACQAAAHNyYy9saWJzdGQvc3lzL3dhc20vbXV0ZXgucnOcRxIAHAAAABYAAAAJAAAAY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXhBAAAACAAAAAQAAABCAAAAQwAAAEEAAAAIAAAABAAAAEQAAABFAAAAAAAAAAEAAABGAAAARnJvbUVudHJvcHk6OmZyb21fZW50cm9weSgpIGZhaWxlZDogHEgSACQAAAAvaG9tZS90cmF2aXMvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvcmFuZC0wLjYuNS9zcmMvbGliLnJzAABISBIAUgAAAFsCAAANAAAAL2hvbWUvdHJhdmlzLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3NtYWxsdmVjLTAuNi45L2xpYi5ycwAArEgSAFIAAACKAgAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IG5ld19jYXAgPj0gbGVuUG9pc29uRXJyb3IgeyBpbm5lcjogLi4gfTogAElJEgAAAAAASUkSAAIAAABzcmMvbGliY29yZS9yZXN1bHQucnMAAABcSRIAFQAAAOcDAAAFAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQBLAAAACAAAAAQAAABMAAAATQAAAEsAAAAIAAAABAAAAE4AAABPAAAAAAAAAAEAAABQAAAAY291bGQgbm90IGluaXRpYWxpemUgdGhyZWFkX3JuZzogAAAA5EkSACEAAAAvaG9tZS90cmF2aXMvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvcmFuZC0wLjYuNS9zcmMvcm5ncy90aHJlYWQucnMAABBKEgBaAAAAUAAAABEAAAAvaG9tZS90cmF2aXMvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvcmFuZC0wLjYuNS9zcmMvcm5ncy9lbnRyb3B5LnJzTm8gZW50cm9weSBzb3VyY2VzIGF2YWlsYWJsZUFsbCBlbnRyb3B5IHNvdXJjZXMgZmFpbGVkAAAAfEoSAFsAAAC6AAAACQAAAGludGVybmFs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z1gSABgAAACIAwAADQAAAM9YEgAYAAAAIQQAABEAAABmYWlsZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIHRocmVhZCBJRDogYml0c3BhY2UgZXhoYXVzdGVkdGhyZWFkIG5hbWUgbWF5IG5vdCBjb250YWluIGludGVyaW9yIG51bGwgYnl0ZXMAAM9YEgAYAAAAlgQAABIAAABpbmNvbnNpc3RlbnQgc3RhdGUgaW4gdW5wYXJrc3JjL2xpYnN0ZC9zeW5jL2NvbmR2YXIucnMAAPBZEgAaAAAASAIAABIAAABhdHRlbXB0ZWQgdG8gdXNlIGEgY29uZGl0aW9uIHZhcmlhYmxlIHdpdGggdHdvIG11dGV4ZXNzcmMvbGlic3RkL3N5bmMvb25jZS5ycwAAAFJaEgAXAAAAjgEAABUAAABhc3NlcnRpb24gZmFpbGVkOiBzdGF0ZSAmIFNUQVRFX01BU0sgPT0gUlVOTklORwBSWhIAFwAAAGoBAAAVAAAAT25jZSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkAABSWhIAFwAAAMABAAAJAAAAc3VwcGxpZWQgaW5zdGFudCBpcyBsYXRlciB0aGFuIHNlbGZQb2lzb25FcnJvciB7IGlubmVyOiAuLiB9mAAAABAAAAAEAAAAmQAAAJoAAACbAAAADAAAAAQAAACcAAAAnQAAAAgAAAAEAAAAngAAAJ8AAACdAAAACAAAAAQAAACgAAAAlgAAAAAAAAABAAAAoQAAAE51bEVycm9ykQAAAAQAAAAEAAAAogAAAHNyYy9saWJzdGQvc3lzL3dhc20vbW9kLnJzAACkWxIAGgAAADABAAANAAAAVGltZSBzeXN0ZW0gY2FsbCBpcyBub3QgaW1wbGVtZW50ZWQgYnkgV2ViQXNzZW1ibHkgaG9zdHNyYy9saWJzdGQvc3lzL3dhc20vY29uZHZhci5ycwAAAAdcEgAeAAAAFwAAAAkAAABjYW4ndCBibG9jayB3aXRoIHdlYiBhc3NlbWJseQAAAAdcEgAeAAAAGwAAAAkAAABzcmMvbGlic3RkL3N5cy93YXNtL211dGV4LnJzaFwSABwAAAAWAAAACQAAAGNhbm5vdCByZWN1cnNpdmVseSBhY3F1aXJlIG11dGV4pQAAAAQAAAAEAAAA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AAAAAMA/AACA/wMAAAAAAAcAAAAAAMgTAAAAACAAQcXWyQALMX5mAAgQAAAAAAAQAAAAAAAAncECAAAAADBAAAAAAAAgIQAAAAAAQAAAAAD//wAA//8AQf/WyQALBwEAAAACAAMAQaDXyQALBAQAAAUAQazXyQALAQYAQbXXyQALPwcAAAgJCgALDA0ODwAAEBESAAATFBUWAAAXGBkaGwAcAAAAHQAAAAAAAAAeHyAAAAAAACEAIgAjJCUAAAAAJgBB49jJAAsCJygAQfbYyQALASkAQarZyQALASoAQb3ZyQALBSssAAAtAEHg2ckACwMuLzAAQfjZyQALATEAQZvayQALAzIAMwBBuNrJAAsINDUAADU1NTYAQYfbyQALBiAAAAAAAQBBltvJAAtUwAdu8AAAAAAAhwAAAABgAAAAAAAAAPAAAADA/wEAAAAAAAIAAAAAAAD/fwAAAAAAAIADAAAAAAB4BgcAAACA7x8AAAAAAAAACAADAAAAAADAfwAeAEH128kACxqA00AAAACA+AcAAAMAAAAAAABYAQCAAMAfHwBBl9zJAAsF/1wAAEAAQabcyQALA/mlDQBBtdzJAAsHgDywAQAAMABBxtzJAAsD+KcBAEHV3MkACycovwAAAADgvA8AAAAAAAAAgP8G/gcAAAAA+HmAAH4OAAAAAAD8fwMAQYbdyQALE3+/AAD8///8bQAAAAAAAAB+tL8AQaLdyQALAaMAQa7dyQALFRgAAAAAAAAAHwAAAAAAAAB/AACABwBBy93JAAsBYABB1N3JAAs+oMMH+OcPAAAAPAAAHAAAAAAAAAD///////9/+P//////HyAAEAAA+P7/AAB////52wcAAAAAfwAAAAAA8AcAQZzeyQALEv///////////////////////wBBkN/JAAsO//////////////////8AQcDfyQALAvgDAEHi38kACwf+/////7+2AEHy38kACw3/BwAAAAAA+P//AAABAEGK4MkACxDAn589AAAAAAIAAAD///8HAEGk4MkAC8ULwP8BAAAAAAAA+A8gKGkSAEoAAAB4axIAAAIAAHhtEgA3AAAAAAECAwQFBgcICQgKCwwNDg8QERITFAIVFhcYGRobHB0eHyACAgICAgICAgICIQICAgICAgICAgICAgICIiMkJSYCJwIoAgICKSorAiwtLi8wAgIxAgICMgICAgICAgICMwICNAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNQI2AjcCAgICAgICAjgCOQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICOjs8AgICAj0CAj4/QEFCQ0RFRgICAkcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICSAICAgICAgICAgICSQICAgICOwIAAQICAgIDAgICAgQCBQYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEEBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAwBB8evJAAsEPgAAAQBBgOzJAAtuIAAAAAEAAAABAAAAAAAAAP8HAAAAgwAAAAAAgAAAAABaZXJva2luZEVtcHR5UGFyc2VJbnRFcnJvcgAAswAAAAQAAAAEAAAAtwAAAFVuZGVyZmxvd092ZXJmbG93SW52YWxpZERpZ2l0RXJyb3IAQZD2yQALAS0AQaz2yQALAS4AQdD2yQALAQIAQZD3yQALAQIAQfyXygALAQUAQYiYygALCQIAAAAAAAAAAQCGAQlwcm9kdWNlcnMCCGxhbmd1YWdlAQRSdXN0BDIwMTgMcHJvY2Vzc2VkLWJ5AwVydXN0YyUxLjM2LjAtbmlnaHRseSAoM2Y1MTUyZTIwIDIwMTktMDUtMDgpBndhbHJ1cwUwLjUuMAx3YXNtLWJpbmRnZW4SMC4yLjM5IChlMDc1ZDA0OTIp', 'base64');\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"blake2AsHex\", {\n enumerable: true,\n get: function get() {\n return _asHex.default;\n }\n});\nObject.defineProperty(exports, \"blake2AsU8a\", {\n enumerable: true,\n get: function get() {\n return _asU8a.default;\n }\n});\n\nvar _asHex = _interopRequireDefault(require(\"./asHex\"));\n\nvar _asU8a = _interopRequireDefault(require(\"./asU8a\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = blake2AsHex;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _asU8a = _interopRequireDefault(require(\"./asU8a\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name blake2AsHex\n * @summary Creates a blake2b hex from the input.\n * @description\n * From a `Uint8Array` input, create the blake2b and return the result as a hex string with the specified `bitLength`.\n * @example\n *
\n *\n * ```javascript\n * import { blake2AsHex } from '@polkadot/util-crypto';\n *\n * blake2AsHex('abc'); // => 0xba80a53f981c4d0d\n * ```\n */\nfunction blake2AsHex(data) {\n let bitLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 256;\n return (0, _util.u8aToHex)((0, _asU8a.default)(data, bitLength));\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = blake2AsU8a;\n\nvar _blakejs = _interopRequireDefault(require(\"blakejs\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _wasmCrypto = require(\"@polkadot/wasm-crypto\");\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name blake2AsU8a\n * @summary Creates a blake2b u8a from the input.\n * @description\n * From a `Uint8Array` input, create the blake2b and return the result as a u8a with the specified `bitLength`.\n * @example\n *
\n *\n * ```javascript\n * import { blake2AsU8a } from '@polkadot/util-crypto';\n *\n * blake2AsU8a('abc'); // => [0xba, 0x80, 0xa53, 0xf98, 0x1c, 0x4d, 0x0d]\n * ```\n */\nfunction blake2AsU8a(data) {\n let bitLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 256;\n let key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n const byteLength = Math.ceil(bitLength / 8);\n return (0, _wasmCrypto.isReady)() ? (0, _wasmCrypto.blake2b)((0, _util.u8aToU8a)(data), (0, _util.u8aToU8a)(key), byteLength) : _blakejs.default.blake2b(data, key, byteLength);\n}","var b2b = require('./blake2b')\nvar b2s = require('./blake2s')\n\nmodule.exports = {\n blake2b: b2b.blake2b,\n blake2bHex: b2b.blake2bHex,\n blake2bInit: b2b.blake2bInit,\n blake2bUpdate: b2b.blake2bUpdate,\n blake2bFinal: b2b.blake2bFinal,\n blake2s: b2s.blake2s,\n blake2sHex: b2s.blake2sHex,\n blake2sInit: b2s.blake2sInit,\n blake2sUpdate: b2s.blake2sUpdate,\n blake2sFinal: b2s.blake2sFinal\n}\n","// Blake2B in pure Javascript\n// Adapted from the reference implementation in RFC7693\n// Ported to Javascript by DC - https://github.com/dcposch\n\nvar util = require('./util')\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += v[b,b+1]\n// v should be a Uint32Array\nfunction ADD64AA (v, a, b) {\n var o0 = v[a] + v[b]\n var o1 = v[a + 1] + v[b + 1]\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += b\n// b0 is the low 32 bits of b, b1 represents the high 32 bits\nfunction ADD64AC (v, a, b0, b1) {\n var o0 = v[a] + b0\n if (b0 < 0) {\n o0 += 0x100000000\n }\n var o1 = v[a + 1] + b1\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// Little-endian byte access\nfunction B2B_GET32 (arr, i) {\n return (arr[i] ^\n (arr[i + 1] << 8) ^\n (arr[i + 2] << 16) ^\n (arr[i + 3] << 24))\n}\n\n// G Mixing function\n// The ROTRs are inlined for speed\nfunction B2B_G (a, b, c, d, ix, iy) {\n var x0 = m[ix]\n var x1 = m[ix + 1]\n var y0 = m[iy]\n var y1 = m[iy + 1]\n\n ADD64AA(v, a, b) // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\n ADD64AC(v, a, x0, x1) // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\n var xor0 = v[d] ^ v[a]\n var xor1 = v[d + 1] ^ v[a + 1]\n v[d] = xor1\n v[d + 1] = xor0\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor0 >>> 24) ^ (xor1 << 8)\n v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8)\n\n ADD64AA(v, a, b)\n ADD64AC(v, a, y0, y1)\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\n xor0 = v[d] ^ v[a]\n xor1 = v[d + 1] ^ v[a + 1]\n v[d] = (xor0 >>> 16) ^ (xor1 << 16)\n v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16)\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor1 >>> 31) ^ (xor0 << 1)\n v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1)\n}\n\n// Initialization Vector\nvar BLAKE2B_IV32 = new Uint32Array([\n 0xF3BCC908, 0x6A09E667, 0x84CAA73B, 0xBB67AE85,\n 0xFE94F82B, 0x3C6EF372, 0x5F1D36F1, 0xA54FF53A,\n 0xADE682D1, 0x510E527F, 0x2B3E6C1F, 0x9B05688C,\n 0xFB41BD6B, 0x1F83D9AB, 0x137E2179, 0x5BE0CD19\n])\n\nvar SIGMA8 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,\n 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,\n 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,\n 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3\n]\n\n// These are offsets into a uint64 buffer.\n// Multiply them all by 2 to make them offsets into a uint32 buffer,\n// because this is Javascript and we don't have uint64s\nvar SIGMA82 = new Uint8Array(SIGMA8.map(function (x) { return x * 2 }))\n\n// Compression function. 'last' flag indicates last block.\n// Note we're representing 16 uint64s as 32 uint32s\nvar v = new Uint32Array(32)\nvar m = new Uint32Array(32)\nfunction blake2bCompress (ctx, last) {\n var i = 0\n\n // init work variables\n for (i = 0; i < 16; i++) {\n v[i] = ctx.h[i]\n v[i + 16] = BLAKE2B_IV32[i]\n }\n\n // low 64 bits of offset\n v[24] = v[24] ^ ctx.t\n v[25] = v[25] ^ (ctx.t / 0x100000000)\n // high 64 bits not supported, offset may not be higher than 2**53-1\n\n // last block flag set ?\n if (last) {\n v[28] = ~v[28]\n v[29] = ~v[29]\n }\n\n // get little-endian words\n for (i = 0; i < 32; i++) {\n m[i] = B2B_GET32(ctx.b, 4 * i)\n }\n\n // twelve rounds of mixing\n // uncomment the DebugPrint calls to log the computation\n // and match the RFC sample documentation\n // util.debugPrint(' m[16]', m, 64)\n for (i = 0; i < 12; i++) {\n // util.debugPrint(' (i=' + (i < 10 ? ' ' : '') + i + ') v[16]', v, 64)\n B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1])\n B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3])\n B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5])\n B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7])\n B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9])\n B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11])\n B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13])\n B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15])\n }\n // util.debugPrint(' (i=12) v[16]', v, 64)\n\n for (i = 0; i < 16; i++) {\n ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16]\n }\n // util.debugPrint('h[8]', ctx.h, 64)\n}\n\n// Creates a BLAKE2b hashing context\n// Requires an output length between 1 and 64 bytes\n// Takes an optional Uint8Array key\nfunction blake2bInit (outlen, key) {\n if (outlen === 0 || outlen > 64) {\n throw new Error('Illegal output length, expected 0 < length <= 64')\n }\n if (key && key.length > 64) {\n throw new Error('Illegal key, expected Uint8Array with 0 < length <= 64')\n }\n\n // state, 'param block'\n var ctx = {\n b: new Uint8Array(128),\n h: new Uint32Array(16),\n t: 0, // input count\n c: 0, // pointer within buffer\n outlen: outlen // output length in bytes\n }\n\n // initialize hash state\n for (var i = 0; i < 16; i++) {\n ctx.h[i] = BLAKE2B_IV32[i]\n }\n var keylen = key ? key.length : 0\n ctx.h[0] ^= 0x01010000 ^ (keylen << 8) ^ outlen\n\n // key the hash, if applicable\n if (key) {\n blake2bUpdate(ctx, key)\n // at the end\n ctx.c = 128\n }\n\n return ctx\n}\n\n// Updates a BLAKE2b streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2bUpdate (ctx, input) {\n for (var i = 0; i < input.length; i++) {\n if (ctx.c === 128) { // buffer full ?\n ctx.t += ctx.c // add counters\n blake2bCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2b streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2bFinal (ctx) {\n ctx.t += ctx.c // mark last block offset\n\n while (ctx.c < 128) { // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2bCompress(ctx, true) // final block flag = 1\n\n // little endian convert and store\n var out = new Uint8Array(ctx.outlen)\n for (var i = 0; i < ctx.outlen; i++) {\n out[i] = ctx.h[i >> 2] >> (8 * (i & 3))\n }\n return out\n}\n\n// Computes the BLAKE2B hash of a string or byte array, and returns a Uint8Array\n//\n// Returns a n-byte Uint8Array\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer or Uint8Array\n// - key - optional key Uint8Array, up to 64 bytes\n// - outlen - optional output length in bytes, default 64\nfunction blake2b (input, key, outlen) {\n // preprocess inputs\n outlen = outlen || 64\n input = util.normalizeInput(input)\n\n // do the math\n var ctx = blake2bInit(outlen, key)\n blake2bUpdate(ctx, input)\n return blake2bFinal(ctx)\n}\n\n// Computes the BLAKE2B hash of a string or byte array\n//\n// Returns an n-byte hash in hex, all lowercase\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer, or Uint8Array\n// - key - optional key Uint8Array, up to 64 bytes\n// - outlen - optional output length in bytes, default 64\nfunction blake2bHex (input, key, outlen) {\n var output = blake2b(input, key, outlen)\n return util.toHex(output)\n}\n\nmodule.exports = {\n blake2b: blake2b,\n blake2bHex: blake2bHex,\n blake2bInit: blake2bInit,\n blake2bUpdate: blake2bUpdate,\n blake2bFinal: blake2bFinal\n}\n","var ERROR_MSG_INPUT = 'Input must be an string, Buffer or Uint8Array'\n\n// For convenience, let people hash a string, not just a Uint8Array\nfunction normalizeInput (input) {\n var ret\n if (input instanceof Uint8Array) {\n ret = input\n } else if (input instanceof Buffer) {\n ret = new Uint8Array(input)\n } else if (typeof (input) === 'string') {\n ret = new Uint8Array(Buffer.from(input, 'utf8'))\n } else {\n throw new Error(ERROR_MSG_INPUT)\n }\n return ret\n}\n\n// Converts a Uint8Array to a hexadecimal string\n// For example, toHex([255, 0, 255]) returns \"ff00ff\"\nfunction toHex (bytes) {\n return Array.prototype.map.call(bytes, function (n) {\n return (n < 16 ? '0' : '') + n.toString(16)\n }).join('')\n}\n\n// Converts any value in [0...2^32-1] to an 8-character hex string\nfunction uint32ToHex (val) {\n return (0x100000000 + val).toString(16).substring(1)\n}\n\n// For debugging: prints out hash state in the same format as the RFC\n// sample computation exactly, so that you can diff\nfunction debugPrint (label, arr, size) {\n var msg = '\\n' + label + ' = '\n for (var i = 0; i < arr.length; i += 2) {\n if (size === 32) {\n msg += uint32ToHex(arr[i]).toUpperCase()\n msg += ' '\n msg += uint32ToHex(arr[i + 1]).toUpperCase()\n } else if (size === 64) {\n msg += uint32ToHex(arr[i + 1]).toUpperCase()\n msg += uint32ToHex(arr[i]).toUpperCase()\n } else throw new Error('Invalid size ' + size)\n if (i % 6 === 4) {\n msg += '\\n' + new Array(label.length + 4).join(' ')\n } else if (i < arr.length - 2) {\n msg += ' '\n }\n }\n console.log(msg)\n}\n\n// For performance testing: generates N bytes of input, hashes M times\n// Measures and prints MB/second hash performance each time\nfunction testSpeed (hashFn, N, M) {\n var startMs = new Date().getTime()\n\n var input = new Uint8Array(N)\n for (var i = 0; i < N; i++) {\n input[i] = i % 256\n }\n var genMs = new Date().getTime()\n console.log('Generated random input in ' + (genMs - startMs) + 'ms')\n startMs = genMs\n\n for (i = 0; i < M; i++) {\n var hashHex = hashFn(input)\n var hashMs = new Date().getTime()\n var ms = hashMs - startMs\n startMs = hashMs\n console.log('Hashed in ' + ms + 'ms: ' + hashHex.substring(0, 20) + '...')\n console.log(Math.round(N / (1 << 20) / (ms / 1000) * 100) / 100 + ' MB PER SECOND')\n }\n}\n\nmodule.exports = {\n normalizeInput: normalizeInput,\n toHex: toHex,\n debugPrint: debugPrint,\n testSpeed: testSpeed\n}\n","// BLAKE2s hash function in pure Javascript\n// Adapted from the reference implementation in RFC7693\n// Ported to Javascript by DC - https://github.com/dcposch\n\nvar util = require('./util')\n\n// Little-endian byte access.\n// Expects a Uint8Array and an index\n// Returns the little-endian uint32 at v[i..i+3]\nfunction B2S_GET32 (v, i) {\n return v[i] ^ (v[i + 1] << 8) ^ (v[i + 2] << 16) ^ (v[i + 3] << 24)\n}\n\n// Mixing function G.\nfunction B2S_G (a, b, c, d, x, y) {\n v[a] = v[a] + v[b] + x\n v[d] = ROTR32(v[d] ^ v[a], 16)\n v[c] = v[c] + v[d]\n v[b] = ROTR32(v[b] ^ v[c], 12)\n v[a] = v[a] + v[b] + y\n v[d] = ROTR32(v[d] ^ v[a], 8)\n v[c] = v[c] + v[d]\n v[b] = ROTR32(v[b] ^ v[c], 7)\n}\n\n// 32-bit right rotation\n// x should be a uint32\n// y must be between 1 and 31, inclusive\nfunction ROTR32 (x, y) {\n return (x >>> y) ^ (x << (32 - y))\n}\n\n// Initialization Vector.\nvar BLAKE2S_IV = new Uint32Array([\n 0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A,\n 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19])\n\nvar SIGMA = new Uint8Array([\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,\n 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,\n 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,\n 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0])\n\n// Compression function. \"last\" flag indicates last block\nvar v = new Uint32Array(16)\nvar m = new Uint32Array(16)\nfunction blake2sCompress (ctx, last) {\n var i = 0\n for (i = 0; i < 8; i++) { // init work variables\n v[i] = ctx.h[i]\n v[i + 8] = BLAKE2S_IV[i]\n }\n\n v[12] ^= ctx.t // low 32 bits of offset\n v[13] ^= (ctx.t / 0x100000000) // high 32 bits\n if (last) { // last block flag set ?\n v[14] = ~v[14]\n }\n\n for (i = 0; i < 16; i++) { // get little-endian words\n m[i] = B2S_GET32(ctx.b, 4 * i)\n }\n\n // ten rounds of mixing\n // uncomment the DebugPrint calls to log the computation\n // and match the RFC sample documentation\n // util.debugPrint(' m[16]', m, 32)\n for (i = 0; i < 10; i++) {\n // util.debugPrint(' (i=' + i + ') v[16]', v, 32)\n B2S_G(0, 4, 8, 12, m[SIGMA[i * 16 + 0]], m[SIGMA[i * 16 + 1]])\n B2S_G(1, 5, 9, 13, m[SIGMA[i * 16 + 2]], m[SIGMA[i * 16 + 3]])\n B2S_G(2, 6, 10, 14, m[SIGMA[i * 16 + 4]], m[SIGMA[i * 16 + 5]])\n B2S_G(3, 7, 11, 15, m[SIGMA[i * 16 + 6]], m[SIGMA[i * 16 + 7]])\n B2S_G(0, 5, 10, 15, m[SIGMA[i * 16 + 8]], m[SIGMA[i * 16 + 9]])\n B2S_G(1, 6, 11, 12, m[SIGMA[i * 16 + 10]], m[SIGMA[i * 16 + 11]])\n B2S_G(2, 7, 8, 13, m[SIGMA[i * 16 + 12]], m[SIGMA[i * 16 + 13]])\n B2S_G(3, 4, 9, 14, m[SIGMA[i * 16 + 14]], m[SIGMA[i * 16 + 15]])\n }\n // util.debugPrint(' (i=10) v[16]', v, 32)\n\n for (i = 0; i < 8; i++) {\n ctx.h[i] ^= v[i] ^ v[i + 8]\n }\n // util.debugPrint('h[8]', ctx.h, 32)\n}\n\n// Creates a BLAKE2s hashing context\n// Requires an output length between 1 and 32 bytes\n// Takes an optional Uint8Array key\nfunction blake2sInit (outlen, key) {\n if (!(outlen > 0 && outlen <= 32)) {\n throw new Error('Incorrect output length, should be in [1, 32]')\n }\n var keylen = key ? key.length : 0\n if (key && !(keylen > 0 && keylen <= 32)) {\n throw new Error('Incorrect key length, should be in [1, 32]')\n }\n\n var ctx = {\n h: new Uint32Array(BLAKE2S_IV), // hash state\n b: new Uint32Array(64), // input block\n c: 0, // pointer within block\n t: 0, // input count\n outlen: outlen // output length in bytes\n }\n ctx.h[0] ^= 0x01010000 ^ (keylen << 8) ^ outlen\n\n if (keylen > 0) {\n blake2sUpdate(ctx, key)\n ctx.c = 64 // at the end\n }\n\n return ctx\n}\n\n// Updates a BLAKE2s streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2sUpdate (ctx, input) {\n for (var i = 0; i < input.length; i++) {\n if (ctx.c === 64) { // buffer full ?\n ctx.t += ctx.c // add counters\n blake2sCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2s streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2sFinal (ctx) {\n ctx.t += ctx.c // mark last block offset\n while (ctx.c < 64) { // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2sCompress(ctx, true) // final block flag = 1\n\n // little endian convert and store\n var out = new Uint8Array(ctx.outlen)\n for (var i = 0; i < ctx.outlen; i++) {\n out[i] = (ctx.h[i >> 2] >> (8 * (i & 3))) & 0xFF\n }\n return out\n}\n\n// Computes the BLAKE2S hash of a string or byte array, and returns a Uint8Array\n//\n// Returns a n-byte Uint8Array\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer, or Uint8Array\n// - key - optional key Uint8Array, up to 32 bytes\n// - outlen - optional output length in bytes, default 64\nfunction blake2s (input, key, outlen) {\n // preprocess inputs\n outlen = outlen || 32\n input = util.normalizeInput(input)\n\n // do the math\n var ctx = blake2sInit(outlen, key)\n blake2sUpdate(ctx, input)\n return blake2sFinal(ctx)\n}\n\n// Computes the BLAKE2S hash of a string or byte array\n//\n// Returns an n-byte hash in hex, all lowercase\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer, or Uint8Array\n// - key - optional key Uint8Array, up to 32 bytes\n// - outlen - optional output length in bytes, default 64\nfunction blake2sHex (input, key, outlen) {\n var output = blake2s(input, key, outlen)\n return util.toHex(output)\n}\n\nmodule.exports = {\n blake2s: blake2s,\n blake2sHex: blake2sHex,\n blake2sInit: blake2sInit,\n blake2sUpdate: blake2sUpdate,\n blake2sFinal: blake2sFinal\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"keccakAsHex\", {\n enumerable: true,\n get: function get() {\n return _asHex.default;\n }\n});\nObject.defineProperty(exports, \"keccakAsU8a\", {\n enumerable: true,\n get: function get() {\n return _asU8a.default;\n }\n});\n\nvar _asHex = _interopRequireDefault(require(\"./asHex\"));\n\nvar _asU8a = _interopRequireDefault(require(\"./asU8a\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = keccakAsHex;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _asU8a = _interopRequireDefault(require(\"./asU8a\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name keccakAsHex\n * @summary Creates a keccak hex string from the input.\n * @description\n * From either a `string` or a `Buffer` input, create the keccak and return the result as a `0x` prefixed hex string.\n * @example\n *
\n *\n * ```javascript\n * import { keccakAsHex } from '@polkadot/util-crypto';\n *\n * keccakAsHex('123'); // => 0x...\n * ```\n */\nfunction keccakAsHex(value) {\n return (0, _util.u8aToHex)((0, _asU8a.default)(value));\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = keccakAsU8a;\n\nvar _jsSha = _interopRequireDefault(require(\"js-sha3\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _wasmCrypto = require(\"@polkadot/wasm-crypto\");\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name keccakAsU8a\n * @summary Creates a keccak Uint8Array from the input.\n * @description\n * From either a `string` or a `Buffer` input, create the keccak and return the result as a `Uint8Array`.\n * @example\n *
\n *\n * ```javascript\n * import { keccakAsU8a } from '@polkadot/util-crypto';\n *\n * keccakAsU8a('123'); // => Uint8Array\n * ```\n */\nfunction keccakAsU8a(value) {\n return (0, _wasmCrypto.isReady)() ? (0, _wasmCrypto.keccak256)((0, _util.u8aToU8a)(value)) : new Uint8Array(_jsSha.default.keccak256.update(value).arrayBuffer());\n}","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"keyExtractPath\", {\n enumerable: true,\n get: function get() {\n return _extractPath.default;\n }\n});\nObject.defineProperty(exports, \"keyExtractSuri\", {\n enumerable: true,\n get: function get() {\n return _extractSuri.default;\n }\n});\nObject.defineProperty(exports, \"keyFromPath\", {\n enumerable: true,\n get: function get() {\n return _fromPath.default;\n }\n});\nObject.defineProperty(exports, \"keyHdkdEd25519\", {\n enumerable: true,\n get: function get() {\n return _hdkdEd.default;\n }\n});\nObject.defineProperty(exports, \"keyHdkdSr25519\", {\n enumerable: true,\n get: function get() {\n return _hdkdEd.default;\n }\n});\n\nvar _extractPath = _interopRequireDefault(require(\"./extractPath\"));\n\nvar _extractSuri = _interopRequireDefault(require(\"./extractSuri\"));\n\nvar _fromPath = _interopRequireDefault(require(\"./fromPath\"));\n\nvar _hdkdEd = _interopRequireDefault(require(\"./hdkdEd25519\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = keyExtractPath;\n\nvar _DeriveJunction = _interopRequireDefault(require(\"./DeriveJunction\"));\n\nvar _util = require(\"@polkadot/util\");\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst RE_JUNCTION = /\\/(\\/?)([^\\/]+)/g;\n\n/**\n * @description Extract derivation juntions from the supplied path\n */\nfunction keyExtractPath(derivePath) {\n const parts = derivePath.match(RE_JUNCTION);\n const path = [];\n let constructed = '';\n\n if (parts) {\n constructed = parts.join('');\n parts.forEach(value => {\n path.push(_DeriveJunction.default.from(value.substr(1)));\n });\n }\n\n (0, _util.assert)(constructed === derivePath, \"Re-constructed path \\\"\".concat(constructed, \"\\\" does not match input\"));\n return {\n parts,\n path\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _asU8a = _interopRequireDefault(require(\"../blake2/asU8a\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst RE_NUMBER = /^\\d+$/;\nconst JUNCTION_ID_LEN = 32;\nconst BN_OPTIONS = {\n bitLength: 256,\n isLe: true\n};\n\nclass DeriveJunction {\n constructor() {\n this._chainCode = new Uint8Array(32);\n this._isHard = false;\n }\n\n static from(value) {\n const _ref = value[0] === '/' ? [value.substr(1), true] : [value, false],\n _ref2 = (0, _slicedToArray2.default)(_ref, 2),\n code = _ref2[0],\n isHard = _ref2[1];\n\n const result = new DeriveJunction();\n result.soft(RE_NUMBER.test(code) ? parseInt(code, 10) : code);\n return isHard ? result.harden() : result;\n }\n\n get chainCode() {\n return this._chainCode;\n }\n\n get isHard() {\n return this._isHard;\n }\n\n get isSoft() {\n return !this._isHard;\n }\n\n hard(value) {\n return this.soft(value).harden();\n }\n\n harden() {\n this._isHard = true;\n return this;\n }\n\n soft(value) {\n if ((0, _util.isNumber)(value) || (0, _util.isBn)(value)) {\n return this.soft((0, _util.bnToHex)(value, BN_OPTIONS));\n } else if ((0, _util.isString)(value)) {\n return (0, _util.isHex)(value) ? this.soft((0, _util.hexToU8a)(value)) : this.soft((0, _util.compactAddLength)((0, _util.stringToU8a)(value)));\n }\n\n if (value.length > JUNCTION_ID_LEN) {\n return this.soft((0, _asU8a.default)(value));\n }\n\n this._chainCode.fill(0);\n\n this._chainCode.set(value, 0);\n\n return this;\n }\n\n soften() {\n this._isHard = false;\n return this;\n }\n\n}\n\nexports.default = DeriveJunction;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = keyExtract;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _extractPath = _interopRequireDefault(require(\"./extractPath\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst RE_CAPTURE = /^(\\w+( \\w+)*)((\\/\\/?[^\\/]+)*)(\\/\\/\\/(.*))?$/;\n/**\n * @description Extracts the phrase, path and password from a SURI format for specifying secret keys `//////` (the `///password` may be omitted, and `/` and `//` maybe repeated and mixed).\n */\n\nfunction keyExtract(suri) {\n const matches = suri.match(RE_CAPTURE);\n (0, _util.assert)(!(0, _util.isNull)(matches), \"Unable to match '\".concat(suri, \"' to a secret URI\"));\n\n const _ref = matches,\n _ref2 = (0, _slicedToArray2.default)(_ref, 7),\n phrase = _ref2[1],\n derivePath = _ref2[3],\n password = _ref2[6];\n\n const _keyExtractPath = (0, _extractPath.default)(derivePath),\n path = _keyExtractPath.path;\n\n return {\n password,\n path,\n phrase\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = keyFromPath;\n\nvar _hdkdEd = _interopRequireDefault(require(\"./hdkdEd25519\"));\n\nvar _hdkdSr = _interopRequireDefault(require(\"./hdkdSr25519\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction keyFromPath(pair, path, type) {\n const isEd25519 = type === 'ed25519';\n return path.reduce((pair, junction) => {\n return isEd25519 ? (0, _hdkdEd.default)(pair, junction) : (0, _hdkdSr.default)(pair, junction);\n }, pair);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = keyHdkdEd25519;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _deriveHard = _interopRequireDefault(require(\"../nacl/deriveHard\"));\n\nvar _fromSeed = _interopRequireDefault(require(\"../nacl/keypair/fromSeed\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction keyHdkdEd25519(keypair, _ref) {\n let chainCode = _ref.chainCode,\n isHard = _ref.isHard;\n (0, _util.assert)(isHard, 'A soft key was found in the path (and is unsupported)');\n return (0, _fromSeed.default)((0, _deriveHard.default)(keypair.secretKey.subarray(0, 32), chainCode));\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = deriveHard;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _asU8a = _interopRequireDefault(require(\"../blake2/asU8a\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst HDKD = (0, _util.compactAddLength)((0, _util.stringToU8a)('Ed25519HDKD'));\n\nfunction deriveHard(seed, chainCode) {\n return (0, _asU8a.default)((0, _util.u8aConcat)(HDKD, seed, chainCode));\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = naclKeypairFromSeed;\n\nvar _tweetnacl = _interopRequireDefault(require(\"tweetnacl\"));\n\nvar _wasmCrypto = require(\"@polkadot/wasm-crypto\");\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name naclKeypairFromSeed\n * @summary Creates a new public/secret keypair from a seed.\n * @description\n * Returns a object containing a `publicKey` & `secretKey` generated from the supplied seed.\n * @example\n *
\n *\n * ```javascript\n * import { naclKeypairFromSeed } from '@polkadot/util-crypto';\n *\n * naclKeypairFromSeed(...); // => { secretKey: [...], publicKey: [...] }\n * ```\n */\nfunction naclKeypairFromSeed(seed) {\n if ((0, _wasmCrypto.isReady)()) {\n const full = (0, _wasmCrypto.ed25519KeypairFromSeed)(seed);\n return {\n publicKey: full.slice(32),\n secretKey: full.slice(0, 64)\n };\n }\n\n return _tweetnacl.default.sign.keyPair.fromSeed(seed);\n}","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n mlen = -1;\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = keyHdkdSr25519;\n\nvar _deriveHard = _interopRequireDefault(require(\"../schnorrkel/deriveHard\"));\n\nvar _deriveSoft = _interopRequireDefault(require(\"../schnorrkel/deriveSoft\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction keyHdkdSr25519(keypair, _ref) {\n let chainCode = _ref.chainCode,\n isSoft = _ref.isSoft;\n return isSoft ? (0, _deriveSoft.default)(keypair, chainCode) : (0, _deriveHard.default)(keypair, chainCode);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = deriveHard;\n\nrequire(\"../polyfill\");\n\nvar _wasmCrypto = require(\"@polkadot/wasm-crypto\");\n\nvar _fromU8a = _interopRequireDefault(require(\"./keypair/fromU8a\"));\n\nvar _toU8a = _interopRequireDefault(require(\"./keypair/toU8a\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction deriveHard(keypair, chainCode) {\n return (0, _fromU8a.default)((0, _wasmCrypto.sr25519DeriveKeypairHard)((0, _toU8a.default)(keypair), chainCode));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = schnorrkelKeypairFromU8a;\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst SEC_LEN = 64;\nconst PUB_LEN = 32;\n\nfunction schnorrkelKeypairFromU8a(full) {\n return {\n publicKey: full.slice(SEC_LEN, SEC_LEN + PUB_LEN),\n secretKey: full.slice(0, SEC_LEN)\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = schnorrkelKeypairToU8a;\n\nvar _util = require(\"@polkadot/util\");\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction schnorrkelKeypairToU8a(_ref) {\n let publicKey = _ref.publicKey,\n secretKey = _ref.secretKey;\n return (0, _util.u8aConcat)(secretKey, publicKey).slice();\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = deriveSoft;\n\nrequire(\"../polyfill\");\n\nvar _wasmCrypto = require(\"@polkadot/wasm-crypto\");\n\nvar _fromU8a = _interopRequireDefault(require(\"./keypair/fromU8a\"));\n\nvar _toU8a = _interopRequireDefault(require(\"./keypair/toU8a\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction deriveSoft(keypair, chainCode) {\n return (0, _fromU8a.default)((0, _wasmCrypto.sr25519DeriveKeypairSoft)((0, _toU8a.default)(keypair), chainCode));\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"mnemonicGenerate\", {\n enumerable: true,\n get: function get() {\n return _generate.default;\n }\n});\nObject.defineProperty(exports, \"mnemonicToEntropy\", {\n enumerable: true,\n get: function get() {\n return _toEntropy.default;\n }\n});\nObject.defineProperty(exports, \"mnemonicToMiniSecret\", {\n enumerable: true,\n get: function get() {\n return _toMiniSecret.default;\n }\n});\nObject.defineProperty(exports, \"mnemonicToSeed\", {\n enumerable: true,\n get: function get() {\n return _toSeed.default;\n }\n});\nObject.defineProperty(exports, \"mnemonicValidate\", {\n enumerable: true,\n get: function get() {\n return _validate.default;\n }\n});\n\nrequire(\"../polyfill\");\n\nvar _generate = _interopRequireDefault(require(\"./generate\"));\n\nvar _toEntropy = _interopRequireDefault(require(\"./toEntropy\"));\n\nvar _toMiniSecret = _interopRequireDefault(require(\"./toMiniSecret\"));\n\nvar _toSeed = _interopRequireDefault(require(\"./toSeed\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate\"));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = mnemonicGenerate;\n\nrequire(\"../polyfill\");\n\nvar _bip = require(\"bip39\");\n\nvar _wasmCrypto = require(\"@polkadot/wasm-crypto\");\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// mapping of words to the actual strength (as expected)\nconst STRENGTH_MAP = {\n 12: 16 * 8,\n 15: 20 * 8,\n 18: 24 * 8,\n 21: 28 * 8,\n 24: 32 * 8\n};\n/**\n * @name mnemonicGenerate\n * @summary Creates a valid mnemonic string using using [BIP39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki).\n * @example\n *
\n *\n * ```javascript\n * import { mnemonicGenerate } from '@polkadot/util-crypto';\n *\n * const mnemonic = mnemonicGenerate(); // => string\n * ```\n */\n\nfunction mnemonicGenerate() {\n let numWords = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 12;\n return (0, _wasmCrypto.isReady)() ? (0, _wasmCrypto.bip39Generate)(numWords) : (0, _bip.generateMnemonic)(STRENGTH_MAP[numWords]);\n}","var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar _pbkdf2 = require('pbkdf2')\nvar pbkdf2 = _pbkdf2.pbkdf2Sync\nvar pbkdf2Async = _pbkdf2.pbkdf2\nvar randomBytes = require('crypto').randomBytes\n\n// use unorm until String.prototype.normalize gets better browser support\nvar unorm = require('unorm')\n\nvar CHINESE_SIMPLIFIED_WORDLIST = require('./wordlists/chinese_simplified.json')\nvar CHINESE_TRADITIONAL_WORDLIST = require('./wordlists/chinese_traditional.json')\nvar ENGLISH_WORDLIST = require('./wordlists/english.json')\nvar FRENCH_WORDLIST = require('./wordlists/french.json')\nvar ITALIAN_WORDLIST = require('./wordlists/italian.json')\nvar JAPANESE_WORDLIST = require('./wordlists/japanese.json')\nvar KOREAN_WORDLIST = require('./wordlists/korean.json')\nvar SPANISH_WORDLIST = require('./wordlists/spanish.json')\nvar DEFAULT_WORDLIST = ENGLISH_WORDLIST\n\nvar INVALID_MNEMONIC = 'Invalid mnemonic'\nvar INVALID_ENTROPY = 'Invalid entropy'\nvar INVALID_CHECKSUM = 'Invalid mnemonic checksum'\n\nfunction lpad (str, padString, length) {\n while (str.length < length) str = padString + str\n return str\n}\n\nfunction binaryToByte (bin) {\n return parseInt(bin, 2)\n}\n\nfunction bytesToBinary (bytes) {\n return bytes.map(function (x) {\n return lpad(x.toString(2), '0', 8)\n }).join('')\n}\n\nfunction deriveChecksumBits (entropyBuffer) {\n var ENT = entropyBuffer.length * 8\n var CS = ENT / 32\n var hash = createHash('sha256').update(entropyBuffer).digest()\n\n return bytesToBinary([].slice.call(hash)).slice(0, CS)\n}\n\nfunction salt (password) {\n return 'mnemonic' + (password || '')\n}\n\nfunction mnemonicToSeed (mnemonic, password) {\n var mnemonicBuffer = Buffer.from(unorm.nfkd(mnemonic), 'utf8')\n var saltBuffer = Buffer.from(salt(unorm.nfkd(password)), 'utf8')\n\n return pbkdf2(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512')\n}\n\nfunction mnemonicToSeedHex (mnemonic, password) {\n return mnemonicToSeed(mnemonic, password).toString('hex')\n}\n\nfunction mnemonicToSeedAsync (mnemonic, password) {\n return new Promise(function (resolve, reject) {\n try {\n var mnemonicBuffer = Buffer.from(unorm.nfkd(mnemonic), 'utf8')\n var saltBuffer = Buffer.from(salt(unorm.nfkd(password)), 'utf8')\n } catch (error) {\n return reject(error)\n }\n\n pbkdf2Async(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512', function (err, data) {\n if (err) return reject(err)\n else return resolve(data)\n })\n })\n}\n\nfunction mnemonicToSeedHexAsync (mnemonic, password) {\n return mnemonicToSeedAsync(mnemonic, password)\n .then(function (buf) { return buf.toString('hex') })\n}\n\nfunction mnemonicToEntropy (mnemonic, wordlist) {\n wordlist = wordlist || DEFAULT_WORDLIST\n\n var words = unorm.nfkd(mnemonic).split(' ')\n if (words.length % 3 !== 0) throw new Error(INVALID_MNEMONIC)\n\n // convert word indices to 11 bit binary strings\n var bits = words.map(function (word) {\n var index = wordlist.indexOf(word)\n if (index === -1) throw new Error(INVALID_MNEMONIC)\n\n return lpad(index.toString(2), '0', 11)\n }).join('')\n\n // split the binary string into ENT/CS\n var dividerIndex = Math.floor(bits.length / 33) * 32\n var entropyBits = bits.slice(0, dividerIndex)\n var checksumBits = bits.slice(dividerIndex)\n\n // calculate the checksum and compare\n var entropyBytes = entropyBits.match(/(.{1,8})/g).map(binaryToByte)\n if (entropyBytes.length < 16) throw new Error(INVALID_ENTROPY)\n if (entropyBytes.length > 32) throw new Error(INVALID_ENTROPY)\n if (entropyBytes.length % 4 !== 0) throw new Error(INVALID_ENTROPY)\n\n var entropy = Buffer.from(entropyBytes)\n var newChecksum = deriveChecksumBits(entropy)\n if (newChecksum !== checksumBits) throw new Error(INVALID_CHECKSUM)\n\n return entropy.toString('hex')\n}\n\nfunction entropyToMnemonic (entropy, wordlist) {\n if (!Buffer.isBuffer(entropy)) entropy = Buffer.from(entropy, 'hex')\n wordlist = wordlist || DEFAULT_WORDLIST\n\n // 128 <= ENT <= 256\n if (entropy.length < 16) throw new TypeError(INVALID_ENTROPY)\n if (entropy.length > 32) throw new TypeError(INVALID_ENTROPY)\n if (entropy.length % 4 !== 0) throw new TypeError(INVALID_ENTROPY)\n\n var entropyBits = bytesToBinary([].slice.call(entropy))\n var checksumBits = deriveChecksumBits(entropy)\n\n var bits = entropyBits + checksumBits\n var chunks = bits.match(/(.{1,11})/g)\n var words = chunks.map(function (binary) {\n var index = binaryToByte(binary)\n return wordlist[index]\n })\n\n return wordlist === JAPANESE_WORDLIST ? words.join('\\u3000') : words.join(' ')\n}\n\nfunction generateMnemonic (strength, rng, wordlist) {\n strength = strength || 128\n if (strength % 32 !== 0) throw new TypeError(INVALID_ENTROPY)\n rng = rng || randomBytes\n\n return entropyToMnemonic(rng(strength / 8), wordlist)\n}\n\nfunction validateMnemonic (mnemonic, wordlist) {\n try {\n mnemonicToEntropy(mnemonic, wordlist)\n } catch (e) {\n return false\n }\n\n return true\n}\n\nmodule.exports = {\n mnemonicToSeed: mnemonicToSeed,\n mnemonicToSeedAsync: mnemonicToSeedAsync,\n mnemonicToSeedHex: mnemonicToSeedHex,\n mnemonicToSeedHexAsync: mnemonicToSeedHexAsync,\n mnemonicToEntropy: mnemonicToEntropy,\n entropyToMnemonic: entropyToMnemonic,\n generateMnemonic: generateMnemonic,\n validateMnemonic: validateMnemonic,\n wordlists: {\n EN: ENGLISH_WORDLIST,\n JA: JAPANESE_WORDLIST,\n\n chinese_simplified: CHINESE_SIMPLIFIED_WORDLIST,\n chinese_traditional: CHINESE_TRADITIONAL_WORDLIST,\n english: ENGLISH_WORDLIST,\n french: FRENCH_WORDLIST,\n italian: ITALIAN_WORDLIST,\n japanese: JAPANESE_WORDLIST,\n korean: KOREAN_WORDLIST,\n spanish: SPANISH_WORDLIST\n }\n}\n","(function (root) {\n \"use strict\";\n\n/***** unorm.js *****/\n\n/*\n * UnicodeNormalizer 1.0.0\n * Copyright (c) 2008 Matsuza\n * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.\n * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $\n * $Rev: 13309 $\n */\n\n var DEFAULT_FEATURE = [null, 0, {}];\n var CACHE_THRESHOLD = 10;\n var SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21, TCount = 28;\n var NCount = VCount * TCount; // 588\n var SCount = LCount * NCount; // 11172\n\n var UChar = function(cp, feature){\n this.codepoint = cp;\n this.feature = feature;\n };\n\n // Strategies\n var cache = {};\n var cacheCounter = [];\n for (var i = 0; i <= 0xFF; ++i){\n cacheCounter[i] = 0;\n }\n\n function fromCache(next, cp, needFeature){\n var ret = cache[cp];\n if(!ret){\n ret = next(cp, needFeature);\n if(!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD){\n cache[cp] = ret;\n }\n }\n return ret;\n }\n\n function fromData(next, cp, needFeature){\n var hash = cp & 0xFF00;\n var dunit = UChar.udata[hash] || {};\n var f = dunit[cp];\n return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE);\n }\n function fromCpOnly(next, cp, needFeature){\n return !!needFeature ? next(cp, needFeature) : new UChar(cp, null);\n }\n function fromRuleBasedJamo(next, cp, needFeature){\n var j;\n if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){\n return next(cp, needFeature);\n }\n if(LBase <= cp && cp < LBase + LCount){\n var c = {};\n var base = (cp - LBase) * VCount;\n for (j = 0; j < VCount; ++j){\n c[VBase + j] = SBase + TCount * (j + base);\n }\n return new UChar(cp, [,,c]);\n }\n\n var SIndex = cp - SBase;\n var TIndex = SIndex % TCount;\n var feature = [];\n if(TIndex !== 0){\n feature[0] = [SBase + SIndex - TIndex, TBase + TIndex];\n } else {\n feature[0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)];\n feature[2] = {};\n for (j = 1; j < TCount; ++j){\n feature[2][TBase + j] = cp + j;\n }\n }\n return new UChar(cp, feature);\n }\n function fromCpFilter(next, cp, needFeature){\n return cp < 60 || 13311 < cp && cp < 42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature);\n }\n\n var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData];\n\n UChar.fromCharCode = strategies.reduceRight(function (next, strategy) {\n return function (cp, needFeature) {\n return strategy(next, cp, needFeature);\n };\n }, null);\n\n UChar.isHighSurrogate = function(cp){\n return cp >= 0xD800 && cp <= 0xDBFF;\n };\n UChar.isLowSurrogate = function(cp){\n return cp >= 0xDC00 && cp <= 0xDFFF;\n };\n\n UChar.prototype.prepFeature = function(){\n if(!this.feature){\n this.feature = UChar.fromCharCode(this.codepoint, true).feature;\n }\n };\n\n UChar.prototype.toString = function(){\n if(this.codepoint < 0x10000){\n return String.fromCharCode(this.codepoint);\n } else {\n var x = this.codepoint - 0x10000;\n return String.fromCharCode(Math.floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00);\n }\n };\n\n UChar.prototype.getDecomp = function(){\n this.prepFeature();\n return this.feature[0] || null;\n };\n\n UChar.prototype.isCompatibility = function(){\n this.prepFeature();\n return !!this.feature[1] && (this.feature[1] & (1 << 8));\n };\n UChar.prototype.isExclude = function(){\n this.prepFeature();\n return !!this.feature[1] && (this.feature[1] & (1 << 9));\n };\n UChar.prototype.getCanonicalClass = function(){\n this.prepFeature();\n return !!this.feature[1] ? (this.feature[1] & 0xff) : 0;\n };\n UChar.prototype.getComposite = function(following){\n this.prepFeature();\n if(!this.feature[2]){\n return null;\n }\n var cp = this.feature[2][following.codepoint];\n return cp ? UChar.fromCharCode(cp) : null;\n };\n\n var UCharIterator = function(str){\n this.str = str;\n this.cursor = 0;\n };\n UCharIterator.prototype.next = function(){\n if(!!this.str && this.cursor < this.str.length){\n var cp = this.str.charCodeAt(this.cursor++);\n var d;\n if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){\n cp = (cp - 0xD800) * 0x400 + (d -0xDC00) + 0x10000;\n ++this.cursor;\n }\n return UChar.fromCharCode(cp);\n } else {\n this.str = null;\n return null;\n }\n };\n\n var RecursDecompIterator = function(it, cano){\n this.it = it;\n this.canonical = cano;\n this.resBuf = [];\n };\n\n RecursDecompIterator.prototype.next = function(){\n function recursiveDecomp(cano, uchar){\n var decomp = uchar.getDecomp();\n if(!!decomp && !(cano && uchar.isCompatibility())){\n var ret = [];\n for(var i = 0; i < decomp.length; ++i){\n var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i]));\n ret = ret.concat(a);\n }\n return ret;\n } else {\n return [uchar];\n }\n }\n if(this.resBuf.length === 0){\n var uchar = this.it.next();\n if(!uchar){\n return null;\n }\n this.resBuf = recursiveDecomp(this.canonical, uchar);\n }\n return this.resBuf.shift();\n };\n\n var DecompIterator = function(it){\n this.it = it;\n this.resBuf = [];\n };\n\n DecompIterator.prototype.next = function(){\n var cc;\n if(this.resBuf.length === 0){\n do{\n var uchar = this.it.next();\n if(!uchar){\n break;\n }\n cc = uchar.getCanonicalClass();\n var inspt = this.resBuf.length;\n if(cc !== 0){\n for(; inspt > 0; --inspt){\n var uchar2 = this.resBuf[inspt - 1];\n var cc2 = uchar2.getCanonicalClass();\n if(cc2 <= cc){\n break;\n }\n }\n }\n this.resBuf.splice(inspt, 0, uchar);\n } while(cc !== 0);\n }\n return this.resBuf.shift();\n };\n\n var CompIterator = function(it){\n this.it = it;\n this.procBuf = [];\n this.resBuf = [];\n this.lastClass = null;\n };\n\n CompIterator.prototype.next = function(){\n while(this.resBuf.length === 0){\n var uchar = this.it.next();\n if(!uchar){\n this.resBuf = this.procBuf;\n this.procBuf = [];\n break;\n }\n if(this.procBuf.length === 0){\n this.lastClass = uchar.getCanonicalClass();\n this.procBuf.push(uchar);\n } else {\n var starter = this.procBuf[0];\n var composite = starter.getComposite(uchar);\n var cc = uchar.getCanonicalClass();\n if(!!composite && (this.lastClass < cc || this.lastClass === 0)){\n this.procBuf[0] = composite;\n } else {\n if(cc === 0){\n this.resBuf = this.procBuf;\n this.procBuf = [];\n }\n this.lastClass = cc;\n this.procBuf.push(uchar);\n }\n }\n }\n return this.resBuf.shift();\n };\n\n var createIterator = function(mode, str){\n switch(mode){\n case \"NFD\":\n return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true));\n case \"NFKD\":\n return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false));\n case \"NFC\":\n return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)));\n case \"NFKC\":\n return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)));\n }\n throw mode + \" is invalid\";\n };\n var normalize = function(mode, str){\n var it = createIterator(mode, str);\n var ret = \"\";\n var uchar;\n while(!!(uchar = it.next())){\n ret += uchar.toString();\n }\n return ret;\n };\n\n /* API functions */\n function nfd(str){\n return normalize(\"NFD\", str);\n }\n\n function nfkd(str){\n return normalize(\"NFKD\", str);\n }\n\n function nfc(str){\n return normalize(\"NFC\", str);\n }\n\n function nfkc(str){\n return normalize(\"NFKC\", str);\n }\n\n/* Unicode data */\nUChar.udata={\n0:{60:[,,{824:8814}],61:[,,{824:8800}],62:[,,{824:8815}],65:[,,{768:192,769:193,770:194,771:195,772:256,774:258,775:550,776:196,777:7842,778:197,780:461,783:512,785:514,803:7840,805:7680,808:260}],66:[,,{775:7682,803:7684,817:7686}],67:[,,{769:262,770:264,775:266,780:268,807:199}],68:[,,{775:7690,780:270,803:7692,807:7696,813:7698,817:7694}],69:[,,{768:200,769:201,770:202,771:7868,772:274,774:276,775:278,776:203,777:7866,780:282,783:516,785:518,803:7864,807:552,808:280,813:7704,816:7706}],70:[,,{775:7710}],71:[,,{769:500,770:284,772:7712,774:286,775:288,780:486,807:290}],72:[,,{770:292,775:7714,776:7718,780:542,803:7716,807:7720,814:7722}],73:[,,{768:204,769:205,770:206,771:296,772:298,774:300,775:304,776:207,777:7880,780:463,783:520,785:522,803:7882,808:302,816:7724}],74:[,,{770:308}],75:[,,{769:7728,780:488,803:7730,807:310,817:7732}],76:[,,{769:313,780:317,803:7734,807:315,813:7740,817:7738}],77:[,,{769:7742,775:7744,803:7746}],78:[,,{768:504,769:323,771:209,775:7748,780:327,803:7750,807:325,813:7754,817:7752}],79:[,,{768:210,769:211,770:212,771:213,772:332,774:334,775:558,776:214,777:7886,779:336,780:465,783:524,785:526,795:416,803:7884,808:490}],80:[,,{769:7764,775:7766}],82:[,,{769:340,775:7768,780:344,783:528,785:530,803:7770,807:342,817:7774}],83:[,,{769:346,770:348,775:7776,780:352,803:7778,806:536,807:350}],84:[,,{775:7786,780:356,803:7788,806:538,807:354,813:7792,817:7790}],85:[,,{768:217,769:218,770:219,771:360,772:362,774:364,776:220,777:7910,778:366,779:368,780:467,783:532,785:534,795:431,803:7908,804:7794,808:370,813:7798,816:7796}],86:[,,{771:7804,803:7806}],87:[,,{768:7808,769:7810,770:372,775:7814,776:7812,803:7816}],88:[,,{775:7818,776:7820}],89:[,,{768:7922,769:221,770:374,771:7928,772:562,775:7822,776:376,777:7926,803:7924}],90:[,,{769:377,770:7824,775:379,780:381,803:7826,817:7828}],97:[,,{768:224,769:225,770:226,771:227,772:257,774:259,775:551,776:228,777:7843,778:229,780:462,783:513,785:515,803:7841,805:7681,808:261}],98:[,,{775:7683,803:7685,817:7687}],99:[,,{769:263,770:265,775:267,780:269,807:231}],100:[,,{775:7691,780:271,803:7693,807:7697,813:7699,817:7695}],101:[,,{768:232,769:233,770:234,771:7869,772:275,774:277,775:279,776:235,777:7867,780:283,783:517,785:519,803:7865,807:553,808:281,813:7705,816:7707}],102:[,,{775:7711}],103:[,,{769:501,770:285,772:7713,774:287,775:289,780:487,807:291}],104:[,,{770:293,775:7715,776:7719,780:543,803:7717,807:7721,814:7723,817:7830}],105:[,,{768:236,769:237,770:238,771:297,772:299,774:301,776:239,777:7881,780:464,783:521,785:523,803:7883,808:303,816:7725}],106:[,,{770:309,780:496}],107:[,,{769:7729,780:489,803:7731,807:311,817:7733}],108:[,,{769:314,780:318,803:7735,807:316,813:7741,817:7739}],109:[,,{769:7743,775:7745,803:7747}],110:[,,{768:505,769:324,771:241,775:7749,780:328,803:7751,807:326,813:7755,817:7753}],111:[,,{768:242,769:243,770:244,771:245,772:333,774:335,775:559,776:246,777:7887,779:337,780:466,783:525,785:527,795:417,803:7885,808:491}],112:[,,{769:7765,775:7767}],114:[,,{769:341,775:7769,780:345,783:529,785:531,803:7771,807:343,817:7775}],115:[,,{769:347,770:349,775:7777,780:353,803:7779,806:537,807:351}],116:[,,{775:7787,776:7831,780:357,803:7789,806:539,807:355,813:7793,817:7791}],117:[,,{768:249,769:250,770:251,771:361,772:363,774:365,776:252,777:7911,778:367,779:369,780:468,783:533,785:535,795:432,803:7909,804:7795,808:371,813:7799,816:7797}],118:[,,{771:7805,803:7807}],119:[,,{768:7809,769:7811,770:373,775:7815,776:7813,778:7832,803:7817}],120:[,,{775:7819,776:7821}],121:[,,{768:7923,769:253,770:375,771:7929,772:563,775:7823,776:255,777:7927,778:7833,803:7925}],122:[,,{769:378,770:7825,775:380,780:382,803:7827,817:7829}],160:[[32],256],168:[[32,776],256,{768:8173,769:901,834:8129}],170:[[97],256],175:[[32,772],256],178:[[50],256],179:[[51],256],180:[[32,769],256],181:[[956],256],184:[[32,807],256],185:[[49],256],186:[[111],256],188:[[49,8260,52],256],189:[[49,8260,50],256],190:[[51,8260,52],256],192:[[65,768]],193:[[65,769]],194:[[65,770],,{768:7846,769:7844,771:7850,777:7848}],195:[[65,771]],196:[[65,776],,{772:478}],197:[[65,778],,{769:506}],198:[,,{769:508,772:482}],199:[[67,807],,{769:7688}],200:[[69,768]],201:[[69,769]],202:[[69,770],,{768:7872,769:7870,771:7876,777:7874}],203:[[69,776]],204:[[73,768]],205:[[73,769]],206:[[73,770]],207:[[73,776],,{769:7726}],209:[[78,771]],210:[[79,768]],211:[[79,769]],212:[[79,770],,{768:7890,769:7888,771:7894,777:7892}],213:[[79,771],,{769:7756,772:556,776:7758}],214:[[79,776],,{772:554}],216:[,,{769:510}],217:[[85,768]],218:[[85,769]],219:[[85,770]],220:[[85,776],,{768:475,769:471,772:469,780:473}],221:[[89,769]],224:[[97,768]],225:[[97,769]],226:[[97,770],,{768:7847,769:7845,771:7851,777:7849}],227:[[97,771]],228:[[97,776],,{772:479}],229:[[97,778],,{769:507}],230:[,,{769:509,772:483}],231:[[99,807],,{769:7689}],232:[[101,768]],233:[[101,769]],234:[[101,770],,{768:7873,769:7871,771:7877,777:7875}],235:[[101,776]],236:[[105,768]],237:[[105,769]],238:[[105,770]],239:[[105,776],,{769:7727}],241:[[110,771]],242:[[111,768]],243:[[111,769]],244:[[111,770],,{768:7891,769:7889,771:7895,777:7893}],245:[[111,771],,{769:7757,772:557,776:7759}],246:[[111,776],,{772:555}],248:[,,{769:511}],249:[[117,768]],250:[[117,769]],251:[[117,770]],252:[[117,776],,{768:476,769:472,772:470,780:474}],253:[[121,769]],255:[[121,776]]},\n256:{256:[[65,772]],257:[[97,772]],258:[[65,774],,{768:7856,769:7854,771:7860,777:7858}],259:[[97,774],,{768:7857,769:7855,771:7861,777:7859}],260:[[65,808]],261:[[97,808]],262:[[67,769]],263:[[99,769]],264:[[67,770]],265:[[99,770]],266:[[67,775]],267:[[99,775]],268:[[67,780]],269:[[99,780]],270:[[68,780]],271:[[100,780]],274:[[69,772],,{768:7700,769:7702}],275:[[101,772],,{768:7701,769:7703}],276:[[69,774]],277:[[101,774]],278:[[69,775]],279:[[101,775]],280:[[69,808]],281:[[101,808]],282:[[69,780]],283:[[101,780]],284:[[71,770]],285:[[103,770]],286:[[71,774]],287:[[103,774]],288:[[71,775]],289:[[103,775]],290:[[71,807]],291:[[103,807]],292:[[72,770]],293:[[104,770]],296:[[73,771]],297:[[105,771]],298:[[73,772]],299:[[105,772]],300:[[73,774]],301:[[105,774]],302:[[73,808]],303:[[105,808]],304:[[73,775]],306:[[73,74],256],307:[[105,106],256],308:[[74,770]],309:[[106,770]],310:[[75,807]],311:[[107,807]],313:[[76,769]],314:[[108,769]],315:[[76,807]],316:[[108,807]],317:[[76,780]],318:[[108,780]],319:[[76,183],256],320:[[108,183],256],323:[[78,769]],324:[[110,769]],325:[[78,807]],326:[[110,807]],327:[[78,780]],328:[[110,780]],329:[[700,110],256],332:[[79,772],,{768:7760,769:7762}],333:[[111,772],,{768:7761,769:7763}],334:[[79,774]],335:[[111,774]],336:[[79,779]],337:[[111,779]],340:[[82,769]],341:[[114,769]],342:[[82,807]],343:[[114,807]],344:[[82,780]],345:[[114,780]],346:[[83,769],,{775:7780}],347:[[115,769],,{775:7781}],348:[[83,770]],349:[[115,770]],350:[[83,807]],351:[[115,807]],352:[[83,780],,{775:7782}],353:[[115,780],,{775:7783}],354:[[84,807]],355:[[116,807]],356:[[84,780]],357:[[116,780]],360:[[85,771],,{769:7800}],361:[[117,771],,{769:7801}],362:[[85,772],,{776:7802}],363:[[117,772],,{776:7803}],364:[[85,774]],365:[[117,774]],366:[[85,778]],367:[[117,778]],368:[[85,779]],369:[[117,779]],370:[[85,808]],371:[[117,808]],372:[[87,770]],373:[[119,770]],374:[[89,770]],375:[[121,770]],376:[[89,776]],377:[[90,769]],378:[[122,769]],379:[[90,775]],380:[[122,775]],381:[[90,780]],382:[[122,780]],383:[[115],256,{775:7835}],416:[[79,795],,{768:7900,769:7898,771:7904,777:7902,803:7906}],417:[[111,795],,{768:7901,769:7899,771:7905,777:7903,803:7907}],431:[[85,795],,{768:7914,769:7912,771:7918,777:7916,803:7920}],432:[[117,795],,{768:7915,769:7913,771:7919,777:7917,803:7921}],439:[,,{780:494}],452:[[68,381],256],453:[[68,382],256],454:[[100,382],256],455:[[76,74],256],456:[[76,106],256],457:[[108,106],256],458:[[78,74],256],459:[[78,106],256],460:[[110,106],256],461:[[65,780]],462:[[97,780]],463:[[73,780]],464:[[105,780]],465:[[79,780]],466:[[111,780]],467:[[85,780]],468:[[117,780]],469:[[220,772]],470:[[252,772]],471:[[220,769]],472:[[252,769]],473:[[220,780]],474:[[252,780]],475:[[220,768]],476:[[252,768]],478:[[196,772]],479:[[228,772]],480:[[550,772]],481:[[551,772]],482:[[198,772]],483:[[230,772]],486:[[71,780]],487:[[103,780]],488:[[75,780]],489:[[107,780]],490:[[79,808],,{772:492}],491:[[111,808],,{772:493}],492:[[490,772]],493:[[491,772]],494:[[439,780]],495:[[658,780]],496:[[106,780]],497:[[68,90],256],498:[[68,122],256],499:[[100,122],256],500:[[71,769]],501:[[103,769]],504:[[78,768]],505:[[110,768]],506:[[197,769]],507:[[229,769]],508:[[198,769]],509:[[230,769]],510:[[216,769]],511:[[248,769]],66045:[,220]},\n512:{512:[[65,783]],513:[[97,783]],514:[[65,785]],515:[[97,785]],516:[[69,783]],517:[[101,783]],518:[[69,785]],519:[[101,785]],520:[[73,783]],521:[[105,783]],522:[[73,785]],523:[[105,785]],524:[[79,783]],525:[[111,783]],526:[[79,785]],527:[[111,785]],528:[[82,783]],529:[[114,783]],530:[[82,785]],531:[[114,785]],532:[[85,783]],533:[[117,783]],534:[[85,785]],535:[[117,785]],536:[[83,806]],537:[[115,806]],538:[[84,806]],539:[[116,806]],542:[[72,780]],543:[[104,780]],550:[[65,775],,{772:480}],551:[[97,775],,{772:481}],552:[[69,807],,{774:7708}],553:[[101,807],,{774:7709}],554:[[214,772]],555:[[246,772]],556:[[213,772]],557:[[245,772]],558:[[79,775],,{772:560}],559:[[111,775],,{772:561}],560:[[558,772]],561:[[559,772]],562:[[89,772]],563:[[121,772]],658:[,,{780:495}],688:[[104],256],689:[[614],256],690:[[106],256],691:[[114],256],692:[[633],256],693:[[635],256],694:[[641],256],695:[[119],256],696:[[121],256],728:[[32,774],256],729:[[32,775],256],730:[[32,778],256],731:[[32,808],256],732:[[32,771],256],733:[[32,779],256],736:[[611],256],737:[[108],256],738:[[115],256],739:[[120],256],740:[[661],256],66272:[,220]},\n768:{768:[,230],769:[,230],770:[,230],771:[,230],772:[,230],773:[,230],774:[,230],775:[,230],776:[,230,{769:836}],777:[,230],778:[,230],779:[,230],780:[,230],781:[,230],782:[,230],783:[,230],784:[,230],785:[,230],786:[,230],787:[,230],788:[,230],789:[,232],790:[,220],791:[,220],792:[,220],793:[,220],794:[,232],795:[,216],796:[,220],797:[,220],798:[,220],799:[,220],800:[,220],801:[,202],802:[,202],803:[,220],804:[,220],805:[,220],806:[,220],807:[,202],808:[,202],809:[,220],810:[,220],811:[,220],812:[,220],813:[,220],814:[,220],815:[,220],816:[,220],817:[,220],818:[,220],819:[,220],820:[,1],821:[,1],822:[,1],823:[,1],824:[,1],825:[,220],826:[,220],827:[,220],828:[,220],829:[,230],830:[,230],831:[,230],832:[[768],230],833:[[769],230],834:[,230],835:[[787],230],836:[[776,769],230],837:[,240],838:[,230],839:[,220],840:[,220],841:[,220],842:[,230],843:[,230],844:[,230],845:[,220],846:[,220],848:[,230],849:[,230],850:[,230],851:[,220],852:[,220],853:[,220],854:[,220],855:[,230],856:[,232],857:[,220],858:[,220],859:[,230],860:[,233],861:[,234],862:[,234],863:[,233],864:[,234],865:[,234],866:[,233],867:[,230],868:[,230],869:[,230],870:[,230],871:[,230],872:[,230],873:[,230],874:[,230],875:[,230],876:[,230],877:[,230],878:[,230],879:[,230],884:[[697]],890:[[32,837],256],894:[[59]],900:[[32,769],256],901:[[168,769]],902:[[913,769]],903:[[183]],904:[[917,769]],905:[[919,769]],906:[[921,769]],908:[[927,769]],910:[[933,769]],911:[[937,769]],912:[[970,769]],913:[,,{768:8122,769:902,772:8121,774:8120,787:7944,788:7945,837:8124}],917:[,,{768:8136,769:904,787:7960,788:7961}],919:[,,{768:8138,769:905,787:7976,788:7977,837:8140}],921:[,,{768:8154,769:906,772:8153,774:8152,776:938,787:7992,788:7993}],927:[,,{768:8184,769:908,787:8008,788:8009}],929:[,,{788:8172}],933:[,,{768:8170,769:910,772:8169,774:8168,776:939,788:8025}],937:[,,{768:8186,769:911,787:8040,788:8041,837:8188}],938:[[921,776]],939:[[933,776]],940:[[945,769],,{837:8116}],941:[[949,769]],942:[[951,769],,{837:8132}],943:[[953,769]],944:[[971,769]],945:[,,{768:8048,769:940,772:8113,774:8112,787:7936,788:7937,834:8118,837:8115}],949:[,,{768:8050,769:941,787:7952,788:7953}],951:[,,{768:8052,769:942,787:7968,788:7969,834:8134,837:8131}],953:[,,{768:8054,769:943,772:8145,774:8144,776:970,787:7984,788:7985,834:8150}],959:[,,{768:8056,769:972,787:8000,788:8001}],961:[,,{787:8164,788:8165}],965:[,,{768:8058,769:973,772:8161,774:8160,776:971,787:8016,788:8017,834:8166}],969:[,,{768:8060,769:974,787:8032,788:8033,834:8182,837:8179}],970:[[953,776],,{768:8146,769:912,834:8151}],971:[[965,776],,{768:8162,769:944,834:8167}],972:[[959,769]],973:[[965,769]],974:[[969,769],,{837:8180}],976:[[946],256],977:[[952],256],978:[[933],256,{769:979,776:980}],979:[[978,769]],980:[[978,776]],981:[[966],256],982:[[960],256],1008:[[954],256],1009:[[961],256],1010:[[962],256],1012:[[920],256],1013:[[949],256],1017:[[931],256],66422:[,230],66423:[,230],66424:[,230],66425:[,230],66426:[,230]},\n1024:{1024:[[1045,768]],1025:[[1045,776]],1027:[[1043,769]],1030:[,,{776:1031}],1031:[[1030,776]],1036:[[1050,769]],1037:[[1048,768]],1038:[[1059,774]],1040:[,,{774:1232,776:1234}],1043:[,,{769:1027}],1045:[,,{768:1024,774:1238,776:1025}],1046:[,,{774:1217,776:1244}],1047:[,,{776:1246}],1048:[,,{768:1037,772:1250,774:1049,776:1252}],1049:[[1048,774]],1050:[,,{769:1036}],1054:[,,{776:1254}],1059:[,,{772:1262,774:1038,776:1264,779:1266}],1063:[,,{776:1268}],1067:[,,{776:1272}],1069:[,,{776:1260}],1072:[,,{774:1233,776:1235}],1075:[,,{769:1107}],1077:[,,{768:1104,774:1239,776:1105}],1078:[,,{774:1218,776:1245}],1079:[,,{776:1247}],1080:[,,{768:1117,772:1251,774:1081,776:1253}],1081:[[1080,774]],1082:[,,{769:1116}],1086:[,,{776:1255}],1091:[,,{772:1263,774:1118,776:1265,779:1267}],1095:[,,{776:1269}],1099:[,,{776:1273}],1101:[,,{776:1261}],1104:[[1077,768]],1105:[[1077,776]],1107:[[1075,769]],1110:[,,{776:1111}],1111:[[1110,776]],1116:[[1082,769]],1117:[[1080,768]],1118:[[1091,774]],1140:[,,{783:1142}],1141:[,,{783:1143}],1142:[[1140,783]],1143:[[1141,783]],1155:[,230],1156:[,230],1157:[,230],1158:[,230],1159:[,230],1217:[[1046,774]],1218:[[1078,774]],1232:[[1040,774]],1233:[[1072,774]],1234:[[1040,776]],1235:[[1072,776]],1238:[[1045,774]],1239:[[1077,774]],1240:[,,{776:1242}],1241:[,,{776:1243}],1242:[[1240,776]],1243:[[1241,776]],1244:[[1046,776]],1245:[[1078,776]],1246:[[1047,776]],1247:[[1079,776]],1250:[[1048,772]],1251:[[1080,772]],1252:[[1048,776]],1253:[[1080,776]],1254:[[1054,776]],1255:[[1086,776]],1256:[,,{776:1258}],1257:[,,{776:1259}],1258:[[1256,776]],1259:[[1257,776]],1260:[[1069,776]],1261:[[1101,776]],1262:[[1059,772]],1263:[[1091,772]],1264:[[1059,776]],1265:[[1091,776]],1266:[[1059,779]],1267:[[1091,779]],1268:[[1063,776]],1269:[[1095,776]],1272:[[1067,776]],1273:[[1099,776]]},\n1280:{1415:[[1381,1410],256],1425:[,220],1426:[,230],1427:[,230],1428:[,230],1429:[,230],1430:[,220],1431:[,230],1432:[,230],1433:[,230],1434:[,222],1435:[,220],1436:[,230],1437:[,230],1438:[,230],1439:[,230],1440:[,230],1441:[,230],1442:[,220],1443:[,220],1444:[,220],1445:[,220],1446:[,220],1447:[,220],1448:[,230],1449:[,230],1450:[,220],1451:[,230],1452:[,230],1453:[,222],1454:[,228],1455:[,230],1456:[,10],1457:[,11],1458:[,12],1459:[,13],1460:[,14],1461:[,15],1462:[,16],1463:[,17],1464:[,18],1465:[,19],1466:[,19],1467:[,20],1468:[,21],1469:[,22],1471:[,23],1473:[,24],1474:[,25],1476:[,230],1477:[,220],1479:[,18]},\n1536:{1552:[,230],1553:[,230],1554:[,230],1555:[,230],1556:[,230],1557:[,230],1558:[,230],1559:[,230],1560:[,30],1561:[,31],1562:[,32],1570:[[1575,1619]],1571:[[1575,1620]],1572:[[1608,1620]],1573:[[1575,1621]],1574:[[1610,1620]],1575:[,,{1619:1570,1620:1571,1621:1573}],1608:[,,{1620:1572}],1610:[,,{1620:1574}],1611:[,27],1612:[,28],1613:[,29],1614:[,30],1615:[,31],1616:[,32],1617:[,33],1618:[,34],1619:[,230],1620:[,230],1621:[,220],1622:[,220],1623:[,230],1624:[,230],1625:[,230],1626:[,230],1627:[,230],1628:[,220],1629:[,230],1630:[,230],1631:[,220],1648:[,35],1653:[[1575,1652],256],1654:[[1608,1652],256],1655:[[1735,1652],256],1656:[[1610,1652],256],1728:[[1749,1620]],1729:[,,{1620:1730}],1730:[[1729,1620]],1746:[,,{1620:1747}],1747:[[1746,1620]],1749:[,,{1620:1728}],1750:[,230],1751:[,230],1752:[,230],1753:[,230],1754:[,230],1755:[,230],1756:[,230],1759:[,230],1760:[,230],1761:[,230],1762:[,230],1763:[,220],1764:[,230],1767:[,230],1768:[,230],1770:[,220],1771:[,230],1772:[,230],1773:[,220]},\n1792:{1809:[,36],1840:[,230],1841:[,220],1842:[,230],1843:[,230],1844:[,220],1845:[,230],1846:[,230],1847:[,220],1848:[,220],1849:[,220],1850:[,230],1851:[,220],1852:[,220],1853:[,230],1854:[,220],1855:[,230],1856:[,230],1857:[,230],1858:[,220],1859:[,230],1860:[,220],1861:[,230],1862:[,220],1863:[,230],1864:[,220],1865:[,230],1866:[,230],2027:[,230],2028:[,230],2029:[,230],2030:[,230],2031:[,230],2032:[,230],2033:[,230],2034:[,220],2035:[,230]},\n2048:{2070:[,230],2071:[,230],2072:[,230],2073:[,230],2075:[,230],2076:[,230],2077:[,230],2078:[,230],2079:[,230],2080:[,230],2081:[,230],2082:[,230],2083:[,230],2085:[,230],2086:[,230],2087:[,230],2089:[,230],2090:[,230],2091:[,230],2092:[,230],2093:[,230],2137:[,220],2138:[,220],2139:[,220],2276:[,230],2277:[,230],2278:[,220],2279:[,230],2280:[,230],2281:[,220],2282:[,230],2283:[,230],2284:[,230],2285:[,220],2286:[,220],2287:[,220],2288:[,27],2289:[,28],2290:[,29],2291:[,230],2292:[,230],2293:[,230],2294:[,220],2295:[,230],2296:[,230],2297:[,220],2298:[,220],2299:[,230],2300:[,230],2301:[,230],2302:[,230],2303:[,230]},\n2304:{2344:[,,{2364:2345}],2345:[[2344,2364]],2352:[,,{2364:2353}],2353:[[2352,2364]],2355:[,,{2364:2356}],2356:[[2355,2364]],2364:[,7],2381:[,9],2385:[,230],2386:[,220],2387:[,230],2388:[,230],2392:[[2325,2364],512],2393:[[2326,2364],512],2394:[[2327,2364],512],2395:[[2332,2364],512],2396:[[2337,2364],512],2397:[[2338,2364],512],2398:[[2347,2364],512],2399:[[2351,2364],512],2492:[,7],2503:[,,{2494:2507,2519:2508}],2507:[[2503,2494]],2508:[[2503,2519]],2509:[,9],2524:[[2465,2492],512],2525:[[2466,2492],512],2527:[[2479,2492],512]},\n2560:{2611:[[2610,2620],512],2614:[[2616,2620],512],2620:[,7],2637:[,9],2649:[[2582,2620],512],2650:[[2583,2620],512],2651:[[2588,2620],512],2654:[[2603,2620],512],2748:[,7],2765:[,9],68109:[,220],68111:[,230],68152:[,230],68153:[,1],68154:[,220],68159:[,9],68325:[,230],68326:[,220]},\n2816:{2876:[,7],2887:[,,{2878:2891,2902:2888,2903:2892}],2888:[[2887,2902]],2891:[[2887,2878]],2892:[[2887,2903]],2893:[,9],2908:[[2849,2876],512],2909:[[2850,2876],512],2962:[,,{3031:2964}],2964:[[2962,3031]],3014:[,,{3006:3018,3031:3020}],3015:[,,{3006:3019}],3018:[[3014,3006]],3019:[[3015,3006]],3020:[[3014,3031]],3021:[,9]},\n3072:{3142:[,,{3158:3144}],3144:[[3142,3158]],3149:[,9],3157:[,84],3158:[,91],3260:[,7],3263:[,,{3285:3264}],3264:[[3263,3285]],3270:[,,{3266:3274,3285:3271,3286:3272}],3271:[[3270,3285]],3272:[[3270,3286]],3274:[[3270,3266],,{3285:3275}],3275:[[3274,3285]],3277:[,9]},\n3328:{3398:[,,{3390:3402,3415:3404}],3399:[,,{3390:3403}],3402:[[3398,3390]],3403:[[3399,3390]],3404:[[3398,3415]],3405:[,9],3530:[,9],3545:[,,{3530:3546,3535:3548,3551:3550}],3546:[[3545,3530]],3548:[[3545,3535],,{3530:3549}],3549:[[3548,3530]],3550:[[3545,3551]]},\n3584:{3635:[[3661,3634],256],3640:[,103],3641:[,103],3642:[,9],3656:[,107],3657:[,107],3658:[,107],3659:[,107],3763:[[3789,3762],256],3768:[,118],3769:[,118],3784:[,122],3785:[,122],3786:[,122],3787:[,122],3804:[[3755,3737],256],3805:[[3755,3745],256]},\n3840:{3852:[[3851],256],3864:[,220],3865:[,220],3893:[,220],3895:[,220],3897:[,216],3907:[[3906,4023],512],3917:[[3916,4023],512],3922:[[3921,4023],512],3927:[[3926,4023],512],3932:[[3931,4023],512],3945:[[3904,4021],512],3953:[,129],3954:[,130],3955:[[3953,3954],512],3956:[,132],3957:[[3953,3956],512],3958:[[4018,3968],512],3959:[[4018,3969],256],3960:[[4019,3968],512],3961:[[4019,3969],256],3962:[,130],3963:[,130],3964:[,130],3965:[,130],3968:[,130],3969:[[3953,3968],512],3970:[,230],3971:[,230],3972:[,9],3974:[,230],3975:[,230],3987:[[3986,4023],512],3997:[[3996,4023],512],4002:[[4001,4023],512],4007:[[4006,4023],512],4012:[[4011,4023],512],4025:[[3984,4021],512],4038:[,220]},\n4096:{4133:[,,{4142:4134}],4134:[[4133,4142]],4151:[,7],4153:[,9],4154:[,9],4237:[,220],4348:[[4316],256],69702:[,9],69759:[,9],69785:[,,{69818:69786}],69786:[[69785,69818]],69787:[,,{69818:69788}],69788:[[69787,69818]],69797:[,,{69818:69803}],69803:[[69797,69818]],69817:[,9],69818:[,7]},\n4352:{69888:[,230],69889:[,230],69890:[,230],69934:[[69937,69927]],69935:[[69938,69927]],69937:[,,{69927:69934}],69938:[,,{69927:69935}],69939:[,9],69940:[,9],70003:[,7],70080:[,9]},\n4608:{70197:[,9],70198:[,7],70377:[,7],70378:[,9]},\n4864:{4957:[,230],4958:[,230],4959:[,230],70460:[,7],70471:[,,{70462:70475,70487:70476}],70475:[[70471,70462]],70476:[[70471,70487]],70477:[,9],70502:[,230],70503:[,230],70504:[,230],70505:[,230],70506:[,230],70507:[,230],70508:[,230],70512:[,230],70513:[,230],70514:[,230],70515:[,230],70516:[,230]},\n5120:{70841:[,,{70832:70844,70842:70843,70845:70846}],70843:[[70841,70842]],70844:[[70841,70832]],70846:[[70841,70845]],70850:[,9],70851:[,7]},\n5376:{71096:[,,{71087:71098}],71097:[,,{71087:71099}],71098:[[71096,71087]],71099:[[71097,71087]],71103:[,9],71104:[,7]},\n5632:{71231:[,9],71350:[,9],71351:[,7]},\n5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]},\n6144:{6313:[,228]},\n6400:{6457:[,222],6458:[,230],6459:[,220]},\n6656:{6679:[,230],6680:[,220],6752:[,9],6773:[,230],6774:[,230],6775:[,230],6776:[,230],6777:[,230],6778:[,230],6779:[,230],6780:[,230],6783:[,220],6832:[,230],6833:[,230],6834:[,230],6835:[,230],6836:[,230],6837:[,220],6838:[,220],6839:[,220],6840:[,220],6841:[,220],6842:[,220],6843:[,230],6844:[,230],6845:[,220]},\n6912:{6917:[,,{6965:6918}],6918:[[6917,6965]],6919:[,,{6965:6920}],6920:[[6919,6965]],6921:[,,{6965:6922}],6922:[[6921,6965]],6923:[,,{6965:6924}],6924:[[6923,6965]],6925:[,,{6965:6926}],6926:[[6925,6965]],6929:[,,{6965:6930}],6930:[[6929,6965]],6964:[,7],6970:[,,{6965:6971}],6971:[[6970,6965]],6972:[,,{6965:6973}],6973:[[6972,6965]],6974:[,,{6965:6976}],6975:[,,{6965:6977}],6976:[[6974,6965]],6977:[[6975,6965]],6978:[,,{6965:6979}],6979:[[6978,6965]],6980:[,9],7019:[,230],7020:[,220],7021:[,230],7022:[,230],7023:[,230],7024:[,230],7025:[,230],7026:[,230],7027:[,230],7082:[,9],7083:[,9],7142:[,7],7154:[,9],7155:[,9]},\n7168:{7223:[,7],7376:[,230],7377:[,230],7378:[,230],7380:[,1],7381:[,220],7382:[,220],7383:[,220],7384:[,220],7385:[,220],7386:[,230],7387:[,230],7388:[,220],7389:[,220],7390:[,220],7391:[,220],7392:[,230],7394:[,1],7395:[,1],7396:[,1],7397:[,1],7398:[,1],7399:[,1],7400:[,1],7405:[,220],7412:[,230],7416:[,230],7417:[,230]},\n7424:{7468:[[65],256],7469:[[198],256],7470:[[66],256],7472:[[68],256],7473:[[69],256],7474:[[398],256],7475:[[71],256],7476:[[72],256],7477:[[73],256],7478:[[74],256],7479:[[75],256],7480:[[76],256],7481:[[77],256],7482:[[78],256],7484:[[79],256],7485:[[546],256],7486:[[80],256],7487:[[82],256],7488:[[84],256],7489:[[85],256],7490:[[87],256],7491:[[97],256],7492:[[592],256],7493:[[593],256],7494:[[7426],256],7495:[[98],256],7496:[[100],256],7497:[[101],256],7498:[[601],256],7499:[[603],256],7500:[[604],256],7501:[[103],256],7503:[[107],256],7504:[[109],256],7505:[[331],256],7506:[[111],256],7507:[[596],256],7508:[[7446],256],7509:[[7447],256],7510:[[112],256],7511:[[116],256],7512:[[117],256],7513:[[7453],256],7514:[[623],256],7515:[[118],256],7516:[[7461],256],7517:[[946],256],7518:[[947],256],7519:[[948],256],7520:[[966],256],7521:[[967],256],7522:[[105],256],7523:[[114],256],7524:[[117],256],7525:[[118],256],7526:[[946],256],7527:[[947],256],7528:[[961],256],7529:[[966],256],7530:[[967],256],7544:[[1085],256],7579:[[594],256],7580:[[99],256],7581:[[597],256],7582:[[240],256],7583:[[604],256],7584:[[102],256],7585:[[607],256],7586:[[609],256],7587:[[613],256],7588:[[616],256],7589:[[617],256],7590:[[618],256],7591:[[7547],256],7592:[[669],256],7593:[[621],256],7594:[[7557],256],7595:[[671],256],7596:[[625],256],7597:[[624],256],7598:[[626],256],7599:[[627],256],7600:[[628],256],7601:[[629],256],7602:[[632],256],7603:[[642],256],7604:[[643],256],7605:[[427],256],7606:[[649],256],7607:[[650],256],7608:[[7452],256],7609:[[651],256],7610:[[652],256],7611:[[122],256],7612:[[656],256],7613:[[657],256],7614:[[658],256],7615:[[952],256],7616:[,230],7617:[,230],7618:[,220],7619:[,230],7620:[,230],7621:[,230],7622:[,230],7623:[,230],7624:[,230],7625:[,230],7626:[,220],7627:[,230],7628:[,230],7629:[,234],7630:[,214],7631:[,220],7632:[,202],7633:[,230],7634:[,230],7635:[,230],7636:[,230],7637:[,230],7638:[,230],7639:[,230],7640:[,230],7641:[,230],7642:[,230],7643:[,230],7644:[,230],7645:[,230],7646:[,230],7647:[,230],7648:[,230],7649:[,230],7650:[,230],7651:[,230],7652:[,230],7653:[,230],7654:[,230],7655:[,230],7656:[,230],7657:[,230],7658:[,230],7659:[,230],7660:[,230],7661:[,230],7662:[,230],7663:[,230],7664:[,230],7665:[,230],7666:[,230],7667:[,230],7668:[,230],7669:[,230],7676:[,233],7677:[,220],7678:[,230],7679:[,220]},\n7680:{7680:[[65,805]],7681:[[97,805]],7682:[[66,775]],7683:[[98,775]],7684:[[66,803]],7685:[[98,803]],7686:[[66,817]],7687:[[98,817]],7688:[[199,769]],7689:[[231,769]],7690:[[68,775]],7691:[[100,775]],7692:[[68,803]],7693:[[100,803]],7694:[[68,817]],7695:[[100,817]],7696:[[68,807]],7697:[[100,807]],7698:[[68,813]],7699:[[100,813]],7700:[[274,768]],7701:[[275,768]],7702:[[274,769]],7703:[[275,769]],7704:[[69,813]],7705:[[101,813]],7706:[[69,816]],7707:[[101,816]],7708:[[552,774]],7709:[[553,774]],7710:[[70,775]],7711:[[102,775]],7712:[[71,772]],7713:[[103,772]],7714:[[72,775]],7715:[[104,775]],7716:[[72,803]],7717:[[104,803]],7718:[[72,776]],7719:[[104,776]],7720:[[72,807]],7721:[[104,807]],7722:[[72,814]],7723:[[104,814]],7724:[[73,816]],7725:[[105,816]],7726:[[207,769]],7727:[[239,769]],7728:[[75,769]],7729:[[107,769]],7730:[[75,803]],7731:[[107,803]],7732:[[75,817]],7733:[[107,817]],7734:[[76,803],,{772:7736}],7735:[[108,803],,{772:7737}],7736:[[7734,772]],7737:[[7735,772]],7738:[[76,817]],7739:[[108,817]],7740:[[76,813]],7741:[[108,813]],7742:[[77,769]],7743:[[109,769]],7744:[[77,775]],7745:[[109,775]],7746:[[77,803]],7747:[[109,803]],7748:[[78,775]],7749:[[110,775]],7750:[[78,803]],7751:[[110,803]],7752:[[78,817]],7753:[[110,817]],7754:[[78,813]],7755:[[110,813]],7756:[[213,769]],7757:[[245,769]],7758:[[213,776]],7759:[[245,776]],7760:[[332,768]],7761:[[333,768]],7762:[[332,769]],7763:[[333,769]],7764:[[80,769]],7765:[[112,769]],7766:[[80,775]],7767:[[112,775]],7768:[[82,775]],7769:[[114,775]],7770:[[82,803],,{772:7772}],7771:[[114,803],,{772:7773}],7772:[[7770,772]],7773:[[7771,772]],7774:[[82,817]],7775:[[114,817]],7776:[[83,775]],7777:[[115,775]],7778:[[83,803],,{775:7784}],7779:[[115,803],,{775:7785}],7780:[[346,775]],7781:[[347,775]],7782:[[352,775]],7783:[[353,775]],7784:[[7778,775]],7785:[[7779,775]],7786:[[84,775]],7787:[[116,775]],7788:[[84,803]],7789:[[116,803]],7790:[[84,817]],7791:[[116,817]],7792:[[84,813]],7793:[[116,813]],7794:[[85,804]],7795:[[117,804]],7796:[[85,816]],7797:[[117,816]],7798:[[85,813]],7799:[[117,813]],7800:[[360,769]],7801:[[361,769]],7802:[[362,776]],7803:[[363,776]],7804:[[86,771]],7805:[[118,771]],7806:[[86,803]],7807:[[118,803]],7808:[[87,768]],7809:[[119,768]],7810:[[87,769]],7811:[[119,769]],7812:[[87,776]],7813:[[119,776]],7814:[[87,775]],7815:[[119,775]],7816:[[87,803]],7817:[[119,803]],7818:[[88,775]],7819:[[120,775]],7820:[[88,776]],7821:[[120,776]],7822:[[89,775]],7823:[[121,775]],7824:[[90,770]],7825:[[122,770]],7826:[[90,803]],7827:[[122,803]],7828:[[90,817]],7829:[[122,817]],7830:[[104,817]],7831:[[116,776]],7832:[[119,778]],7833:[[121,778]],7834:[[97,702],256],7835:[[383,775]],7840:[[65,803],,{770:7852,774:7862}],7841:[[97,803],,{770:7853,774:7863}],7842:[[65,777]],7843:[[97,777]],7844:[[194,769]],7845:[[226,769]],7846:[[194,768]],7847:[[226,768]],7848:[[194,777]],7849:[[226,777]],7850:[[194,771]],7851:[[226,771]],7852:[[7840,770]],7853:[[7841,770]],7854:[[258,769]],7855:[[259,769]],7856:[[258,768]],7857:[[259,768]],7858:[[258,777]],7859:[[259,777]],7860:[[258,771]],7861:[[259,771]],7862:[[7840,774]],7863:[[7841,774]],7864:[[69,803],,{770:7878}],7865:[[101,803],,{770:7879}],7866:[[69,777]],7867:[[101,777]],7868:[[69,771]],7869:[[101,771]],7870:[[202,769]],7871:[[234,769]],7872:[[202,768]],7873:[[234,768]],7874:[[202,777]],7875:[[234,777]],7876:[[202,771]],7877:[[234,771]],7878:[[7864,770]],7879:[[7865,770]],7880:[[73,777]],7881:[[105,777]],7882:[[73,803]],7883:[[105,803]],7884:[[79,803],,{770:7896}],7885:[[111,803],,{770:7897}],7886:[[79,777]],7887:[[111,777]],7888:[[212,769]],7889:[[244,769]],7890:[[212,768]],7891:[[244,768]],7892:[[212,777]],7893:[[244,777]],7894:[[212,771]],7895:[[244,771]],7896:[[7884,770]],7897:[[7885,770]],7898:[[416,769]],7899:[[417,769]],7900:[[416,768]],7901:[[417,768]],7902:[[416,777]],7903:[[417,777]],7904:[[416,771]],7905:[[417,771]],7906:[[416,803]],7907:[[417,803]],7908:[[85,803]],7909:[[117,803]],7910:[[85,777]],7911:[[117,777]],7912:[[431,769]],7913:[[432,769]],7914:[[431,768]],7915:[[432,768]],7916:[[431,777]],7917:[[432,777]],7918:[[431,771]],7919:[[432,771]],7920:[[431,803]],7921:[[432,803]],7922:[[89,768]],7923:[[121,768]],7924:[[89,803]],7925:[[121,803]],7926:[[89,777]],7927:[[121,777]],7928:[[89,771]],7929:[[121,771]]},\n7936:{7936:[[945,787],,{768:7938,769:7940,834:7942,837:8064}],7937:[[945,788],,{768:7939,769:7941,834:7943,837:8065}],7938:[[7936,768],,{837:8066}],7939:[[7937,768],,{837:8067}],7940:[[7936,769],,{837:8068}],7941:[[7937,769],,{837:8069}],7942:[[7936,834],,{837:8070}],7943:[[7937,834],,{837:8071}],7944:[[913,787],,{768:7946,769:7948,834:7950,837:8072}],7945:[[913,788],,{768:7947,769:7949,834:7951,837:8073}],7946:[[7944,768],,{837:8074}],7947:[[7945,768],,{837:8075}],7948:[[7944,769],,{837:8076}],7949:[[7945,769],,{837:8077}],7950:[[7944,834],,{837:8078}],7951:[[7945,834],,{837:8079}],7952:[[949,787],,{768:7954,769:7956}],7953:[[949,788],,{768:7955,769:7957}],7954:[[7952,768]],7955:[[7953,768]],7956:[[7952,769]],7957:[[7953,769]],7960:[[917,787],,{768:7962,769:7964}],7961:[[917,788],,{768:7963,769:7965}],7962:[[7960,768]],7963:[[7961,768]],7964:[[7960,769]],7965:[[7961,769]],7968:[[951,787],,{768:7970,769:7972,834:7974,837:8080}],7969:[[951,788],,{768:7971,769:7973,834:7975,837:8081}],7970:[[7968,768],,{837:8082}],7971:[[7969,768],,{837:8083}],7972:[[7968,769],,{837:8084}],7973:[[7969,769],,{837:8085}],7974:[[7968,834],,{837:8086}],7975:[[7969,834],,{837:8087}],7976:[[919,787],,{768:7978,769:7980,834:7982,837:8088}],7977:[[919,788],,{768:7979,769:7981,834:7983,837:8089}],7978:[[7976,768],,{837:8090}],7979:[[7977,768],,{837:8091}],7980:[[7976,769],,{837:8092}],7981:[[7977,769],,{837:8093}],7982:[[7976,834],,{837:8094}],7983:[[7977,834],,{837:8095}],7984:[[953,787],,{768:7986,769:7988,834:7990}],7985:[[953,788],,{768:7987,769:7989,834:7991}],7986:[[7984,768]],7987:[[7985,768]],7988:[[7984,769]],7989:[[7985,769]],7990:[[7984,834]],7991:[[7985,834]],7992:[[921,787],,{768:7994,769:7996,834:7998}],7993:[[921,788],,{768:7995,769:7997,834:7999}],7994:[[7992,768]],7995:[[7993,768]],7996:[[7992,769]],7997:[[7993,769]],7998:[[7992,834]],7999:[[7993,834]],8000:[[959,787],,{768:8002,769:8004}],8001:[[959,788],,{768:8003,769:8005}],8002:[[8000,768]],8003:[[8001,768]],8004:[[8000,769]],8005:[[8001,769]],8008:[[927,787],,{768:8010,769:8012}],8009:[[927,788],,{768:8011,769:8013}],8010:[[8008,768]],8011:[[8009,768]],8012:[[8008,769]],8013:[[8009,769]],8016:[[965,787],,{768:8018,769:8020,834:8022}],8017:[[965,788],,{768:8019,769:8021,834:8023}],8018:[[8016,768]],8019:[[8017,768]],8020:[[8016,769]],8021:[[8017,769]],8022:[[8016,834]],8023:[[8017,834]],8025:[[933,788],,{768:8027,769:8029,834:8031}],8027:[[8025,768]],8029:[[8025,769]],8031:[[8025,834]],8032:[[969,787],,{768:8034,769:8036,834:8038,837:8096}],8033:[[969,788],,{768:8035,769:8037,834:8039,837:8097}],8034:[[8032,768],,{837:8098}],8035:[[8033,768],,{837:8099}],8036:[[8032,769],,{837:8100}],8037:[[8033,769],,{837:8101}],8038:[[8032,834],,{837:8102}],8039:[[8033,834],,{837:8103}],8040:[[937,787],,{768:8042,769:8044,834:8046,837:8104}],8041:[[937,788],,{768:8043,769:8045,834:8047,837:8105}],8042:[[8040,768],,{837:8106}],8043:[[8041,768],,{837:8107}],8044:[[8040,769],,{837:8108}],8045:[[8041,769],,{837:8109}],8046:[[8040,834],,{837:8110}],8047:[[8041,834],,{837:8111}],8048:[[945,768],,{837:8114}],8049:[[940]],8050:[[949,768]],8051:[[941]],8052:[[951,768],,{837:8130}],8053:[[942]],8054:[[953,768]],8055:[[943]],8056:[[959,768]],8057:[[972]],8058:[[965,768]],8059:[[973]],8060:[[969,768],,{837:8178}],8061:[[974]],8064:[[7936,837]],8065:[[7937,837]],8066:[[7938,837]],8067:[[7939,837]],8068:[[7940,837]],8069:[[7941,837]],8070:[[7942,837]],8071:[[7943,837]],8072:[[7944,837]],8073:[[7945,837]],8074:[[7946,837]],8075:[[7947,837]],8076:[[7948,837]],8077:[[7949,837]],8078:[[7950,837]],8079:[[7951,837]],8080:[[7968,837]],8081:[[7969,837]],8082:[[7970,837]],8083:[[7971,837]],8084:[[7972,837]],8085:[[7973,837]],8086:[[7974,837]],8087:[[7975,837]],8088:[[7976,837]],8089:[[7977,837]],8090:[[7978,837]],8091:[[7979,837]],8092:[[7980,837]],8093:[[7981,837]],8094:[[7982,837]],8095:[[7983,837]],8096:[[8032,837]],8097:[[8033,837]],8098:[[8034,837]],8099:[[8035,837]],8100:[[8036,837]],8101:[[8037,837]],8102:[[8038,837]],8103:[[8039,837]],8104:[[8040,837]],8105:[[8041,837]],8106:[[8042,837]],8107:[[8043,837]],8108:[[8044,837]],8109:[[8045,837]],8110:[[8046,837]],8111:[[8047,837]],8112:[[945,774]],8113:[[945,772]],8114:[[8048,837]],8115:[[945,837]],8116:[[940,837]],8118:[[945,834],,{837:8119}],8119:[[8118,837]],8120:[[913,774]],8121:[[913,772]],8122:[[913,768]],8123:[[902]],8124:[[913,837]],8125:[[32,787],256],8126:[[953]],8127:[[32,787],256,{768:8141,769:8142,834:8143}],8128:[[32,834],256],8129:[[168,834]],8130:[[8052,837]],8131:[[951,837]],8132:[[942,837]],8134:[[951,834],,{837:8135}],8135:[[8134,837]],8136:[[917,768]],8137:[[904]],8138:[[919,768]],8139:[[905]],8140:[[919,837]],8141:[[8127,768]],8142:[[8127,769]],8143:[[8127,834]],8144:[[953,774]],8145:[[953,772]],8146:[[970,768]],8147:[[912]],8150:[[953,834]],8151:[[970,834]],8152:[[921,774]],8153:[[921,772]],8154:[[921,768]],8155:[[906]],8157:[[8190,768]],8158:[[8190,769]],8159:[[8190,834]],8160:[[965,774]],8161:[[965,772]],8162:[[971,768]],8163:[[944]],8164:[[961,787]],8165:[[961,788]],8166:[[965,834]],8167:[[971,834]],8168:[[933,774]],8169:[[933,772]],8170:[[933,768]],8171:[[910]],8172:[[929,788]],8173:[[168,768]],8174:[[901]],8175:[[96]],8178:[[8060,837]],8179:[[969,837]],8180:[[974,837]],8182:[[969,834],,{837:8183}],8183:[[8182,837]],8184:[[927,768]],8185:[[908]],8186:[[937,768]],8187:[[911]],8188:[[937,837]],8189:[[180]],8190:[[32,788],256,{768:8157,769:8158,834:8159}]},\n8192:{8192:[[8194]],8193:[[8195]],8194:[[32],256],8195:[[32],256],8196:[[32],256],8197:[[32],256],8198:[[32],256],8199:[[32],256],8200:[[32],256],8201:[[32],256],8202:[[32],256],8209:[[8208],256],8215:[[32,819],256],8228:[[46],256],8229:[[46,46],256],8230:[[46,46,46],256],8239:[[32],256],8243:[[8242,8242],256],8244:[[8242,8242,8242],256],8246:[[8245,8245],256],8247:[[8245,8245,8245],256],8252:[[33,33],256],8254:[[32,773],256],8263:[[63,63],256],8264:[[63,33],256],8265:[[33,63],256],8279:[[8242,8242,8242,8242],256],8287:[[32],256],8304:[[48],256],8305:[[105],256],8308:[[52],256],8309:[[53],256],8310:[[54],256],8311:[[55],256],8312:[[56],256],8313:[[57],256],8314:[[43],256],8315:[[8722],256],8316:[[61],256],8317:[[40],256],8318:[[41],256],8319:[[110],256],8320:[[48],256],8321:[[49],256],8322:[[50],256],8323:[[51],256],8324:[[52],256],8325:[[53],256],8326:[[54],256],8327:[[55],256],8328:[[56],256],8329:[[57],256],8330:[[43],256],8331:[[8722],256],8332:[[61],256],8333:[[40],256],8334:[[41],256],8336:[[97],256],8337:[[101],256],8338:[[111],256],8339:[[120],256],8340:[[601],256],8341:[[104],256],8342:[[107],256],8343:[[108],256],8344:[[109],256],8345:[[110],256],8346:[[112],256],8347:[[115],256],8348:[[116],256],8360:[[82,115],256],8400:[,230],8401:[,230],8402:[,1],8403:[,1],8404:[,230],8405:[,230],8406:[,230],8407:[,230],8408:[,1],8409:[,1],8410:[,1],8411:[,230],8412:[,230],8417:[,230],8421:[,1],8422:[,1],8423:[,230],8424:[,220],8425:[,230],8426:[,1],8427:[,1],8428:[,220],8429:[,220],8430:[,220],8431:[,220],8432:[,230]},\n8448:{8448:[[97,47,99],256],8449:[[97,47,115],256],8450:[[67],256],8451:[[176,67],256],8453:[[99,47,111],256],8454:[[99,47,117],256],8455:[[400],256],8457:[[176,70],256],8458:[[103],256],8459:[[72],256],8460:[[72],256],8461:[[72],256],8462:[[104],256],8463:[[295],256],8464:[[73],256],8465:[[73],256],8466:[[76],256],8467:[[108],256],8469:[[78],256],8470:[[78,111],256],8473:[[80],256],8474:[[81],256],8475:[[82],256],8476:[[82],256],8477:[[82],256],8480:[[83,77],256],8481:[[84,69,76],256],8482:[[84,77],256],8484:[[90],256],8486:[[937]],8488:[[90],256],8490:[[75]],8491:[[197]],8492:[[66],256],8493:[[67],256],8495:[[101],256],8496:[[69],256],8497:[[70],256],8499:[[77],256],8500:[[111],256],8501:[[1488],256],8502:[[1489],256],8503:[[1490],256],8504:[[1491],256],8505:[[105],256],8507:[[70,65,88],256],8508:[[960],256],8509:[[947],256],8510:[[915],256],8511:[[928],256],8512:[[8721],256],8517:[[68],256],8518:[[100],256],8519:[[101],256],8520:[[105],256],8521:[[106],256],8528:[[49,8260,55],256],8529:[[49,8260,57],256],8530:[[49,8260,49,48],256],8531:[[49,8260,51],256],8532:[[50,8260,51],256],8533:[[49,8260,53],256],8534:[[50,8260,53],256],8535:[[51,8260,53],256],8536:[[52,8260,53],256],8537:[[49,8260,54],256],8538:[[53,8260,54],256],8539:[[49,8260,56],256],8540:[[51,8260,56],256],8541:[[53,8260,56],256],8542:[[55,8260,56],256],8543:[[49,8260],256],8544:[[73],256],8545:[[73,73],256],8546:[[73,73,73],256],8547:[[73,86],256],8548:[[86],256],8549:[[86,73],256],8550:[[86,73,73],256],8551:[[86,73,73,73],256],8552:[[73,88],256],8553:[[88],256],8554:[[88,73],256],8555:[[88,73,73],256],8556:[[76],256],8557:[[67],256],8558:[[68],256],8559:[[77],256],8560:[[105],256],8561:[[105,105],256],8562:[[105,105,105],256],8563:[[105,118],256],8564:[[118],256],8565:[[118,105],256],8566:[[118,105,105],256],8567:[[118,105,105,105],256],8568:[[105,120],256],8569:[[120],256],8570:[[120,105],256],8571:[[120,105,105],256],8572:[[108],256],8573:[[99],256],8574:[[100],256],8575:[[109],256],8585:[[48,8260,51],256],8592:[,,{824:8602}],8594:[,,{824:8603}],8596:[,,{824:8622}],8602:[[8592,824]],8603:[[8594,824]],8622:[[8596,824]],8653:[[8656,824]],8654:[[8660,824]],8655:[[8658,824]],8656:[,,{824:8653}],8658:[,,{824:8655}],8660:[,,{824:8654}]},\n8704:{8707:[,,{824:8708}],8708:[[8707,824]],8712:[,,{824:8713}],8713:[[8712,824]],8715:[,,{824:8716}],8716:[[8715,824]],8739:[,,{824:8740}],8740:[[8739,824]],8741:[,,{824:8742}],8742:[[8741,824]],8748:[[8747,8747],256],8749:[[8747,8747,8747],256],8751:[[8750,8750],256],8752:[[8750,8750,8750],256],8764:[,,{824:8769}],8769:[[8764,824]],8771:[,,{824:8772}],8772:[[8771,824]],8773:[,,{824:8775}],8775:[[8773,824]],8776:[,,{824:8777}],8777:[[8776,824]],8781:[,,{824:8813}],8800:[[61,824]],8801:[,,{824:8802}],8802:[[8801,824]],8804:[,,{824:8816}],8805:[,,{824:8817}],8813:[[8781,824]],8814:[[60,824]],8815:[[62,824]],8816:[[8804,824]],8817:[[8805,824]],8818:[,,{824:8820}],8819:[,,{824:8821}],8820:[[8818,824]],8821:[[8819,824]],8822:[,,{824:8824}],8823:[,,{824:8825}],8824:[[8822,824]],8825:[[8823,824]],8826:[,,{824:8832}],8827:[,,{824:8833}],8828:[,,{824:8928}],8829:[,,{824:8929}],8832:[[8826,824]],8833:[[8827,824]],8834:[,,{824:8836}],8835:[,,{824:8837}],8836:[[8834,824]],8837:[[8835,824]],8838:[,,{824:8840}],8839:[,,{824:8841}],8840:[[8838,824]],8841:[[8839,824]],8849:[,,{824:8930}],8850:[,,{824:8931}],8866:[,,{824:8876}],8872:[,,{824:8877}],8873:[,,{824:8878}],8875:[,,{824:8879}],8876:[[8866,824]],8877:[[8872,824]],8878:[[8873,824]],8879:[[8875,824]],8882:[,,{824:8938}],8883:[,,{824:8939}],8884:[,,{824:8940}],8885:[,,{824:8941}],8928:[[8828,824]],8929:[[8829,824]],8930:[[8849,824]],8931:[[8850,824]],8938:[[8882,824]],8939:[[8883,824]],8940:[[8884,824]],8941:[[8885,824]]},\n8960:{9001:[[12296]],9002:[[12297]]},\n9216:{9312:[[49],256],9313:[[50],256],9314:[[51],256],9315:[[52],256],9316:[[53],256],9317:[[54],256],9318:[[55],256],9319:[[56],256],9320:[[57],256],9321:[[49,48],256],9322:[[49,49],256],9323:[[49,50],256],9324:[[49,51],256],9325:[[49,52],256],9326:[[49,53],256],9327:[[49,54],256],9328:[[49,55],256],9329:[[49,56],256],9330:[[49,57],256],9331:[[50,48],256],9332:[[40,49,41],256],9333:[[40,50,41],256],9334:[[40,51,41],256],9335:[[40,52,41],256],9336:[[40,53,41],256],9337:[[40,54,41],256],9338:[[40,55,41],256],9339:[[40,56,41],256],9340:[[40,57,41],256],9341:[[40,49,48,41],256],9342:[[40,49,49,41],256],9343:[[40,49,50,41],256],9344:[[40,49,51,41],256],9345:[[40,49,52,41],256],9346:[[40,49,53,41],256],9347:[[40,49,54,41],256],9348:[[40,49,55,41],256],9349:[[40,49,56,41],256],9350:[[40,49,57,41],256],9351:[[40,50,48,41],256],9352:[[49,46],256],9353:[[50,46],256],9354:[[51,46],256],9355:[[52,46],256],9356:[[53,46],256],9357:[[54,46],256],9358:[[55,46],256],9359:[[56,46],256],9360:[[57,46],256],9361:[[49,48,46],256],9362:[[49,49,46],256],9363:[[49,50,46],256],9364:[[49,51,46],256],9365:[[49,52,46],256],9366:[[49,53,46],256],9367:[[49,54,46],256],9368:[[49,55,46],256],9369:[[49,56,46],256],9370:[[49,57,46],256],9371:[[50,48,46],256],9372:[[40,97,41],256],9373:[[40,98,41],256],9374:[[40,99,41],256],9375:[[40,100,41],256],9376:[[40,101,41],256],9377:[[40,102,41],256],9378:[[40,103,41],256],9379:[[40,104,41],256],9380:[[40,105,41],256],9381:[[40,106,41],256],9382:[[40,107,41],256],9383:[[40,108,41],256],9384:[[40,109,41],256],9385:[[40,110,41],256],9386:[[40,111,41],256],9387:[[40,112,41],256],9388:[[40,113,41],256],9389:[[40,114,41],256],9390:[[40,115,41],256],9391:[[40,116,41],256],9392:[[40,117,41],256],9393:[[40,118,41],256],9394:[[40,119,41],256],9395:[[40,120,41],256],9396:[[40,121,41],256],9397:[[40,122,41],256],9398:[[65],256],9399:[[66],256],9400:[[67],256],9401:[[68],256],9402:[[69],256],9403:[[70],256],9404:[[71],256],9405:[[72],256],9406:[[73],256],9407:[[74],256],9408:[[75],256],9409:[[76],256],9410:[[77],256],9411:[[78],256],9412:[[79],256],9413:[[80],256],9414:[[81],256],9415:[[82],256],9416:[[83],256],9417:[[84],256],9418:[[85],256],9419:[[86],256],9420:[[87],256],9421:[[88],256],9422:[[89],256],9423:[[90],256],9424:[[97],256],9425:[[98],256],9426:[[99],256],9427:[[100],256],9428:[[101],256],9429:[[102],256],9430:[[103],256],9431:[[104],256],9432:[[105],256],9433:[[106],256],9434:[[107],256],9435:[[108],256],9436:[[109],256],9437:[[110],256],9438:[[111],256],9439:[[112],256],9440:[[113],256],9441:[[114],256],9442:[[115],256],9443:[[116],256],9444:[[117],256],9445:[[118],256],9446:[[119],256],9447:[[120],256],9448:[[121],256],9449:[[122],256],9450:[[48],256]},\n10752:{10764:[[8747,8747,8747,8747],256],10868:[[58,58,61],256],10869:[[61,61],256],10870:[[61,61,61],256],10972:[[10973,824],512]},\n11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]},\n11520:{11631:[[11617],256],11647:[,9],11744:[,230],11745:[,230],11746:[,230],11747:[,230],11748:[,230],11749:[,230],11750:[,230],11751:[,230],11752:[,230],11753:[,230],11754:[,230],11755:[,230],11756:[,230],11757:[,230],11758:[,230],11759:[,230],11760:[,230],11761:[,230],11762:[,230],11763:[,230],11764:[,230],11765:[,230],11766:[,230],11767:[,230],11768:[,230],11769:[,230],11770:[,230],11771:[,230],11772:[,230],11773:[,230],11774:[,230],11775:[,230]},\n11776:{11935:[[27597],256],12019:[[40863],256]},\n12032:{12032:[[19968],256],12033:[[20008],256],12034:[[20022],256],12035:[[20031],256],12036:[[20057],256],12037:[[20101],256],12038:[[20108],256],12039:[[20128],256],12040:[[20154],256],12041:[[20799],256],12042:[[20837],256],12043:[[20843],256],12044:[[20866],256],12045:[[20886],256],12046:[[20907],256],12047:[[20960],256],12048:[[20981],256],12049:[[20992],256],12050:[[21147],256],12051:[[21241],256],12052:[[21269],256],12053:[[21274],256],12054:[[21304],256],12055:[[21313],256],12056:[[21340],256],12057:[[21353],256],12058:[[21378],256],12059:[[21430],256],12060:[[21448],256],12061:[[21475],256],12062:[[22231],256],12063:[[22303],256],12064:[[22763],256],12065:[[22786],256],12066:[[22794],256],12067:[[22805],256],12068:[[22823],256],12069:[[22899],256],12070:[[23376],256],12071:[[23424],256],12072:[[23544],256],12073:[[23567],256],12074:[[23586],256],12075:[[23608],256],12076:[[23662],256],12077:[[23665],256],12078:[[24027],256],12079:[[24037],256],12080:[[24049],256],12081:[[24062],256],12082:[[24178],256],12083:[[24186],256],12084:[[24191],256],12085:[[24308],256],12086:[[24318],256],12087:[[24331],256],12088:[[24339],256],12089:[[24400],256],12090:[[24417],256],12091:[[24435],256],12092:[[24515],256],12093:[[25096],256],12094:[[25142],256],12095:[[25163],256],12096:[[25903],256],12097:[[25908],256],12098:[[25991],256],12099:[[26007],256],12100:[[26020],256],12101:[[26041],256],12102:[[26080],256],12103:[[26085],256],12104:[[26352],256],12105:[[26376],256],12106:[[26408],256],12107:[[27424],256],12108:[[27490],256],12109:[[27513],256],12110:[[27571],256],12111:[[27595],256],12112:[[27604],256],12113:[[27611],256],12114:[[27663],256],12115:[[27668],256],12116:[[27700],256],12117:[[28779],256],12118:[[29226],256],12119:[[29238],256],12120:[[29243],256],12121:[[29247],256],12122:[[29255],256],12123:[[29273],256],12124:[[29275],256],12125:[[29356],256],12126:[[29572],256],12127:[[29577],256],12128:[[29916],256],12129:[[29926],256],12130:[[29976],256],12131:[[29983],256],12132:[[29992],256],12133:[[30000],256],12134:[[30091],256],12135:[[30098],256],12136:[[30326],256],12137:[[30333],256],12138:[[30382],256],12139:[[30399],256],12140:[[30446],256],12141:[[30683],256],12142:[[30690],256],12143:[[30707],256],12144:[[31034],256],12145:[[31160],256],12146:[[31166],256],12147:[[31348],256],12148:[[31435],256],12149:[[31481],256],12150:[[31859],256],12151:[[31992],256],12152:[[32566],256],12153:[[32593],256],12154:[[32650],256],12155:[[32701],256],12156:[[32769],256],12157:[[32780],256],12158:[[32786],256],12159:[[32819],256],12160:[[32895],256],12161:[[32905],256],12162:[[33251],256],12163:[[33258],256],12164:[[33267],256],12165:[[33276],256],12166:[[33292],256],12167:[[33307],256],12168:[[33311],256],12169:[[33390],256],12170:[[33394],256],12171:[[33400],256],12172:[[34381],256],12173:[[34411],256],12174:[[34880],256],12175:[[34892],256],12176:[[34915],256],12177:[[35198],256],12178:[[35211],256],12179:[[35282],256],12180:[[35328],256],12181:[[35895],256],12182:[[35910],256],12183:[[35925],256],12184:[[35960],256],12185:[[35997],256],12186:[[36196],256],12187:[[36208],256],12188:[[36275],256],12189:[[36523],256],12190:[[36554],256],12191:[[36763],256],12192:[[36784],256],12193:[[36789],256],12194:[[37009],256],12195:[[37193],256],12196:[[37318],256],12197:[[37324],256],12198:[[37329],256],12199:[[38263],256],12200:[[38272],256],12201:[[38428],256],12202:[[38582],256],12203:[[38585],256],12204:[[38632],256],12205:[[38737],256],12206:[[38750],256],12207:[[38754],256],12208:[[38761],256],12209:[[38859],256],12210:[[38893],256],12211:[[38899],256],12212:[[38913],256],12213:[[39080],256],12214:[[39131],256],12215:[[39135],256],12216:[[39318],256],12217:[[39321],256],12218:[[39340],256],12219:[[39592],256],12220:[[39640],256],12221:[[39647],256],12222:[[39717],256],12223:[[39727],256],12224:[[39730],256],12225:[[39740],256],12226:[[39770],256],12227:[[40165],256],12228:[[40565],256],12229:[[40575],256],12230:[[40613],256],12231:[[40635],256],12232:[[40643],256],12233:[[40653],256],12234:[[40657],256],12235:[[40697],256],12236:[[40701],256],12237:[[40718],256],12238:[[40723],256],12239:[[40736],256],12240:[[40763],256],12241:[[40778],256],12242:[[40786],256],12243:[[40845],256],12244:[[40860],256],12245:[[40864],256]},\n12288:{12288:[[32],256],12330:[,218],12331:[,228],12332:[,232],12333:[,222],12334:[,224],12335:[,224],12342:[[12306],256],12344:[[21313],256],12345:[[21316],256],12346:[[21317],256],12358:[,,{12441:12436}],12363:[,,{12441:12364}],12364:[[12363,12441]],12365:[,,{12441:12366}],12366:[[12365,12441]],12367:[,,{12441:12368}],12368:[[12367,12441]],12369:[,,{12441:12370}],12370:[[12369,12441]],12371:[,,{12441:12372}],12372:[[12371,12441]],12373:[,,{12441:12374}],12374:[[12373,12441]],12375:[,,{12441:12376}],12376:[[12375,12441]],12377:[,,{12441:12378}],12378:[[12377,12441]],12379:[,,{12441:12380}],12380:[[12379,12441]],12381:[,,{12441:12382}],12382:[[12381,12441]],12383:[,,{12441:12384}],12384:[[12383,12441]],12385:[,,{12441:12386}],12386:[[12385,12441]],12388:[,,{12441:12389}],12389:[[12388,12441]],12390:[,,{12441:12391}],12391:[[12390,12441]],12392:[,,{12441:12393}],12393:[[12392,12441]],12399:[,,{12441:12400,12442:12401}],12400:[[12399,12441]],12401:[[12399,12442]],12402:[,,{12441:12403,12442:12404}],12403:[[12402,12441]],12404:[[12402,12442]],12405:[,,{12441:12406,12442:12407}],12406:[[12405,12441]],12407:[[12405,12442]],12408:[,,{12441:12409,12442:12410}],12409:[[12408,12441]],12410:[[12408,12442]],12411:[,,{12441:12412,12442:12413}],12412:[[12411,12441]],12413:[[12411,12442]],12436:[[12358,12441]],12441:[,8],12442:[,8],12443:[[32,12441],256],12444:[[32,12442],256],12445:[,,{12441:12446}],12446:[[12445,12441]],12447:[[12424,12426],256],12454:[,,{12441:12532}],12459:[,,{12441:12460}],12460:[[12459,12441]],12461:[,,{12441:12462}],12462:[[12461,12441]],12463:[,,{12441:12464}],12464:[[12463,12441]],12465:[,,{12441:12466}],12466:[[12465,12441]],12467:[,,{12441:12468}],12468:[[12467,12441]],12469:[,,{12441:12470}],12470:[[12469,12441]],12471:[,,{12441:12472}],12472:[[12471,12441]],12473:[,,{12441:12474}],12474:[[12473,12441]],12475:[,,{12441:12476}],12476:[[12475,12441]],12477:[,,{12441:12478}],12478:[[12477,12441]],12479:[,,{12441:12480}],12480:[[12479,12441]],12481:[,,{12441:12482}],12482:[[12481,12441]],12484:[,,{12441:12485}],12485:[[12484,12441]],12486:[,,{12441:12487}],12487:[[12486,12441]],12488:[,,{12441:12489}],12489:[[12488,12441]],12495:[,,{12441:12496,12442:12497}],12496:[[12495,12441]],12497:[[12495,12442]],12498:[,,{12441:12499,12442:12500}],12499:[[12498,12441]],12500:[[12498,12442]],12501:[,,{12441:12502,12442:12503}],12502:[[12501,12441]],12503:[[12501,12442]],12504:[,,{12441:12505,12442:12506}],12505:[[12504,12441]],12506:[[12504,12442]],12507:[,,{12441:12508,12442:12509}],12508:[[12507,12441]],12509:[[12507,12442]],12527:[,,{12441:12535}],12528:[,,{12441:12536}],12529:[,,{12441:12537}],12530:[,,{12441:12538}],12532:[[12454,12441]],12535:[[12527,12441]],12536:[[12528,12441]],12537:[[12529,12441]],12538:[[12530,12441]],12541:[,,{12441:12542}],12542:[[12541,12441]],12543:[[12467,12488],256]},\n12544:{12593:[[4352],256],12594:[[4353],256],12595:[[4522],256],12596:[[4354],256],12597:[[4524],256],12598:[[4525],256],12599:[[4355],256],12600:[[4356],256],12601:[[4357],256],12602:[[4528],256],12603:[[4529],256],12604:[[4530],256],12605:[[4531],256],12606:[[4532],256],12607:[[4533],256],12608:[[4378],256],12609:[[4358],256],12610:[[4359],256],12611:[[4360],256],12612:[[4385],256],12613:[[4361],256],12614:[[4362],256],12615:[[4363],256],12616:[[4364],256],12617:[[4365],256],12618:[[4366],256],12619:[[4367],256],12620:[[4368],256],12621:[[4369],256],12622:[[4370],256],12623:[[4449],256],12624:[[4450],256],12625:[[4451],256],12626:[[4452],256],12627:[[4453],256],12628:[[4454],256],12629:[[4455],256],12630:[[4456],256],12631:[[4457],256],12632:[[4458],256],12633:[[4459],256],12634:[[4460],256],12635:[[4461],256],12636:[[4462],256],12637:[[4463],256],12638:[[4464],256],12639:[[4465],256],12640:[[4466],256],12641:[[4467],256],12642:[[4468],256],12643:[[4469],256],12644:[[4448],256],12645:[[4372],256],12646:[[4373],256],12647:[[4551],256],12648:[[4552],256],12649:[[4556],256],12650:[[4558],256],12651:[[4563],256],12652:[[4567],256],12653:[[4569],256],12654:[[4380],256],12655:[[4573],256],12656:[[4575],256],12657:[[4381],256],12658:[[4382],256],12659:[[4384],256],12660:[[4386],256],12661:[[4387],256],12662:[[4391],256],12663:[[4393],256],12664:[[4395],256],12665:[[4396],256],12666:[[4397],256],12667:[[4398],256],12668:[[4399],256],12669:[[4402],256],12670:[[4406],256],12671:[[4416],256],12672:[[4423],256],12673:[[4428],256],12674:[[4593],256],12675:[[4594],256],12676:[[4439],256],12677:[[4440],256],12678:[[4441],256],12679:[[4484],256],12680:[[4485],256],12681:[[4488],256],12682:[[4497],256],12683:[[4498],256],12684:[[4500],256],12685:[[4510],256],12686:[[4513],256],12690:[[19968],256],12691:[[20108],256],12692:[[19977],256],12693:[[22235],256],12694:[[19978],256],12695:[[20013],256],12696:[[19979],256],12697:[[30002],256],12698:[[20057],256],12699:[[19993],256],12700:[[19969],256],12701:[[22825],256],12702:[[22320],256],12703:[[20154],256]},\n12800:{12800:[[40,4352,41],256],12801:[[40,4354,41],256],12802:[[40,4355,41],256],12803:[[40,4357,41],256],12804:[[40,4358,41],256],12805:[[40,4359,41],256],12806:[[40,4361,41],256],12807:[[40,4363,41],256],12808:[[40,4364,41],256],12809:[[40,4366,41],256],12810:[[40,4367,41],256],12811:[[40,4368,41],256],12812:[[40,4369,41],256],12813:[[40,4370,41],256],12814:[[40,4352,4449,41],256],12815:[[40,4354,4449,41],256],12816:[[40,4355,4449,41],256],12817:[[40,4357,4449,41],256],12818:[[40,4358,4449,41],256],12819:[[40,4359,4449,41],256],12820:[[40,4361,4449,41],256],12821:[[40,4363,4449,41],256],12822:[[40,4364,4449,41],256],12823:[[40,4366,4449,41],256],12824:[[40,4367,4449,41],256],12825:[[40,4368,4449,41],256],12826:[[40,4369,4449,41],256],12827:[[40,4370,4449,41],256],12828:[[40,4364,4462,41],256],12829:[[40,4363,4457,4364,4453,4523,41],256],12830:[[40,4363,4457,4370,4462,41],256],12832:[[40,19968,41],256],12833:[[40,20108,41],256],12834:[[40,19977,41],256],12835:[[40,22235,41],256],12836:[[40,20116,41],256],12837:[[40,20845,41],256],12838:[[40,19971,41],256],12839:[[40,20843,41],256],12840:[[40,20061,41],256],12841:[[40,21313,41],256],12842:[[40,26376,41],256],12843:[[40,28779,41],256],12844:[[40,27700,41],256],12845:[[40,26408,41],256],12846:[[40,37329,41],256],12847:[[40,22303,41],256],12848:[[40,26085,41],256],12849:[[40,26666,41],256],12850:[[40,26377,41],256],12851:[[40,31038,41],256],12852:[[40,21517,41],256],12853:[[40,29305,41],256],12854:[[40,36001,41],256],12855:[[40,31069,41],256],12856:[[40,21172,41],256],12857:[[40,20195,41],256],12858:[[40,21628,41],256],12859:[[40,23398,41],256],12860:[[40,30435,41],256],12861:[[40,20225,41],256],12862:[[40,36039,41],256],12863:[[40,21332,41],256],12864:[[40,31085,41],256],12865:[[40,20241,41],256],12866:[[40,33258,41],256],12867:[[40,33267,41],256],12868:[[21839],256],12869:[[24188],256],12870:[[25991],256],12871:[[31631],256],12880:[[80,84,69],256],12881:[[50,49],256],12882:[[50,50],256],12883:[[50,51],256],12884:[[50,52],256],12885:[[50,53],256],12886:[[50,54],256],12887:[[50,55],256],12888:[[50,56],256],12889:[[50,57],256],12890:[[51,48],256],12891:[[51,49],256],12892:[[51,50],256],12893:[[51,51],256],12894:[[51,52],256],12895:[[51,53],256],12896:[[4352],256],12897:[[4354],256],12898:[[4355],256],12899:[[4357],256],12900:[[4358],256],12901:[[4359],256],12902:[[4361],256],12903:[[4363],256],12904:[[4364],256],12905:[[4366],256],12906:[[4367],256],12907:[[4368],256],12908:[[4369],256],12909:[[4370],256],12910:[[4352,4449],256],12911:[[4354,4449],256],12912:[[4355,4449],256],12913:[[4357,4449],256],12914:[[4358,4449],256],12915:[[4359,4449],256],12916:[[4361,4449],256],12917:[[4363,4449],256],12918:[[4364,4449],256],12919:[[4366,4449],256],12920:[[4367,4449],256],12921:[[4368,4449],256],12922:[[4369,4449],256],12923:[[4370,4449],256],12924:[[4366,4449,4535,4352,4457],256],12925:[[4364,4462,4363,4468],256],12926:[[4363,4462],256],12928:[[19968],256],12929:[[20108],256],12930:[[19977],256],12931:[[22235],256],12932:[[20116],256],12933:[[20845],256],12934:[[19971],256],12935:[[20843],256],12936:[[20061],256],12937:[[21313],256],12938:[[26376],256],12939:[[28779],256],12940:[[27700],256],12941:[[26408],256],12942:[[37329],256],12943:[[22303],256],12944:[[26085],256],12945:[[26666],256],12946:[[26377],256],12947:[[31038],256],12948:[[21517],256],12949:[[29305],256],12950:[[36001],256],12951:[[31069],256],12952:[[21172],256],12953:[[31192],256],12954:[[30007],256],12955:[[22899],256],12956:[[36969],256],12957:[[20778],256],12958:[[21360],256],12959:[[27880],256],12960:[[38917],256],12961:[[20241],256],12962:[[20889],256],12963:[[27491],256],12964:[[19978],256],12965:[[20013],256],12966:[[19979],256],12967:[[24038],256],12968:[[21491],256],12969:[[21307],256],12970:[[23447],256],12971:[[23398],256],12972:[[30435],256],12973:[[20225],256],12974:[[36039],256],12975:[[21332],256],12976:[[22812],256],12977:[[51,54],256],12978:[[51,55],256],12979:[[51,56],256],12980:[[51,57],256],12981:[[52,48],256],12982:[[52,49],256],12983:[[52,50],256],12984:[[52,51],256],12985:[[52,52],256],12986:[[52,53],256],12987:[[52,54],256],12988:[[52,55],256],12989:[[52,56],256],12990:[[52,57],256],12991:[[53,48],256],12992:[[49,26376],256],12993:[[50,26376],256],12994:[[51,26376],256],12995:[[52,26376],256],12996:[[53,26376],256],12997:[[54,26376],256],12998:[[55,26376],256],12999:[[56,26376],256],13000:[[57,26376],256],13001:[[49,48,26376],256],13002:[[49,49,26376],256],13003:[[49,50,26376],256],13004:[[72,103],256],13005:[[101,114,103],256],13006:[[101,86],256],13007:[[76,84,68],256],13008:[[12450],256],13009:[[12452],256],13010:[[12454],256],13011:[[12456],256],13012:[[12458],256],13013:[[12459],256],13014:[[12461],256],13015:[[12463],256],13016:[[12465],256],13017:[[12467],256],13018:[[12469],256],13019:[[12471],256],13020:[[12473],256],13021:[[12475],256],13022:[[12477],256],13023:[[12479],256],13024:[[12481],256],13025:[[12484],256],13026:[[12486],256],13027:[[12488],256],13028:[[12490],256],13029:[[12491],256],13030:[[12492],256],13031:[[12493],256],13032:[[12494],256],13033:[[12495],256],13034:[[12498],256],13035:[[12501],256],13036:[[12504],256],13037:[[12507],256],13038:[[12510],256],13039:[[12511],256],13040:[[12512],256],13041:[[12513],256],13042:[[12514],256],13043:[[12516],256],13044:[[12518],256],13045:[[12520],256],13046:[[12521],256],13047:[[12522],256],13048:[[12523],256],13049:[[12524],256],13050:[[12525],256],13051:[[12527],256],13052:[[12528],256],13053:[[12529],256],13054:[[12530],256]},\n13056:{13056:[[12450,12497,12540,12488],256],13057:[[12450,12523,12501,12449],256],13058:[[12450,12531,12506,12450],256],13059:[[12450,12540,12523],256],13060:[[12452,12491,12531,12464],256],13061:[[12452,12531,12481],256],13062:[[12454,12457,12531],256],13063:[[12456,12473,12463,12540,12489],256],13064:[[12456,12540,12459,12540],256],13065:[[12458,12531,12473],256],13066:[[12458,12540,12512],256],13067:[[12459,12452,12522],256],13068:[[12459,12521,12483,12488],256],13069:[[12459,12525,12522,12540],256],13070:[[12460,12525,12531],256],13071:[[12460,12531,12510],256],13072:[[12462,12460],256],13073:[[12462,12491,12540],256],13074:[[12461,12517,12522,12540],256],13075:[[12462,12523,12480,12540],256],13076:[[12461,12525],256],13077:[[12461,12525,12464,12521,12512],256],13078:[[12461,12525,12513,12540,12488,12523],256],13079:[[12461,12525,12527,12483,12488],256],13080:[[12464,12521,12512],256],13081:[[12464,12521,12512,12488,12531],256],13082:[[12463,12523,12476,12452,12525],256],13083:[[12463,12525,12540,12493],256],13084:[[12465,12540,12473],256],13085:[[12467,12523,12490],256],13086:[[12467,12540,12509],256],13087:[[12469,12452,12463,12523],256],13088:[[12469,12531,12481,12540,12512],256],13089:[[12471,12522,12531,12464],256],13090:[[12475,12531,12481],256],13091:[[12475,12531,12488],256],13092:[[12480,12540,12473],256],13093:[[12487,12471],256],13094:[[12489,12523],256],13095:[[12488,12531],256],13096:[[12490,12494],256],13097:[[12494,12483,12488],256],13098:[[12495,12452,12484],256],13099:[[12497,12540,12475,12531,12488],256],13100:[[12497,12540,12484],256],13101:[[12496,12540,12524,12523],256],13102:[[12500,12450,12473,12488,12523],256],13103:[[12500,12463,12523],256],13104:[[12500,12467],256],13105:[[12499,12523],256],13106:[[12501,12449,12521,12483,12489],256],13107:[[12501,12451,12540,12488],256],13108:[[12502,12483,12471,12455,12523],256],13109:[[12501,12521,12531],256],13110:[[12504,12463,12479,12540,12523],256],13111:[[12506,12477],256],13112:[[12506,12491,12498],256],13113:[[12504,12523,12484],256],13114:[[12506,12531,12473],256],13115:[[12506,12540,12472],256],13116:[[12505,12540,12479],256],13117:[[12509,12452,12531,12488],256],13118:[[12508,12523,12488],256],13119:[[12507,12531],256],13120:[[12509,12531,12489],256],13121:[[12507,12540,12523],256],13122:[[12507,12540,12531],256],13123:[[12510,12452,12463,12525],256],13124:[[12510,12452,12523],256],13125:[[12510,12483,12495],256],13126:[[12510,12523,12463],256],13127:[[12510,12531,12471,12519,12531],256],13128:[[12511,12463,12525,12531],256],13129:[[12511,12522],256],13130:[[12511,12522,12496,12540,12523],256],13131:[[12513,12460],256],13132:[[12513,12460,12488,12531],256],13133:[[12513,12540,12488,12523],256],13134:[[12516,12540,12489],256],13135:[[12516,12540,12523],256],13136:[[12518,12450,12531],256],13137:[[12522,12483,12488,12523],256],13138:[[12522,12521],256],13139:[[12523,12500,12540],256],13140:[[12523,12540,12502,12523],256],13141:[[12524,12512],256],13142:[[12524,12531,12488,12466,12531],256],13143:[[12527,12483,12488],256],13144:[[48,28857],256],13145:[[49,28857],256],13146:[[50,28857],256],13147:[[51,28857],256],13148:[[52,28857],256],13149:[[53,28857],256],13150:[[54,28857],256],13151:[[55,28857],256],13152:[[56,28857],256],13153:[[57,28857],256],13154:[[49,48,28857],256],13155:[[49,49,28857],256],13156:[[49,50,28857],256],13157:[[49,51,28857],256],13158:[[49,52,28857],256],13159:[[49,53,28857],256],13160:[[49,54,28857],256],13161:[[49,55,28857],256],13162:[[49,56,28857],256],13163:[[49,57,28857],256],13164:[[50,48,28857],256],13165:[[50,49,28857],256],13166:[[50,50,28857],256],13167:[[50,51,28857],256],13168:[[50,52,28857],256],13169:[[104,80,97],256],13170:[[100,97],256],13171:[[65,85],256],13172:[[98,97,114],256],13173:[[111,86],256],13174:[[112,99],256],13175:[[100,109],256],13176:[[100,109,178],256],13177:[[100,109,179],256],13178:[[73,85],256],13179:[[24179,25104],256],13180:[[26157,21644],256],13181:[[22823,27491],256],13182:[[26126,27835],256],13183:[[26666,24335,20250,31038],256],13184:[[112,65],256],13185:[[110,65],256],13186:[[956,65],256],13187:[[109,65],256],13188:[[107,65],256],13189:[[75,66],256],13190:[[77,66],256],13191:[[71,66],256],13192:[[99,97,108],256],13193:[[107,99,97,108],256],13194:[[112,70],256],13195:[[110,70],256],13196:[[956,70],256],13197:[[956,103],256],13198:[[109,103],256],13199:[[107,103],256],13200:[[72,122],256],13201:[[107,72,122],256],13202:[[77,72,122],256],13203:[[71,72,122],256],13204:[[84,72,122],256],13205:[[956,8467],256],13206:[[109,8467],256],13207:[[100,8467],256],13208:[[107,8467],256],13209:[[102,109],256],13210:[[110,109],256],13211:[[956,109],256],13212:[[109,109],256],13213:[[99,109],256],13214:[[107,109],256],13215:[[109,109,178],256],13216:[[99,109,178],256],13217:[[109,178],256],13218:[[107,109,178],256],13219:[[109,109,179],256],13220:[[99,109,179],256],13221:[[109,179],256],13222:[[107,109,179],256],13223:[[109,8725,115],256],13224:[[109,8725,115,178],256],13225:[[80,97],256],13226:[[107,80,97],256],13227:[[77,80,97],256],13228:[[71,80,97],256],13229:[[114,97,100],256],13230:[[114,97,100,8725,115],256],13231:[[114,97,100,8725,115,178],256],13232:[[112,115],256],13233:[[110,115],256],13234:[[956,115],256],13235:[[109,115],256],13236:[[112,86],256],13237:[[110,86],256],13238:[[956,86],256],13239:[[109,86],256],13240:[[107,86],256],13241:[[77,86],256],13242:[[112,87],256],13243:[[110,87],256],13244:[[956,87],256],13245:[[109,87],256],13246:[[107,87],256],13247:[[77,87],256],13248:[[107,937],256],13249:[[77,937],256],13250:[[97,46,109,46],256],13251:[[66,113],256],13252:[[99,99],256],13253:[[99,100],256],13254:[[67,8725,107,103],256],13255:[[67,111,46],256],13256:[[100,66],256],13257:[[71,121],256],13258:[[104,97],256],13259:[[72,80],256],13260:[[105,110],256],13261:[[75,75],256],13262:[[75,77],256],13263:[[107,116],256],13264:[[108,109],256],13265:[[108,110],256],13266:[[108,111,103],256],13267:[[108,120],256],13268:[[109,98],256],13269:[[109,105,108],256],13270:[[109,111,108],256],13271:[[80,72],256],13272:[[112,46,109,46],256],13273:[[80,80,77],256],13274:[[80,82],256],13275:[[115,114],256],13276:[[83,118],256],13277:[[87,98],256],13278:[[86,8725,109],256],13279:[[65,8725,109],256],13280:[[49,26085],256],13281:[[50,26085],256],13282:[[51,26085],256],13283:[[52,26085],256],13284:[[53,26085],256],13285:[[54,26085],256],13286:[[55,26085],256],13287:[[56,26085],256],13288:[[57,26085],256],13289:[[49,48,26085],256],13290:[[49,49,26085],256],13291:[[49,50,26085],256],13292:[[49,51,26085],256],13293:[[49,52,26085],256],13294:[[49,53,26085],256],13295:[[49,54,26085],256],13296:[[49,55,26085],256],13297:[[49,56,26085],256],13298:[[49,57,26085],256],13299:[[50,48,26085],256],13300:[[50,49,26085],256],13301:[[50,50,26085],256],13302:[[50,51,26085],256],13303:[[50,52,26085],256],13304:[[50,53,26085],256],13305:[[50,54,26085],256],13306:[[50,55,26085],256],13307:[[50,56,26085],256],13308:[[50,57,26085],256],13309:[[51,48,26085],256],13310:[[51,49,26085],256],13311:[[103,97,108],256]},\n27136:{92912:[,1],92913:[,1],92914:[,1],92915:[,1],92916:[,1]},\n27392:{92976:[,230],92977:[,230],92978:[,230],92979:[,230],92980:[,230],92981:[,230],92982:[,230]},\n42496:{42607:[,230],42612:[,230],42613:[,230],42614:[,230],42615:[,230],42616:[,230],42617:[,230],42618:[,230],42619:[,230],42620:[,230],42621:[,230],42652:[[1098],256],42653:[[1100],256],42655:[,230],42736:[,230],42737:[,230]},\n42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]},\n43008:{43014:[,9],43204:[,9],43232:[,230],43233:[,230],43234:[,230],43235:[,230],43236:[,230],43237:[,230],43238:[,230],43239:[,230],43240:[,230],43241:[,230],43242:[,230],43243:[,230],43244:[,230],43245:[,230],43246:[,230],43247:[,230],43248:[,230],43249:[,230]},\n43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]},\n43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]},\n43776:{43868:[[42791],256],43869:[[43831],256],43870:[[619],256],43871:[[43858],256],44013:[,9]},\n48128:{113822:[,1]},\n53504:{119134:[[119127,119141],512],119135:[[119128,119141],512],119136:[[119135,119150],512],119137:[[119135,119151],512],119138:[[119135,119152],512],119139:[[119135,119153],512],119140:[[119135,119154],512],119141:[,216],119142:[,216],119143:[,1],119144:[,1],119145:[,1],119149:[,226],119150:[,216],119151:[,216],119152:[,216],119153:[,216],119154:[,216],119163:[,220],119164:[,220],119165:[,220],119166:[,220],119167:[,220],119168:[,220],119169:[,220],119170:[,220],119173:[,230],119174:[,230],119175:[,230],119176:[,230],119177:[,230],119178:[,220],119179:[,220],119210:[,230],119211:[,230],119212:[,230],119213:[,230],119227:[[119225,119141],512],119228:[[119226,119141],512],119229:[[119227,119150],512],119230:[[119228,119150],512],119231:[[119227,119151],512],119232:[[119228,119151],512]},\n53760:{119362:[,230],119363:[,230],119364:[,230]},\n54272:{119808:[[65],256],119809:[[66],256],119810:[[67],256],119811:[[68],256],119812:[[69],256],119813:[[70],256],119814:[[71],256],119815:[[72],256],119816:[[73],256],119817:[[74],256],119818:[[75],256],119819:[[76],256],119820:[[77],256],119821:[[78],256],119822:[[79],256],119823:[[80],256],119824:[[81],256],119825:[[82],256],119826:[[83],256],119827:[[84],256],119828:[[85],256],119829:[[86],256],119830:[[87],256],119831:[[88],256],119832:[[89],256],119833:[[90],256],119834:[[97],256],119835:[[98],256],119836:[[99],256],119837:[[100],256],119838:[[101],256],119839:[[102],256],119840:[[103],256],119841:[[104],256],119842:[[105],256],119843:[[106],256],119844:[[107],256],119845:[[108],256],119846:[[109],256],119847:[[110],256],119848:[[111],256],119849:[[112],256],119850:[[113],256],119851:[[114],256],119852:[[115],256],119853:[[116],256],119854:[[117],256],119855:[[118],256],119856:[[119],256],119857:[[120],256],119858:[[121],256],119859:[[122],256],119860:[[65],256],119861:[[66],256],119862:[[67],256],119863:[[68],256],119864:[[69],256],119865:[[70],256],119866:[[71],256],119867:[[72],256],119868:[[73],256],119869:[[74],256],119870:[[75],256],119871:[[76],256],119872:[[77],256],119873:[[78],256],119874:[[79],256],119875:[[80],256],119876:[[81],256],119877:[[82],256],119878:[[83],256],119879:[[84],256],119880:[[85],256],119881:[[86],256],119882:[[87],256],119883:[[88],256],119884:[[89],256],119885:[[90],256],119886:[[97],256],119887:[[98],256],119888:[[99],256],119889:[[100],256],119890:[[101],256],119891:[[102],256],119892:[[103],256],119894:[[105],256],119895:[[106],256],119896:[[107],256],119897:[[108],256],119898:[[109],256],119899:[[110],256],119900:[[111],256],119901:[[112],256],119902:[[113],256],119903:[[114],256],119904:[[115],256],119905:[[116],256],119906:[[117],256],119907:[[118],256],119908:[[119],256],119909:[[120],256],119910:[[121],256],119911:[[122],256],119912:[[65],256],119913:[[66],256],119914:[[67],256],119915:[[68],256],119916:[[69],256],119917:[[70],256],119918:[[71],256],119919:[[72],256],119920:[[73],256],119921:[[74],256],119922:[[75],256],119923:[[76],256],119924:[[77],256],119925:[[78],256],119926:[[79],256],119927:[[80],256],119928:[[81],256],119929:[[82],256],119930:[[83],256],119931:[[84],256],119932:[[85],256],119933:[[86],256],119934:[[87],256],119935:[[88],256],119936:[[89],256],119937:[[90],256],119938:[[97],256],119939:[[98],256],119940:[[99],256],119941:[[100],256],119942:[[101],256],119943:[[102],256],119944:[[103],256],119945:[[104],256],119946:[[105],256],119947:[[106],256],119948:[[107],256],119949:[[108],256],119950:[[109],256],119951:[[110],256],119952:[[111],256],119953:[[112],256],119954:[[113],256],119955:[[114],256],119956:[[115],256],119957:[[116],256],119958:[[117],256],119959:[[118],256],119960:[[119],256],119961:[[120],256],119962:[[121],256],119963:[[122],256],119964:[[65],256],119966:[[67],256],119967:[[68],256],119970:[[71],256],119973:[[74],256],119974:[[75],256],119977:[[78],256],119978:[[79],256],119979:[[80],256],119980:[[81],256],119982:[[83],256],119983:[[84],256],119984:[[85],256],119985:[[86],256],119986:[[87],256],119987:[[88],256],119988:[[89],256],119989:[[90],256],119990:[[97],256],119991:[[98],256],119992:[[99],256],119993:[[100],256],119995:[[102],256],119997:[[104],256],119998:[[105],256],119999:[[106],256],120000:[[107],256],120001:[[108],256],120002:[[109],256],120003:[[110],256],120005:[[112],256],120006:[[113],256],120007:[[114],256],120008:[[115],256],120009:[[116],256],120010:[[117],256],120011:[[118],256],120012:[[119],256],120013:[[120],256],120014:[[121],256],120015:[[122],256],120016:[[65],256],120017:[[66],256],120018:[[67],256],120019:[[68],256],120020:[[69],256],120021:[[70],256],120022:[[71],256],120023:[[72],256],120024:[[73],256],120025:[[74],256],120026:[[75],256],120027:[[76],256],120028:[[77],256],120029:[[78],256],120030:[[79],256],120031:[[80],256],120032:[[81],256],120033:[[82],256],120034:[[83],256],120035:[[84],256],120036:[[85],256],120037:[[86],256],120038:[[87],256],120039:[[88],256],120040:[[89],256],120041:[[90],256],120042:[[97],256],120043:[[98],256],120044:[[99],256],120045:[[100],256],120046:[[101],256],120047:[[102],256],120048:[[103],256],120049:[[104],256],120050:[[105],256],120051:[[106],256],120052:[[107],256],120053:[[108],256],120054:[[109],256],120055:[[110],256],120056:[[111],256],120057:[[112],256],120058:[[113],256],120059:[[114],256],120060:[[115],256],120061:[[116],256],120062:[[117],256],120063:[[118],256]},\n54528:{120064:[[119],256],120065:[[120],256],120066:[[121],256],120067:[[122],256],120068:[[65],256],120069:[[66],256],120071:[[68],256],120072:[[69],256],120073:[[70],256],120074:[[71],256],120077:[[74],256],120078:[[75],256],120079:[[76],256],120080:[[77],256],120081:[[78],256],120082:[[79],256],120083:[[80],256],120084:[[81],256],120086:[[83],256],120087:[[84],256],120088:[[85],256],120089:[[86],256],120090:[[87],256],120091:[[88],256],120092:[[89],256],120094:[[97],256],120095:[[98],256],120096:[[99],256],120097:[[100],256],120098:[[101],256],120099:[[102],256],120100:[[103],256],120101:[[104],256],120102:[[105],256],120103:[[106],256],120104:[[107],256],120105:[[108],256],120106:[[109],256],120107:[[110],256],120108:[[111],256],120109:[[112],256],120110:[[113],256],120111:[[114],256],120112:[[115],256],120113:[[116],256],120114:[[117],256],120115:[[118],256],120116:[[119],256],120117:[[120],256],120118:[[121],256],120119:[[122],256],120120:[[65],256],120121:[[66],256],120123:[[68],256],120124:[[69],256],120125:[[70],256],120126:[[71],256],120128:[[73],256],120129:[[74],256],120130:[[75],256],120131:[[76],256],120132:[[77],256],120134:[[79],256],120138:[[83],256],120139:[[84],256],120140:[[85],256],120141:[[86],256],120142:[[87],256],120143:[[88],256],120144:[[89],256],120146:[[97],256],120147:[[98],256],120148:[[99],256],120149:[[100],256],120150:[[101],256],120151:[[102],256],120152:[[103],256],120153:[[104],256],120154:[[105],256],120155:[[106],256],120156:[[107],256],120157:[[108],256],120158:[[109],256],120159:[[110],256],120160:[[111],256],120161:[[112],256],120162:[[113],256],120163:[[114],256],120164:[[115],256],120165:[[116],256],120166:[[117],256],120167:[[118],256],120168:[[119],256],120169:[[120],256],120170:[[121],256],120171:[[122],256],120172:[[65],256],120173:[[66],256],120174:[[67],256],120175:[[68],256],120176:[[69],256],120177:[[70],256],120178:[[71],256],120179:[[72],256],120180:[[73],256],120181:[[74],256],120182:[[75],256],120183:[[76],256],120184:[[77],256],120185:[[78],256],120186:[[79],256],120187:[[80],256],120188:[[81],256],120189:[[82],256],120190:[[83],256],120191:[[84],256],120192:[[85],256],120193:[[86],256],120194:[[87],256],120195:[[88],256],120196:[[89],256],120197:[[90],256],120198:[[97],256],120199:[[98],256],120200:[[99],256],120201:[[100],256],120202:[[101],256],120203:[[102],256],120204:[[103],256],120205:[[104],256],120206:[[105],256],120207:[[106],256],120208:[[107],256],120209:[[108],256],120210:[[109],256],120211:[[110],256],120212:[[111],256],120213:[[112],256],120214:[[113],256],120215:[[114],256],120216:[[115],256],120217:[[116],256],120218:[[117],256],120219:[[118],256],120220:[[119],256],120221:[[120],256],120222:[[121],256],120223:[[122],256],120224:[[65],256],120225:[[66],256],120226:[[67],256],120227:[[68],256],120228:[[69],256],120229:[[70],256],120230:[[71],256],120231:[[72],256],120232:[[73],256],120233:[[74],256],120234:[[75],256],120235:[[76],256],120236:[[77],256],120237:[[78],256],120238:[[79],256],120239:[[80],256],120240:[[81],256],120241:[[82],256],120242:[[83],256],120243:[[84],256],120244:[[85],256],120245:[[86],256],120246:[[87],256],120247:[[88],256],120248:[[89],256],120249:[[90],256],120250:[[97],256],120251:[[98],256],120252:[[99],256],120253:[[100],256],120254:[[101],256],120255:[[102],256],120256:[[103],256],120257:[[104],256],120258:[[105],256],120259:[[106],256],120260:[[107],256],120261:[[108],256],120262:[[109],256],120263:[[110],256],120264:[[111],256],120265:[[112],256],120266:[[113],256],120267:[[114],256],120268:[[115],256],120269:[[116],256],120270:[[117],256],120271:[[118],256],120272:[[119],256],120273:[[120],256],120274:[[121],256],120275:[[122],256],120276:[[65],256],120277:[[66],256],120278:[[67],256],120279:[[68],256],120280:[[69],256],120281:[[70],256],120282:[[71],256],120283:[[72],256],120284:[[73],256],120285:[[74],256],120286:[[75],256],120287:[[76],256],120288:[[77],256],120289:[[78],256],120290:[[79],256],120291:[[80],256],120292:[[81],256],120293:[[82],256],120294:[[83],256],120295:[[84],256],120296:[[85],256],120297:[[86],256],120298:[[87],256],120299:[[88],256],120300:[[89],256],120301:[[90],256],120302:[[97],256],120303:[[98],256],120304:[[99],256],120305:[[100],256],120306:[[101],256],120307:[[102],256],120308:[[103],256],120309:[[104],256],120310:[[105],256],120311:[[106],256],120312:[[107],256],120313:[[108],256],120314:[[109],256],120315:[[110],256],120316:[[111],256],120317:[[112],256],120318:[[113],256],120319:[[114],256]},\n54784:{120320:[[115],256],120321:[[116],256],120322:[[117],256],120323:[[118],256],120324:[[119],256],120325:[[120],256],120326:[[121],256],120327:[[122],256],120328:[[65],256],120329:[[66],256],120330:[[67],256],120331:[[68],256],120332:[[69],256],120333:[[70],256],120334:[[71],256],120335:[[72],256],120336:[[73],256],120337:[[74],256],120338:[[75],256],120339:[[76],256],120340:[[77],256],120341:[[78],256],120342:[[79],256],120343:[[80],256],120344:[[81],256],120345:[[82],256],120346:[[83],256],120347:[[84],256],120348:[[85],256],120349:[[86],256],120350:[[87],256],120351:[[88],256],120352:[[89],256],120353:[[90],256],120354:[[97],256],120355:[[98],256],120356:[[99],256],120357:[[100],256],120358:[[101],256],120359:[[102],256],120360:[[103],256],120361:[[104],256],120362:[[105],256],120363:[[106],256],120364:[[107],256],120365:[[108],256],120366:[[109],256],120367:[[110],256],120368:[[111],256],120369:[[112],256],120370:[[113],256],120371:[[114],256],120372:[[115],256],120373:[[116],256],120374:[[117],256],120375:[[118],256],120376:[[119],256],120377:[[120],256],120378:[[121],256],120379:[[122],256],120380:[[65],256],120381:[[66],256],120382:[[67],256],120383:[[68],256],120384:[[69],256],120385:[[70],256],120386:[[71],256],120387:[[72],256],120388:[[73],256],120389:[[74],256],120390:[[75],256],120391:[[76],256],120392:[[77],256],120393:[[78],256],120394:[[79],256],120395:[[80],256],120396:[[81],256],120397:[[82],256],120398:[[83],256],120399:[[84],256],120400:[[85],256],120401:[[86],256],120402:[[87],256],120403:[[88],256],120404:[[89],256],120405:[[90],256],120406:[[97],256],120407:[[98],256],120408:[[99],256],120409:[[100],256],120410:[[101],256],120411:[[102],256],120412:[[103],256],120413:[[104],256],120414:[[105],256],120415:[[106],256],120416:[[107],256],120417:[[108],256],120418:[[109],256],120419:[[110],256],120420:[[111],256],120421:[[112],256],120422:[[113],256],120423:[[114],256],120424:[[115],256],120425:[[116],256],120426:[[117],256],120427:[[118],256],120428:[[119],256],120429:[[120],256],120430:[[121],256],120431:[[122],256],120432:[[65],256],120433:[[66],256],120434:[[67],256],120435:[[68],256],120436:[[69],256],120437:[[70],256],120438:[[71],256],120439:[[72],256],120440:[[73],256],120441:[[74],256],120442:[[75],256],120443:[[76],256],120444:[[77],256],120445:[[78],256],120446:[[79],256],120447:[[80],256],120448:[[81],256],120449:[[82],256],120450:[[83],256],120451:[[84],256],120452:[[85],256],120453:[[86],256],120454:[[87],256],120455:[[88],256],120456:[[89],256],120457:[[90],256],120458:[[97],256],120459:[[98],256],120460:[[99],256],120461:[[100],256],120462:[[101],256],120463:[[102],256],120464:[[103],256],120465:[[104],256],120466:[[105],256],120467:[[106],256],120468:[[107],256],120469:[[108],256],120470:[[109],256],120471:[[110],256],120472:[[111],256],120473:[[112],256],120474:[[113],256],120475:[[114],256],120476:[[115],256],120477:[[116],256],120478:[[117],256],120479:[[118],256],120480:[[119],256],120481:[[120],256],120482:[[121],256],120483:[[122],256],120484:[[305],256],120485:[[567],256],120488:[[913],256],120489:[[914],256],120490:[[915],256],120491:[[916],256],120492:[[917],256],120493:[[918],256],120494:[[919],256],120495:[[920],256],120496:[[921],256],120497:[[922],256],120498:[[923],256],120499:[[924],256],120500:[[925],256],120501:[[926],256],120502:[[927],256],120503:[[928],256],120504:[[929],256],120505:[[1012],256],120506:[[931],256],120507:[[932],256],120508:[[933],256],120509:[[934],256],120510:[[935],256],120511:[[936],256],120512:[[937],256],120513:[[8711],256],120514:[[945],256],120515:[[946],256],120516:[[947],256],120517:[[948],256],120518:[[949],256],120519:[[950],256],120520:[[951],256],120521:[[952],256],120522:[[953],256],120523:[[954],256],120524:[[955],256],120525:[[956],256],120526:[[957],256],120527:[[958],256],120528:[[959],256],120529:[[960],256],120530:[[961],256],120531:[[962],256],120532:[[963],256],120533:[[964],256],120534:[[965],256],120535:[[966],256],120536:[[967],256],120537:[[968],256],120538:[[969],256],120539:[[8706],256],120540:[[1013],256],120541:[[977],256],120542:[[1008],256],120543:[[981],256],120544:[[1009],256],120545:[[982],256],120546:[[913],256],120547:[[914],256],120548:[[915],256],120549:[[916],256],120550:[[917],256],120551:[[918],256],120552:[[919],256],120553:[[920],256],120554:[[921],256],120555:[[922],256],120556:[[923],256],120557:[[924],256],120558:[[925],256],120559:[[926],256],120560:[[927],256],120561:[[928],256],120562:[[929],256],120563:[[1012],256],120564:[[931],256],120565:[[932],256],120566:[[933],256],120567:[[934],256],120568:[[935],256],120569:[[936],256],120570:[[937],256],120571:[[8711],256],120572:[[945],256],120573:[[946],256],120574:[[947],256],120575:[[948],256]},\n55040:{120576:[[949],256],120577:[[950],256],120578:[[951],256],120579:[[952],256],120580:[[953],256],120581:[[954],256],120582:[[955],256],120583:[[956],256],120584:[[957],256],120585:[[958],256],120586:[[959],256],120587:[[960],256],120588:[[961],256],120589:[[962],256],120590:[[963],256],120591:[[964],256],120592:[[965],256],120593:[[966],256],120594:[[967],256],120595:[[968],256],120596:[[969],256],120597:[[8706],256],120598:[[1013],256],120599:[[977],256],120600:[[1008],256],120601:[[981],256],120602:[[1009],256],120603:[[982],256],120604:[[913],256],120605:[[914],256],120606:[[915],256],120607:[[916],256],120608:[[917],256],120609:[[918],256],120610:[[919],256],120611:[[920],256],120612:[[921],256],120613:[[922],256],120614:[[923],256],120615:[[924],256],120616:[[925],256],120617:[[926],256],120618:[[927],256],120619:[[928],256],120620:[[929],256],120621:[[1012],256],120622:[[931],256],120623:[[932],256],120624:[[933],256],120625:[[934],256],120626:[[935],256],120627:[[936],256],120628:[[937],256],120629:[[8711],256],120630:[[945],256],120631:[[946],256],120632:[[947],256],120633:[[948],256],120634:[[949],256],120635:[[950],256],120636:[[951],256],120637:[[952],256],120638:[[953],256],120639:[[954],256],120640:[[955],256],120641:[[956],256],120642:[[957],256],120643:[[958],256],120644:[[959],256],120645:[[960],256],120646:[[961],256],120647:[[962],256],120648:[[963],256],120649:[[964],256],120650:[[965],256],120651:[[966],256],120652:[[967],256],120653:[[968],256],120654:[[969],256],120655:[[8706],256],120656:[[1013],256],120657:[[977],256],120658:[[1008],256],120659:[[981],256],120660:[[1009],256],120661:[[982],256],120662:[[913],256],120663:[[914],256],120664:[[915],256],120665:[[916],256],120666:[[917],256],120667:[[918],256],120668:[[919],256],120669:[[920],256],120670:[[921],256],120671:[[922],256],120672:[[923],256],120673:[[924],256],120674:[[925],256],120675:[[926],256],120676:[[927],256],120677:[[928],256],120678:[[929],256],120679:[[1012],256],120680:[[931],256],120681:[[932],256],120682:[[933],256],120683:[[934],256],120684:[[935],256],120685:[[936],256],120686:[[937],256],120687:[[8711],256],120688:[[945],256],120689:[[946],256],120690:[[947],256],120691:[[948],256],120692:[[949],256],120693:[[950],256],120694:[[951],256],120695:[[952],256],120696:[[953],256],120697:[[954],256],120698:[[955],256],120699:[[956],256],120700:[[957],256],120701:[[958],256],120702:[[959],256],120703:[[960],256],120704:[[961],256],120705:[[962],256],120706:[[963],256],120707:[[964],256],120708:[[965],256],120709:[[966],256],120710:[[967],256],120711:[[968],256],120712:[[969],256],120713:[[8706],256],120714:[[1013],256],120715:[[977],256],120716:[[1008],256],120717:[[981],256],120718:[[1009],256],120719:[[982],256],120720:[[913],256],120721:[[914],256],120722:[[915],256],120723:[[916],256],120724:[[917],256],120725:[[918],256],120726:[[919],256],120727:[[920],256],120728:[[921],256],120729:[[922],256],120730:[[923],256],120731:[[924],256],120732:[[925],256],120733:[[926],256],120734:[[927],256],120735:[[928],256],120736:[[929],256],120737:[[1012],256],120738:[[931],256],120739:[[932],256],120740:[[933],256],120741:[[934],256],120742:[[935],256],120743:[[936],256],120744:[[937],256],120745:[[8711],256],120746:[[945],256],120747:[[946],256],120748:[[947],256],120749:[[948],256],120750:[[949],256],120751:[[950],256],120752:[[951],256],120753:[[952],256],120754:[[953],256],120755:[[954],256],120756:[[955],256],120757:[[956],256],120758:[[957],256],120759:[[958],256],120760:[[959],256],120761:[[960],256],120762:[[961],256],120763:[[962],256],120764:[[963],256],120765:[[964],256],120766:[[965],256],120767:[[966],256],120768:[[967],256],120769:[[968],256],120770:[[969],256],120771:[[8706],256],120772:[[1013],256],120773:[[977],256],120774:[[1008],256],120775:[[981],256],120776:[[1009],256],120777:[[982],256],120778:[[988],256],120779:[[989],256],120782:[[48],256],120783:[[49],256],120784:[[50],256],120785:[[51],256],120786:[[52],256],120787:[[53],256],120788:[[54],256],120789:[[55],256],120790:[[56],256],120791:[[57],256],120792:[[48],256],120793:[[49],256],120794:[[50],256],120795:[[51],256],120796:[[52],256],120797:[[53],256],120798:[[54],256],120799:[[55],256],120800:[[56],256],120801:[[57],256],120802:[[48],256],120803:[[49],256],120804:[[50],256],120805:[[51],256],120806:[[52],256],120807:[[53],256],120808:[[54],256],120809:[[55],256],120810:[[56],256],120811:[[57],256],120812:[[48],256],120813:[[49],256],120814:[[50],256],120815:[[51],256],120816:[[52],256],120817:[[53],256],120818:[[54],256],120819:[[55],256],120820:[[56],256],120821:[[57],256],120822:[[48],256],120823:[[49],256],120824:[[50],256],120825:[[51],256],120826:[[52],256],120827:[[53],256],120828:[[54],256],120829:[[55],256],120830:[[56],256],120831:[[57],256]},\n59392:{125136:[,220],125137:[,220],125138:[,220],125139:[,220],125140:[,220],125141:[,220],125142:[,220]},\n60928:{126464:[[1575],256],126465:[[1576],256],126466:[[1580],256],126467:[[1583],256],126469:[[1608],256],126470:[[1586],256],126471:[[1581],256],126472:[[1591],256],126473:[[1610],256],126474:[[1603],256],126475:[[1604],256],126476:[[1605],256],126477:[[1606],256],126478:[[1587],256],126479:[[1593],256],126480:[[1601],256],126481:[[1589],256],126482:[[1602],256],126483:[[1585],256],126484:[[1588],256],126485:[[1578],256],126486:[[1579],256],126487:[[1582],256],126488:[[1584],256],126489:[[1590],256],126490:[[1592],256],126491:[[1594],256],126492:[[1646],256],126493:[[1722],256],126494:[[1697],256],126495:[[1647],256],126497:[[1576],256],126498:[[1580],256],126500:[[1607],256],126503:[[1581],256],126505:[[1610],256],126506:[[1603],256],126507:[[1604],256],126508:[[1605],256],126509:[[1606],256],126510:[[1587],256],126511:[[1593],256],126512:[[1601],256],126513:[[1589],256],126514:[[1602],256],126516:[[1588],256],126517:[[1578],256],126518:[[1579],256],126519:[[1582],256],126521:[[1590],256],126523:[[1594],256],126530:[[1580],256],126535:[[1581],256],126537:[[1610],256],126539:[[1604],256],126541:[[1606],256],126542:[[1587],256],126543:[[1593],256],126545:[[1589],256],126546:[[1602],256],126548:[[1588],256],126551:[[1582],256],126553:[[1590],256],126555:[[1594],256],126557:[[1722],256],126559:[[1647],256],126561:[[1576],256],126562:[[1580],256],126564:[[1607],256],126567:[[1581],256],126568:[[1591],256],126569:[[1610],256],126570:[[1603],256],126572:[[1605],256],126573:[[1606],256],126574:[[1587],256],126575:[[1593],256],126576:[[1601],256],126577:[[1589],256],126578:[[1602],256],126580:[[1588],256],126581:[[1578],256],126582:[[1579],256],126583:[[1582],256],126585:[[1590],256],126586:[[1592],256],126587:[[1594],256],126588:[[1646],256],126590:[[1697],256],126592:[[1575],256],126593:[[1576],256],126594:[[1580],256],126595:[[1583],256],126596:[[1607],256],126597:[[1608],256],126598:[[1586],256],126599:[[1581],256],126600:[[1591],256],126601:[[1610],256],126603:[[1604],256],126604:[[1605],256],126605:[[1606],256],126606:[[1587],256],126607:[[1593],256],126608:[[1601],256],126609:[[1589],256],126610:[[1602],256],126611:[[1585],256],126612:[[1588],256],126613:[[1578],256],126614:[[1579],256],126615:[[1582],256],126616:[[1584],256],126617:[[1590],256],126618:[[1592],256],126619:[[1594],256],126625:[[1576],256],126626:[[1580],256],126627:[[1583],256],126629:[[1608],256],126630:[[1586],256],126631:[[1581],256],126632:[[1591],256],126633:[[1610],256],126635:[[1604],256],126636:[[1605],256],126637:[[1606],256],126638:[[1587],256],126639:[[1593],256],126640:[[1601],256],126641:[[1589],256],126642:[[1602],256],126643:[[1585],256],126644:[[1588],256],126645:[[1578],256],126646:[[1579],256],126647:[[1582],256],126648:[[1584],256],126649:[[1590],256],126650:[[1592],256],126651:[[1594],256]},\n61696:{127232:[[48,46],256],127233:[[48,44],256],127234:[[49,44],256],127235:[[50,44],256],127236:[[51,44],256],127237:[[52,44],256],127238:[[53,44],256],127239:[[54,44],256],127240:[[55,44],256],127241:[[56,44],256],127242:[[57,44],256],127248:[[40,65,41],256],127249:[[40,66,41],256],127250:[[40,67,41],256],127251:[[40,68,41],256],127252:[[40,69,41],256],127253:[[40,70,41],256],127254:[[40,71,41],256],127255:[[40,72,41],256],127256:[[40,73,41],256],127257:[[40,74,41],256],127258:[[40,75,41],256],127259:[[40,76,41],256],127260:[[40,77,41],256],127261:[[40,78,41],256],127262:[[40,79,41],256],127263:[[40,80,41],256],127264:[[40,81,41],256],127265:[[40,82,41],256],127266:[[40,83,41],256],127267:[[40,84,41],256],127268:[[40,85,41],256],127269:[[40,86,41],256],127270:[[40,87,41],256],127271:[[40,88,41],256],127272:[[40,89,41],256],127273:[[40,90,41],256],127274:[[12308,83,12309],256],127275:[[67],256],127276:[[82],256],127277:[[67,68],256],127278:[[87,90],256],127280:[[65],256],127281:[[66],256],127282:[[67],256],127283:[[68],256],127284:[[69],256],127285:[[70],256],127286:[[71],256],127287:[[72],256],127288:[[73],256],127289:[[74],256],127290:[[75],256],127291:[[76],256],127292:[[77],256],127293:[[78],256],127294:[[79],256],127295:[[80],256],127296:[[81],256],127297:[[82],256],127298:[[83],256],127299:[[84],256],127300:[[85],256],127301:[[86],256],127302:[[87],256],127303:[[88],256],127304:[[89],256],127305:[[90],256],127306:[[72,86],256],127307:[[77,86],256],127308:[[83,68],256],127309:[[83,83],256],127310:[[80,80,86],256],127311:[[87,67],256],127338:[[77,67],256],127339:[[77,68],256],127376:[[68,74],256]},\n61952:{127488:[[12411,12363],256],127489:[[12467,12467],256],127490:[[12469],256],127504:[[25163],256],127505:[[23383],256],127506:[[21452],256],127507:[[12487],256],127508:[[20108],256],127509:[[22810],256],127510:[[35299],256],127511:[[22825],256],127512:[[20132],256],127513:[[26144],256],127514:[[28961],256],127515:[[26009],256],127516:[[21069],256],127517:[[24460],256],127518:[[20877],256],127519:[[26032],256],127520:[[21021],256],127521:[[32066],256],127522:[[29983],256],127523:[[36009],256],127524:[[22768],256],127525:[[21561],256],127526:[[28436],256],127527:[[25237],256],127528:[[25429],256],127529:[[19968],256],127530:[[19977],256],127531:[[36938],256],127532:[[24038],256],127533:[[20013],256],127534:[[21491],256],127535:[[25351],256],127536:[[36208],256],127537:[[25171],256],127538:[[31105],256],127539:[[31354],256],127540:[[21512],256],127541:[[28288],256],127542:[[26377],256],127543:[[26376],256],127544:[[30003],256],127545:[[21106],256],127546:[[21942],256],127552:[[12308,26412,12309],256],127553:[[12308,19977,12309],256],127554:[[12308,20108,12309],256],127555:[[12308,23433,12309],256],127556:[[12308,28857,12309],256],127557:[[12308,25171,12309],256],127558:[[12308,30423,12309],256],127559:[[12308,21213,12309],256],127560:[[12308,25943,12309],256],127568:[[24471],256],127569:[[21487],256]},\n63488:{194560:[[20029]],194561:[[20024]],194562:[[20033]],194563:[[131362]],194564:[[20320]],194565:[[20398]],194566:[[20411]],194567:[[20482]],194568:[[20602]],194569:[[20633]],194570:[[20711]],194571:[[20687]],194572:[[13470]],194573:[[132666]],194574:[[20813]],194575:[[20820]],194576:[[20836]],194577:[[20855]],194578:[[132380]],194579:[[13497]],194580:[[20839]],194581:[[20877]],194582:[[132427]],194583:[[20887]],194584:[[20900]],194585:[[20172]],194586:[[20908]],194587:[[20917]],194588:[[168415]],194589:[[20981]],194590:[[20995]],194591:[[13535]],194592:[[21051]],194593:[[21062]],194594:[[21106]],194595:[[21111]],194596:[[13589]],194597:[[21191]],194598:[[21193]],194599:[[21220]],194600:[[21242]],194601:[[21253]],194602:[[21254]],194603:[[21271]],194604:[[21321]],194605:[[21329]],194606:[[21338]],194607:[[21363]],194608:[[21373]],194609:[[21375]],194610:[[21375]],194611:[[21375]],194612:[[133676]],194613:[[28784]],194614:[[21450]],194615:[[21471]],194616:[[133987]],194617:[[21483]],194618:[[21489]],194619:[[21510]],194620:[[21662]],194621:[[21560]],194622:[[21576]],194623:[[21608]],194624:[[21666]],194625:[[21750]],194626:[[21776]],194627:[[21843]],194628:[[21859]],194629:[[21892]],194630:[[21892]],194631:[[21913]],194632:[[21931]],194633:[[21939]],194634:[[21954]],194635:[[22294]],194636:[[22022]],194637:[[22295]],194638:[[22097]],194639:[[22132]],194640:[[20999]],194641:[[22766]],194642:[[22478]],194643:[[22516]],194644:[[22541]],194645:[[22411]],194646:[[22578]],194647:[[22577]],194648:[[22700]],194649:[[136420]],194650:[[22770]],194651:[[22775]],194652:[[22790]],194653:[[22810]],194654:[[22818]],194655:[[22882]],194656:[[136872]],194657:[[136938]],194658:[[23020]],194659:[[23067]],194660:[[23079]],194661:[[23000]],194662:[[23142]],194663:[[14062]],194664:[[14076]],194665:[[23304]],194666:[[23358]],194667:[[23358]],194668:[[137672]],194669:[[23491]],194670:[[23512]],194671:[[23527]],194672:[[23539]],194673:[[138008]],194674:[[23551]],194675:[[23558]],194676:[[24403]],194677:[[23586]],194678:[[14209]],194679:[[23648]],194680:[[23662]],194681:[[23744]],194682:[[23693]],194683:[[138724]],194684:[[23875]],194685:[[138726]],194686:[[23918]],194687:[[23915]],194688:[[23932]],194689:[[24033]],194690:[[24034]],194691:[[14383]],194692:[[24061]],194693:[[24104]],194694:[[24125]],194695:[[24169]],194696:[[14434]],194697:[[139651]],194698:[[14460]],194699:[[24240]],194700:[[24243]],194701:[[24246]],194702:[[24266]],194703:[[172946]],194704:[[24318]],194705:[[140081]],194706:[[140081]],194707:[[33281]],194708:[[24354]],194709:[[24354]],194710:[[14535]],194711:[[144056]],194712:[[156122]],194713:[[24418]],194714:[[24427]],194715:[[14563]],194716:[[24474]],194717:[[24525]],194718:[[24535]],194719:[[24569]],194720:[[24705]],194721:[[14650]],194722:[[14620]],194723:[[24724]],194724:[[141012]],194725:[[24775]],194726:[[24904]],194727:[[24908]],194728:[[24910]],194729:[[24908]],194730:[[24954]],194731:[[24974]],194732:[[25010]],194733:[[24996]],194734:[[25007]],194735:[[25054]],194736:[[25074]],194737:[[25078]],194738:[[25104]],194739:[[25115]],194740:[[25181]],194741:[[25265]],194742:[[25300]],194743:[[25424]],194744:[[142092]],194745:[[25405]],194746:[[25340]],194747:[[25448]],194748:[[25475]],194749:[[25572]],194750:[[142321]],194751:[[25634]],194752:[[25541]],194753:[[25513]],194754:[[14894]],194755:[[25705]],194756:[[25726]],194757:[[25757]],194758:[[25719]],194759:[[14956]],194760:[[25935]],194761:[[25964]],194762:[[143370]],194763:[[26083]],194764:[[26360]],194765:[[26185]],194766:[[15129]],194767:[[26257]],194768:[[15112]],194769:[[15076]],194770:[[20882]],194771:[[20885]],194772:[[26368]],194773:[[26268]],194774:[[32941]],194775:[[17369]],194776:[[26391]],194777:[[26395]],194778:[[26401]],194779:[[26462]],194780:[[26451]],194781:[[144323]],194782:[[15177]],194783:[[26618]],194784:[[26501]],194785:[[26706]],194786:[[26757]],194787:[[144493]],194788:[[26766]],194789:[[26655]],194790:[[26900]],194791:[[15261]],194792:[[26946]],194793:[[27043]],194794:[[27114]],194795:[[27304]],194796:[[145059]],194797:[[27355]],194798:[[15384]],194799:[[27425]],194800:[[145575]],194801:[[27476]],194802:[[15438]],194803:[[27506]],194804:[[27551]],194805:[[27578]],194806:[[27579]],194807:[[146061]],194808:[[138507]],194809:[[146170]],194810:[[27726]],194811:[[146620]],194812:[[27839]],194813:[[27853]],194814:[[27751]],194815:[[27926]]},\n63744:{63744:[[35912]],63745:[[26356]],63746:[[36554]],63747:[[36040]],63748:[[28369]],63749:[[20018]],63750:[[21477]],63751:[[40860]],63752:[[40860]],63753:[[22865]],63754:[[37329]],63755:[[21895]],63756:[[22856]],63757:[[25078]],63758:[[30313]],63759:[[32645]],63760:[[34367]],63761:[[34746]],63762:[[35064]],63763:[[37007]],63764:[[27138]],63765:[[27931]],63766:[[28889]],63767:[[29662]],63768:[[33853]],63769:[[37226]],63770:[[39409]],63771:[[20098]],63772:[[21365]],63773:[[27396]],63774:[[29211]],63775:[[34349]],63776:[[40478]],63777:[[23888]],63778:[[28651]],63779:[[34253]],63780:[[35172]],63781:[[25289]],63782:[[33240]],63783:[[34847]],63784:[[24266]],63785:[[26391]],63786:[[28010]],63787:[[29436]],63788:[[37070]],63789:[[20358]],63790:[[20919]],63791:[[21214]],63792:[[25796]],63793:[[27347]],63794:[[29200]],63795:[[30439]],63796:[[32769]],63797:[[34310]],63798:[[34396]],63799:[[36335]],63800:[[38706]],63801:[[39791]],63802:[[40442]],63803:[[30860]],63804:[[31103]],63805:[[32160]],63806:[[33737]],63807:[[37636]],63808:[[40575]],63809:[[35542]],63810:[[22751]],63811:[[24324]],63812:[[31840]],63813:[[32894]],63814:[[29282]],63815:[[30922]],63816:[[36034]],63817:[[38647]],63818:[[22744]],63819:[[23650]],63820:[[27155]],63821:[[28122]],63822:[[28431]],63823:[[32047]],63824:[[32311]],63825:[[38475]],63826:[[21202]],63827:[[32907]],63828:[[20956]],63829:[[20940]],63830:[[31260]],63831:[[32190]],63832:[[33777]],63833:[[38517]],63834:[[35712]],63835:[[25295]],63836:[[27138]],63837:[[35582]],63838:[[20025]],63839:[[23527]],63840:[[24594]],63841:[[29575]],63842:[[30064]],63843:[[21271]],63844:[[30971]],63845:[[20415]],63846:[[24489]],63847:[[19981]],63848:[[27852]],63849:[[25976]],63850:[[32034]],63851:[[21443]],63852:[[22622]],63853:[[30465]],63854:[[33865]],63855:[[35498]],63856:[[27578]],63857:[[36784]],63858:[[27784]],63859:[[25342]],63860:[[33509]],63861:[[25504]],63862:[[30053]],63863:[[20142]],63864:[[20841]],63865:[[20937]],63866:[[26753]],63867:[[31975]],63868:[[33391]],63869:[[35538]],63870:[[37327]],63871:[[21237]],63872:[[21570]],63873:[[22899]],63874:[[24300]],63875:[[26053]],63876:[[28670]],63877:[[31018]],63878:[[38317]],63879:[[39530]],63880:[[40599]],63881:[[40654]],63882:[[21147]],63883:[[26310]],63884:[[27511]],63885:[[36706]],63886:[[24180]],63887:[[24976]],63888:[[25088]],63889:[[25754]],63890:[[28451]],63891:[[29001]],63892:[[29833]],63893:[[31178]],63894:[[32244]],63895:[[32879]],63896:[[36646]],63897:[[34030]],63898:[[36899]],63899:[[37706]],63900:[[21015]],63901:[[21155]],63902:[[21693]],63903:[[28872]],63904:[[35010]],63905:[[35498]],63906:[[24265]],63907:[[24565]],63908:[[25467]],63909:[[27566]],63910:[[31806]],63911:[[29557]],63912:[[20196]],63913:[[22265]],63914:[[23527]],63915:[[23994]],63916:[[24604]],63917:[[29618]],63918:[[29801]],63919:[[32666]],63920:[[32838]],63921:[[37428]],63922:[[38646]],63923:[[38728]],63924:[[38936]],63925:[[20363]],63926:[[31150]],63927:[[37300]],63928:[[38584]],63929:[[24801]],63930:[[20102]],63931:[[20698]],63932:[[23534]],63933:[[23615]],63934:[[26009]],63935:[[27138]],63936:[[29134]],63937:[[30274]],63938:[[34044]],63939:[[36988]],63940:[[40845]],63941:[[26248]],63942:[[38446]],63943:[[21129]],63944:[[26491]],63945:[[26611]],63946:[[27969]],63947:[[28316]],63948:[[29705]],63949:[[30041]],63950:[[30827]],63951:[[32016]],63952:[[39006]],63953:[[20845]],63954:[[25134]],63955:[[38520]],63956:[[20523]],63957:[[23833]],63958:[[28138]],63959:[[36650]],63960:[[24459]],63961:[[24900]],63962:[[26647]],63963:[[29575]],63964:[[38534]],63965:[[21033]],63966:[[21519]],63967:[[23653]],63968:[[26131]],63969:[[26446]],63970:[[26792]],63971:[[27877]],63972:[[29702]],63973:[[30178]],63974:[[32633]],63975:[[35023]],63976:[[35041]],63977:[[37324]],63978:[[38626]],63979:[[21311]],63980:[[28346]],63981:[[21533]],63982:[[29136]],63983:[[29848]],63984:[[34298]],63985:[[38563]],63986:[[40023]],63987:[[40607]],63988:[[26519]],63989:[[28107]],63990:[[33256]],63991:[[31435]],63992:[[31520]],63993:[[31890]],63994:[[29376]],63995:[[28825]],63996:[[35672]],63997:[[20160]],63998:[[33590]],63999:[[21050]],194816:[[27966]],194817:[[28023]],194818:[[27969]],194819:[[28009]],194820:[[28024]],194821:[[28037]],194822:[[146718]],194823:[[27956]],194824:[[28207]],194825:[[28270]],194826:[[15667]],194827:[[28363]],194828:[[28359]],194829:[[147153]],194830:[[28153]],194831:[[28526]],194832:[[147294]],194833:[[147342]],194834:[[28614]],194835:[[28729]],194836:[[28702]],194837:[[28699]],194838:[[15766]],194839:[[28746]],194840:[[28797]],194841:[[28791]],194842:[[28845]],194843:[[132389]],194844:[[28997]],194845:[[148067]],194846:[[29084]],194847:[[148395]],194848:[[29224]],194849:[[29237]],194850:[[29264]],194851:[[149000]],194852:[[29312]],194853:[[29333]],194854:[[149301]],194855:[[149524]],194856:[[29562]],194857:[[29579]],194858:[[16044]],194859:[[29605]],194860:[[16056]],194861:[[16056]],194862:[[29767]],194863:[[29788]],194864:[[29809]],194865:[[29829]],194866:[[29898]],194867:[[16155]],194868:[[29988]],194869:[[150582]],194870:[[30014]],194871:[[150674]],194872:[[30064]],194873:[[139679]],194874:[[30224]],194875:[[151457]],194876:[[151480]],194877:[[151620]],194878:[[16380]],194879:[[16392]],194880:[[30452]],194881:[[151795]],194882:[[151794]],194883:[[151833]],194884:[[151859]],194885:[[30494]],194886:[[30495]],194887:[[30495]],194888:[[30538]],194889:[[16441]],194890:[[30603]],194891:[[16454]],194892:[[16534]],194893:[[152605]],194894:[[30798]],194895:[[30860]],194896:[[30924]],194897:[[16611]],194898:[[153126]],194899:[[31062]],194900:[[153242]],194901:[[153285]],194902:[[31119]],194903:[[31211]],194904:[[16687]],194905:[[31296]],194906:[[31306]],194907:[[31311]],194908:[[153980]],194909:[[154279]],194910:[[154279]],194911:[[31470]],194912:[[16898]],194913:[[154539]],194914:[[31686]],194915:[[31689]],194916:[[16935]],194917:[[154752]],194918:[[31954]],194919:[[17056]],194920:[[31976]],194921:[[31971]],194922:[[32000]],194923:[[155526]],194924:[[32099]],194925:[[17153]],194926:[[32199]],194927:[[32258]],194928:[[32325]],194929:[[17204]],194930:[[156200]],194931:[[156231]],194932:[[17241]],194933:[[156377]],194934:[[32634]],194935:[[156478]],194936:[[32661]],194937:[[32762]],194938:[[32773]],194939:[[156890]],194940:[[156963]],194941:[[32864]],194942:[[157096]],194943:[[32880]],194944:[[144223]],194945:[[17365]],194946:[[32946]],194947:[[33027]],194948:[[17419]],194949:[[33086]],194950:[[23221]],194951:[[157607]],194952:[[157621]],194953:[[144275]],194954:[[144284]],194955:[[33281]],194956:[[33284]],194957:[[36766]],194958:[[17515]],194959:[[33425]],194960:[[33419]],194961:[[33437]],194962:[[21171]],194963:[[33457]],194964:[[33459]],194965:[[33469]],194966:[[33510]],194967:[[158524]],194968:[[33509]],194969:[[33565]],194970:[[33635]],194971:[[33709]],194972:[[33571]],194973:[[33725]],194974:[[33767]],194975:[[33879]],194976:[[33619]],194977:[[33738]],194978:[[33740]],194979:[[33756]],194980:[[158774]],194981:[[159083]],194982:[[158933]],194983:[[17707]],194984:[[34033]],194985:[[34035]],194986:[[34070]],194987:[[160714]],194988:[[34148]],194989:[[159532]],194990:[[17757]],194991:[[17761]],194992:[[159665]],194993:[[159954]],194994:[[17771]],194995:[[34384]],194996:[[34396]],194997:[[34407]],194998:[[34409]],194999:[[34473]],195000:[[34440]],195001:[[34574]],195002:[[34530]],195003:[[34681]],195004:[[34600]],195005:[[34667]],195006:[[34694]],195007:[[17879]],195008:[[34785]],195009:[[34817]],195010:[[17913]],195011:[[34912]],195012:[[34915]],195013:[[161383]],195014:[[35031]],195015:[[35038]],195016:[[17973]],195017:[[35066]],195018:[[13499]],195019:[[161966]],195020:[[162150]],195021:[[18110]],195022:[[18119]],195023:[[35488]],195024:[[35565]],195025:[[35722]],195026:[[35925]],195027:[[162984]],195028:[[36011]],195029:[[36033]],195030:[[36123]],195031:[[36215]],195032:[[163631]],195033:[[133124]],195034:[[36299]],195035:[[36284]],195036:[[36336]],195037:[[133342]],195038:[[36564]],195039:[[36664]],195040:[[165330]],195041:[[165357]],195042:[[37012]],195043:[[37105]],195044:[[37137]],195045:[[165678]],195046:[[37147]],195047:[[37432]],195048:[[37591]],195049:[[37592]],195050:[[37500]],195051:[[37881]],195052:[[37909]],195053:[[166906]],195054:[[38283]],195055:[[18837]],195056:[[38327]],195057:[[167287]],195058:[[18918]],195059:[[38595]],195060:[[23986]],195061:[[38691]],195062:[[168261]],195063:[[168474]],195064:[[19054]],195065:[[19062]],195066:[[38880]],195067:[[168970]],195068:[[19122]],195069:[[169110]],195070:[[38923]],195071:[[38923]]},\n64000:{64000:[[20999]],64001:[[24230]],64002:[[25299]],64003:[[31958]],64004:[[23429]],64005:[[27934]],64006:[[26292]],64007:[[36667]],64008:[[34892]],64009:[[38477]],64010:[[35211]],64011:[[24275]],64012:[[20800]],64013:[[21952]],64016:[[22618]],64018:[[26228]],64021:[[20958]],64022:[[29482]],64023:[[30410]],64024:[[31036]],64025:[[31070]],64026:[[31077]],64027:[[31119]],64028:[[38742]],64029:[[31934]],64030:[[32701]],64032:[[34322]],64034:[[35576]],64037:[[36920]],64038:[[37117]],64042:[[39151]],64043:[[39164]],64044:[[39208]],64045:[[40372]],64046:[[37086]],64047:[[38583]],64048:[[20398]],64049:[[20711]],64050:[[20813]],64051:[[21193]],64052:[[21220]],64053:[[21329]],64054:[[21917]],64055:[[22022]],64056:[[22120]],64057:[[22592]],64058:[[22696]],64059:[[23652]],64060:[[23662]],64061:[[24724]],64062:[[24936]],64063:[[24974]],64064:[[25074]],64065:[[25935]],64066:[[26082]],64067:[[26257]],64068:[[26757]],64069:[[28023]],64070:[[28186]],64071:[[28450]],64072:[[29038]],64073:[[29227]],64074:[[29730]],64075:[[30865]],64076:[[31038]],64077:[[31049]],64078:[[31048]],64079:[[31056]],64080:[[31062]],64081:[[31069]],64082:[[31117]],64083:[[31118]],64084:[[31296]],64085:[[31361]],64086:[[31680]],64087:[[32244]],64088:[[32265]],64089:[[32321]],64090:[[32626]],64091:[[32773]],64092:[[33261]],64093:[[33401]],64094:[[33401]],64095:[[33879]],64096:[[35088]],64097:[[35222]],64098:[[35585]],64099:[[35641]],64100:[[36051]],64101:[[36104]],64102:[[36790]],64103:[[36920]],64104:[[38627]],64105:[[38911]],64106:[[38971]],64107:[[24693]],64108:[[148206]],64109:[[33304]],64112:[[20006]],64113:[[20917]],64114:[[20840]],64115:[[20352]],64116:[[20805]],64117:[[20864]],64118:[[21191]],64119:[[21242]],64120:[[21917]],64121:[[21845]],64122:[[21913]],64123:[[21986]],64124:[[22618]],64125:[[22707]],64126:[[22852]],64127:[[22868]],64128:[[23138]],64129:[[23336]],64130:[[24274]],64131:[[24281]],64132:[[24425]],64133:[[24493]],64134:[[24792]],64135:[[24910]],64136:[[24840]],64137:[[24974]],64138:[[24928]],64139:[[25074]],64140:[[25140]],64141:[[25540]],64142:[[25628]],64143:[[25682]],64144:[[25942]],64145:[[26228]],64146:[[26391]],64147:[[26395]],64148:[[26454]],64149:[[27513]],64150:[[27578]],64151:[[27969]],64152:[[28379]],64153:[[28363]],64154:[[28450]],64155:[[28702]],64156:[[29038]],64157:[[30631]],64158:[[29237]],64159:[[29359]],64160:[[29482]],64161:[[29809]],64162:[[29958]],64163:[[30011]],64164:[[30237]],64165:[[30239]],64166:[[30410]],64167:[[30427]],64168:[[30452]],64169:[[30538]],64170:[[30528]],64171:[[30924]],64172:[[31409]],64173:[[31680]],64174:[[31867]],64175:[[32091]],64176:[[32244]],64177:[[32574]],64178:[[32773]],64179:[[33618]],64180:[[33775]],64181:[[34681]],64182:[[35137]],64183:[[35206]],64184:[[35222]],64185:[[35519]],64186:[[35576]],64187:[[35531]],64188:[[35585]],64189:[[35582]],64190:[[35565]],64191:[[35641]],64192:[[35722]],64193:[[36104]],64194:[[36664]],64195:[[36978]],64196:[[37273]],64197:[[37494]],64198:[[38524]],64199:[[38627]],64200:[[38742]],64201:[[38875]],64202:[[38911]],64203:[[38923]],64204:[[38971]],64205:[[39698]],64206:[[40860]],64207:[[141386]],64208:[[141380]],64209:[[144341]],64210:[[15261]],64211:[[16408]],64212:[[16441]],64213:[[152137]],64214:[[154832]],64215:[[163539]],64216:[[40771]],64217:[[40846]],195072:[[38953]],195073:[[169398]],195074:[[39138]],195075:[[19251]],195076:[[39209]],195077:[[39335]],195078:[[39362]],195079:[[39422]],195080:[[19406]],195081:[[170800]],195082:[[39698]],195083:[[40000]],195084:[[40189]],195085:[[19662]],195086:[[19693]],195087:[[40295]],195088:[[172238]],195089:[[19704]],195090:[[172293]],195091:[[172558]],195092:[[172689]],195093:[[40635]],195094:[[19798]],195095:[[40697]],195096:[[40702]],195097:[[40709]],195098:[[40719]],195099:[[40726]],195100:[[40763]],195101:[[173568]]},\n64256:{64256:[[102,102],256],64257:[[102,105],256],64258:[[102,108],256],64259:[[102,102,105],256],64260:[[102,102,108],256],64261:[[383,116],256],64262:[[115,116],256],64275:[[1396,1398],256],64276:[[1396,1381],256],64277:[[1396,1387],256],64278:[[1406,1398],256],64279:[[1396,1389],256],64285:[[1497,1460],512],64286:[,26],64287:[[1522,1463],512],64288:[[1506],256],64289:[[1488],256],64290:[[1491],256],64291:[[1492],256],64292:[[1499],256],64293:[[1500],256],64294:[[1501],256],64295:[[1512],256],64296:[[1514],256],64297:[[43],256],64298:[[1513,1473],512],64299:[[1513,1474],512],64300:[[64329,1473],512],64301:[[64329,1474],512],64302:[[1488,1463],512],64303:[[1488,1464],512],64304:[[1488,1468],512],64305:[[1489,1468],512],64306:[[1490,1468],512],64307:[[1491,1468],512],64308:[[1492,1468],512],64309:[[1493,1468],512],64310:[[1494,1468],512],64312:[[1496,1468],512],64313:[[1497,1468],512],64314:[[1498,1468],512],64315:[[1499,1468],512],64316:[[1500,1468],512],64318:[[1502,1468],512],64320:[[1504,1468],512],64321:[[1505,1468],512],64323:[[1507,1468],512],64324:[[1508,1468],512],64326:[[1510,1468],512],64327:[[1511,1468],512],64328:[[1512,1468],512],64329:[[1513,1468],512],64330:[[1514,1468],512],64331:[[1493,1465],512],64332:[[1489,1471],512],64333:[[1499,1471],512],64334:[[1508,1471],512],64335:[[1488,1500],256],64336:[[1649],256],64337:[[1649],256],64338:[[1659],256],64339:[[1659],256],64340:[[1659],256],64341:[[1659],256],64342:[[1662],256],64343:[[1662],256],64344:[[1662],256],64345:[[1662],256],64346:[[1664],256],64347:[[1664],256],64348:[[1664],256],64349:[[1664],256],64350:[[1658],256],64351:[[1658],256],64352:[[1658],256],64353:[[1658],256],64354:[[1663],256],64355:[[1663],256],64356:[[1663],256],64357:[[1663],256],64358:[[1657],256],64359:[[1657],256],64360:[[1657],256],64361:[[1657],256],64362:[[1700],256],64363:[[1700],256],64364:[[1700],256],64365:[[1700],256],64366:[[1702],256],64367:[[1702],256],64368:[[1702],256],64369:[[1702],256],64370:[[1668],256],64371:[[1668],256],64372:[[1668],256],64373:[[1668],256],64374:[[1667],256],64375:[[1667],256],64376:[[1667],256],64377:[[1667],256],64378:[[1670],256],64379:[[1670],256],64380:[[1670],256],64381:[[1670],256],64382:[[1671],256],64383:[[1671],256],64384:[[1671],256],64385:[[1671],256],64386:[[1677],256],64387:[[1677],256],64388:[[1676],256],64389:[[1676],256],64390:[[1678],256],64391:[[1678],256],64392:[[1672],256],64393:[[1672],256],64394:[[1688],256],64395:[[1688],256],64396:[[1681],256],64397:[[1681],256],64398:[[1705],256],64399:[[1705],256],64400:[[1705],256],64401:[[1705],256],64402:[[1711],256],64403:[[1711],256],64404:[[1711],256],64405:[[1711],256],64406:[[1715],256],64407:[[1715],256],64408:[[1715],256],64409:[[1715],256],64410:[[1713],256],64411:[[1713],256],64412:[[1713],256],64413:[[1713],256],64414:[[1722],256],64415:[[1722],256],64416:[[1723],256],64417:[[1723],256],64418:[[1723],256],64419:[[1723],256],64420:[[1728],256],64421:[[1728],256],64422:[[1729],256],64423:[[1729],256],64424:[[1729],256],64425:[[1729],256],64426:[[1726],256],64427:[[1726],256],64428:[[1726],256],64429:[[1726],256],64430:[[1746],256],64431:[[1746],256],64432:[[1747],256],64433:[[1747],256],64467:[[1709],256],64468:[[1709],256],64469:[[1709],256],64470:[[1709],256],64471:[[1735],256],64472:[[1735],256],64473:[[1734],256],64474:[[1734],256],64475:[[1736],256],64476:[[1736],256],64477:[[1655],256],64478:[[1739],256],64479:[[1739],256],64480:[[1733],256],64481:[[1733],256],64482:[[1737],256],64483:[[1737],256],64484:[[1744],256],64485:[[1744],256],64486:[[1744],256],64487:[[1744],256],64488:[[1609],256],64489:[[1609],256],64490:[[1574,1575],256],64491:[[1574,1575],256],64492:[[1574,1749],256],64493:[[1574,1749],256],64494:[[1574,1608],256],64495:[[1574,1608],256],64496:[[1574,1735],256],64497:[[1574,1735],256],64498:[[1574,1734],256],64499:[[1574,1734],256],64500:[[1574,1736],256],64501:[[1574,1736],256],64502:[[1574,1744],256],64503:[[1574,1744],256],64504:[[1574,1744],256],64505:[[1574,1609],256],64506:[[1574,1609],256],64507:[[1574,1609],256],64508:[[1740],256],64509:[[1740],256],64510:[[1740],256],64511:[[1740],256]},\n64512:{64512:[[1574,1580],256],64513:[[1574,1581],256],64514:[[1574,1605],256],64515:[[1574,1609],256],64516:[[1574,1610],256],64517:[[1576,1580],256],64518:[[1576,1581],256],64519:[[1576,1582],256],64520:[[1576,1605],256],64521:[[1576,1609],256],64522:[[1576,1610],256],64523:[[1578,1580],256],64524:[[1578,1581],256],64525:[[1578,1582],256],64526:[[1578,1605],256],64527:[[1578,1609],256],64528:[[1578,1610],256],64529:[[1579,1580],256],64530:[[1579,1605],256],64531:[[1579,1609],256],64532:[[1579,1610],256],64533:[[1580,1581],256],64534:[[1580,1605],256],64535:[[1581,1580],256],64536:[[1581,1605],256],64537:[[1582,1580],256],64538:[[1582,1581],256],64539:[[1582,1605],256],64540:[[1587,1580],256],64541:[[1587,1581],256],64542:[[1587,1582],256],64543:[[1587,1605],256],64544:[[1589,1581],256],64545:[[1589,1605],256],64546:[[1590,1580],256],64547:[[1590,1581],256],64548:[[1590,1582],256],64549:[[1590,1605],256],64550:[[1591,1581],256],64551:[[1591,1605],256],64552:[[1592,1605],256],64553:[[1593,1580],256],64554:[[1593,1605],256],64555:[[1594,1580],256],64556:[[1594,1605],256],64557:[[1601,1580],256],64558:[[1601,1581],256],64559:[[1601,1582],256],64560:[[1601,1605],256],64561:[[1601,1609],256],64562:[[1601,1610],256],64563:[[1602,1581],256],64564:[[1602,1605],256],64565:[[1602,1609],256],64566:[[1602,1610],256],64567:[[1603,1575],256],64568:[[1603,1580],256],64569:[[1603,1581],256],64570:[[1603,1582],256],64571:[[1603,1604],256],64572:[[1603,1605],256],64573:[[1603,1609],256],64574:[[1603,1610],256],64575:[[1604,1580],256],64576:[[1604,1581],256],64577:[[1604,1582],256],64578:[[1604,1605],256],64579:[[1604,1609],256],64580:[[1604,1610],256],64581:[[1605,1580],256],64582:[[1605,1581],256],64583:[[1605,1582],256],64584:[[1605,1605],256],64585:[[1605,1609],256],64586:[[1605,1610],256],64587:[[1606,1580],256],64588:[[1606,1581],256],64589:[[1606,1582],256],64590:[[1606,1605],256],64591:[[1606,1609],256],64592:[[1606,1610],256],64593:[[1607,1580],256],64594:[[1607,1605],256],64595:[[1607,1609],256],64596:[[1607,1610],256],64597:[[1610,1580],256],64598:[[1610,1581],256],64599:[[1610,1582],256],64600:[[1610,1605],256],64601:[[1610,1609],256],64602:[[1610,1610],256],64603:[[1584,1648],256],64604:[[1585,1648],256],64605:[[1609,1648],256],64606:[[32,1612,1617],256],64607:[[32,1613,1617],256],64608:[[32,1614,1617],256],64609:[[32,1615,1617],256],64610:[[32,1616,1617],256],64611:[[32,1617,1648],256],64612:[[1574,1585],256],64613:[[1574,1586],256],64614:[[1574,1605],256],64615:[[1574,1606],256],64616:[[1574,1609],256],64617:[[1574,1610],256],64618:[[1576,1585],256],64619:[[1576,1586],256],64620:[[1576,1605],256],64621:[[1576,1606],256],64622:[[1576,1609],256],64623:[[1576,1610],256],64624:[[1578,1585],256],64625:[[1578,1586],256],64626:[[1578,1605],256],64627:[[1578,1606],256],64628:[[1578,1609],256],64629:[[1578,1610],256],64630:[[1579,1585],256],64631:[[1579,1586],256],64632:[[1579,1605],256],64633:[[1579,1606],256],64634:[[1579,1609],256],64635:[[1579,1610],256],64636:[[1601,1609],256],64637:[[1601,1610],256],64638:[[1602,1609],256],64639:[[1602,1610],256],64640:[[1603,1575],256],64641:[[1603,1604],256],64642:[[1603,1605],256],64643:[[1603,1609],256],64644:[[1603,1610],256],64645:[[1604,1605],256],64646:[[1604,1609],256],64647:[[1604,1610],256],64648:[[1605,1575],256],64649:[[1605,1605],256],64650:[[1606,1585],256],64651:[[1606,1586],256],64652:[[1606,1605],256],64653:[[1606,1606],256],64654:[[1606,1609],256],64655:[[1606,1610],256],64656:[[1609,1648],256],64657:[[1610,1585],256],64658:[[1610,1586],256],64659:[[1610,1605],256],64660:[[1610,1606],256],64661:[[1610,1609],256],64662:[[1610,1610],256],64663:[[1574,1580],256],64664:[[1574,1581],256],64665:[[1574,1582],256],64666:[[1574,1605],256],64667:[[1574,1607],256],64668:[[1576,1580],256],64669:[[1576,1581],256],64670:[[1576,1582],256],64671:[[1576,1605],256],64672:[[1576,1607],256],64673:[[1578,1580],256],64674:[[1578,1581],256],64675:[[1578,1582],256],64676:[[1578,1605],256],64677:[[1578,1607],256],64678:[[1579,1605],256],64679:[[1580,1581],256],64680:[[1580,1605],256],64681:[[1581,1580],256],64682:[[1581,1605],256],64683:[[1582,1580],256],64684:[[1582,1605],256],64685:[[1587,1580],256],64686:[[1587,1581],256],64687:[[1587,1582],256],64688:[[1587,1605],256],64689:[[1589,1581],256],64690:[[1589,1582],256],64691:[[1589,1605],256],64692:[[1590,1580],256],64693:[[1590,1581],256],64694:[[1590,1582],256],64695:[[1590,1605],256],64696:[[1591,1581],256],64697:[[1592,1605],256],64698:[[1593,1580],256],64699:[[1593,1605],256],64700:[[1594,1580],256],64701:[[1594,1605],256],64702:[[1601,1580],256],64703:[[1601,1581],256],64704:[[1601,1582],256],64705:[[1601,1605],256],64706:[[1602,1581],256],64707:[[1602,1605],256],64708:[[1603,1580],256],64709:[[1603,1581],256],64710:[[1603,1582],256],64711:[[1603,1604],256],64712:[[1603,1605],256],64713:[[1604,1580],256],64714:[[1604,1581],256],64715:[[1604,1582],256],64716:[[1604,1605],256],64717:[[1604,1607],256],64718:[[1605,1580],256],64719:[[1605,1581],256],64720:[[1605,1582],256],64721:[[1605,1605],256],64722:[[1606,1580],256],64723:[[1606,1581],256],64724:[[1606,1582],256],64725:[[1606,1605],256],64726:[[1606,1607],256],64727:[[1607,1580],256],64728:[[1607,1605],256],64729:[[1607,1648],256],64730:[[1610,1580],256],64731:[[1610,1581],256],64732:[[1610,1582],256],64733:[[1610,1605],256],64734:[[1610,1607],256],64735:[[1574,1605],256],64736:[[1574,1607],256],64737:[[1576,1605],256],64738:[[1576,1607],256],64739:[[1578,1605],256],64740:[[1578,1607],256],64741:[[1579,1605],256],64742:[[1579,1607],256],64743:[[1587,1605],256],64744:[[1587,1607],256],64745:[[1588,1605],256],64746:[[1588,1607],256],64747:[[1603,1604],256],64748:[[1603,1605],256],64749:[[1604,1605],256],64750:[[1606,1605],256],64751:[[1606,1607],256],64752:[[1610,1605],256],64753:[[1610,1607],256],64754:[[1600,1614,1617],256],64755:[[1600,1615,1617],256],64756:[[1600,1616,1617],256],64757:[[1591,1609],256],64758:[[1591,1610],256],64759:[[1593,1609],256],64760:[[1593,1610],256],64761:[[1594,1609],256],64762:[[1594,1610],256],64763:[[1587,1609],256],64764:[[1587,1610],256],64765:[[1588,1609],256],64766:[[1588,1610],256],64767:[[1581,1609],256]},\n64768:{64768:[[1581,1610],256],64769:[[1580,1609],256],64770:[[1580,1610],256],64771:[[1582,1609],256],64772:[[1582,1610],256],64773:[[1589,1609],256],64774:[[1589,1610],256],64775:[[1590,1609],256],64776:[[1590,1610],256],64777:[[1588,1580],256],64778:[[1588,1581],256],64779:[[1588,1582],256],64780:[[1588,1605],256],64781:[[1588,1585],256],64782:[[1587,1585],256],64783:[[1589,1585],256],64784:[[1590,1585],256],64785:[[1591,1609],256],64786:[[1591,1610],256],64787:[[1593,1609],256],64788:[[1593,1610],256],64789:[[1594,1609],256],64790:[[1594,1610],256],64791:[[1587,1609],256],64792:[[1587,1610],256],64793:[[1588,1609],256],64794:[[1588,1610],256],64795:[[1581,1609],256],64796:[[1581,1610],256],64797:[[1580,1609],256],64798:[[1580,1610],256],64799:[[1582,1609],256],64800:[[1582,1610],256],64801:[[1589,1609],256],64802:[[1589,1610],256],64803:[[1590,1609],256],64804:[[1590,1610],256],64805:[[1588,1580],256],64806:[[1588,1581],256],64807:[[1588,1582],256],64808:[[1588,1605],256],64809:[[1588,1585],256],64810:[[1587,1585],256],64811:[[1589,1585],256],64812:[[1590,1585],256],64813:[[1588,1580],256],64814:[[1588,1581],256],64815:[[1588,1582],256],64816:[[1588,1605],256],64817:[[1587,1607],256],64818:[[1588,1607],256],64819:[[1591,1605],256],64820:[[1587,1580],256],64821:[[1587,1581],256],64822:[[1587,1582],256],64823:[[1588,1580],256],64824:[[1588,1581],256],64825:[[1588,1582],256],64826:[[1591,1605],256],64827:[[1592,1605],256],64828:[[1575,1611],256],64829:[[1575,1611],256],64848:[[1578,1580,1605],256],64849:[[1578,1581,1580],256],64850:[[1578,1581,1580],256],64851:[[1578,1581,1605],256],64852:[[1578,1582,1605],256],64853:[[1578,1605,1580],256],64854:[[1578,1605,1581],256],64855:[[1578,1605,1582],256],64856:[[1580,1605,1581],256],64857:[[1580,1605,1581],256],64858:[[1581,1605,1610],256],64859:[[1581,1605,1609],256],64860:[[1587,1581,1580],256],64861:[[1587,1580,1581],256],64862:[[1587,1580,1609],256],64863:[[1587,1605,1581],256],64864:[[1587,1605,1581],256],64865:[[1587,1605,1580],256],64866:[[1587,1605,1605],256],64867:[[1587,1605,1605],256],64868:[[1589,1581,1581],256],64869:[[1589,1581,1581],256],64870:[[1589,1605,1605],256],64871:[[1588,1581,1605],256],64872:[[1588,1581,1605],256],64873:[[1588,1580,1610],256],64874:[[1588,1605,1582],256],64875:[[1588,1605,1582],256],64876:[[1588,1605,1605],256],64877:[[1588,1605,1605],256],64878:[[1590,1581,1609],256],64879:[[1590,1582,1605],256],64880:[[1590,1582,1605],256],64881:[[1591,1605,1581],256],64882:[[1591,1605,1581],256],64883:[[1591,1605,1605],256],64884:[[1591,1605,1610],256],64885:[[1593,1580,1605],256],64886:[[1593,1605,1605],256],64887:[[1593,1605,1605],256],64888:[[1593,1605,1609],256],64889:[[1594,1605,1605],256],64890:[[1594,1605,1610],256],64891:[[1594,1605,1609],256],64892:[[1601,1582,1605],256],64893:[[1601,1582,1605],256],64894:[[1602,1605,1581],256],64895:[[1602,1605,1605],256],64896:[[1604,1581,1605],256],64897:[[1604,1581,1610],256],64898:[[1604,1581,1609],256],64899:[[1604,1580,1580],256],64900:[[1604,1580,1580],256],64901:[[1604,1582,1605],256],64902:[[1604,1582,1605],256],64903:[[1604,1605,1581],256],64904:[[1604,1605,1581],256],64905:[[1605,1581,1580],256],64906:[[1605,1581,1605],256],64907:[[1605,1581,1610],256],64908:[[1605,1580,1581],256],64909:[[1605,1580,1605],256],64910:[[1605,1582,1580],256],64911:[[1605,1582,1605],256],64914:[[1605,1580,1582],256],64915:[[1607,1605,1580],256],64916:[[1607,1605,1605],256],64917:[[1606,1581,1605],256],64918:[[1606,1581,1609],256],64919:[[1606,1580,1605],256],64920:[[1606,1580,1605],256],64921:[[1606,1580,1609],256],64922:[[1606,1605,1610],256],64923:[[1606,1605,1609],256],64924:[[1610,1605,1605],256],64925:[[1610,1605,1605],256],64926:[[1576,1582,1610],256],64927:[[1578,1580,1610],256],64928:[[1578,1580,1609],256],64929:[[1578,1582,1610],256],64930:[[1578,1582,1609],256],64931:[[1578,1605,1610],256],64932:[[1578,1605,1609],256],64933:[[1580,1605,1610],256],64934:[[1580,1581,1609],256],64935:[[1580,1605,1609],256],64936:[[1587,1582,1609],256],64937:[[1589,1581,1610],256],64938:[[1588,1581,1610],256],64939:[[1590,1581,1610],256],64940:[[1604,1580,1610],256],64941:[[1604,1605,1610],256],64942:[[1610,1581,1610],256],64943:[[1610,1580,1610],256],64944:[[1610,1605,1610],256],64945:[[1605,1605,1610],256],64946:[[1602,1605,1610],256],64947:[[1606,1581,1610],256],64948:[[1602,1605,1581],256],64949:[[1604,1581,1605],256],64950:[[1593,1605,1610],256],64951:[[1603,1605,1610],256],64952:[[1606,1580,1581],256],64953:[[1605,1582,1610],256],64954:[[1604,1580,1605],256],64955:[[1603,1605,1605],256],64956:[[1604,1580,1605],256],64957:[[1606,1580,1581],256],64958:[[1580,1581,1610],256],64959:[[1581,1580,1610],256],64960:[[1605,1580,1610],256],64961:[[1601,1605,1610],256],64962:[[1576,1581,1610],256],64963:[[1603,1605,1605],256],64964:[[1593,1580,1605],256],64965:[[1589,1605,1605],256],64966:[[1587,1582,1610],256],64967:[[1606,1580,1610],256],65008:[[1589,1604,1746],256],65009:[[1602,1604,1746],256],65010:[[1575,1604,1604,1607],256],65011:[[1575,1603,1576,1585],256],65012:[[1605,1581,1605,1583],256],65013:[[1589,1604,1593,1605],256],65014:[[1585,1587,1608,1604],256],65015:[[1593,1604,1610,1607],256],65016:[[1608,1587,1604,1605],256],65017:[[1589,1604,1609],256],65018:[[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605],256],65019:[[1580,1604,32,1580,1604,1575,1604,1607],256],65020:[[1585,1740,1575,1604],256]},\n65024:{65040:[[44],256],65041:[[12289],256],65042:[[12290],256],65043:[[58],256],65044:[[59],256],65045:[[33],256],65046:[[63],256],65047:[[12310],256],65048:[[12311],256],65049:[[8230],256],65056:[,230],65057:[,230],65058:[,230],65059:[,230],65060:[,230],65061:[,230],65062:[,230],65063:[,220],65064:[,220],65065:[,220],65066:[,220],65067:[,220],65068:[,220],65069:[,220],65072:[[8229],256],65073:[[8212],256],65074:[[8211],256],65075:[[95],256],65076:[[95],256],65077:[[40],256],65078:[[41],256],65079:[[123],256],65080:[[125],256],65081:[[12308],256],65082:[[12309],256],65083:[[12304],256],65084:[[12305],256],65085:[[12298],256],65086:[[12299],256],65087:[[12296],256],65088:[[12297],256],65089:[[12300],256],65090:[[12301],256],65091:[[12302],256],65092:[[12303],256],65095:[[91],256],65096:[[93],256],65097:[[8254],256],65098:[[8254],256],65099:[[8254],256],65100:[[8254],256],65101:[[95],256],65102:[[95],256],65103:[[95],256],65104:[[44],256],65105:[[12289],256],65106:[[46],256],65108:[[59],256],65109:[[58],256],65110:[[63],256],65111:[[33],256],65112:[[8212],256],65113:[[40],256],65114:[[41],256],65115:[[123],256],65116:[[125],256],65117:[[12308],256],65118:[[12309],256],65119:[[35],256],65120:[[38],256],65121:[[42],256],65122:[[43],256],65123:[[45],256],65124:[[60],256],65125:[[62],256],65126:[[61],256],65128:[[92],256],65129:[[36],256],65130:[[37],256],65131:[[64],256],65136:[[32,1611],256],65137:[[1600,1611],256],65138:[[32,1612],256],65140:[[32,1613],256],65142:[[32,1614],256],65143:[[1600,1614],256],65144:[[32,1615],256],65145:[[1600,1615],256],65146:[[32,1616],256],65147:[[1600,1616],256],65148:[[32,1617],256],65149:[[1600,1617],256],65150:[[32,1618],256],65151:[[1600,1618],256],65152:[[1569],256],65153:[[1570],256],65154:[[1570],256],65155:[[1571],256],65156:[[1571],256],65157:[[1572],256],65158:[[1572],256],65159:[[1573],256],65160:[[1573],256],65161:[[1574],256],65162:[[1574],256],65163:[[1574],256],65164:[[1574],256],65165:[[1575],256],65166:[[1575],256],65167:[[1576],256],65168:[[1576],256],65169:[[1576],256],65170:[[1576],256],65171:[[1577],256],65172:[[1577],256],65173:[[1578],256],65174:[[1578],256],65175:[[1578],256],65176:[[1578],256],65177:[[1579],256],65178:[[1579],256],65179:[[1579],256],65180:[[1579],256],65181:[[1580],256],65182:[[1580],256],65183:[[1580],256],65184:[[1580],256],65185:[[1581],256],65186:[[1581],256],65187:[[1581],256],65188:[[1581],256],65189:[[1582],256],65190:[[1582],256],65191:[[1582],256],65192:[[1582],256],65193:[[1583],256],65194:[[1583],256],65195:[[1584],256],65196:[[1584],256],65197:[[1585],256],65198:[[1585],256],65199:[[1586],256],65200:[[1586],256],65201:[[1587],256],65202:[[1587],256],65203:[[1587],256],65204:[[1587],256],65205:[[1588],256],65206:[[1588],256],65207:[[1588],256],65208:[[1588],256],65209:[[1589],256],65210:[[1589],256],65211:[[1589],256],65212:[[1589],256],65213:[[1590],256],65214:[[1590],256],65215:[[1590],256],65216:[[1590],256],65217:[[1591],256],65218:[[1591],256],65219:[[1591],256],65220:[[1591],256],65221:[[1592],256],65222:[[1592],256],65223:[[1592],256],65224:[[1592],256],65225:[[1593],256],65226:[[1593],256],65227:[[1593],256],65228:[[1593],256],65229:[[1594],256],65230:[[1594],256],65231:[[1594],256],65232:[[1594],256],65233:[[1601],256],65234:[[1601],256],65235:[[1601],256],65236:[[1601],256],65237:[[1602],256],65238:[[1602],256],65239:[[1602],256],65240:[[1602],256],65241:[[1603],256],65242:[[1603],256],65243:[[1603],256],65244:[[1603],256],65245:[[1604],256],65246:[[1604],256],65247:[[1604],256],65248:[[1604],256],65249:[[1605],256],65250:[[1605],256],65251:[[1605],256],65252:[[1605],256],65253:[[1606],256],65254:[[1606],256],65255:[[1606],256],65256:[[1606],256],65257:[[1607],256],65258:[[1607],256],65259:[[1607],256],65260:[[1607],256],65261:[[1608],256],65262:[[1608],256],65263:[[1609],256],65264:[[1609],256],65265:[[1610],256],65266:[[1610],256],65267:[[1610],256],65268:[[1610],256],65269:[[1604,1570],256],65270:[[1604,1570],256],65271:[[1604,1571],256],65272:[[1604,1571],256],65273:[[1604,1573],256],65274:[[1604,1573],256],65275:[[1604,1575],256],65276:[[1604,1575],256]},\n65280:{65281:[[33],256],65282:[[34],256],65283:[[35],256],65284:[[36],256],65285:[[37],256],65286:[[38],256],65287:[[39],256],65288:[[40],256],65289:[[41],256],65290:[[42],256],65291:[[43],256],65292:[[44],256],65293:[[45],256],65294:[[46],256],65295:[[47],256],65296:[[48],256],65297:[[49],256],65298:[[50],256],65299:[[51],256],65300:[[52],256],65301:[[53],256],65302:[[54],256],65303:[[55],256],65304:[[56],256],65305:[[57],256],65306:[[58],256],65307:[[59],256],65308:[[60],256],65309:[[61],256],65310:[[62],256],65311:[[63],256],65312:[[64],256],65313:[[65],256],65314:[[66],256],65315:[[67],256],65316:[[68],256],65317:[[69],256],65318:[[70],256],65319:[[71],256],65320:[[72],256],65321:[[73],256],65322:[[74],256],65323:[[75],256],65324:[[76],256],65325:[[77],256],65326:[[78],256],65327:[[79],256],65328:[[80],256],65329:[[81],256],65330:[[82],256],65331:[[83],256],65332:[[84],256],65333:[[85],256],65334:[[86],256],65335:[[87],256],65336:[[88],256],65337:[[89],256],65338:[[90],256],65339:[[91],256],65340:[[92],256],65341:[[93],256],65342:[[94],256],65343:[[95],256],65344:[[96],256],65345:[[97],256],65346:[[98],256],65347:[[99],256],65348:[[100],256],65349:[[101],256],65350:[[102],256],65351:[[103],256],65352:[[104],256],65353:[[105],256],65354:[[106],256],65355:[[107],256],65356:[[108],256],65357:[[109],256],65358:[[110],256],65359:[[111],256],65360:[[112],256],65361:[[113],256],65362:[[114],256],65363:[[115],256],65364:[[116],256],65365:[[117],256],65366:[[118],256],65367:[[119],256],65368:[[120],256],65369:[[121],256],65370:[[122],256],65371:[[123],256],65372:[[124],256],65373:[[125],256],65374:[[126],256],65375:[[10629],256],65376:[[10630],256],65377:[[12290],256],65378:[[12300],256],65379:[[12301],256],65380:[[12289],256],65381:[[12539],256],65382:[[12530],256],65383:[[12449],256],65384:[[12451],256],65385:[[12453],256],65386:[[12455],256],65387:[[12457],256],65388:[[12515],256],65389:[[12517],256],65390:[[12519],256],65391:[[12483],256],65392:[[12540],256],65393:[[12450],256],65394:[[12452],256],65395:[[12454],256],65396:[[12456],256],65397:[[12458],256],65398:[[12459],256],65399:[[12461],256],65400:[[12463],256],65401:[[12465],256],65402:[[12467],256],65403:[[12469],256],65404:[[12471],256],65405:[[12473],256],65406:[[12475],256],65407:[[12477],256],65408:[[12479],256],65409:[[12481],256],65410:[[12484],256],65411:[[12486],256],65412:[[12488],256],65413:[[12490],256],65414:[[12491],256],65415:[[12492],256],65416:[[12493],256],65417:[[12494],256],65418:[[12495],256],65419:[[12498],256],65420:[[12501],256],65421:[[12504],256],65422:[[12507],256],65423:[[12510],256],65424:[[12511],256],65425:[[12512],256],65426:[[12513],256],65427:[[12514],256],65428:[[12516],256],65429:[[12518],256],65430:[[12520],256],65431:[[12521],256],65432:[[12522],256],65433:[[12523],256],65434:[[12524],256],65435:[[12525],256],65436:[[12527],256],65437:[[12531],256],65438:[[12441],256],65439:[[12442],256],65440:[[12644],256],65441:[[12593],256],65442:[[12594],256],65443:[[12595],256],65444:[[12596],256],65445:[[12597],256],65446:[[12598],256],65447:[[12599],256],65448:[[12600],256],65449:[[12601],256],65450:[[12602],256],65451:[[12603],256],65452:[[12604],256],65453:[[12605],256],65454:[[12606],256],65455:[[12607],256],65456:[[12608],256],65457:[[12609],256],65458:[[12610],256],65459:[[12611],256],65460:[[12612],256],65461:[[12613],256],65462:[[12614],256],65463:[[12615],256],65464:[[12616],256],65465:[[12617],256],65466:[[12618],256],65467:[[12619],256],65468:[[12620],256],65469:[[12621],256],65470:[[12622],256],65474:[[12623],256],65475:[[12624],256],65476:[[12625],256],65477:[[12626],256],65478:[[12627],256],65479:[[12628],256],65482:[[12629],256],65483:[[12630],256],65484:[[12631],256],65485:[[12632],256],65486:[[12633],256],65487:[[12634],256],65490:[[12635],256],65491:[[12636],256],65492:[[12637],256],65493:[[12638],256],65494:[[12639],256],65495:[[12640],256],65498:[[12641],256],65499:[[12642],256],65500:[[12643],256],65504:[[162],256],65505:[[163],256],65506:[[172],256],65507:[[175],256],65508:[[166],256],65509:[[165],256],65510:[[8361],256],65512:[[9474],256],65513:[[8592],256],65514:[[8593],256],65515:[[8594],256],65516:[[8595],256],65517:[[9632],256],65518:[[9675],256]}\n\n};\n\n /***** Module to export */\n var unorm = {\n nfc: nfc,\n nfd: nfd,\n nfkc: nfkc,\n nfkd: nfkd\n };\n\n /*globals module:true,define:true*/\n\n // CommonJS\n if (typeof module === \"object\") {\n module.exports = unorm;\n\n // AMD\n } else if (typeof define === \"function\" && define.amd) {\n define(\"unorm\", function () {\n return unorm;\n });\n\n // Global\n } else {\n root.unorm = unorm;\n }\n\n /***** Export as shim for String::normalize method *****/\n /*\n http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#november_8_2013_draft_rev_21\n\n 21.1.3.12 String.prototype.normalize(form=\"NFC\")\n When the normalize method is called with one argument form, the following steps are taken:\n\n 1. Let O be CheckObjectCoercible(this value).\n 2. Let S be ToString(O).\n 3. ReturnIfAbrupt(S).\n 4. If form is not provided or undefined let form be \"NFC\".\n 5. Let f be ToString(form).\n 6. ReturnIfAbrupt(f).\n 7. If f is not one of \"NFC\", \"NFD\", \"NFKC\", or \"NFKD\", then throw a RangeError Exception.\n 8. Let ns be the String value is the result of normalizing S into the normalization form named by f as specified in Unicode Standard Annex #15, UnicodeNormalizatoin Forms.\n 9. Return ns.\n\n The length property of the normalize method is 0.\n\n *NOTE* The normalize function is intentionally generic; it does not require that its this value be a String object. Therefore it can be transferred to other kinds of objects for use as a method.\n */\n unorm.shimApplied = false;\n\n if (!String.prototype.normalize) {\n Object.defineProperty(String.prototype, \"normalize\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function(form) {\n var str = \"\" + this;\n form = form === undefined ? \"NFC\" : form;\n \n if (form === \"NFC\") {\n return unorm.nfc(str);\n } else if (form === \"NFD\") {\n return unorm.nfd(str);\n } else if (form === \"NFKC\") {\n return unorm.nfkc(str);\n } else if (form === \"NFKD\") {\n return unorm.nfkd(str);\n } else {\n throw new RangeError(\"Invalid normalization form: \" + form);\n }\n }\n });\n\n unorm.shimApplied = true;\n }\n}(this));\n","[\n \"的\",\n \"一\",\n \"是\",\n \"在\",\n \"不\",\n \"了\",\n \"有\",\n \"和\",\n \"人\",\n \"这\",\n \"中\",\n \"大\",\n \"为\",\n \"上\",\n \"个\",\n \"国\",\n \"我\",\n \"以\",\n \"要\",\n \"他\",\n \"时\",\n \"来\",\n \"用\",\n \"们\",\n \"生\",\n \"到\",\n \"作\",\n \"地\",\n \"于\",\n \"出\",\n \"就\",\n \"分\",\n \"对\",\n \"成\",\n \"会\",\n \"可\",\n \"主\",\n \"发\",\n \"年\",\n \"动\",\n \"同\",\n \"工\",\n \"也\",\n \"能\",\n \"下\",\n \"过\",\n \"子\",\n \"说\",\n \"产\",\n \"种\",\n \"面\",\n \"而\",\n \"方\",\n \"后\",\n \"多\",\n \"定\",\n \"行\",\n \"学\",\n \"法\",\n \"所\",\n \"民\",\n \"得\",\n \"经\",\n \"十\",\n \"三\",\n \"之\",\n \"进\",\n \"着\",\n \"等\",\n \"部\",\n \"度\",\n \"家\",\n \"电\",\n \"力\",\n \"里\",\n \"如\",\n \"水\",\n \"化\",\n \"高\",\n \"自\",\n \"二\",\n \"理\",\n \"起\",\n \"小\",\n \"物\",\n \"现\",\n \"实\",\n \"加\",\n \"量\",\n \"都\",\n \"两\",\n \"体\",\n \"制\",\n \"机\",\n \"当\",\n \"使\",\n \"点\",\n \"从\",\n \"业\",\n \"本\",\n \"去\",\n \"把\",\n \"性\",\n \"好\",\n \"应\",\n \"开\",\n \"它\",\n \"合\",\n \"还\",\n \"因\",\n \"由\",\n \"其\",\n \"些\",\n \"然\",\n \"前\",\n \"外\",\n \"天\",\n \"政\",\n \"四\",\n \"日\",\n \"那\",\n \"社\",\n \"义\",\n \"事\",\n \"平\",\n \"形\",\n \"相\",\n \"全\",\n \"表\",\n \"间\",\n \"样\",\n \"与\",\n \"关\",\n \"各\",\n \"重\",\n \"新\",\n \"线\",\n \"内\",\n \"数\",\n \"正\",\n \"心\",\n \"反\",\n \"你\",\n \"明\",\n \"看\",\n \"原\",\n \"又\",\n \"么\",\n \"利\",\n \"比\",\n \"或\",\n \"但\",\n \"质\",\n \"气\",\n \"第\",\n \"向\",\n \"道\",\n \"命\",\n \"此\",\n \"变\",\n \"条\",\n \"只\",\n \"没\",\n \"结\",\n \"解\",\n \"问\",\n \"意\",\n \"建\",\n \"月\",\n \"公\",\n \"无\",\n \"系\",\n \"军\",\n \"很\",\n \"情\",\n \"者\",\n \"最\",\n \"立\",\n \"代\",\n \"想\",\n \"已\",\n \"通\",\n \"并\",\n \"提\",\n \"直\",\n \"题\",\n \"党\",\n \"程\",\n \"展\",\n \"五\",\n \"果\",\n \"料\",\n \"象\",\n \"员\",\n \"革\",\n \"位\",\n \"入\",\n \"常\",\n \"文\",\n \"总\",\n \"次\",\n \"品\",\n \"式\",\n \"活\",\n \"设\",\n \"及\",\n \"管\",\n \"特\",\n \"件\",\n \"长\",\n \"求\",\n \"老\",\n \"头\",\n \"基\",\n \"资\",\n \"边\",\n \"流\",\n \"路\",\n \"级\",\n \"少\",\n \"图\",\n \"山\",\n \"统\",\n \"接\",\n \"知\",\n \"较\",\n \"将\",\n \"组\",\n \"见\",\n \"计\",\n \"别\",\n \"她\",\n \"手\",\n \"角\",\n \"期\",\n \"根\",\n \"论\",\n \"运\",\n \"农\",\n \"指\",\n \"几\",\n \"九\",\n \"区\",\n \"强\",\n \"放\",\n \"决\",\n \"西\",\n \"被\",\n \"干\",\n \"做\",\n \"必\",\n \"战\",\n \"先\",\n \"回\",\n \"则\",\n \"任\",\n \"取\",\n \"据\",\n \"处\",\n \"队\",\n \"南\",\n \"给\",\n \"色\",\n \"光\",\n \"门\",\n \"即\",\n \"保\",\n \"治\",\n \"北\",\n \"造\",\n \"百\",\n \"规\",\n \"热\",\n \"领\",\n \"七\",\n \"海\",\n \"口\",\n \"东\",\n \"导\",\n \"器\",\n \"压\",\n \"志\",\n \"世\",\n \"金\",\n \"增\",\n \"争\",\n \"济\",\n \"阶\",\n \"油\",\n \"思\",\n \"术\",\n \"极\",\n \"交\",\n \"受\",\n \"联\",\n \"什\",\n \"认\",\n \"六\",\n \"共\",\n \"权\",\n \"收\",\n \"证\",\n \"改\",\n \"清\",\n \"美\",\n \"再\",\n \"采\",\n \"转\",\n \"更\",\n \"单\",\n \"风\",\n \"切\",\n \"打\",\n \"白\",\n \"教\",\n \"速\",\n \"花\",\n \"带\",\n \"安\",\n \"场\",\n \"身\",\n \"车\",\n \"例\",\n \"真\",\n \"务\",\n \"具\",\n \"万\",\n \"每\",\n \"目\",\n \"至\",\n \"达\",\n \"走\",\n \"积\",\n \"示\",\n \"议\",\n \"声\",\n \"报\",\n \"斗\",\n \"完\",\n \"类\",\n \"八\",\n \"离\",\n \"华\",\n \"名\",\n \"确\",\n \"才\",\n \"科\",\n \"张\",\n \"信\",\n \"马\",\n \"节\",\n \"话\",\n \"米\",\n \"整\",\n \"空\",\n \"元\",\n \"况\",\n \"今\",\n \"集\",\n \"温\",\n \"传\",\n \"土\",\n \"许\",\n \"步\",\n \"群\",\n \"广\",\n \"石\",\n \"记\",\n \"需\",\n \"段\",\n \"研\",\n \"界\",\n \"拉\",\n \"林\",\n \"律\",\n \"叫\",\n \"且\",\n \"究\",\n \"观\",\n \"越\",\n \"织\",\n \"装\",\n \"影\",\n \"算\",\n \"低\",\n \"持\",\n \"音\",\n \"众\",\n \"书\",\n \"布\",\n \"复\",\n \"容\",\n \"儿\",\n \"须\",\n \"际\",\n \"商\",\n \"非\",\n \"验\",\n \"连\",\n \"断\",\n \"深\",\n \"难\",\n \"近\",\n \"矿\",\n \"千\",\n \"周\",\n \"委\",\n \"素\",\n \"技\",\n \"备\",\n \"半\",\n \"办\",\n \"青\",\n \"省\",\n \"列\",\n \"习\",\n \"响\",\n \"约\",\n \"支\",\n \"般\",\n \"史\",\n \"感\",\n \"劳\",\n \"便\",\n \"团\",\n \"往\",\n \"酸\",\n \"历\",\n \"市\",\n \"克\",\n \"何\",\n \"除\",\n \"消\",\n \"构\",\n \"府\",\n \"称\",\n \"太\",\n \"准\",\n \"精\",\n \"值\",\n \"号\",\n \"率\",\n \"族\",\n \"维\",\n \"划\",\n \"选\",\n \"标\",\n \"写\",\n \"存\",\n \"候\",\n \"毛\",\n \"亲\",\n \"快\",\n \"效\",\n \"斯\",\n \"院\",\n \"查\",\n \"江\",\n \"型\",\n \"眼\",\n \"王\",\n \"按\",\n \"格\",\n \"养\",\n \"易\",\n \"置\",\n \"派\",\n \"层\",\n \"片\",\n \"始\",\n \"却\",\n \"专\",\n \"状\",\n \"育\",\n \"厂\",\n \"京\",\n \"识\",\n \"适\",\n \"属\",\n \"圆\",\n \"包\",\n \"火\",\n \"住\",\n \"调\",\n \"满\",\n \"县\",\n \"局\",\n \"照\",\n \"参\",\n \"红\",\n \"细\",\n \"引\",\n \"听\",\n \"该\",\n \"铁\",\n \"价\",\n \"严\",\n \"首\",\n \"底\",\n \"液\",\n \"官\",\n \"德\",\n \"随\",\n \"病\",\n \"苏\",\n \"失\",\n \"尔\",\n \"死\",\n \"讲\",\n \"配\",\n \"女\",\n \"黄\",\n \"推\",\n \"显\",\n \"谈\",\n \"罪\",\n \"神\",\n \"艺\",\n \"呢\",\n \"席\",\n \"含\",\n \"企\",\n \"望\",\n \"密\",\n \"批\",\n \"营\",\n \"项\",\n \"防\",\n \"举\",\n \"球\",\n \"英\",\n \"氧\",\n \"势\",\n \"告\",\n \"李\",\n \"台\",\n \"落\",\n \"木\",\n \"帮\",\n \"轮\",\n \"破\",\n \"亚\",\n \"师\",\n \"围\",\n \"注\",\n \"远\",\n \"字\",\n \"材\",\n \"排\",\n \"供\",\n \"河\",\n \"态\",\n \"封\",\n \"另\",\n \"施\",\n \"减\",\n \"树\",\n \"溶\",\n \"怎\",\n \"止\",\n \"案\",\n \"言\",\n \"士\",\n \"均\",\n \"武\",\n \"固\",\n \"叶\",\n \"鱼\",\n \"波\",\n \"视\",\n \"仅\",\n \"费\",\n \"紧\",\n \"爱\",\n \"左\",\n \"章\",\n \"早\",\n \"朝\",\n \"害\",\n \"续\",\n \"轻\",\n \"服\",\n \"试\",\n \"食\",\n \"充\",\n \"兵\",\n \"源\",\n \"判\",\n \"护\",\n \"司\",\n \"足\",\n \"某\",\n \"练\",\n \"差\",\n \"致\",\n \"板\",\n \"田\",\n \"降\",\n \"黑\",\n \"犯\",\n \"负\",\n \"击\",\n \"范\",\n \"继\",\n \"兴\",\n \"似\",\n \"余\",\n \"坚\",\n \"曲\",\n \"输\",\n \"修\",\n \"故\",\n \"城\",\n \"夫\",\n \"够\",\n \"送\",\n \"笔\",\n \"船\",\n \"占\",\n \"右\",\n \"财\",\n \"吃\",\n \"富\",\n \"春\",\n \"职\",\n \"觉\",\n \"汉\",\n \"画\",\n \"功\",\n \"巴\",\n \"跟\",\n \"虽\",\n \"杂\",\n \"飞\",\n \"检\",\n \"吸\",\n \"助\",\n \"升\",\n \"阳\",\n \"互\",\n \"初\",\n \"创\",\n \"抗\",\n \"考\",\n \"投\",\n \"坏\",\n \"策\",\n \"古\",\n \"径\",\n \"换\",\n \"未\",\n \"跑\",\n \"留\",\n \"钢\",\n \"曾\",\n \"端\",\n \"责\",\n \"站\",\n \"简\",\n \"述\",\n \"钱\",\n \"副\",\n \"尽\",\n \"帝\",\n \"射\",\n \"草\",\n \"冲\",\n \"承\",\n \"独\",\n \"令\",\n \"限\",\n \"阿\",\n \"宣\",\n \"环\",\n \"双\",\n \"请\",\n \"超\",\n \"微\",\n \"让\",\n \"控\",\n \"州\",\n \"良\",\n \"轴\",\n \"找\",\n \"否\",\n \"纪\",\n \"益\",\n \"依\",\n \"优\",\n \"顶\",\n \"础\",\n \"载\",\n \"倒\",\n \"房\",\n \"突\",\n \"坐\",\n \"粉\",\n \"敌\",\n \"略\",\n \"客\",\n \"袁\",\n \"冷\",\n \"胜\",\n \"绝\",\n \"析\",\n \"块\",\n \"剂\",\n \"测\",\n \"丝\",\n \"协\",\n \"诉\",\n \"念\",\n \"陈\",\n \"仍\",\n \"罗\",\n \"盐\",\n \"友\",\n \"洋\",\n \"错\",\n \"苦\",\n \"夜\",\n \"刑\",\n \"移\",\n \"频\",\n \"逐\",\n \"靠\",\n \"混\",\n \"母\",\n \"短\",\n \"皮\",\n \"终\",\n \"聚\",\n \"汽\",\n \"村\",\n \"云\",\n \"哪\",\n \"既\",\n \"距\",\n \"卫\",\n \"停\",\n \"烈\",\n \"央\",\n \"察\",\n \"烧\",\n \"迅\",\n \"境\",\n \"若\",\n \"印\",\n \"洲\",\n \"刻\",\n \"括\",\n \"激\",\n \"孔\",\n \"搞\",\n \"甚\",\n \"室\",\n \"待\",\n \"核\",\n \"校\",\n \"散\",\n \"侵\",\n \"吧\",\n \"甲\",\n \"游\",\n \"久\",\n \"菜\",\n \"味\",\n \"旧\",\n \"模\",\n \"湖\",\n \"货\",\n \"损\",\n \"预\",\n \"阻\",\n \"毫\",\n \"普\",\n \"稳\",\n \"乙\",\n \"妈\",\n \"植\",\n \"息\",\n \"扩\",\n \"银\",\n \"语\",\n \"挥\",\n \"酒\",\n \"守\",\n \"拿\",\n \"序\",\n \"纸\",\n \"医\",\n \"缺\",\n \"雨\",\n \"吗\",\n \"针\",\n \"刘\",\n \"啊\",\n \"急\",\n \"唱\",\n \"误\",\n \"训\",\n \"愿\",\n \"审\",\n \"附\",\n \"获\",\n \"茶\",\n \"鲜\",\n \"粮\",\n \"斤\",\n \"孩\",\n \"脱\",\n \"硫\",\n \"肥\",\n \"善\",\n \"龙\",\n \"演\",\n \"父\",\n \"渐\",\n \"血\",\n \"欢\",\n \"械\",\n \"掌\",\n \"歌\",\n \"沙\",\n \"刚\",\n \"攻\",\n \"谓\",\n \"盾\",\n \"讨\",\n \"晚\",\n \"粒\",\n \"乱\",\n \"燃\",\n \"矛\",\n \"乎\",\n \"杀\",\n \"药\",\n \"宁\",\n \"鲁\",\n \"贵\",\n \"钟\",\n \"煤\",\n \"读\",\n \"班\",\n \"伯\",\n \"香\",\n \"介\",\n \"迫\",\n \"句\",\n \"丰\",\n \"培\",\n \"握\",\n \"兰\",\n \"担\",\n \"弦\",\n \"蛋\",\n \"沉\",\n \"假\",\n \"穿\",\n \"执\",\n \"答\",\n \"乐\",\n \"谁\",\n \"顺\",\n \"烟\",\n \"缩\",\n \"征\",\n \"脸\",\n \"喜\",\n \"松\",\n \"脚\",\n \"困\",\n \"异\",\n \"免\",\n \"背\",\n \"星\",\n \"福\",\n \"买\",\n \"染\",\n \"井\",\n \"概\",\n \"慢\",\n \"怕\",\n \"磁\",\n \"倍\",\n \"祖\",\n \"皇\",\n \"促\",\n \"静\",\n \"补\",\n \"评\",\n \"翻\",\n \"肉\",\n \"践\",\n \"尼\",\n \"衣\",\n \"宽\",\n \"扬\",\n \"棉\",\n \"希\",\n \"伤\",\n \"操\",\n \"垂\",\n \"秋\",\n \"宜\",\n \"氢\",\n \"套\",\n \"督\",\n \"振\",\n \"架\",\n \"亮\",\n \"末\",\n \"宪\",\n \"庆\",\n \"编\",\n \"牛\",\n \"触\",\n \"映\",\n \"雷\",\n \"销\",\n \"诗\",\n \"座\",\n \"居\",\n \"抓\",\n \"裂\",\n \"胞\",\n \"呼\",\n \"娘\",\n \"景\",\n \"威\",\n \"绿\",\n \"晶\",\n \"厚\",\n \"盟\",\n \"衡\",\n \"鸡\",\n \"孙\",\n \"延\",\n \"危\",\n \"胶\",\n \"屋\",\n \"乡\",\n \"临\",\n \"陆\",\n \"顾\",\n \"掉\",\n \"呀\",\n \"灯\",\n \"岁\",\n \"措\",\n \"束\",\n \"耐\",\n \"剧\",\n \"玉\",\n \"赵\",\n \"跳\",\n \"哥\",\n \"季\",\n \"课\",\n \"凯\",\n \"胡\",\n \"额\",\n \"款\",\n \"绍\",\n \"卷\",\n \"齐\",\n \"伟\",\n \"蒸\",\n \"殖\",\n \"永\",\n \"宗\",\n \"苗\",\n \"川\",\n \"炉\",\n \"岩\",\n \"弱\",\n \"零\",\n \"杨\",\n \"奏\",\n \"沿\",\n \"露\",\n \"杆\",\n \"探\",\n \"滑\",\n \"镇\",\n \"饭\",\n \"浓\",\n \"航\",\n \"怀\",\n \"赶\",\n \"库\",\n \"夺\",\n \"伊\",\n \"灵\",\n \"税\",\n \"途\",\n \"灭\",\n \"赛\",\n \"归\",\n \"召\",\n \"鼓\",\n \"播\",\n \"盘\",\n \"裁\",\n \"险\",\n \"康\",\n \"唯\",\n \"录\",\n \"菌\",\n \"纯\",\n \"借\",\n \"糖\",\n \"盖\",\n \"横\",\n \"符\",\n \"私\",\n \"努\",\n \"堂\",\n \"域\",\n \"枪\",\n \"润\",\n \"幅\",\n \"哈\",\n \"竟\",\n \"熟\",\n \"虫\",\n \"泽\",\n \"脑\",\n \"壤\",\n \"碳\",\n \"欧\",\n \"遍\",\n \"侧\",\n \"寨\",\n \"敢\",\n \"彻\",\n \"虑\",\n \"斜\",\n \"薄\",\n \"庭\",\n \"纳\",\n \"弹\",\n \"饲\",\n \"伸\",\n \"折\",\n \"麦\",\n \"湿\",\n \"暗\",\n \"荷\",\n \"瓦\",\n \"塞\",\n \"床\",\n \"筑\",\n \"恶\",\n \"户\",\n \"访\",\n \"塔\",\n \"奇\",\n \"透\",\n \"梁\",\n \"刀\",\n \"旋\",\n \"迹\",\n \"卡\",\n \"氯\",\n \"遇\",\n \"份\",\n \"毒\",\n \"泥\",\n \"退\",\n \"洗\",\n \"摆\",\n \"灰\",\n \"彩\",\n \"卖\",\n \"耗\",\n \"夏\",\n \"择\",\n \"忙\",\n \"铜\",\n \"献\",\n \"硬\",\n \"予\",\n \"繁\",\n \"圈\",\n \"雪\",\n \"函\",\n \"亦\",\n \"抽\",\n \"篇\",\n \"阵\",\n \"阴\",\n \"丁\",\n \"尺\",\n \"追\",\n \"堆\",\n \"雄\",\n \"迎\",\n \"泛\",\n \"爸\",\n \"楼\",\n \"避\",\n \"谋\",\n \"吨\",\n \"野\",\n \"猪\",\n \"旗\",\n \"累\",\n \"偏\",\n \"典\",\n \"馆\",\n \"索\",\n \"秦\",\n \"脂\",\n \"潮\",\n \"爷\",\n \"豆\",\n \"忽\",\n \"托\",\n \"惊\",\n \"塑\",\n \"遗\",\n \"愈\",\n \"朱\",\n \"替\",\n \"纤\",\n \"粗\",\n \"倾\",\n \"尚\",\n \"痛\",\n \"楚\",\n \"谢\",\n \"奋\",\n \"购\",\n \"磨\",\n \"君\",\n \"池\",\n \"旁\",\n \"碎\",\n \"骨\",\n \"监\",\n \"捕\",\n \"弟\",\n \"暴\",\n \"割\",\n \"贯\",\n \"殊\",\n \"释\",\n \"词\",\n \"亡\",\n \"壁\",\n \"顿\",\n \"宝\",\n \"午\",\n \"尘\",\n \"闻\",\n \"揭\",\n \"炮\",\n \"残\",\n \"冬\",\n \"桥\",\n \"妇\",\n \"警\",\n \"综\",\n \"招\",\n \"吴\",\n \"付\",\n \"浮\",\n \"遭\",\n \"徐\",\n \"您\",\n \"摇\",\n \"谷\",\n \"赞\",\n \"箱\",\n \"隔\",\n \"订\",\n \"男\",\n \"吹\",\n \"园\",\n \"纷\",\n \"唐\",\n \"败\",\n \"宋\",\n \"玻\",\n \"巨\",\n \"耕\",\n \"坦\",\n \"荣\",\n \"闭\",\n \"湾\",\n \"键\",\n \"凡\",\n \"驻\",\n \"锅\",\n \"救\",\n \"恩\",\n \"剥\",\n \"凝\",\n \"碱\",\n \"齿\",\n \"截\",\n \"炼\",\n \"麻\",\n \"纺\",\n \"禁\",\n \"废\",\n \"盛\",\n \"版\",\n \"缓\",\n \"净\",\n \"睛\",\n \"昌\",\n \"婚\",\n \"涉\",\n \"筒\",\n \"嘴\",\n \"插\",\n \"岸\",\n \"朗\",\n \"庄\",\n \"街\",\n \"藏\",\n \"姑\",\n \"贸\",\n \"腐\",\n \"奴\",\n \"啦\",\n \"惯\",\n \"乘\",\n \"伙\",\n \"恢\",\n \"匀\",\n \"纱\",\n \"扎\",\n \"辩\",\n \"耳\",\n \"彪\",\n \"臣\",\n \"亿\",\n \"璃\",\n \"抵\",\n \"脉\",\n \"秀\",\n \"萨\",\n \"俄\",\n \"网\",\n \"舞\",\n \"店\",\n \"喷\",\n \"纵\",\n \"寸\",\n \"汗\",\n \"挂\",\n \"洪\",\n \"贺\",\n \"闪\",\n \"柬\",\n \"爆\",\n \"烯\",\n \"津\",\n \"稻\",\n \"墙\",\n \"软\",\n \"勇\",\n \"像\",\n \"滚\",\n \"厘\",\n \"蒙\",\n \"芳\",\n \"肯\",\n \"坡\",\n \"柱\",\n \"荡\",\n \"腿\",\n \"仪\",\n \"旅\",\n \"尾\",\n \"轧\",\n \"冰\",\n \"贡\",\n \"登\",\n \"黎\",\n \"削\",\n \"钻\",\n \"勒\",\n \"逃\",\n \"障\",\n \"氨\",\n \"郭\",\n \"峰\",\n \"币\",\n \"港\",\n \"伏\",\n \"轨\",\n \"亩\",\n \"毕\",\n \"擦\",\n \"莫\",\n \"刺\",\n \"浪\",\n \"秘\",\n \"援\",\n \"株\",\n \"健\",\n \"售\",\n \"股\",\n \"岛\",\n \"甘\",\n \"泡\",\n \"睡\",\n \"童\",\n \"铸\",\n \"汤\",\n \"阀\",\n \"休\",\n \"汇\",\n \"舍\",\n \"牧\",\n \"绕\",\n \"炸\",\n \"哲\",\n \"磷\",\n \"绩\",\n \"朋\",\n \"淡\",\n \"尖\",\n \"启\",\n \"陷\",\n \"柴\",\n \"呈\",\n \"徒\",\n \"颜\",\n \"泪\",\n \"稍\",\n \"忘\",\n \"泵\",\n \"蓝\",\n \"拖\",\n \"洞\",\n \"授\",\n \"镜\",\n \"辛\",\n \"壮\",\n \"锋\",\n \"贫\",\n \"虚\",\n \"弯\",\n \"摩\",\n \"泰\",\n \"幼\",\n \"廷\",\n \"尊\",\n \"窗\",\n \"纲\",\n \"弄\",\n \"隶\",\n \"疑\",\n \"氏\",\n \"宫\",\n \"姐\",\n \"震\",\n \"瑞\",\n \"怪\",\n \"尤\",\n \"琴\",\n \"循\",\n \"描\",\n \"膜\",\n \"违\",\n \"夹\",\n \"腰\",\n \"缘\",\n \"珠\",\n \"穷\",\n \"森\",\n \"枝\",\n \"竹\",\n \"沟\",\n \"催\",\n \"绳\",\n \"忆\",\n \"邦\",\n \"剩\",\n \"幸\",\n \"浆\",\n \"栏\",\n \"拥\",\n \"牙\",\n \"贮\",\n \"礼\",\n \"滤\",\n \"钠\",\n \"纹\",\n \"罢\",\n \"拍\",\n \"咱\",\n \"喊\",\n \"袖\",\n \"埃\",\n \"勤\",\n \"罚\",\n \"焦\",\n \"潜\",\n \"伍\",\n \"墨\",\n \"欲\",\n \"缝\",\n \"姓\",\n \"刊\",\n \"饱\",\n \"仿\",\n \"奖\",\n \"铝\",\n \"鬼\",\n \"丽\",\n \"跨\",\n \"默\",\n \"挖\",\n \"链\",\n \"扫\",\n \"喝\",\n \"袋\",\n \"炭\",\n \"污\",\n \"幕\",\n \"诸\",\n \"弧\",\n \"励\",\n \"梅\",\n \"奶\",\n \"洁\",\n \"灾\",\n \"舟\",\n \"鉴\",\n \"苯\",\n \"讼\",\n \"抱\",\n \"毁\",\n \"懂\",\n \"寒\",\n \"智\",\n \"埔\",\n \"寄\",\n \"届\",\n \"跃\",\n \"渡\",\n \"挑\",\n \"丹\",\n \"艰\",\n \"贝\",\n \"碰\",\n \"拔\",\n \"爹\",\n \"戴\",\n \"码\",\n \"梦\",\n \"芽\",\n \"熔\",\n \"赤\",\n \"渔\",\n \"哭\",\n \"敬\",\n \"颗\",\n \"奔\",\n \"铅\",\n \"仲\",\n \"虎\",\n \"稀\",\n \"妹\",\n \"乏\",\n \"珍\",\n \"申\",\n \"桌\",\n \"遵\",\n \"允\",\n \"隆\",\n \"螺\",\n \"仓\",\n \"魏\",\n \"锐\",\n \"晓\",\n \"氮\",\n \"兼\",\n \"隐\",\n \"碍\",\n \"赫\",\n \"拨\",\n \"忠\",\n \"肃\",\n \"缸\",\n \"牵\",\n \"抢\",\n \"博\",\n \"巧\",\n \"壳\",\n \"兄\",\n \"杜\",\n \"讯\",\n \"诚\",\n \"碧\",\n \"祥\",\n \"柯\",\n \"页\",\n \"巡\",\n \"矩\",\n \"悲\",\n \"灌\",\n \"龄\",\n \"伦\",\n \"票\",\n \"寻\",\n \"桂\",\n \"铺\",\n \"圣\",\n \"恐\",\n \"恰\",\n \"郑\",\n \"趣\",\n \"抬\",\n \"荒\",\n \"腾\",\n \"贴\",\n \"柔\",\n \"滴\",\n \"猛\",\n \"阔\",\n \"辆\",\n \"妻\",\n \"填\",\n \"撤\",\n \"储\",\n \"签\",\n \"闹\",\n \"扰\",\n \"紫\",\n \"砂\",\n \"递\",\n \"戏\",\n \"吊\",\n \"陶\",\n \"伐\",\n \"喂\",\n \"疗\",\n \"瓶\",\n \"婆\",\n \"抚\",\n \"臂\",\n \"摸\",\n \"忍\",\n \"虾\",\n \"蜡\",\n \"邻\",\n \"胸\",\n \"巩\",\n \"挤\",\n \"偶\",\n \"弃\",\n \"槽\",\n \"劲\",\n \"乳\",\n \"邓\",\n \"吉\",\n \"仁\",\n \"烂\",\n \"砖\",\n \"租\",\n \"乌\",\n \"舰\",\n \"伴\",\n \"瓜\",\n \"浅\",\n \"丙\",\n \"暂\",\n \"燥\",\n \"橡\",\n \"柳\",\n \"迷\",\n \"暖\",\n \"牌\",\n \"秧\",\n \"胆\",\n \"详\",\n \"簧\",\n \"踏\",\n \"瓷\",\n \"谱\",\n \"呆\",\n \"宾\",\n \"糊\",\n \"洛\",\n \"辉\",\n \"愤\",\n \"竞\",\n \"隙\",\n \"怒\",\n \"粘\",\n \"乃\",\n \"绪\",\n \"肩\",\n \"籍\",\n \"敏\",\n \"涂\",\n \"熙\",\n \"皆\",\n \"侦\",\n \"悬\",\n \"掘\",\n \"享\",\n \"纠\",\n \"醒\",\n \"狂\",\n \"锁\",\n \"淀\",\n \"恨\",\n \"牲\",\n \"霸\",\n \"爬\",\n \"赏\",\n \"逆\",\n \"玩\",\n \"陵\",\n \"祝\",\n \"秒\",\n \"浙\",\n \"貌\",\n \"役\",\n \"彼\",\n \"悉\",\n \"鸭\",\n \"趋\",\n \"凤\",\n \"晨\",\n \"畜\",\n \"辈\",\n \"秩\",\n \"卵\",\n \"署\",\n \"梯\",\n \"炎\",\n \"滩\",\n \"棋\",\n \"驱\",\n \"筛\",\n \"峡\",\n \"冒\",\n \"啥\",\n \"寿\",\n \"译\",\n \"浸\",\n \"泉\",\n \"帽\",\n \"迟\",\n \"硅\",\n \"疆\",\n \"贷\",\n \"漏\",\n \"稿\",\n \"冠\",\n \"嫩\",\n \"胁\",\n \"芯\",\n \"牢\",\n \"叛\",\n \"蚀\",\n \"奥\",\n \"鸣\",\n \"岭\",\n \"羊\",\n \"凭\",\n \"串\",\n \"塘\",\n \"绘\",\n \"酵\",\n \"融\",\n \"盆\",\n \"锡\",\n \"庙\",\n \"筹\",\n \"冻\",\n \"辅\",\n \"摄\",\n \"袭\",\n \"筋\",\n \"拒\",\n \"僚\",\n \"旱\",\n \"钾\",\n \"鸟\",\n \"漆\",\n \"沈\",\n \"眉\",\n \"疏\",\n \"添\",\n \"棒\",\n \"穗\",\n \"硝\",\n \"韩\",\n \"逼\",\n \"扭\",\n \"侨\",\n \"凉\",\n \"挺\",\n \"碗\",\n \"栽\",\n \"炒\",\n \"杯\",\n \"患\",\n \"馏\",\n \"劝\",\n \"豪\",\n \"辽\",\n \"勃\",\n \"鸿\",\n \"旦\",\n \"吏\",\n \"拜\",\n \"狗\",\n \"埋\",\n \"辊\",\n \"掩\",\n \"饮\",\n \"搬\",\n \"骂\",\n \"辞\",\n \"勾\",\n \"扣\",\n \"估\",\n \"蒋\",\n \"绒\",\n \"雾\",\n \"丈\",\n \"朵\",\n \"姆\",\n \"拟\",\n \"宇\",\n \"辑\",\n \"陕\",\n \"雕\",\n \"偿\",\n \"蓄\",\n \"崇\",\n \"剪\",\n \"倡\",\n \"厅\",\n \"咬\",\n \"驶\",\n \"薯\",\n \"刷\",\n \"斥\",\n \"番\",\n \"赋\",\n \"奉\",\n \"佛\",\n \"浇\",\n \"漫\",\n \"曼\",\n \"扇\",\n \"钙\",\n \"桃\",\n \"扶\",\n \"仔\",\n \"返\",\n \"俗\",\n \"亏\",\n \"腔\",\n \"鞋\",\n \"棱\",\n \"覆\",\n \"框\",\n \"悄\",\n \"叔\",\n \"撞\",\n \"骗\",\n \"勘\",\n \"旺\",\n \"沸\",\n \"孤\",\n \"吐\",\n \"孟\",\n \"渠\",\n \"屈\",\n \"疾\",\n \"妙\",\n \"惜\",\n \"仰\",\n \"狠\",\n \"胀\",\n \"谐\",\n \"抛\",\n \"霉\",\n \"桑\",\n \"岗\",\n \"嘛\",\n \"衰\",\n \"盗\",\n \"渗\",\n \"脏\",\n \"赖\",\n \"涌\",\n \"甜\",\n \"曹\",\n \"阅\",\n \"肌\",\n \"哩\",\n \"厉\",\n \"烃\",\n \"纬\",\n \"毅\",\n \"昨\",\n \"伪\",\n \"症\",\n \"煮\",\n \"叹\",\n \"钉\",\n \"搭\",\n \"茎\",\n \"笼\",\n \"酷\",\n \"偷\",\n \"弓\",\n \"锥\",\n \"恒\",\n \"杰\",\n \"坑\",\n \"鼻\",\n \"翼\",\n \"纶\",\n \"叙\",\n \"狱\",\n \"逮\",\n \"罐\",\n \"络\",\n \"棚\",\n \"抑\",\n \"膨\",\n \"蔬\",\n \"寺\",\n \"骤\",\n \"穆\",\n \"冶\",\n \"枯\",\n \"册\",\n \"尸\",\n \"凸\",\n \"绅\",\n \"坯\",\n \"牺\",\n \"焰\",\n \"轰\",\n \"欣\",\n \"晋\",\n \"瘦\",\n \"御\",\n \"锭\",\n \"锦\",\n \"丧\",\n \"旬\",\n \"锻\",\n \"垄\",\n \"搜\",\n \"扑\",\n \"邀\",\n \"亭\",\n \"酯\",\n \"迈\",\n \"舒\",\n \"脆\",\n \"酶\",\n \"闲\",\n \"忧\",\n \"酚\",\n \"顽\",\n \"羽\",\n \"涨\",\n \"卸\",\n \"仗\",\n \"陪\",\n \"辟\",\n \"惩\",\n \"杭\",\n \"姚\",\n \"肚\",\n \"捉\",\n \"飘\",\n \"漂\",\n \"昆\",\n \"欺\",\n \"吾\",\n \"郎\",\n \"烷\",\n \"汁\",\n \"呵\",\n \"饰\",\n \"萧\",\n \"雅\",\n \"邮\",\n \"迁\",\n \"燕\",\n \"撒\",\n \"姻\",\n \"赴\",\n \"宴\",\n \"烦\",\n \"债\",\n \"帐\",\n \"斑\",\n \"铃\",\n \"旨\",\n \"醇\",\n \"董\",\n \"饼\",\n \"雏\",\n \"姿\",\n \"拌\",\n \"傅\",\n \"腹\",\n \"妥\",\n \"揉\",\n \"贤\",\n \"拆\",\n \"歪\",\n \"葡\",\n \"胺\",\n \"丢\",\n \"浩\",\n \"徽\",\n \"昂\",\n \"垫\",\n \"挡\",\n \"览\",\n \"贪\",\n \"慰\",\n \"缴\",\n \"汪\",\n \"慌\",\n \"冯\",\n \"诺\",\n \"姜\",\n \"谊\",\n \"凶\",\n \"劣\",\n \"诬\",\n \"耀\",\n \"昏\",\n \"躺\",\n \"盈\",\n \"骑\",\n \"乔\",\n \"溪\",\n \"丛\",\n \"卢\",\n \"抹\",\n \"闷\",\n \"咨\",\n \"刮\",\n \"驾\",\n \"缆\",\n \"悟\",\n \"摘\",\n \"铒\",\n \"掷\",\n \"颇\",\n \"幻\",\n \"柄\",\n \"惠\",\n \"惨\",\n \"佳\",\n \"仇\",\n \"腊\",\n \"窝\",\n \"涤\",\n \"剑\",\n \"瞧\",\n \"堡\",\n \"泼\",\n \"葱\",\n \"罩\",\n \"霍\",\n \"捞\",\n \"胎\",\n \"苍\",\n \"滨\",\n \"俩\",\n \"捅\",\n \"湘\",\n \"砍\",\n \"霞\",\n \"邵\",\n \"萄\",\n \"疯\",\n \"淮\",\n \"遂\",\n \"熊\",\n \"粪\",\n \"烘\",\n \"宿\",\n \"档\",\n \"戈\",\n \"驳\",\n \"嫂\",\n \"裕\",\n \"徙\",\n \"箭\",\n \"捐\",\n \"肠\",\n \"撑\",\n \"晒\",\n \"辨\",\n \"殿\",\n \"莲\",\n \"摊\",\n \"搅\",\n \"酱\",\n \"屏\",\n \"疫\",\n \"哀\",\n \"蔡\",\n \"堵\",\n \"沫\",\n \"皱\",\n \"畅\",\n \"叠\",\n \"阁\",\n \"莱\",\n \"敲\",\n \"辖\",\n \"钩\",\n \"痕\",\n \"坝\",\n \"巷\",\n \"饿\",\n \"祸\",\n \"丘\",\n \"玄\",\n \"溜\",\n \"曰\",\n \"逻\",\n \"彭\",\n \"尝\",\n \"卿\",\n \"妨\",\n \"艇\",\n \"吞\",\n \"韦\",\n \"怨\",\n \"矮\",\n \"歇\"\n]\n","[\n \"的\",\n \"一\",\n \"是\",\n \"在\",\n \"不\",\n \"了\",\n \"有\",\n \"和\",\n \"人\",\n \"這\",\n \"中\",\n \"大\",\n \"為\",\n \"上\",\n \"個\",\n \"國\",\n \"我\",\n \"以\",\n \"要\",\n \"他\",\n \"時\",\n \"來\",\n \"用\",\n \"們\",\n \"生\",\n \"到\",\n \"作\",\n \"地\",\n \"於\",\n \"出\",\n \"就\",\n \"分\",\n \"對\",\n \"成\",\n \"會\",\n \"可\",\n \"主\",\n \"發\",\n \"年\",\n \"動\",\n \"同\",\n \"工\",\n \"也\",\n \"能\",\n \"下\",\n \"過\",\n \"子\",\n \"說\",\n \"產\",\n \"種\",\n \"面\",\n \"而\",\n \"方\",\n \"後\",\n \"多\",\n \"定\",\n \"行\",\n \"學\",\n \"法\",\n \"所\",\n \"民\",\n \"得\",\n \"經\",\n \"十\",\n \"三\",\n \"之\",\n \"進\",\n \"著\",\n \"等\",\n \"部\",\n \"度\",\n \"家\",\n \"電\",\n \"力\",\n \"裡\",\n \"如\",\n \"水\",\n \"化\",\n \"高\",\n \"自\",\n \"二\",\n \"理\",\n \"起\",\n \"小\",\n \"物\",\n \"現\",\n \"實\",\n \"加\",\n \"量\",\n \"都\",\n \"兩\",\n \"體\",\n \"制\",\n \"機\",\n \"當\",\n \"使\",\n \"點\",\n \"從\",\n \"業\",\n \"本\",\n \"去\",\n \"把\",\n \"性\",\n \"好\",\n \"應\",\n \"開\",\n \"它\",\n \"合\",\n \"還\",\n \"因\",\n \"由\",\n \"其\",\n \"些\",\n \"然\",\n \"前\",\n \"外\",\n \"天\",\n \"政\",\n \"四\",\n \"日\",\n \"那\",\n \"社\",\n \"義\",\n \"事\",\n \"平\",\n \"形\",\n \"相\",\n \"全\",\n \"表\",\n \"間\",\n \"樣\",\n \"與\",\n \"關\",\n \"各\",\n \"重\",\n \"新\",\n \"線\",\n \"內\",\n \"數\",\n \"正\",\n \"心\",\n \"反\",\n \"你\",\n \"明\",\n \"看\",\n \"原\",\n \"又\",\n \"麼\",\n \"利\",\n \"比\",\n \"或\",\n \"但\",\n \"質\",\n \"氣\",\n \"第\",\n \"向\",\n \"道\",\n \"命\",\n \"此\",\n \"變\",\n \"條\",\n \"只\",\n \"沒\",\n \"結\",\n \"解\",\n \"問\",\n \"意\",\n \"建\",\n \"月\",\n \"公\",\n \"無\",\n \"系\",\n \"軍\",\n \"很\",\n \"情\",\n \"者\",\n \"最\",\n \"立\",\n \"代\",\n \"想\",\n \"已\",\n \"通\",\n \"並\",\n \"提\",\n \"直\",\n \"題\",\n \"黨\",\n \"程\",\n \"展\",\n \"五\",\n \"果\",\n \"料\",\n \"象\",\n \"員\",\n \"革\",\n \"位\",\n \"入\",\n \"常\",\n \"文\",\n \"總\",\n \"次\",\n \"品\",\n \"式\",\n \"活\",\n \"設\",\n \"及\",\n \"管\",\n \"特\",\n \"件\",\n \"長\",\n \"求\",\n \"老\",\n \"頭\",\n \"基\",\n \"資\",\n \"邊\",\n \"流\",\n \"路\",\n \"級\",\n \"少\",\n \"圖\",\n \"山\",\n \"統\",\n \"接\",\n \"知\",\n \"較\",\n \"將\",\n \"組\",\n \"見\",\n \"計\",\n \"別\",\n \"她\",\n \"手\",\n \"角\",\n \"期\",\n \"根\",\n \"論\",\n \"運\",\n \"農\",\n \"指\",\n \"幾\",\n \"九\",\n \"區\",\n \"強\",\n \"放\",\n \"決\",\n \"西\",\n \"被\",\n \"幹\",\n \"做\",\n \"必\",\n \"戰\",\n \"先\",\n \"回\",\n \"則\",\n \"任\",\n \"取\",\n \"據\",\n \"處\",\n \"隊\",\n \"南\",\n \"給\",\n \"色\",\n \"光\",\n \"門\",\n \"即\",\n \"保\",\n \"治\",\n \"北\",\n \"造\",\n \"百\",\n \"規\",\n \"熱\",\n \"領\",\n \"七\",\n \"海\",\n \"口\",\n \"東\",\n \"導\",\n \"器\",\n \"壓\",\n \"志\",\n \"世\",\n \"金\",\n \"增\",\n \"爭\",\n \"濟\",\n \"階\",\n \"油\",\n \"思\",\n \"術\",\n \"極\",\n \"交\",\n \"受\",\n \"聯\",\n \"什\",\n \"認\",\n \"六\",\n \"共\",\n \"權\",\n \"收\",\n \"證\",\n \"改\",\n \"清\",\n \"美\",\n \"再\",\n \"採\",\n \"轉\",\n \"更\",\n \"單\",\n \"風\",\n \"切\",\n \"打\",\n \"白\",\n \"教\",\n \"速\",\n \"花\",\n \"帶\",\n \"安\",\n \"場\",\n \"身\",\n \"車\",\n \"例\",\n \"真\",\n \"務\",\n \"具\",\n \"萬\",\n \"每\",\n \"目\",\n \"至\",\n \"達\",\n \"走\",\n \"積\",\n \"示\",\n \"議\",\n \"聲\",\n \"報\",\n \"鬥\",\n \"完\",\n \"類\",\n \"八\",\n \"離\",\n \"華\",\n \"名\",\n \"確\",\n \"才\",\n \"科\",\n \"張\",\n \"信\",\n \"馬\",\n \"節\",\n \"話\",\n \"米\",\n \"整\",\n \"空\",\n \"元\",\n \"況\",\n \"今\",\n \"集\",\n \"溫\",\n \"傳\",\n \"土\",\n \"許\",\n \"步\",\n \"群\",\n \"廣\",\n \"石\",\n \"記\",\n \"需\",\n \"段\",\n \"研\",\n \"界\",\n \"拉\",\n \"林\",\n \"律\",\n \"叫\",\n \"且\",\n \"究\",\n \"觀\",\n \"越\",\n \"織\",\n \"裝\",\n \"影\",\n \"算\",\n \"低\",\n \"持\",\n \"音\",\n \"眾\",\n \"書\",\n \"布\",\n \"复\",\n \"容\",\n \"兒\",\n \"須\",\n \"際\",\n \"商\",\n \"非\",\n \"驗\",\n \"連\",\n \"斷\",\n \"深\",\n \"難\",\n \"近\",\n \"礦\",\n \"千\",\n \"週\",\n \"委\",\n \"素\",\n \"技\",\n \"備\",\n \"半\",\n \"辦\",\n \"青\",\n \"省\",\n \"列\",\n \"習\",\n \"響\",\n \"約\",\n \"支\",\n \"般\",\n \"史\",\n \"感\",\n \"勞\",\n \"便\",\n \"團\",\n \"往\",\n \"酸\",\n \"歷\",\n \"市\",\n \"克\",\n \"何\",\n \"除\",\n \"消\",\n \"構\",\n \"府\",\n \"稱\",\n \"太\",\n \"準\",\n \"精\",\n \"值\",\n \"號\",\n \"率\",\n \"族\",\n \"維\",\n \"劃\",\n \"選\",\n \"標\",\n \"寫\",\n \"存\",\n \"候\",\n \"毛\",\n \"親\",\n \"快\",\n \"效\",\n \"斯\",\n \"院\",\n \"查\",\n \"江\",\n \"型\",\n \"眼\",\n \"王\",\n \"按\",\n \"格\",\n \"養\",\n \"易\",\n \"置\",\n \"派\",\n \"層\",\n \"片\",\n \"始\",\n \"卻\",\n \"專\",\n \"狀\",\n \"育\",\n \"廠\",\n \"京\",\n \"識\",\n \"適\",\n \"屬\",\n \"圓\",\n \"包\",\n \"火\",\n \"住\",\n \"調\",\n \"滿\",\n \"縣\",\n \"局\",\n \"照\",\n \"參\",\n \"紅\",\n \"細\",\n \"引\",\n \"聽\",\n \"該\",\n \"鐵\",\n \"價\",\n \"嚴\",\n \"首\",\n \"底\",\n \"液\",\n \"官\",\n \"德\",\n \"隨\",\n \"病\",\n \"蘇\",\n \"失\",\n \"爾\",\n \"死\",\n \"講\",\n \"配\",\n \"女\",\n \"黃\",\n \"推\",\n \"顯\",\n \"談\",\n \"罪\",\n \"神\",\n \"藝\",\n \"呢\",\n \"席\",\n \"含\",\n \"企\",\n \"望\",\n \"密\",\n \"批\",\n \"營\",\n \"項\",\n \"防\",\n \"舉\",\n \"球\",\n \"英\",\n \"氧\",\n \"勢\",\n \"告\",\n \"李\",\n \"台\",\n \"落\",\n \"木\",\n \"幫\",\n \"輪\",\n \"破\",\n \"亞\",\n \"師\",\n \"圍\",\n \"注\",\n \"遠\",\n \"字\",\n \"材\",\n \"排\",\n \"供\",\n \"河\",\n \"態\",\n \"封\",\n \"另\",\n \"施\",\n \"減\",\n \"樹\",\n \"溶\",\n \"怎\",\n \"止\",\n \"案\",\n \"言\",\n \"士\",\n \"均\",\n \"武\",\n \"固\",\n \"葉\",\n \"魚\",\n \"波\",\n \"視\",\n \"僅\",\n \"費\",\n \"緊\",\n \"愛\",\n \"左\",\n \"章\",\n \"早\",\n \"朝\",\n \"害\",\n \"續\",\n \"輕\",\n \"服\",\n \"試\",\n \"食\",\n \"充\",\n \"兵\",\n \"源\",\n \"判\",\n \"護\",\n \"司\",\n \"足\",\n \"某\",\n \"練\",\n \"差\",\n \"致\",\n \"板\",\n \"田\",\n \"降\",\n \"黑\",\n \"犯\",\n \"負\",\n \"擊\",\n \"范\",\n \"繼\",\n \"興\",\n \"似\",\n \"餘\",\n \"堅\",\n \"曲\",\n \"輸\",\n \"修\",\n \"故\",\n \"城\",\n \"夫\",\n \"夠\",\n \"送\",\n \"筆\",\n \"船\",\n \"佔\",\n \"右\",\n \"財\",\n \"吃\",\n \"富\",\n \"春\",\n \"職\",\n \"覺\",\n \"漢\",\n \"畫\",\n \"功\",\n \"巴\",\n \"跟\",\n \"雖\",\n \"雜\",\n \"飛\",\n \"檢\",\n \"吸\",\n \"助\",\n \"昇\",\n \"陽\",\n \"互\",\n \"初\",\n \"創\",\n \"抗\",\n \"考\",\n \"投\",\n \"壞\",\n \"策\",\n \"古\",\n \"徑\",\n \"換\",\n \"未\",\n \"跑\",\n \"留\",\n \"鋼\",\n \"曾\",\n \"端\",\n \"責\",\n \"站\",\n \"簡\",\n \"述\",\n \"錢\",\n \"副\",\n \"盡\",\n \"帝\",\n \"射\",\n \"草\",\n \"衝\",\n \"承\",\n \"獨\",\n \"令\",\n \"限\",\n \"阿\",\n \"宣\",\n \"環\",\n \"雙\",\n \"請\",\n \"超\",\n \"微\",\n \"讓\",\n \"控\",\n \"州\",\n \"良\",\n \"軸\",\n \"找\",\n \"否\",\n \"紀\",\n \"益\",\n \"依\",\n \"優\",\n \"頂\",\n \"礎\",\n \"載\",\n \"倒\",\n \"房\",\n \"突\",\n \"坐\",\n \"粉\",\n \"敵\",\n \"略\",\n \"客\",\n \"袁\",\n \"冷\",\n \"勝\",\n \"絕\",\n \"析\",\n \"塊\",\n \"劑\",\n \"測\",\n \"絲\",\n \"協\",\n \"訴\",\n \"念\",\n \"陳\",\n \"仍\",\n \"羅\",\n \"鹽\",\n \"友\",\n \"洋\",\n \"錯\",\n \"苦\",\n \"夜\",\n \"刑\",\n \"移\",\n \"頻\",\n \"逐\",\n \"靠\",\n \"混\",\n \"母\",\n \"短\",\n \"皮\",\n \"終\",\n \"聚\",\n \"汽\",\n \"村\",\n \"雲\",\n \"哪\",\n \"既\",\n \"距\",\n \"衛\",\n \"停\",\n \"烈\",\n \"央\",\n \"察\",\n \"燒\",\n \"迅\",\n \"境\",\n \"若\",\n \"印\",\n \"洲\",\n \"刻\",\n \"括\",\n \"激\",\n \"孔\",\n \"搞\",\n \"甚\",\n \"室\",\n \"待\",\n \"核\",\n \"校\",\n \"散\",\n \"侵\",\n \"吧\",\n \"甲\",\n \"遊\",\n \"久\",\n \"菜\",\n \"味\",\n \"舊\",\n \"模\",\n \"湖\",\n \"貨\",\n \"損\",\n \"預\",\n \"阻\",\n \"毫\",\n \"普\",\n \"穩\",\n \"乙\",\n \"媽\",\n \"植\",\n \"息\",\n \"擴\",\n \"銀\",\n \"語\",\n \"揮\",\n \"酒\",\n \"守\",\n \"拿\",\n \"序\",\n \"紙\",\n \"醫\",\n \"缺\",\n \"雨\",\n \"嗎\",\n \"針\",\n \"劉\",\n \"啊\",\n \"急\",\n \"唱\",\n \"誤\",\n \"訓\",\n \"願\",\n \"審\",\n \"附\",\n \"獲\",\n \"茶\",\n \"鮮\",\n \"糧\",\n \"斤\",\n \"孩\",\n \"脫\",\n \"硫\",\n \"肥\",\n \"善\",\n \"龍\",\n \"演\",\n \"父\",\n \"漸\",\n \"血\",\n \"歡\",\n \"械\",\n \"掌\",\n \"歌\",\n \"沙\",\n \"剛\",\n \"攻\",\n \"謂\",\n \"盾\",\n \"討\",\n \"晚\",\n \"粒\",\n \"亂\",\n \"燃\",\n \"矛\",\n \"乎\",\n \"殺\",\n \"藥\",\n \"寧\",\n \"魯\",\n \"貴\",\n \"鐘\",\n \"煤\",\n \"讀\",\n \"班\",\n \"伯\",\n \"香\",\n \"介\",\n \"迫\",\n \"句\",\n \"豐\",\n \"培\",\n \"握\",\n \"蘭\",\n \"擔\",\n \"弦\",\n \"蛋\",\n \"沉\",\n \"假\",\n \"穿\",\n \"執\",\n \"答\",\n \"樂\",\n \"誰\",\n \"順\",\n \"煙\",\n \"縮\",\n \"徵\",\n \"臉\",\n \"喜\",\n \"松\",\n \"腳\",\n \"困\",\n \"異\",\n \"免\",\n \"背\",\n \"星\",\n \"福\",\n \"買\",\n \"染\",\n \"井\",\n \"概\",\n \"慢\",\n \"怕\",\n \"磁\",\n \"倍\",\n \"祖\",\n \"皇\",\n \"促\",\n \"靜\",\n \"補\",\n \"評\",\n \"翻\",\n \"肉\",\n \"踐\",\n \"尼\",\n \"衣\",\n \"寬\",\n \"揚\",\n \"棉\",\n \"希\",\n \"傷\",\n \"操\",\n \"垂\",\n \"秋\",\n \"宜\",\n \"氫\",\n \"套\",\n \"督\",\n \"振\",\n \"架\",\n \"亮\",\n \"末\",\n \"憲\",\n \"慶\",\n \"編\",\n \"牛\",\n \"觸\",\n \"映\",\n \"雷\",\n \"銷\",\n \"詩\",\n \"座\",\n \"居\",\n \"抓\",\n \"裂\",\n \"胞\",\n \"呼\",\n \"娘\",\n \"景\",\n \"威\",\n \"綠\",\n \"晶\",\n \"厚\",\n \"盟\",\n \"衡\",\n \"雞\",\n \"孫\",\n \"延\",\n \"危\",\n \"膠\",\n \"屋\",\n \"鄉\",\n \"臨\",\n \"陸\",\n \"顧\",\n \"掉\",\n \"呀\",\n \"燈\",\n \"歲\",\n \"措\",\n \"束\",\n \"耐\",\n \"劇\",\n \"玉\",\n \"趙\",\n \"跳\",\n \"哥\",\n \"季\",\n \"課\",\n \"凱\",\n \"胡\",\n \"額\",\n \"款\",\n \"紹\",\n \"卷\",\n \"齊\",\n \"偉\",\n \"蒸\",\n \"殖\",\n \"永\",\n \"宗\",\n \"苗\",\n \"川\",\n \"爐\",\n \"岩\",\n \"弱\",\n \"零\",\n \"楊\",\n \"奏\",\n \"沿\",\n \"露\",\n \"桿\",\n \"探\",\n \"滑\",\n \"鎮\",\n \"飯\",\n \"濃\",\n \"航\",\n \"懷\",\n \"趕\",\n \"庫\",\n \"奪\",\n \"伊\",\n \"靈\",\n \"稅\",\n \"途\",\n \"滅\",\n \"賽\",\n \"歸\",\n \"召\",\n \"鼓\",\n \"播\",\n \"盤\",\n \"裁\",\n \"險\",\n \"康\",\n \"唯\",\n \"錄\",\n \"菌\",\n \"純\",\n \"借\",\n \"糖\",\n \"蓋\",\n \"橫\",\n \"符\",\n \"私\",\n \"努\",\n \"堂\",\n \"域\",\n \"槍\",\n \"潤\",\n \"幅\",\n \"哈\",\n \"竟\",\n \"熟\",\n \"蟲\",\n \"澤\",\n \"腦\",\n \"壤\",\n \"碳\",\n \"歐\",\n \"遍\",\n \"側\",\n \"寨\",\n \"敢\",\n \"徹\",\n \"慮\",\n \"斜\",\n \"薄\",\n \"庭\",\n \"納\",\n \"彈\",\n \"飼\",\n \"伸\",\n \"折\",\n \"麥\",\n \"濕\",\n \"暗\",\n \"荷\",\n \"瓦\",\n \"塞\",\n \"床\",\n \"築\",\n \"惡\",\n \"戶\",\n \"訪\",\n \"塔\",\n \"奇\",\n \"透\",\n \"梁\",\n \"刀\",\n \"旋\",\n \"跡\",\n \"卡\",\n \"氯\",\n \"遇\",\n \"份\",\n \"毒\",\n \"泥\",\n \"退\",\n \"洗\",\n \"擺\",\n \"灰\",\n \"彩\",\n \"賣\",\n \"耗\",\n \"夏\",\n \"擇\",\n \"忙\",\n \"銅\",\n \"獻\",\n \"硬\",\n \"予\",\n \"繁\",\n \"圈\",\n \"雪\",\n \"函\",\n \"亦\",\n \"抽\",\n \"篇\",\n \"陣\",\n \"陰\",\n \"丁\",\n \"尺\",\n \"追\",\n \"堆\",\n \"雄\",\n \"迎\",\n \"泛\",\n \"爸\",\n \"樓\",\n \"避\",\n \"謀\",\n \"噸\",\n \"野\",\n \"豬\",\n \"旗\",\n \"累\",\n \"偏\",\n \"典\",\n \"館\",\n \"索\",\n \"秦\",\n \"脂\",\n \"潮\",\n \"爺\",\n \"豆\",\n \"忽\",\n \"托\",\n \"驚\",\n \"塑\",\n \"遺\",\n \"愈\",\n \"朱\",\n \"替\",\n \"纖\",\n \"粗\",\n \"傾\",\n \"尚\",\n \"痛\",\n \"楚\",\n \"謝\",\n \"奮\",\n \"購\",\n \"磨\",\n \"君\",\n \"池\",\n \"旁\",\n \"碎\",\n \"骨\",\n \"監\",\n \"捕\",\n \"弟\",\n \"暴\",\n \"割\",\n \"貫\",\n \"殊\",\n \"釋\",\n \"詞\",\n \"亡\",\n \"壁\",\n \"頓\",\n \"寶\",\n \"午\",\n \"塵\",\n \"聞\",\n \"揭\",\n \"炮\",\n \"殘\",\n \"冬\",\n \"橋\",\n \"婦\",\n \"警\",\n \"綜\",\n \"招\",\n \"吳\",\n \"付\",\n \"浮\",\n \"遭\",\n \"徐\",\n \"您\",\n \"搖\",\n \"谷\",\n \"贊\",\n \"箱\",\n \"隔\",\n \"訂\",\n \"男\",\n \"吹\",\n \"園\",\n \"紛\",\n \"唐\",\n \"敗\",\n \"宋\",\n \"玻\",\n \"巨\",\n \"耕\",\n \"坦\",\n \"榮\",\n \"閉\",\n \"灣\",\n \"鍵\",\n \"凡\",\n \"駐\",\n \"鍋\",\n \"救\",\n \"恩\",\n \"剝\",\n \"凝\",\n \"鹼\",\n \"齒\",\n \"截\",\n \"煉\",\n \"麻\",\n \"紡\",\n \"禁\",\n \"廢\",\n \"盛\",\n \"版\",\n \"緩\",\n \"淨\",\n \"睛\",\n \"昌\",\n \"婚\",\n \"涉\",\n \"筒\",\n \"嘴\",\n \"插\",\n \"岸\",\n \"朗\",\n \"莊\",\n \"街\",\n \"藏\",\n \"姑\",\n \"貿\",\n \"腐\",\n \"奴\",\n \"啦\",\n \"慣\",\n \"乘\",\n \"夥\",\n \"恢\",\n \"勻\",\n \"紗\",\n \"扎\",\n \"辯\",\n \"耳\",\n \"彪\",\n \"臣\",\n \"億\",\n \"璃\",\n \"抵\",\n \"脈\",\n \"秀\",\n \"薩\",\n \"俄\",\n \"網\",\n \"舞\",\n \"店\",\n \"噴\",\n \"縱\",\n \"寸\",\n \"汗\",\n \"掛\",\n \"洪\",\n \"賀\",\n \"閃\",\n \"柬\",\n \"爆\",\n \"烯\",\n \"津\",\n \"稻\",\n \"牆\",\n \"軟\",\n \"勇\",\n \"像\",\n \"滾\",\n \"厘\",\n \"蒙\",\n \"芳\",\n \"肯\",\n \"坡\",\n \"柱\",\n \"盪\",\n \"腿\",\n \"儀\",\n \"旅\",\n \"尾\",\n \"軋\",\n \"冰\",\n \"貢\",\n \"登\",\n \"黎\",\n \"削\",\n \"鑽\",\n \"勒\",\n \"逃\",\n \"障\",\n \"氨\",\n \"郭\",\n \"峰\",\n \"幣\",\n \"港\",\n \"伏\",\n \"軌\",\n \"畝\",\n \"畢\",\n \"擦\",\n \"莫\",\n \"刺\",\n \"浪\",\n \"秘\",\n \"援\",\n \"株\",\n \"健\",\n \"售\",\n \"股\",\n \"島\",\n \"甘\",\n \"泡\",\n \"睡\",\n \"童\",\n \"鑄\",\n \"湯\",\n \"閥\",\n \"休\",\n \"匯\",\n \"舍\",\n \"牧\",\n \"繞\",\n \"炸\",\n \"哲\",\n \"磷\",\n \"績\",\n \"朋\",\n \"淡\",\n \"尖\",\n \"啟\",\n \"陷\",\n \"柴\",\n \"呈\",\n \"徒\",\n \"顏\",\n \"淚\",\n \"稍\",\n \"忘\",\n \"泵\",\n \"藍\",\n \"拖\",\n \"洞\",\n \"授\",\n \"鏡\",\n \"辛\",\n \"壯\",\n \"鋒\",\n \"貧\",\n \"虛\",\n \"彎\",\n \"摩\",\n \"泰\",\n \"幼\",\n \"廷\",\n \"尊\",\n \"窗\",\n \"綱\",\n \"弄\",\n \"隸\",\n \"疑\",\n \"氏\",\n \"宮\",\n \"姐\",\n \"震\",\n \"瑞\",\n \"怪\",\n \"尤\",\n \"琴\",\n \"循\",\n \"描\",\n \"膜\",\n \"違\",\n \"夾\",\n \"腰\",\n \"緣\",\n \"珠\",\n \"窮\",\n \"森\",\n \"枝\",\n \"竹\",\n \"溝\",\n \"催\",\n \"繩\",\n \"憶\",\n \"邦\",\n \"剩\",\n \"幸\",\n \"漿\",\n \"欄\",\n \"擁\",\n \"牙\",\n \"貯\",\n \"禮\",\n \"濾\",\n \"鈉\",\n \"紋\",\n \"罷\",\n \"拍\",\n \"咱\",\n \"喊\",\n \"袖\",\n \"埃\",\n \"勤\",\n \"罰\",\n \"焦\",\n \"潛\",\n \"伍\",\n \"墨\",\n \"欲\",\n \"縫\",\n \"姓\",\n \"刊\",\n \"飽\",\n \"仿\",\n \"獎\",\n \"鋁\",\n \"鬼\",\n \"麗\",\n \"跨\",\n \"默\",\n \"挖\",\n \"鏈\",\n \"掃\",\n \"喝\",\n \"袋\",\n \"炭\",\n \"污\",\n \"幕\",\n \"諸\",\n \"弧\",\n \"勵\",\n \"梅\",\n \"奶\",\n \"潔\",\n \"災\",\n \"舟\",\n \"鑑\",\n \"苯\",\n \"訟\",\n \"抱\",\n \"毀\",\n \"懂\",\n \"寒\",\n \"智\",\n \"埔\",\n \"寄\",\n \"屆\",\n \"躍\",\n \"渡\",\n \"挑\",\n \"丹\",\n \"艱\",\n \"貝\",\n \"碰\",\n \"拔\",\n \"爹\",\n \"戴\",\n \"碼\",\n \"夢\",\n \"芽\",\n \"熔\",\n \"赤\",\n \"漁\",\n \"哭\",\n \"敬\",\n \"顆\",\n \"奔\",\n \"鉛\",\n \"仲\",\n \"虎\",\n \"稀\",\n \"妹\",\n \"乏\",\n \"珍\",\n \"申\",\n \"桌\",\n \"遵\",\n \"允\",\n \"隆\",\n \"螺\",\n \"倉\",\n \"魏\",\n \"銳\",\n \"曉\",\n \"氮\",\n \"兼\",\n \"隱\",\n \"礙\",\n \"赫\",\n \"撥\",\n \"忠\",\n \"肅\",\n \"缸\",\n \"牽\",\n \"搶\",\n \"博\",\n \"巧\",\n \"殼\",\n \"兄\",\n \"杜\",\n \"訊\",\n \"誠\",\n \"碧\",\n \"祥\",\n \"柯\",\n \"頁\",\n \"巡\",\n \"矩\",\n \"悲\",\n \"灌\",\n \"齡\",\n \"倫\",\n \"票\",\n \"尋\",\n \"桂\",\n \"鋪\",\n \"聖\",\n \"恐\",\n \"恰\",\n \"鄭\",\n \"趣\",\n \"抬\",\n \"荒\",\n \"騰\",\n \"貼\",\n \"柔\",\n \"滴\",\n \"猛\",\n \"闊\",\n \"輛\",\n \"妻\",\n \"填\",\n \"撤\",\n \"儲\",\n \"簽\",\n \"鬧\",\n \"擾\",\n \"紫\",\n \"砂\",\n \"遞\",\n \"戲\",\n \"吊\",\n \"陶\",\n \"伐\",\n \"餵\",\n \"療\",\n \"瓶\",\n \"婆\",\n \"撫\",\n \"臂\",\n \"摸\",\n \"忍\",\n \"蝦\",\n \"蠟\",\n \"鄰\",\n \"胸\",\n \"鞏\",\n \"擠\",\n \"偶\",\n \"棄\",\n \"槽\",\n \"勁\",\n \"乳\",\n \"鄧\",\n \"吉\",\n \"仁\",\n \"爛\",\n \"磚\",\n \"租\",\n \"烏\",\n \"艦\",\n \"伴\",\n \"瓜\",\n \"淺\",\n \"丙\",\n \"暫\",\n \"燥\",\n \"橡\",\n \"柳\",\n \"迷\",\n \"暖\",\n \"牌\",\n \"秧\",\n \"膽\",\n \"詳\",\n \"簧\",\n \"踏\",\n \"瓷\",\n \"譜\",\n \"呆\",\n \"賓\",\n \"糊\",\n \"洛\",\n \"輝\",\n \"憤\",\n \"競\",\n \"隙\",\n \"怒\",\n \"粘\",\n \"乃\",\n \"緒\",\n \"肩\",\n \"籍\",\n \"敏\",\n \"塗\",\n \"熙\",\n \"皆\",\n \"偵\",\n \"懸\",\n \"掘\",\n \"享\",\n \"糾\",\n \"醒\",\n \"狂\",\n \"鎖\",\n \"淀\",\n \"恨\",\n \"牲\",\n \"霸\",\n \"爬\",\n \"賞\",\n \"逆\",\n \"玩\",\n \"陵\",\n \"祝\",\n \"秒\",\n \"浙\",\n \"貌\",\n \"役\",\n \"彼\",\n \"悉\",\n \"鴨\",\n \"趨\",\n \"鳳\",\n \"晨\",\n \"畜\",\n \"輩\",\n \"秩\",\n \"卵\",\n \"署\",\n \"梯\",\n \"炎\",\n \"灘\",\n \"棋\",\n \"驅\",\n \"篩\",\n \"峽\",\n \"冒\",\n \"啥\",\n \"壽\",\n \"譯\",\n \"浸\",\n \"泉\",\n \"帽\",\n \"遲\",\n \"矽\",\n \"疆\",\n \"貸\",\n \"漏\",\n \"稿\",\n \"冠\",\n \"嫩\",\n \"脅\",\n \"芯\",\n \"牢\",\n \"叛\",\n \"蝕\",\n \"奧\",\n \"鳴\",\n \"嶺\",\n \"羊\",\n \"憑\",\n \"串\",\n \"塘\",\n \"繪\",\n \"酵\",\n \"融\",\n \"盆\",\n \"錫\",\n \"廟\",\n \"籌\",\n \"凍\",\n \"輔\",\n \"攝\",\n \"襲\",\n \"筋\",\n \"拒\",\n \"僚\",\n \"旱\",\n \"鉀\",\n \"鳥\",\n \"漆\",\n \"沈\",\n \"眉\",\n \"疏\",\n \"添\",\n \"棒\",\n \"穗\",\n \"硝\",\n \"韓\",\n \"逼\",\n \"扭\",\n \"僑\",\n \"涼\",\n \"挺\",\n \"碗\",\n \"栽\",\n \"炒\",\n \"杯\",\n \"患\",\n \"餾\",\n \"勸\",\n \"豪\",\n \"遼\",\n \"勃\",\n \"鴻\",\n \"旦\",\n \"吏\",\n \"拜\",\n \"狗\",\n \"埋\",\n \"輥\",\n \"掩\",\n \"飲\",\n \"搬\",\n \"罵\",\n \"辭\",\n \"勾\",\n \"扣\",\n \"估\",\n \"蔣\",\n \"絨\",\n \"霧\",\n \"丈\",\n \"朵\",\n \"姆\",\n \"擬\",\n \"宇\",\n \"輯\",\n \"陝\",\n \"雕\",\n \"償\",\n \"蓄\",\n \"崇\",\n \"剪\",\n \"倡\",\n \"廳\",\n \"咬\",\n \"駛\",\n \"薯\",\n \"刷\",\n \"斥\",\n \"番\",\n \"賦\",\n \"奉\",\n \"佛\",\n \"澆\",\n \"漫\",\n \"曼\",\n \"扇\",\n \"鈣\",\n \"桃\",\n \"扶\",\n \"仔\",\n \"返\",\n \"俗\",\n \"虧\",\n \"腔\",\n \"鞋\",\n \"棱\",\n \"覆\",\n \"框\",\n \"悄\",\n \"叔\",\n \"撞\",\n \"騙\",\n \"勘\",\n \"旺\",\n \"沸\",\n \"孤\",\n \"吐\",\n \"孟\",\n \"渠\",\n \"屈\",\n \"疾\",\n \"妙\",\n \"惜\",\n \"仰\",\n \"狠\",\n \"脹\",\n \"諧\",\n \"拋\",\n \"黴\",\n \"桑\",\n \"崗\",\n \"嘛\",\n \"衰\",\n \"盜\",\n \"滲\",\n \"臟\",\n \"賴\",\n \"湧\",\n \"甜\",\n \"曹\",\n \"閱\",\n \"肌\",\n \"哩\",\n \"厲\",\n \"烴\",\n \"緯\",\n \"毅\",\n \"昨\",\n \"偽\",\n \"症\",\n \"煮\",\n \"嘆\",\n \"釘\",\n \"搭\",\n \"莖\",\n \"籠\",\n \"酷\",\n \"偷\",\n \"弓\",\n \"錐\",\n \"恆\",\n \"傑\",\n \"坑\",\n \"鼻\",\n \"翼\",\n \"綸\",\n \"敘\",\n \"獄\",\n \"逮\",\n \"罐\",\n \"絡\",\n \"棚\",\n \"抑\",\n \"膨\",\n \"蔬\",\n \"寺\",\n \"驟\",\n \"穆\",\n \"冶\",\n \"枯\",\n \"冊\",\n \"屍\",\n \"凸\",\n \"紳\",\n \"坯\",\n \"犧\",\n \"焰\",\n \"轟\",\n \"欣\",\n \"晉\",\n \"瘦\",\n \"禦\",\n \"錠\",\n \"錦\",\n \"喪\",\n \"旬\",\n \"鍛\",\n \"壟\",\n \"搜\",\n \"撲\",\n \"邀\",\n \"亭\",\n \"酯\",\n \"邁\",\n \"舒\",\n \"脆\",\n \"酶\",\n \"閒\",\n \"憂\",\n \"酚\",\n \"頑\",\n \"羽\",\n \"漲\",\n \"卸\",\n \"仗\",\n \"陪\",\n \"闢\",\n \"懲\",\n \"杭\",\n \"姚\",\n \"肚\",\n \"捉\",\n \"飄\",\n \"漂\",\n \"昆\",\n \"欺\",\n \"吾\",\n \"郎\",\n \"烷\",\n \"汁\",\n \"呵\",\n \"飾\",\n \"蕭\",\n \"雅\",\n \"郵\",\n \"遷\",\n \"燕\",\n \"撒\",\n \"姻\",\n \"赴\",\n \"宴\",\n \"煩\",\n \"債\",\n \"帳\",\n \"斑\",\n \"鈴\",\n \"旨\",\n \"醇\",\n \"董\",\n \"餅\",\n \"雛\",\n \"姿\",\n \"拌\",\n \"傅\",\n \"腹\",\n \"妥\",\n \"揉\",\n \"賢\",\n \"拆\",\n \"歪\",\n \"葡\",\n \"胺\",\n \"丟\",\n \"浩\",\n \"徽\",\n \"昂\",\n \"墊\",\n \"擋\",\n \"覽\",\n \"貪\",\n \"慰\",\n \"繳\",\n \"汪\",\n \"慌\",\n \"馮\",\n \"諾\",\n \"姜\",\n \"誼\",\n \"兇\",\n \"劣\",\n \"誣\",\n \"耀\",\n \"昏\",\n \"躺\",\n \"盈\",\n \"騎\",\n \"喬\",\n \"溪\",\n \"叢\",\n \"盧\",\n \"抹\",\n \"悶\",\n \"諮\",\n \"刮\",\n \"駕\",\n \"纜\",\n \"悟\",\n \"摘\",\n \"鉺\",\n \"擲\",\n \"頗\",\n \"幻\",\n \"柄\",\n \"惠\",\n \"慘\",\n \"佳\",\n \"仇\",\n \"臘\",\n \"窩\",\n \"滌\",\n \"劍\",\n \"瞧\",\n \"堡\",\n \"潑\",\n \"蔥\",\n \"罩\",\n \"霍\",\n \"撈\",\n \"胎\",\n \"蒼\",\n \"濱\",\n \"倆\",\n \"捅\",\n \"湘\",\n \"砍\",\n \"霞\",\n \"邵\",\n \"萄\",\n \"瘋\",\n \"淮\",\n \"遂\",\n \"熊\",\n \"糞\",\n \"烘\",\n \"宿\",\n \"檔\",\n \"戈\",\n \"駁\",\n \"嫂\",\n \"裕\",\n \"徙\",\n \"箭\",\n \"捐\",\n \"腸\",\n \"撐\",\n \"曬\",\n \"辨\",\n \"殿\",\n \"蓮\",\n \"攤\",\n \"攪\",\n \"醬\",\n \"屏\",\n \"疫\",\n \"哀\",\n \"蔡\",\n \"堵\",\n \"沫\",\n \"皺\",\n \"暢\",\n \"疊\",\n \"閣\",\n \"萊\",\n \"敲\",\n \"轄\",\n \"鉤\",\n \"痕\",\n \"壩\",\n \"巷\",\n \"餓\",\n \"禍\",\n \"丘\",\n \"玄\",\n \"溜\",\n \"曰\",\n \"邏\",\n \"彭\",\n \"嘗\",\n \"卿\",\n \"妨\",\n \"艇\",\n \"吞\",\n \"韋\",\n \"怨\",\n \"矮\",\n \"歇\"\n]\n","[\n \"abandon\",\n \"ability\",\n \"able\",\n \"about\",\n \"above\",\n \"absent\",\n \"absorb\",\n \"abstract\",\n \"absurd\",\n \"abuse\",\n \"access\",\n \"accident\",\n \"account\",\n \"accuse\",\n \"achieve\",\n \"acid\",\n \"acoustic\",\n \"acquire\",\n \"across\",\n \"act\",\n \"action\",\n \"actor\",\n \"actress\",\n \"actual\",\n \"adapt\",\n \"add\",\n \"addict\",\n \"address\",\n \"adjust\",\n \"admit\",\n \"adult\",\n \"advance\",\n \"advice\",\n \"aerobic\",\n \"affair\",\n \"afford\",\n \"afraid\",\n \"again\",\n \"age\",\n \"agent\",\n \"agree\",\n \"ahead\",\n \"aim\",\n \"air\",\n \"airport\",\n \"aisle\",\n \"alarm\",\n \"album\",\n \"alcohol\",\n \"alert\",\n \"alien\",\n \"all\",\n \"alley\",\n \"allow\",\n \"almost\",\n \"alone\",\n \"alpha\",\n \"already\",\n \"also\",\n \"alter\",\n \"always\",\n \"amateur\",\n \"amazing\",\n \"among\",\n \"amount\",\n \"amused\",\n \"analyst\",\n \"anchor\",\n \"ancient\",\n \"anger\",\n \"angle\",\n \"angry\",\n \"animal\",\n \"ankle\",\n \"announce\",\n \"annual\",\n \"another\",\n \"answer\",\n \"antenna\",\n \"antique\",\n \"anxiety\",\n \"any\",\n \"apart\",\n \"apology\",\n \"appear\",\n \"apple\",\n \"approve\",\n \"april\",\n \"arch\",\n \"arctic\",\n \"area\",\n \"arena\",\n \"argue\",\n \"arm\",\n \"armed\",\n \"armor\",\n \"army\",\n \"around\",\n \"arrange\",\n \"arrest\",\n \"arrive\",\n \"arrow\",\n \"art\",\n \"artefact\",\n \"artist\",\n \"artwork\",\n \"ask\",\n \"aspect\",\n \"assault\",\n \"asset\",\n \"assist\",\n \"assume\",\n \"asthma\",\n \"athlete\",\n \"atom\",\n \"attack\",\n \"attend\",\n \"attitude\",\n \"attract\",\n \"auction\",\n \"audit\",\n \"august\",\n \"aunt\",\n \"author\",\n \"auto\",\n \"autumn\",\n \"average\",\n \"avocado\",\n \"avoid\",\n \"awake\",\n \"aware\",\n \"away\",\n \"awesome\",\n \"awful\",\n \"awkward\",\n \"axis\",\n \"baby\",\n \"bachelor\",\n \"bacon\",\n \"badge\",\n \"bag\",\n \"balance\",\n \"balcony\",\n \"ball\",\n \"bamboo\",\n \"banana\",\n \"banner\",\n \"bar\",\n \"barely\",\n \"bargain\",\n \"barrel\",\n \"base\",\n \"basic\",\n \"basket\",\n \"battle\",\n \"beach\",\n \"bean\",\n \"beauty\",\n \"because\",\n \"become\",\n \"beef\",\n \"before\",\n \"begin\",\n \"behave\",\n \"behind\",\n \"believe\",\n \"below\",\n \"belt\",\n \"bench\",\n \"benefit\",\n \"best\",\n \"betray\",\n \"better\",\n \"between\",\n \"beyond\",\n \"bicycle\",\n \"bid\",\n \"bike\",\n \"bind\",\n \"biology\",\n \"bird\",\n \"birth\",\n \"bitter\",\n \"black\",\n \"blade\",\n \"blame\",\n \"blanket\",\n \"blast\",\n \"bleak\",\n \"bless\",\n \"blind\",\n \"blood\",\n \"blossom\",\n \"blouse\",\n \"blue\",\n \"blur\",\n \"blush\",\n \"board\",\n \"boat\",\n \"body\",\n \"boil\",\n \"bomb\",\n \"bone\",\n \"bonus\",\n \"book\",\n \"boost\",\n \"border\",\n \"boring\",\n \"borrow\",\n \"boss\",\n \"bottom\",\n \"bounce\",\n \"box\",\n \"boy\",\n \"bracket\",\n \"brain\",\n \"brand\",\n \"brass\",\n \"brave\",\n \"bread\",\n \"breeze\",\n \"brick\",\n \"bridge\",\n \"brief\",\n \"bright\",\n \"bring\",\n \"brisk\",\n \"broccoli\",\n \"broken\",\n \"bronze\",\n \"broom\",\n \"brother\",\n \"brown\",\n \"brush\",\n \"bubble\",\n \"buddy\",\n \"budget\",\n \"buffalo\",\n \"build\",\n \"bulb\",\n \"bulk\",\n \"bullet\",\n \"bundle\",\n \"bunker\",\n \"burden\",\n \"burger\",\n \"burst\",\n \"bus\",\n \"business\",\n \"busy\",\n \"butter\",\n \"buyer\",\n \"buzz\",\n \"cabbage\",\n \"cabin\",\n \"cable\",\n \"cactus\",\n \"cage\",\n \"cake\",\n \"call\",\n \"calm\",\n \"camera\",\n \"camp\",\n \"can\",\n \"canal\",\n \"cancel\",\n \"candy\",\n \"cannon\",\n \"canoe\",\n \"canvas\",\n \"canyon\",\n \"capable\",\n \"capital\",\n \"captain\",\n \"car\",\n \"carbon\",\n \"card\",\n \"cargo\",\n \"carpet\",\n \"carry\",\n \"cart\",\n \"case\",\n \"cash\",\n \"casino\",\n \"castle\",\n \"casual\",\n \"cat\",\n \"catalog\",\n \"catch\",\n \"category\",\n \"cattle\",\n \"caught\",\n \"cause\",\n \"caution\",\n \"cave\",\n \"ceiling\",\n \"celery\",\n \"cement\",\n \"census\",\n \"century\",\n \"cereal\",\n \"certain\",\n \"chair\",\n \"chalk\",\n \"champion\",\n \"change\",\n \"chaos\",\n \"chapter\",\n \"charge\",\n \"chase\",\n \"chat\",\n \"cheap\",\n \"check\",\n \"cheese\",\n \"chef\",\n \"cherry\",\n \"chest\",\n \"chicken\",\n \"chief\",\n \"child\",\n \"chimney\",\n \"choice\",\n \"choose\",\n \"chronic\",\n \"chuckle\",\n \"chunk\",\n \"churn\",\n \"cigar\",\n \"cinnamon\",\n \"circle\",\n \"citizen\",\n \"city\",\n \"civil\",\n \"claim\",\n \"clap\",\n \"clarify\",\n \"claw\",\n \"clay\",\n \"clean\",\n \"clerk\",\n \"clever\",\n \"click\",\n \"client\",\n \"cliff\",\n \"climb\",\n \"clinic\",\n \"clip\",\n \"clock\",\n \"clog\",\n \"close\",\n \"cloth\",\n \"cloud\",\n \"clown\",\n \"club\",\n \"clump\",\n \"cluster\",\n \"clutch\",\n \"coach\",\n \"coast\",\n \"coconut\",\n \"code\",\n \"coffee\",\n \"coil\",\n \"coin\",\n \"collect\",\n \"color\",\n \"column\",\n \"combine\",\n \"come\",\n \"comfort\",\n \"comic\",\n \"common\",\n \"company\",\n \"concert\",\n \"conduct\",\n \"confirm\",\n \"congress\",\n \"connect\",\n \"consider\",\n \"control\",\n \"convince\",\n \"cook\",\n \"cool\",\n \"copper\",\n \"copy\",\n \"coral\",\n \"core\",\n \"corn\",\n \"correct\",\n \"cost\",\n \"cotton\",\n \"couch\",\n \"country\",\n \"couple\",\n \"course\",\n \"cousin\",\n \"cover\",\n \"coyote\",\n \"crack\",\n \"cradle\",\n \"craft\",\n \"cram\",\n \"crane\",\n \"crash\",\n \"crater\",\n \"crawl\",\n \"crazy\",\n \"cream\",\n \"credit\",\n \"creek\",\n \"crew\",\n \"cricket\",\n \"crime\",\n \"crisp\",\n \"critic\",\n \"crop\",\n \"cross\",\n \"crouch\",\n \"crowd\",\n \"crucial\",\n \"cruel\",\n \"cruise\",\n \"crumble\",\n \"crunch\",\n \"crush\",\n \"cry\",\n \"crystal\",\n \"cube\",\n \"culture\",\n \"cup\",\n \"cupboard\",\n \"curious\",\n \"current\",\n \"curtain\",\n \"curve\",\n \"cushion\",\n \"custom\",\n \"cute\",\n \"cycle\",\n \"dad\",\n \"damage\",\n \"damp\",\n \"dance\",\n \"danger\",\n \"daring\",\n \"dash\",\n \"daughter\",\n \"dawn\",\n \"day\",\n \"deal\",\n \"debate\",\n \"debris\",\n \"decade\",\n \"december\",\n \"decide\",\n \"decline\",\n \"decorate\",\n \"decrease\",\n \"deer\",\n \"defense\",\n \"define\",\n \"defy\",\n \"degree\",\n \"delay\",\n \"deliver\",\n \"demand\",\n \"demise\",\n \"denial\",\n \"dentist\",\n \"deny\",\n \"depart\",\n \"depend\",\n \"deposit\",\n \"depth\",\n \"deputy\",\n \"derive\",\n \"describe\",\n \"desert\",\n \"design\",\n \"desk\",\n \"despair\",\n \"destroy\",\n \"detail\",\n \"detect\",\n \"develop\",\n \"device\",\n \"devote\",\n \"diagram\",\n \"dial\",\n \"diamond\",\n \"diary\",\n \"dice\",\n \"diesel\",\n \"diet\",\n \"differ\",\n \"digital\",\n \"dignity\",\n \"dilemma\",\n \"dinner\",\n \"dinosaur\",\n \"direct\",\n \"dirt\",\n \"disagree\",\n \"discover\",\n \"disease\",\n \"dish\",\n \"dismiss\",\n \"disorder\",\n \"display\",\n \"distance\",\n \"divert\",\n \"divide\",\n \"divorce\",\n \"dizzy\",\n \"doctor\",\n \"document\",\n \"dog\",\n \"doll\",\n \"dolphin\",\n \"domain\",\n \"donate\",\n \"donkey\",\n \"donor\",\n \"door\",\n \"dose\",\n \"double\",\n \"dove\",\n \"draft\",\n \"dragon\",\n \"drama\",\n \"drastic\",\n \"draw\",\n \"dream\",\n \"dress\",\n \"drift\",\n \"drill\",\n \"drink\",\n \"drip\",\n \"drive\",\n \"drop\",\n \"drum\",\n \"dry\",\n \"duck\",\n \"dumb\",\n \"dune\",\n \"during\",\n \"dust\",\n \"dutch\",\n \"duty\",\n \"dwarf\",\n \"dynamic\",\n \"eager\",\n \"eagle\",\n \"early\",\n \"earn\",\n \"earth\",\n \"easily\",\n \"east\",\n \"easy\",\n \"echo\",\n \"ecology\",\n \"economy\",\n \"edge\",\n \"edit\",\n \"educate\",\n \"effort\",\n \"egg\",\n \"eight\",\n \"either\",\n \"elbow\",\n \"elder\",\n \"electric\",\n \"elegant\",\n \"element\",\n \"elephant\",\n \"elevator\",\n \"elite\",\n \"else\",\n \"embark\",\n \"embody\",\n \"embrace\",\n \"emerge\",\n \"emotion\",\n \"employ\",\n \"empower\",\n \"empty\",\n \"enable\",\n \"enact\",\n \"end\",\n \"endless\",\n \"endorse\",\n \"enemy\",\n \"energy\",\n \"enforce\",\n \"engage\",\n \"engine\",\n \"enhance\",\n \"enjoy\",\n \"enlist\",\n \"enough\",\n \"enrich\",\n \"enroll\",\n \"ensure\",\n \"enter\",\n \"entire\",\n \"entry\",\n \"envelope\",\n \"episode\",\n \"equal\",\n \"equip\",\n \"era\",\n \"erase\",\n \"erode\",\n \"erosion\",\n \"error\",\n \"erupt\",\n \"escape\",\n \"essay\",\n \"essence\",\n \"estate\",\n \"eternal\",\n \"ethics\",\n \"evidence\",\n \"evil\",\n \"evoke\",\n \"evolve\",\n \"exact\",\n \"example\",\n \"excess\",\n \"exchange\",\n \"excite\",\n \"exclude\",\n \"excuse\",\n \"execute\",\n \"exercise\",\n \"exhaust\",\n \"exhibit\",\n \"exile\",\n \"exist\",\n \"exit\",\n \"exotic\",\n \"expand\",\n \"expect\",\n \"expire\",\n \"explain\",\n \"expose\",\n \"express\",\n \"extend\",\n \"extra\",\n \"eye\",\n \"eyebrow\",\n \"fabric\",\n \"face\",\n \"faculty\",\n \"fade\",\n \"faint\",\n \"faith\",\n \"fall\",\n \"false\",\n \"fame\",\n \"family\",\n \"famous\",\n \"fan\",\n \"fancy\",\n \"fantasy\",\n \"farm\",\n \"fashion\",\n \"fat\",\n \"fatal\",\n \"father\",\n \"fatigue\",\n \"fault\",\n \"favorite\",\n \"feature\",\n \"february\",\n \"federal\",\n \"fee\",\n \"feed\",\n \"feel\",\n \"female\",\n \"fence\",\n \"festival\",\n \"fetch\",\n \"fever\",\n \"few\",\n \"fiber\",\n \"fiction\",\n \"field\",\n \"figure\",\n \"file\",\n \"film\",\n \"filter\",\n \"final\",\n \"find\",\n \"fine\",\n \"finger\",\n \"finish\",\n \"fire\",\n \"firm\",\n \"first\",\n \"fiscal\",\n \"fish\",\n \"fit\",\n \"fitness\",\n \"fix\",\n \"flag\",\n \"flame\",\n \"flash\",\n \"flat\",\n \"flavor\",\n \"flee\",\n \"flight\",\n \"flip\",\n \"float\",\n \"flock\",\n \"floor\",\n \"flower\",\n \"fluid\",\n \"flush\",\n \"fly\",\n \"foam\",\n \"focus\",\n \"fog\",\n \"foil\",\n \"fold\",\n \"follow\",\n \"food\",\n \"foot\",\n \"force\",\n \"forest\",\n \"forget\",\n \"fork\",\n \"fortune\",\n \"forum\",\n \"forward\",\n \"fossil\",\n \"foster\",\n \"found\",\n \"fox\",\n \"fragile\",\n \"frame\",\n \"frequent\",\n \"fresh\",\n \"friend\",\n \"fringe\",\n \"frog\",\n \"front\",\n \"frost\",\n \"frown\",\n \"frozen\",\n \"fruit\",\n \"fuel\",\n \"fun\",\n \"funny\",\n \"furnace\",\n \"fury\",\n \"future\",\n \"gadget\",\n \"gain\",\n \"galaxy\",\n \"gallery\",\n \"game\",\n \"gap\",\n \"garage\",\n \"garbage\",\n \"garden\",\n \"garlic\",\n \"garment\",\n \"gas\",\n \"gasp\",\n \"gate\",\n \"gather\",\n \"gauge\",\n \"gaze\",\n \"general\",\n \"genius\",\n \"genre\",\n \"gentle\",\n \"genuine\",\n \"gesture\",\n \"ghost\",\n \"giant\",\n \"gift\",\n \"giggle\",\n \"ginger\",\n \"giraffe\",\n \"girl\",\n \"give\",\n \"glad\",\n \"glance\",\n \"glare\",\n \"glass\",\n \"glide\",\n \"glimpse\",\n \"globe\",\n \"gloom\",\n \"glory\",\n \"glove\",\n \"glow\",\n \"glue\",\n \"goat\",\n \"goddess\",\n \"gold\",\n \"good\",\n \"goose\",\n \"gorilla\",\n \"gospel\",\n \"gossip\",\n \"govern\",\n \"gown\",\n \"grab\",\n \"grace\",\n \"grain\",\n \"grant\",\n \"grape\",\n \"grass\",\n \"gravity\",\n \"great\",\n \"green\",\n \"grid\",\n \"grief\",\n \"grit\",\n \"grocery\",\n \"group\",\n \"grow\",\n \"grunt\",\n \"guard\",\n \"guess\",\n \"guide\",\n \"guilt\",\n \"guitar\",\n \"gun\",\n \"gym\",\n \"habit\",\n \"hair\",\n \"half\",\n \"hammer\",\n \"hamster\",\n \"hand\",\n \"happy\",\n \"harbor\",\n \"hard\",\n \"harsh\",\n \"harvest\",\n \"hat\",\n \"have\",\n \"hawk\",\n \"hazard\",\n \"head\",\n \"health\",\n \"heart\",\n \"heavy\",\n \"hedgehog\",\n \"height\",\n \"hello\",\n \"helmet\",\n \"help\",\n \"hen\",\n \"hero\",\n \"hidden\",\n \"high\",\n \"hill\",\n \"hint\",\n \"hip\",\n \"hire\",\n \"history\",\n \"hobby\",\n \"hockey\",\n \"hold\",\n \"hole\",\n \"holiday\",\n \"hollow\",\n \"home\",\n \"honey\",\n \"hood\",\n \"hope\",\n \"horn\",\n \"horror\",\n \"horse\",\n \"hospital\",\n \"host\",\n \"hotel\",\n \"hour\",\n \"hover\",\n \"hub\",\n \"huge\",\n \"human\",\n \"humble\",\n \"humor\",\n \"hundred\",\n \"hungry\",\n \"hunt\",\n \"hurdle\",\n \"hurry\",\n \"hurt\",\n \"husband\",\n \"hybrid\",\n \"ice\",\n \"icon\",\n \"idea\",\n \"identify\",\n \"idle\",\n \"ignore\",\n \"ill\",\n \"illegal\",\n \"illness\",\n \"image\",\n \"imitate\",\n \"immense\",\n \"immune\",\n \"impact\",\n \"impose\",\n \"improve\",\n \"impulse\",\n \"inch\",\n \"include\",\n \"income\",\n \"increase\",\n \"index\",\n \"indicate\",\n \"indoor\",\n \"industry\",\n \"infant\",\n \"inflict\",\n \"inform\",\n \"inhale\",\n \"inherit\",\n \"initial\",\n \"inject\",\n \"injury\",\n \"inmate\",\n \"inner\",\n \"innocent\",\n \"input\",\n \"inquiry\",\n \"insane\",\n \"insect\",\n \"inside\",\n \"inspire\",\n \"install\",\n \"intact\",\n \"interest\",\n \"into\",\n \"invest\",\n \"invite\",\n \"involve\",\n \"iron\",\n \"island\",\n \"isolate\",\n \"issue\",\n \"item\",\n \"ivory\",\n \"jacket\",\n \"jaguar\",\n \"jar\",\n \"jazz\",\n \"jealous\",\n \"jeans\",\n \"jelly\",\n \"jewel\",\n \"job\",\n \"join\",\n \"joke\",\n \"journey\",\n \"joy\",\n \"judge\",\n \"juice\",\n \"jump\",\n \"jungle\",\n \"junior\",\n \"junk\",\n \"just\",\n \"kangaroo\",\n \"keen\",\n \"keep\",\n \"ketchup\",\n \"key\",\n \"kick\",\n \"kid\",\n \"kidney\",\n \"kind\",\n \"kingdom\",\n \"kiss\",\n \"kit\",\n \"kitchen\",\n \"kite\",\n \"kitten\",\n \"kiwi\",\n \"knee\",\n \"knife\",\n \"knock\",\n \"know\",\n \"lab\",\n \"label\",\n \"labor\",\n \"ladder\",\n \"lady\",\n \"lake\",\n \"lamp\",\n \"language\",\n \"laptop\",\n \"large\",\n \"later\",\n \"latin\",\n \"laugh\",\n \"laundry\",\n \"lava\",\n \"law\",\n \"lawn\",\n \"lawsuit\",\n \"layer\",\n \"lazy\",\n \"leader\",\n \"leaf\",\n \"learn\",\n \"leave\",\n \"lecture\",\n \"left\",\n \"leg\",\n \"legal\",\n \"legend\",\n \"leisure\",\n \"lemon\",\n \"lend\",\n \"length\",\n \"lens\",\n \"leopard\",\n \"lesson\",\n \"letter\",\n \"level\",\n \"liar\",\n \"liberty\",\n \"library\",\n \"license\",\n \"life\",\n \"lift\",\n \"light\",\n \"like\",\n \"limb\",\n \"limit\",\n \"link\",\n \"lion\",\n \"liquid\",\n \"list\",\n \"little\",\n \"live\",\n \"lizard\",\n \"load\",\n \"loan\",\n \"lobster\",\n \"local\",\n \"lock\",\n \"logic\",\n \"lonely\",\n \"long\",\n \"loop\",\n \"lottery\",\n \"loud\",\n \"lounge\",\n \"love\",\n \"loyal\",\n \"lucky\",\n \"luggage\",\n \"lumber\",\n \"lunar\",\n \"lunch\",\n \"luxury\",\n \"lyrics\",\n \"machine\",\n \"mad\",\n \"magic\",\n \"magnet\",\n \"maid\",\n \"mail\",\n \"main\",\n \"major\",\n \"make\",\n \"mammal\",\n \"man\",\n \"manage\",\n \"mandate\",\n \"mango\",\n \"mansion\",\n \"manual\",\n \"maple\",\n \"marble\",\n \"march\",\n \"margin\",\n \"marine\",\n \"market\",\n \"marriage\",\n \"mask\",\n \"mass\",\n \"master\",\n \"match\",\n \"material\",\n \"math\",\n \"matrix\",\n \"matter\",\n \"maximum\",\n \"maze\",\n \"meadow\",\n \"mean\",\n \"measure\",\n \"meat\",\n \"mechanic\",\n \"medal\",\n \"media\",\n \"melody\",\n \"melt\",\n \"member\",\n \"memory\",\n \"mention\",\n \"menu\",\n \"mercy\",\n \"merge\",\n \"merit\",\n \"merry\",\n \"mesh\",\n \"message\",\n \"metal\",\n \"method\",\n \"middle\",\n \"midnight\",\n \"milk\",\n \"million\",\n \"mimic\",\n \"mind\",\n \"minimum\",\n \"minor\",\n \"minute\",\n \"miracle\",\n \"mirror\",\n \"misery\",\n \"miss\",\n \"mistake\",\n \"mix\",\n \"mixed\",\n \"mixture\",\n \"mobile\",\n \"model\",\n \"modify\",\n \"mom\",\n \"moment\",\n \"monitor\",\n \"monkey\",\n \"monster\",\n \"month\",\n \"moon\",\n \"moral\",\n \"more\",\n \"morning\",\n \"mosquito\",\n \"mother\",\n \"motion\",\n \"motor\",\n \"mountain\",\n \"mouse\",\n \"move\",\n \"movie\",\n \"much\",\n \"muffin\",\n \"mule\",\n \"multiply\",\n \"muscle\",\n \"museum\",\n \"mushroom\",\n \"music\",\n \"must\",\n \"mutual\",\n \"myself\",\n \"mystery\",\n \"myth\",\n \"naive\",\n \"name\",\n \"napkin\",\n \"narrow\",\n \"nasty\",\n \"nation\",\n \"nature\",\n \"near\",\n \"neck\",\n \"need\",\n \"negative\",\n \"neglect\",\n \"neither\",\n \"nephew\",\n \"nerve\",\n \"nest\",\n \"net\",\n \"network\",\n \"neutral\",\n \"never\",\n \"news\",\n \"next\",\n \"nice\",\n \"night\",\n \"noble\",\n \"noise\",\n \"nominee\",\n \"noodle\",\n \"normal\",\n \"north\",\n \"nose\",\n \"notable\",\n \"note\",\n \"nothing\",\n \"notice\",\n \"novel\",\n \"now\",\n \"nuclear\",\n \"number\",\n \"nurse\",\n \"nut\",\n \"oak\",\n \"obey\",\n \"object\",\n \"oblige\",\n \"obscure\",\n \"observe\",\n \"obtain\",\n \"obvious\",\n \"occur\",\n \"ocean\",\n \"october\",\n \"odor\",\n \"off\",\n \"offer\",\n \"office\",\n \"often\",\n \"oil\",\n \"okay\",\n \"old\",\n \"olive\",\n \"olympic\",\n \"omit\",\n \"once\",\n \"one\",\n \"onion\",\n \"online\",\n \"only\",\n \"open\",\n \"opera\",\n \"opinion\",\n \"oppose\",\n \"option\",\n \"orange\",\n \"orbit\",\n \"orchard\",\n \"order\",\n \"ordinary\",\n \"organ\",\n \"orient\",\n \"original\",\n \"orphan\",\n \"ostrich\",\n \"other\",\n \"outdoor\",\n \"outer\",\n \"output\",\n \"outside\",\n \"oval\",\n \"oven\",\n \"over\",\n \"own\",\n \"owner\",\n \"oxygen\",\n \"oyster\",\n \"ozone\",\n \"pact\",\n \"paddle\",\n \"page\",\n \"pair\",\n \"palace\",\n \"palm\",\n \"panda\",\n \"panel\",\n \"panic\",\n \"panther\",\n \"paper\",\n \"parade\",\n \"parent\",\n \"park\",\n \"parrot\",\n \"party\",\n \"pass\",\n \"patch\",\n \"path\",\n \"patient\",\n \"patrol\",\n \"pattern\",\n \"pause\",\n \"pave\",\n \"payment\",\n \"peace\",\n \"peanut\",\n \"pear\",\n \"peasant\",\n \"pelican\",\n \"pen\",\n \"penalty\",\n \"pencil\",\n \"people\",\n \"pepper\",\n \"perfect\",\n \"permit\",\n \"person\",\n \"pet\",\n \"phone\",\n \"photo\",\n \"phrase\",\n \"physical\",\n \"piano\",\n \"picnic\",\n \"picture\",\n \"piece\",\n \"pig\",\n \"pigeon\",\n \"pill\",\n \"pilot\",\n \"pink\",\n \"pioneer\",\n \"pipe\",\n \"pistol\",\n \"pitch\",\n \"pizza\",\n \"place\",\n \"planet\",\n \"plastic\",\n \"plate\",\n \"play\",\n \"please\",\n \"pledge\",\n \"pluck\",\n \"plug\",\n \"plunge\",\n \"poem\",\n \"poet\",\n \"point\",\n \"polar\",\n \"pole\",\n \"police\",\n \"pond\",\n \"pony\",\n \"pool\",\n \"popular\",\n \"portion\",\n \"position\",\n \"possible\",\n \"post\",\n \"potato\",\n \"pottery\",\n \"poverty\",\n \"powder\",\n \"power\",\n \"practice\",\n \"praise\",\n \"predict\",\n \"prefer\",\n \"prepare\",\n \"present\",\n \"pretty\",\n \"prevent\",\n \"price\",\n \"pride\",\n \"primary\",\n \"print\",\n \"priority\",\n \"prison\",\n \"private\",\n \"prize\",\n \"problem\",\n \"process\",\n \"produce\",\n \"profit\",\n \"program\",\n \"project\",\n \"promote\",\n \"proof\",\n \"property\",\n \"prosper\",\n \"protect\",\n \"proud\",\n \"provide\",\n \"public\",\n \"pudding\",\n \"pull\",\n \"pulp\",\n \"pulse\",\n \"pumpkin\",\n \"punch\",\n \"pupil\",\n \"puppy\",\n \"purchase\",\n \"purity\",\n \"purpose\",\n \"purse\",\n \"push\",\n \"put\",\n \"puzzle\",\n \"pyramid\",\n \"quality\",\n \"quantum\",\n \"quarter\",\n \"question\",\n \"quick\",\n \"quit\",\n \"quiz\",\n \"quote\",\n \"rabbit\",\n \"raccoon\",\n \"race\",\n \"rack\",\n \"radar\",\n \"radio\",\n \"rail\",\n \"rain\",\n \"raise\",\n \"rally\",\n \"ramp\",\n \"ranch\",\n \"random\",\n \"range\",\n \"rapid\",\n \"rare\",\n \"rate\",\n \"rather\",\n \"raven\",\n \"raw\",\n \"razor\",\n \"ready\",\n \"real\",\n \"reason\",\n \"rebel\",\n \"rebuild\",\n \"recall\",\n \"receive\",\n \"recipe\",\n \"record\",\n \"recycle\",\n \"reduce\",\n \"reflect\",\n \"reform\",\n \"refuse\",\n \"region\",\n \"regret\",\n \"regular\",\n \"reject\",\n \"relax\",\n \"release\",\n \"relief\",\n \"rely\",\n \"remain\",\n \"remember\",\n \"remind\",\n \"remove\",\n \"render\",\n \"renew\",\n \"rent\",\n \"reopen\",\n \"repair\",\n \"repeat\",\n \"replace\",\n \"report\",\n \"require\",\n \"rescue\",\n \"resemble\",\n \"resist\",\n \"resource\",\n \"response\",\n \"result\",\n \"retire\",\n \"retreat\",\n \"return\",\n \"reunion\",\n \"reveal\",\n \"review\",\n \"reward\",\n \"rhythm\",\n \"rib\",\n \"ribbon\",\n \"rice\",\n \"rich\",\n \"ride\",\n \"ridge\",\n \"rifle\",\n \"right\",\n \"rigid\",\n \"ring\",\n \"riot\",\n \"ripple\",\n \"risk\",\n \"ritual\",\n \"rival\",\n \"river\",\n \"road\",\n \"roast\",\n \"robot\",\n \"robust\",\n \"rocket\",\n \"romance\",\n \"roof\",\n \"rookie\",\n \"room\",\n \"rose\",\n \"rotate\",\n \"rough\",\n \"round\",\n \"route\",\n \"royal\",\n \"rubber\",\n \"rude\",\n \"rug\",\n \"rule\",\n \"run\",\n \"runway\",\n \"rural\",\n \"sad\",\n \"saddle\",\n \"sadness\",\n \"safe\",\n \"sail\",\n \"salad\",\n \"salmon\",\n \"salon\",\n \"salt\",\n \"salute\",\n \"same\",\n \"sample\",\n \"sand\",\n \"satisfy\",\n \"satoshi\",\n \"sauce\",\n \"sausage\",\n \"save\",\n \"say\",\n \"scale\",\n \"scan\",\n \"scare\",\n \"scatter\",\n \"scene\",\n \"scheme\",\n \"school\",\n \"science\",\n \"scissors\",\n \"scorpion\",\n \"scout\",\n \"scrap\",\n \"screen\",\n \"script\",\n \"scrub\",\n \"sea\",\n \"search\",\n \"season\",\n \"seat\",\n \"second\",\n \"secret\",\n \"section\",\n \"security\",\n \"seed\",\n \"seek\",\n \"segment\",\n \"select\",\n \"sell\",\n \"seminar\",\n \"senior\",\n \"sense\",\n \"sentence\",\n \"series\",\n \"service\",\n \"session\",\n \"settle\",\n \"setup\",\n \"seven\",\n \"shadow\",\n \"shaft\",\n \"shallow\",\n \"share\",\n \"shed\",\n \"shell\",\n \"sheriff\",\n \"shield\",\n \"shift\",\n \"shine\",\n \"ship\",\n \"shiver\",\n \"shock\",\n \"shoe\",\n \"shoot\",\n \"shop\",\n \"short\",\n \"shoulder\",\n \"shove\",\n \"shrimp\",\n \"shrug\",\n \"shuffle\",\n \"shy\",\n \"sibling\",\n \"sick\",\n \"side\",\n \"siege\",\n \"sight\",\n \"sign\",\n \"silent\",\n \"silk\",\n \"silly\",\n \"silver\",\n \"similar\",\n \"simple\",\n \"since\",\n \"sing\",\n \"siren\",\n \"sister\",\n \"situate\",\n \"six\",\n \"size\",\n \"skate\",\n \"sketch\",\n \"ski\",\n \"skill\",\n \"skin\",\n \"skirt\",\n \"skull\",\n \"slab\",\n \"slam\",\n \"sleep\",\n \"slender\",\n \"slice\",\n \"slide\",\n \"slight\",\n \"slim\",\n \"slogan\",\n \"slot\",\n \"slow\",\n \"slush\",\n \"small\",\n \"smart\",\n \"smile\",\n \"smoke\",\n \"smooth\",\n \"snack\",\n \"snake\",\n \"snap\",\n \"sniff\",\n \"snow\",\n \"soap\",\n \"soccer\",\n \"social\",\n \"sock\",\n \"soda\",\n \"soft\",\n \"solar\",\n \"soldier\",\n \"solid\",\n \"solution\",\n \"solve\",\n \"someone\",\n \"song\",\n \"soon\",\n \"sorry\",\n \"sort\",\n \"soul\",\n \"sound\",\n \"soup\",\n \"source\",\n \"south\",\n \"space\",\n \"spare\",\n \"spatial\",\n \"spawn\",\n \"speak\",\n \"special\",\n \"speed\",\n \"spell\",\n \"spend\",\n \"sphere\",\n \"spice\",\n \"spider\",\n \"spike\",\n \"spin\",\n \"spirit\",\n \"split\",\n \"spoil\",\n \"sponsor\",\n \"spoon\",\n \"sport\",\n \"spot\",\n \"spray\",\n \"spread\",\n \"spring\",\n \"spy\",\n \"square\",\n \"squeeze\",\n \"squirrel\",\n \"stable\",\n \"stadium\",\n \"staff\",\n \"stage\",\n \"stairs\",\n \"stamp\",\n \"stand\",\n \"start\",\n \"state\",\n \"stay\",\n \"steak\",\n \"steel\",\n \"stem\",\n \"step\",\n \"stereo\",\n \"stick\",\n \"still\",\n \"sting\",\n \"stock\",\n \"stomach\",\n \"stone\",\n \"stool\",\n \"story\",\n \"stove\",\n \"strategy\",\n \"street\",\n \"strike\",\n \"strong\",\n \"struggle\",\n \"student\",\n \"stuff\",\n \"stumble\",\n \"style\",\n \"subject\",\n \"submit\",\n \"subway\",\n \"success\",\n \"such\",\n \"sudden\",\n \"suffer\",\n \"sugar\",\n \"suggest\",\n \"suit\",\n \"summer\",\n \"sun\",\n \"sunny\",\n \"sunset\",\n \"super\",\n \"supply\",\n \"supreme\",\n \"sure\",\n \"surface\",\n \"surge\",\n \"surprise\",\n \"surround\",\n \"survey\",\n \"suspect\",\n \"sustain\",\n \"swallow\",\n \"swamp\",\n \"swap\",\n \"swarm\",\n \"swear\",\n \"sweet\",\n \"swift\",\n \"swim\",\n \"swing\",\n \"switch\",\n \"sword\",\n \"symbol\",\n \"symptom\",\n \"syrup\",\n \"system\",\n \"table\",\n \"tackle\",\n \"tag\",\n \"tail\",\n \"talent\",\n \"talk\",\n \"tank\",\n \"tape\",\n \"target\",\n \"task\",\n \"taste\",\n \"tattoo\",\n \"taxi\",\n \"teach\",\n \"team\",\n \"tell\",\n \"ten\",\n \"tenant\",\n \"tennis\",\n \"tent\",\n \"term\",\n \"test\",\n \"text\",\n \"thank\",\n \"that\",\n \"theme\",\n \"then\",\n \"theory\",\n \"there\",\n \"they\",\n \"thing\",\n \"this\",\n \"thought\",\n \"three\",\n \"thrive\",\n \"throw\",\n \"thumb\",\n \"thunder\",\n \"ticket\",\n \"tide\",\n \"tiger\",\n \"tilt\",\n \"timber\",\n \"time\",\n \"tiny\",\n \"tip\",\n \"tired\",\n \"tissue\",\n \"title\",\n \"toast\",\n \"tobacco\",\n \"today\",\n \"toddler\",\n \"toe\",\n \"together\",\n \"toilet\",\n \"token\",\n \"tomato\",\n \"tomorrow\",\n \"tone\",\n \"tongue\",\n \"tonight\",\n \"tool\",\n \"tooth\",\n \"top\",\n \"topic\",\n \"topple\",\n \"torch\",\n \"tornado\",\n \"tortoise\",\n \"toss\",\n \"total\",\n \"tourist\",\n \"toward\",\n \"tower\",\n \"town\",\n \"toy\",\n \"track\",\n \"trade\",\n \"traffic\",\n \"tragic\",\n \"train\",\n \"transfer\",\n \"trap\",\n \"trash\",\n \"travel\",\n \"tray\",\n \"treat\",\n \"tree\",\n \"trend\",\n \"trial\",\n \"tribe\",\n \"trick\",\n \"trigger\",\n \"trim\",\n \"trip\",\n \"trophy\",\n \"trouble\",\n \"truck\",\n \"true\",\n \"truly\",\n \"trumpet\",\n \"trust\",\n \"truth\",\n \"try\",\n \"tube\",\n \"tuition\",\n \"tumble\",\n \"tuna\",\n \"tunnel\",\n \"turkey\",\n \"turn\",\n \"turtle\",\n \"twelve\",\n \"twenty\",\n \"twice\",\n \"twin\",\n \"twist\",\n \"two\",\n \"type\",\n \"typical\",\n \"ugly\",\n \"umbrella\",\n \"unable\",\n \"unaware\",\n \"uncle\",\n \"uncover\",\n \"under\",\n \"undo\",\n \"unfair\",\n \"unfold\",\n \"unhappy\",\n \"uniform\",\n \"unique\",\n \"unit\",\n \"universe\",\n \"unknown\",\n \"unlock\",\n \"until\",\n \"unusual\",\n \"unveil\",\n \"update\",\n \"upgrade\",\n \"uphold\",\n \"upon\",\n \"upper\",\n \"upset\",\n \"urban\",\n \"urge\",\n \"usage\",\n \"use\",\n \"used\",\n \"useful\",\n \"useless\",\n \"usual\",\n \"utility\",\n \"vacant\",\n \"vacuum\",\n \"vague\",\n \"valid\",\n \"valley\",\n \"valve\",\n \"van\",\n \"vanish\",\n \"vapor\",\n \"various\",\n \"vast\",\n \"vault\",\n \"vehicle\",\n \"velvet\",\n \"vendor\",\n \"venture\",\n \"venue\",\n \"verb\",\n \"verify\",\n \"version\",\n \"very\",\n \"vessel\",\n \"veteran\",\n \"viable\",\n \"vibrant\",\n \"vicious\",\n \"victory\",\n \"video\",\n \"view\",\n \"village\",\n \"vintage\",\n \"violin\",\n \"virtual\",\n \"virus\",\n \"visa\",\n \"visit\",\n \"visual\",\n \"vital\",\n \"vivid\",\n \"vocal\",\n \"voice\",\n \"void\",\n \"volcano\",\n \"volume\",\n \"vote\",\n \"voyage\",\n \"wage\",\n \"wagon\",\n \"wait\",\n \"walk\",\n \"wall\",\n \"walnut\",\n \"want\",\n \"warfare\",\n \"warm\",\n \"warrior\",\n \"wash\",\n \"wasp\",\n \"waste\",\n \"water\",\n \"wave\",\n \"way\",\n \"wealth\",\n \"weapon\",\n \"wear\",\n \"weasel\",\n \"weather\",\n \"web\",\n \"wedding\",\n \"weekend\",\n \"weird\",\n \"welcome\",\n \"west\",\n \"wet\",\n \"whale\",\n \"what\",\n \"wheat\",\n \"wheel\",\n \"when\",\n \"where\",\n \"whip\",\n \"whisper\",\n \"wide\",\n \"width\",\n \"wife\",\n \"wild\",\n \"will\",\n \"win\",\n \"window\",\n \"wine\",\n \"wing\",\n \"wink\",\n \"winner\",\n \"winter\",\n \"wire\",\n \"wisdom\",\n \"wise\",\n \"wish\",\n \"witness\",\n \"wolf\",\n \"woman\",\n \"wonder\",\n \"wood\",\n \"wool\",\n \"word\",\n \"work\",\n \"world\",\n \"worry\",\n \"worth\",\n \"wrap\",\n \"wreck\",\n \"wrestle\",\n \"wrist\",\n \"write\",\n \"wrong\",\n \"yard\",\n \"year\",\n \"yellow\",\n \"you\",\n \"young\",\n \"youth\",\n \"zebra\",\n \"zero\",\n \"zone\",\n \"zoo\"\n]\n","[\n \"abaisser\",\n \"abandon\",\n \"abdiquer\",\n \"abeille\",\n \"abolir\",\n \"aborder\",\n \"aboutir\",\n \"aboyer\",\n \"abrasif\",\n \"abreuver\",\n \"abriter\",\n \"abroger\",\n \"abrupt\",\n \"absence\",\n \"absolu\",\n \"absurde\",\n \"abusif\",\n \"abyssal\",\n \"académie\",\n \"acajou\",\n \"acarien\",\n \"accabler\",\n \"accepter\",\n \"acclamer\",\n \"accolade\",\n \"accroche\",\n \"accuser\",\n \"acerbe\",\n \"achat\",\n \"acheter\",\n \"aciduler\",\n \"acier\",\n \"acompte\",\n \"acquérir\",\n \"acronyme\",\n \"acteur\",\n \"actif\",\n \"actuel\",\n \"adepte\",\n \"adéquat\",\n \"adhésif\",\n \"adjectif\",\n \"adjuger\",\n \"admettre\",\n \"admirer\",\n \"adopter\",\n \"adorer\",\n \"adoucir\",\n \"adresse\",\n \"adroit\",\n \"adulte\",\n \"adverbe\",\n \"aérer\",\n \"aéronef\",\n \"affaire\",\n \"affecter\",\n \"affiche\",\n \"affreux\",\n \"affubler\",\n \"agacer\",\n \"agencer\",\n \"agile\",\n \"agiter\",\n \"agrafer\",\n \"agréable\",\n \"agrume\",\n \"aider\",\n \"aiguille\",\n \"ailier\",\n \"aimable\",\n \"aisance\",\n \"ajouter\",\n \"ajuster\",\n \"alarmer\",\n \"alchimie\",\n \"alerte\",\n \"algèbre\",\n \"algue\",\n \"aliéner\",\n \"aliment\",\n \"alléger\",\n \"alliage\",\n \"allouer\",\n \"allumer\",\n \"alourdir\",\n \"alpaga\",\n \"altesse\",\n \"alvéole\",\n \"amateur\",\n \"ambigu\",\n \"ambre\",\n \"aménager\",\n \"amertume\",\n \"amidon\",\n \"amiral\",\n \"amorcer\",\n \"amour\",\n \"amovible\",\n \"amphibie\",\n \"ampleur\",\n \"amusant\",\n \"analyse\",\n \"anaphore\",\n \"anarchie\",\n \"anatomie\",\n \"ancien\",\n \"anéantir\",\n \"angle\",\n \"angoisse\",\n \"anguleux\",\n \"animal\",\n \"annexer\",\n \"annonce\",\n \"annuel\",\n \"anodin\",\n \"anomalie\",\n \"anonyme\",\n \"anormal\",\n \"antenne\",\n \"antidote\",\n \"anxieux\",\n \"apaiser\",\n \"apéritif\",\n \"aplanir\",\n \"apologie\",\n \"appareil\",\n \"appeler\",\n \"apporter\",\n \"appuyer\",\n \"aquarium\",\n \"aqueduc\",\n \"arbitre\",\n \"arbuste\",\n \"ardeur\",\n \"ardoise\",\n \"argent\",\n \"arlequin\",\n \"armature\",\n \"armement\",\n \"armoire\",\n \"armure\",\n \"arpenter\",\n \"arracher\",\n \"arriver\",\n \"arroser\",\n \"arsenic\",\n \"artériel\",\n \"article\",\n \"aspect\",\n \"asphalte\",\n \"aspirer\",\n \"assaut\",\n \"asservir\",\n \"assiette\",\n \"associer\",\n \"assurer\",\n \"asticot\",\n \"astre\",\n \"astuce\",\n \"atelier\",\n \"atome\",\n \"atrium\",\n \"atroce\",\n \"attaque\",\n \"attentif\",\n \"attirer\",\n \"attraper\",\n \"aubaine\",\n \"auberge\",\n \"audace\",\n \"audible\",\n \"augurer\",\n \"aurore\",\n \"automne\",\n \"autruche\",\n \"avaler\",\n \"avancer\",\n \"avarice\",\n \"avenir\",\n \"averse\",\n \"aveugle\",\n \"aviateur\",\n \"avide\",\n \"avion\",\n \"aviser\",\n \"avoine\",\n \"avouer\",\n \"avril\",\n \"axial\",\n \"axiome\",\n \"badge\",\n \"bafouer\",\n \"bagage\",\n \"baguette\",\n \"baignade\",\n \"balancer\",\n \"balcon\",\n \"baleine\",\n \"balisage\",\n \"bambin\",\n \"bancaire\",\n \"bandage\",\n \"banlieue\",\n \"bannière\",\n \"banquier\",\n \"barbier\",\n \"baril\",\n \"baron\",\n \"barque\",\n \"barrage\",\n \"bassin\",\n \"bastion\",\n \"bataille\",\n \"bateau\",\n \"batterie\",\n \"baudrier\",\n \"bavarder\",\n \"belette\",\n \"bélier\",\n \"belote\",\n \"bénéfice\",\n \"berceau\",\n \"berger\",\n \"berline\",\n \"bermuda\",\n \"besace\",\n \"besogne\",\n \"bétail\",\n \"beurre\",\n \"biberon\",\n \"bicycle\",\n \"bidule\",\n \"bijou\",\n \"bilan\",\n \"bilingue\",\n \"billard\",\n \"binaire\",\n \"biologie\",\n \"biopsie\",\n \"biotype\",\n \"biscuit\",\n \"bison\",\n \"bistouri\",\n \"bitume\",\n \"bizarre\",\n \"blafard\",\n \"blague\",\n \"blanchir\",\n \"blessant\",\n \"blinder\",\n \"blond\",\n \"bloquer\",\n \"blouson\",\n \"bobard\",\n \"bobine\",\n \"boire\",\n \"boiser\",\n \"bolide\",\n \"bonbon\",\n \"bondir\",\n \"bonheur\",\n \"bonifier\",\n \"bonus\",\n \"bordure\",\n \"borne\",\n \"botte\",\n \"boucle\",\n \"boueux\",\n \"bougie\",\n \"boulon\",\n \"bouquin\",\n \"bourse\",\n \"boussole\",\n \"boutique\",\n \"boxeur\",\n \"branche\",\n \"brasier\",\n \"brave\",\n \"brebis\",\n \"brèche\",\n \"breuvage\",\n \"bricoler\",\n \"brigade\",\n \"brillant\",\n \"brioche\",\n \"brique\",\n \"brochure\",\n \"broder\",\n \"bronzer\",\n \"brousse\",\n \"broyeur\",\n \"brume\",\n \"brusque\",\n \"brutal\",\n \"bruyant\",\n \"buffle\",\n \"buisson\",\n \"bulletin\",\n \"bureau\",\n \"burin\",\n \"bustier\",\n \"butiner\",\n \"butoir\",\n \"buvable\",\n \"buvette\",\n \"cabanon\",\n \"cabine\",\n \"cachette\",\n \"cadeau\",\n \"cadre\",\n \"caféine\",\n \"caillou\",\n \"caisson\",\n \"calculer\",\n \"calepin\",\n \"calibre\",\n \"calmer\",\n \"calomnie\",\n \"calvaire\",\n \"camarade\",\n \"caméra\",\n \"camion\",\n \"campagne\",\n \"canal\",\n \"caneton\",\n \"canon\",\n \"cantine\",\n \"canular\",\n \"capable\",\n \"caporal\",\n \"caprice\",\n \"capsule\",\n \"capter\",\n \"capuche\",\n \"carabine\",\n \"carbone\",\n \"caresser\",\n \"caribou\",\n \"carnage\",\n \"carotte\",\n \"carreau\",\n \"carton\",\n \"cascade\",\n \"casier\",\n \"casque\",\n \"cassure\",\n \"causer\",\n \"caution\",\n \"cavalier\",\n \"caverne\",\n \"caviar\",\n \"cédille\",\n \"ceinture\",\n \"céleste\",\n \"cellule\",\n \"cendrier\",\n \"censurer\",\n \"central\",\n \"cercle\",\n \"cérébral\",\n \"cerise\",\n \"cerner\",\n \"cerveau\",\n \"cesser\",\n \"chagrin\",\n \"chaise\",\n \"chaleur\",\n \"chambre\",\n \"chance\",\n \"chapitre\",\n \"charbon\",\n \"chasseur\",\n \"chaton\",\n \"chausson\",\n \"chavirer\",\n \"chemise\",\n \"chenille\",\n \"chéquier\",\n \"chercher\",\n \"cheval\",\n \"chien\",\n \"chiffre\",\n \"chignon\",\n \"chimère\",\n \"chiot\",\n \"chlorure\",\n \"chocolat\",\n \"choisir\",\n \"chose\",\n \"chouette\",\n \"chrome\",\n \"chute\",\n \"cigare\",\n \"cigogne\",\n \"cimenter\",\n \"cinéma\",\n \"cintrer\",\n \"circuler\",\n \"cirer\",\n \"cirque\",\n \"citerne\",\n \"citoyen\",\n \"citron\",\n \"civil\",\n \"clairon\",\n \"clameur\",\n \"claquer\",\n \"classe\",\n \"clavier\",\n \"client\",\n \"cligner\",\n \"climat\",\n \"clivage\",\n \"cloche\",\n \"clonage\",\n \"cloporte\",\n \"cobalt\",\n \"cobra\",\n \"cocasse\",\n \"cocotier\",\n \"coder\",\n \"codifier\",\n \"coffre\",\n \"cogner\",\n \"cohésion\",\n \"coiffer\",\n \"coincer\",\n \"colère\",\n \"colibri\",\n \"colline\",\n \"colmater\",\n \"colonel\",\n \"combat\",\n \"comédie\",\n \"commande\",\n \"compact\",\n \"concert\",\n \"conduire\",\n \"confier\",\n \"congeler\",\n \"connoter\",\n \"consonne\",\n \"contact\",\n \"convexe\",\n \"copain\",\n \"copie\",\n \"corail\",\n \"corbeau\",\n \"cordage\",\n \"corniche\",\n \"corpus\",\n \"correct\",\n \"cortège\",\n \"cosmique\",\n \"costume\",\n \"coton\",\n \"coude\",\n \"coupure\",\n \"courage\",\n \"couteau\",\n \"couvrir\",\n \"coyote\",\n \"crabe\",\n \"crainte\",\n \"cravate\",\n \"crayon\",\n \"créature\",\n \"créditer\",\n \"crémeux\",\n \"creuser\",\n \"crevette\",\n \"cribler\",\n \"crier\",\n \"cristal\",\n \"critère\",\n \"croire\",\n \"croquer\",\n \"crotale\",\n \"crucial\",\n \"cruel\",\n \"crypter\",\n \"cubique\",\n \"cueillir\",\n \"cuillère\",\n \"cuisine\",\n \"cuivre\",\n \"culminer\",\n \"cultiver\",\n \"cumuler\",\n \"cupide\",\n \"curatif\",\n \"curseur\",\n \"cyanure\",\n \"cycle\",\n \"cylindre\",\n \"cynique\",\n \"daigner\",\n \"damier\",\n \"danger\",\n \"danseur\",\n \"dauphin\",\n \"débattre\",\n \"débiter\",\n \"déborder\",\n \"débrider\",\n \"débutant\",\n \"décaler\",\n \"décembre\",\n \"déchirer\",\n \"décider\",\n \"déclarer\",\n \"décorer\",\n \"décrire\",\n \"décupler\",\n \"dédale\",\n \"déductif\",\n \"déesse\",\n \"défensif\",\n \"défiler\",\n \"défrayer\",\n \"dégager\",\n \"dégivrer\",\n \"déglutir\",\n \"dégrafer\",\n \"déjeuner\",\n \"délice\",\n \"déloger\",\n \"demander\",\n \"demeurer\",\n \"démolir\",\n \"dénicher\",\n \"dénouer\",\n \"dentelle\",\n \"dénuder\",\n \"départ\",\n \"dépenser\",\n \"déphaser\",\n \"déplacer\",\n \"déposer\",\n \"déranger\",\n \"dérober\",\n \"désastre\",\n \"descente\",\n \"désert\",\n \"désigner\",\n \"désobéir\",\n \"dessiner\",\n \"destrier\",\n \"détacher\",\n \"détester\",\n \"détourer\",\n \"détresse\",\n \"devancer\",\n \"devenir\",\n \"deviner\",\n \"devoir\",\n \"diable\",\n \"dialogue\",\n \"diamant\",\n \"dicter\",\n \"différer\",\n \"digérer\",\n \"digital\",\n \"digne\",\n \"diluer\",\n \"dimanche\",\n \"diminuer\",\n \"dioxyde\",\n \"directif\",\n \"diriger\",\n \"discuter\",\n \"disposer\",\n \"dissiper\",\n \"distance\",\n \"divertir\",\n \"diviser\",\n \"docile\",\n \"docteur\",\n \"dogme\",\n \"doigt\",\n \"domaine\",\n \"domicile\",\n \"dompter\",\n \"donateur\",\n \"donjon\",\n \"donner\",\n \"dopamine\",\n \"dortoir\",\n \"dorure\",\n \"dosage\",\n \"doseur\",\n \"dossier\",\n \"dotation\",\n \"douanier\",\n \"double\",\n \"douceur\",\n \"douter\",\n \"doyen\",\n \"dragon\",\n \"draper\",\n \"dresser\",\n \"dribbler\",\n \"droiture\",\n \"duperie\",\n \"duplexe\",\n \"durable\",\n \"durcir\",\n \"dynastie\",\n \"éblouir\",\n \"écarter\",\n \"écharpe\",\n \"échelle\",\n \"éclairer\",\n \"éclipse\",\n \"éclore\",\n \"écluse\",\n \"école\",\n \"économie\",\n \"écorce\",\n \"écouter\",\n \"écraser\",\n \"écrémer\",\n \"écrivain\",\n \"écrou\",\n \"écume\",\n \"écureuil\",\n \"édifier\",\n \"éduquer\",\n \"effacer\",\n \"effectif\",\n \"effigie\",\n \"effort\",\n \"effrayer\",\n \"effusion\",\n \"égaliser\",\n \"égarer\",\n \"éjecter\",\n \"élaborer\",\n \"élargir\",\n \"électron\",\n \"élégant\",\n \"éléphant\",\n \"élève\",\n \"éligible\",\n \"élitisme\",\n \"éloge\",\n \"élucider\",\n \"éluder\",\n \"emballer\",\n \"embellir\",\n \"embryon\",\n \"émeraude\",\n \"émission\",\n \"emmener\",\n \"émotion\",\n \"émouvoir\",\n \"empereur\",\n \"employer\",\n \"emporter\",\n \"emprise\",\n \"émulsion\",\n \"encadrer\",\n \"enchère\",\n \"enclave\",\n \"encoche\",\n \"endiguer\",\n \"endosser\",\n \"endroit\",\n \"enduire\",\n \"énergie\",\n \"enfance\",\n \"enfermer\",\n \"enfouir\",\n \"engager\",\n \"engin\",\n \"englober\",\n \"énigme\",\n \"enjamber\",\n \"enjeu\",\n \"enlever\",\n \"ennemi\",\n \"ennuyeux\",\n \"enrichir\",\n \"enrobage\",\n \"enseigne\",\n \"entasser\",\n \"entendre\",\n \"entier\",\n \"entourer\",\n \"entraver\",\n \"énumérer\",\n \"envahir\",\n \"enviable\",\n \"envoyer\",\n \"enzyme\",\n \"éolien\",\n \"épaissir\",\n \"épargne\",\n \"épatant\",\n \"épaule\",\n \"épicerie\",\n \"épidémie\",\n \"épier\",\n \"épilogue\",\n \"épine\",\n \"épisode\",\n \"épitaphe\",\n \"époque\",\n \"épreuve\",\n \"éprouver\",\n \"épuisant\",\n \"équerre\",\n \"équipe\",\n \"ériger\",\n \"érosion\",\n \"erreur\",\n \"éruption\",\n \"escalier\",\n \"espadon\",\n \"espèce\",\n \"espiègle\",\n \"espoir\",\n \"esprit\",\n \"esquiver\",\n \"essayer\",\n \"essence\",\n \"essieu\",\n \"essorer\",\n \"estime\",\n \"estomac\",\n \"estrade\",\n \"étagère\",\n \"étaler\",\n \"étanche\",\n \"étatique\",\n \"éteindre\",\n \"étendoir\",\n \"éternel\",\n \"éthanol\",\n \"éthique\",\n \"ethnie\",\n \"étirer\",\n \"étoffer\",\n \"étoile\",\n \"étonnant\",\n \"étourdir\",\n \"étrange\",\n \"étroit\",\n \"étude\",\n \"euphorie\",\n \"évaluer\",\n \"évasion\",\n \"éventail\",\n \"évidence\",\n \"éviter\",\n \"évolutif\",\n \"évoquer\",\n \"exact\",\n \"exagérer\",\n \"exaucer\",\n \"exceller\",\n \"excitant\",\n \"exclusif\",\n \"excuse\",\n \"exécuter\",\n \"exemple\",\n \"exercer\",\n \"exhaler\",\n \"exhorter\",\n \"exigence\",\n \"exiler\",\n \"exister\",\n \"exotique\",\n \"expédier\",\n \"explorer\",\n \"exposer\",\n \"exprimer\",\n \"exquis\",\n \"extensif\",\n \"extraire\",\n \"exulter\",\n \"fable\",\n \"fabuleux\",\n \"facette\",\n \"facile\",\n \"facture\",\n \"faiblir\",\n \"falaise\",\n \"fameux\",\n \"famille\",\n \"farceur\",\n \"farfelu\",\n \"farine\",\n \"farouche\",\n \"fasciner\",\n \"fatal\",\n \"fatigue\",\n \"faucon\",\n \"fautif\",\n \"faveur\",\n \"favori\",\n \"fébrile\",\n \"féconder\",\n \"fédérer\",\n \"félin\",\n \"femme\",\n \"fémur\",\n \"fendoir\",\n \"féodal\",\n \"fermer\",\n \"féroce\",\n \"ferveur\",\n \"festival\",\n \"feuille\",\n \"feutre\",\n \"février\",\n \"fiasco\",\n \"ficeler\",\n \"fictif\",\n \"fidèle\",\n \"figure\",\n \"filature\",\n \"filetage\",\n \"filière\",\n \"filleul\",\n \"filmer\",\n \"filou\",\n \"filtrer\",\n \"financer\",\n \"finir\",\n \"fiole\",\n \"firme\",\n \"fissure\",\n \"fixer\",\n \"flairer\",\n \"flamme\",\n \"flasque\",\n \"flatteur\",\n \"fléau\",\n \"flèche\",\n \"fleur\",\n \"flexion\",\n \"flocon\",\n \"flore\",\n \"fluctuer\",\n \"fluide\",\n \"fluvial\",\n \"folie\",\n \"fonderie\",\n \"fongible\",\n \"fontaine\",\n \"forcer\",\n \"forgeron\",\n \"formuler\",\n \"fortune\",\n \"fossile\",\n \"foudre\",\n \"fougère\",\n \"fouiller\",\n \"foulure\",\n \"fourmi\",\n \"fragile\",\n \"fraise\",\n \"franchir\",\n \"frapper\",\n \"frayeur\",\n \"frégate\",\n \"freiner\",\n \"frelon\",\n \"frémir\",\n \"frénésie\",\n \"frère\",\n \"friable\",\n \"friction\",\n \"frisson\",\n \"frivole\",\n \"froid\",\n \"fromage\",\n \"frontal\",\n \"frotter\",\n \"fruit\",\n \"fugitif\",\n \"fuite\",\n \"fureur\",\n \"furieux\",\n \"furtif\",\n \"fusion\",\n \"futur\",\n \"gagner\",\n \"galaxie\",\n \"galerie\",\n \"gambader\",\n \"garantir\",\n \"gardien\",\n \"garnir\",\n \"garrigue\",\n \"gazelle\",\n \"gazon\",\n \"géant\",\n \"gélatine\",\n \"gélule\",\n \"gendarme\",\n \"général\",\n \"génie\",\n \"genou\",\n \"gentil\",\n \"géologie\",\n \"géomètre\",\n \"géranium\",\n \"germe\",\n \"gestuel\",\n \"geyser\",\n \"gibier\",\n \"gicler\",\n \"girafe\",\n \"givre\",\n \"glace\",\n \"glaive\",\n \"glisser\",\n \"globe\",\n \"gloire\",\n \"glorieux\",\n \"golfeur\",\n \"gomme\",\n \"gonfler\",\n \"gorge\",\n \"gorille\",\n \"goudron\",\n \"gouffre\",\n \"goulot\",\n \"goupille\",\n \"gourmand\",\n \"goutte\",\n \"graduel\",\n \"graffiti\",\n \"graine\",\n \"grand\",\n \"grappin\",\n \"gratuit\",\n \"gravir\",\n \"grenat\",\n \"griffure\",\n \"griller\",\n \"grimper\",\n \"grogner\",\n \"gronder\",\n \"grotte\",\n \"groupe\",\n \"gruger\",\n \"grutier\",\n \"gruyère\",\n \"guépard\",\n \"guerrier\",\n \"guide\",\n \"guimauve\",\n \"guitare\",\n \"gustatif\",\n \"gymnaste\",\n \"gyrostat\",\n \"habitude\",\n \"hachoir\",\n \"halte\",\n \"hameau\",\n \"hangar\",\n \"hanneton\",\n \"haricot\",\n \"harmonie\",\n \"harpon\",\n \"hasard\",\n \"hélium\",\n \"hématome\",\n \"herbe\",\n \"hérisson\",\n \"hermine\",\n \"héron\",\n \"hésiter\",\n \"heureux\",\n \"hiberner\",\n \"hibou\",\n \"hilarant\",\n \"histoire\",\n \"hiver\",\n \"homard\",\n \"hommage\",\n \"homogène\",\n \"honneur\",\n \"honorer\",\n \"honteux\",\n \"horde\",\n \"horizon\",\n \"horloge\",\n \"hormone\",\n \"horrible\",\n \"houleux\",\n \"housse\",\n \"hublot\",\n \"huileux\",\n \"humain\",\n \"humble\",\n \"humide\",\n \"humour\",\n \"hurler\",\n \"hydromel\",\n \"hygiène\",\n \"hymne\",\n \"hypnose\",\n \"idylle\",\n \"ignorer\",\n \"iguane\",\n \"illicite\",\n \"illusion\",\n \"image\",\n \"imbiber\",\n \"imiter\",\n \"immense\",\n \"immobile\",\n \"immuable\",\n \"impact\",\n \"impérial\",\n \"implorer\",\n \"imposer\",\n \"imprimer\",\n \"imputer\",\n \"incarner\",\n \"incendie\",\n \"incident\",\n \"incliner\",\n \"incolore\",\n \"indexer\",\n \"indice\",\n \"inductif\",\n \"inédit\",\n \"ineptie\",\n \"inexact\",\n \"infini\",\n \"infliger\",\n \"informer\",\n \"infusion\",\n \"ingérer\",\n \"inhaler\",\n \"inhiber\",\n \"injecter\",\n \"injure\",\n \"innocent\",\n \"inoculer\",\n \"inonder\",\n \"inscrire\",\n \"insecte\",\n \"insigne\",\n \"insolite\",\n \"inspirer\",\n \"instinct\",\n \"insulter\",\n \"intact\",\n \"intense\",\n \"intime\",\n \"intrigue\",\n \"intuitif\",\n \"inutile\",\n \"invasion\",\n \"inventer\",\n \"inviter\",\n \"invoquer\",\n \"ironique\",\n \"irradier\",\n \"irréel\",\n \"irriter\",\n \"isoler\",\n \"ivoire\",\n \"ivresse\",\n \"jaguar\",\n \"jaillir\",\n \"jambe\",\n \"janvier\",\n \"jardin\",\n \"jauger\",\n \"jaune\",\n \"javelot\",\n \"jetable\",\n \"jeton\",\n \"jeudi\",\n \"jeunesse\",\n \"joindre\",\n \"joncher\",\n \"jongler\",\n \"joueur\",\n \"jouissif\",\n \"journal\",\n \"jovial\",\n \"joyau\",\n \"joyeux\",\n \"jubiler\",\n \"jugement\",\n \"junior\",\n \"jupon\",\n \"juriste\",\n \"justice\",\n \"juteux\",\n \"juvénile\",\n \"kayak\",\n \"kimono\",\n \"kiosque\",\n \"label\",\n \"labial\",\n \"labourer\",\n \"lacérer\",\n \"lactose\",\n \"lagune\",\n \"laine\",\n \"laisser\",\n \"laitier\",\n \"lambeau\",\n \"lamelle\",\n \"lampe\",\n \"lanceur\",\n \"langage\",\n \"lanterne\",\n \"lapin\",\n \"largeur\",\n \"larme\",\n \"laurier\",\n \"lavabo\",\n \"lavoir\",\n \"lecture\",\n \"légal\",\n \"léger\",\n \"légume\",\n \"lessive\",\n \"lettre\",\n \"levier\",\n \"lexique\",\n \"lézard\",\n \"liasse\",\n \"libérer\",\n \"libre\",\n \"licence\",\n \"licorne\",\n \"liège\",\n \"lièvre\",\n \"ligature\",\n \"ligoter\",\n \"ligue\",\n \"limer\",\n \"limite\",\n \"limonade\",\n \"limpide\",\n \"linéaire\",\n \"lingot\",\n \"lionceau\",\n \"liquide\",\n \"lisière\",\n \"lister\",\n \"lithium\",\n \"litige\",\n \"littoral\",\n \"livreur\",\n \"logique\",\n \"lointain\",\n \"loisir\",\n \"lombric\",\n \"loterie\",\n \"louer\",\n \"lourd\",\n \"loutre\",\n \"louve\",\n \"loyal\",\n \"lubie\",\n \"lucide\",\n \"lucratif\",\n \"lueur\",\n \"lugubre\",\n \"luisant\",\n \"lumière\",\n \"lunaire\",\n \"lundi\",\n \"luron\",\n \"lutter\",\n \"luxueux\",\n \"machine\",\n \"magasin\",\n \"magenta\",\n \"magique\",\n \"maigre\",\n \"maillon\",\n \"maintien\",\n \"mairie\",\n \"maison\",\n \"majorer\",\n \"malaxer\",\n \"maléfice\",\n \"malheur\",\n \"malice\",\n \"mallette\",\n \"mammouth\",\n \"mandater\",\n \"maniable\",\n \"manquant\",\n \"manteau\",\n \"manuel\",\n \"marathon\",\n \"marbre\",\n \"marchand\",\n \"mardi\",\n \"maritime\",\n \"marqueur\",\n \"marron\",\n \"marteler\",\n \"mascotte\",\n \"massif\",\n \"matériel\",\n \"matière\",\n \"matraque\",\n \"maudire\",\n \"maussade\",\n \"mauve\",\n \"maximal\",\n \"méchant\",\n \"méconnu\",\n \"médaille\",\n \"médecin\",\n \"méditer\",\n \"méduse\",\n \"meilleur\",\n \"mélange\",\n \"mélodie\",\n \"membre\",\n \"mémoire\",\n \"menacer\",\n \"mener\",\n \"menhir\",\n \"mensonge\",\n \"mentor\",\n \"mercredi\",\n \"mérite\",\n \"merle\",\n \"messager\",\n \"mesure\",\n \"métal\",\n \"météore\",\n \"méthode\",\n \"métier\",\n \"meuble\",\n \"miauler\",\n \"microbe\",\n \"miette\",\n \"mignon\",\n \"migrer\",\n \"milieu\",\n \"million\",\n \"mimique\",\n \"mince\",\n \"minéral\",\n \"minimal\",\n \"minorer\",\n \"minute\",\n \"miracle\",\n \"miroiter\",\n \"missile\",\n \"mixte\",\n \"mobile\",\n \"moderne\",\n \"moelleux\",\n \"mondial\",\n \"moniteur\",\n \"monnaie\",\n \"monotone\",\n \"monstre\",\n \"montagne\",\n \"monument\",\n \"moqueur\",\n \"morceau\",\n \"morsure\",\n \"mortier\",\n \"moteur\",\n \"motif\",\n \"mouche\",\n \"moufle\",\n \"moulin\",\n \"mousson\",\n \"mouton\",\n \"mouvant\",\n \"multiple\",\n \"munition\",\n \"muraille\",\n \"murène\",\n \"murmure\",\n \"muscle\",\n \"muséum\",\n \"musicien\",\n \"mutation\",\n \"muter\",\n \"mutuel\",\n \"myriade\",\n \"myrtille\",\n \"mystère\",\n \"mythique\",\n \"nageur\",\n \"nappe\",\n \"narquois\",\n \"narrer\",\n \"natation\",\n \"nation\",\n \"nature\",\n \"naufrage\",\n \"nautique\",\n \"navire\",\n \"nébuleux\",\n \"nectar\",\n \"néfaste\",\n \"négation\",\n \"négliger\",\n \"négocier\",\n \"neige\",\n \"nerveux\",\n \"nettoyer\",\n \"neurone\",\n \"neutron\",\n \"neveu\",\n \"niche\",\n \"nickel\",\n \"nitrate\",\n \"niveau\",\n \"noble\",\n \"nocif\",\n \"nocturne\",\n \"noirceur\",\n \"noisette\",\n \"nomade\",\n \"nombreux\",\n \"nommer\",\n \"normatif\",\n \"notable\",\n \"notifier\",\n \"notoire\",\n \"nourrir\",\n \"nouveau\",\n \"novateur\",\n \"novembre\",\n \"novice\",\n \"nuage\",\n \"nuancer\",\n \"nuire\",\n \"nuisible\",\n \"numéro\",\n \"nuptial\",\n \"nuque\",\n \"nutritif\",\n \"obéir\",\n \"objectif\",\n \"obliger\",\n \"obscur\",\n \"observer\",\n \"obstacle\",\n \"obtenir\",\n \"obturer\",\n \"occasion\",\n \"occuper\",\n \"océan\",\n \"octobre\",\n \"octroyer\",\n \"octupler\",\n \"oculaire\",\n \"odeur\",\n \"odorant\",\n \"offenser\",\n \"officier\",\n \"offrir\",\n \"ogive\",\n \"oiseau\",\n \"oisillon\",\n \"olfactif\",\n \"olivier\",\n \"ombrage\",\n \"omettre\",\n \"onctueux\",\n \"onduler\",\n \"onéreux\",\n \"onirique\",\n \"opale\",\n \"opaque\",\n \"opérer\",\n \"opinion\",\n \"opportun\",\n \"opprimer\",\n \"opter\",\n \"optique\",\n \"orageux\",\n \"orange\",\n \"orbite\",\n \"ordonner\",\n \"oreille\",\n \"organe\",\n \"orgueil\",\n \"orifice\",\n \"ornement\",\n \"orque\",\n \"ortie\",\n \"osciller\",\n \"osmose\",\n \"ossature\",\n \"otarie\",\n \"ouragan\",\n \"ourson\",\n \"outil\",\n \"outrager\",\n \"ouvrage\",\n \"ovation\",\n \"oxyde\",\n \"oxygène\",\n \"ozone\",\n \"paisible\",\n \"palace\",\n \"palmarès\",\n \"palourde\",\n \"palper\",\n \"panache\",\n \"panda\",\n \"pangolin\",\n \"paniquer\",\n \"panneau\",\n \"panorama\",\n \"pantalon\",\n \"papaye\",\n \"papier\",\n \"papoter\",\n \"papyrus\",\n \"paradoxe\",\n \"parcelle\",\n \"paresse\",\n \"parfumer\",\n \"parler\",\n \"parole\",\n \"parrain\",\n \"parsemer\",\n \"partager\",\n \"parure\",\n \"parvenir\",\n \"passion\",\n \"pastèque\",\n \"paternel\",\n \"patience\",\n \"patron\",\n \"pavillon\",\n \"pavoiser\",\n \"payer\",\n \"paysage\",\n \"peigne\",\n \"peintre\",\n \"pelage\",\n \"pélican\",\n \"pelle\",\n \"pelouse\",\n \"peluche\",\n \"pendule\",\n \"pénétrer\",\n \"pénible\",\n \"pensif\",\n \"pénurie\",\n \"pépite\",\n \"péplum\",\n \"perdrix\",\n \"perforer\",\n \"période\",\n \"permuter\",\n \"perplexe\",\n \"persil\",\n \"perte\",\n \"peser\",\n \"pétale\",\n \"petit\",\n \"pétrir\",\n \"peuple\",\n \"pharaon\",\n \"phobie\",\n \"phoque\",\n \"photon\",\n \"phrase\",\n \"physique\",\n \"piano\",\n \"pictural\",\n \"pièce\",\n \"pierre\",\n \"pieuvre\",\n \"pilote\",\n \"pinceau\",\n \"pipette\",\n \"piquer\",\n \"pirogue\",\n \"piscine\",\n \"piston\",\n \"pivoter\",\n \"pixel\",\n \"pizza\",\n \"placard\",\n \"plafond\",\n \"plaisir\",\n \"planer\",\n \"plaque\",\n \"plastron\",\n \"plateau\",\n \"pleurer\",\n \"plexus\",\n \"pliage\",\n \"plomb\",\n \"plonger\",\n \"pluie\",\n \"plumage\",\n \"pochette\",\n \"poésie\",\n \"poète\",\n \"pointe\",\n \"poirier\",\n \"poisson\",\n \"poivre\",\n \"polaire\",\n \"policier\",\n \"pollen\",\n \"polygone\",\n \"pommade\",\n \"pompier\",\n \"ponctuel\",\n \"pondérer\",\n \"poney\",\n \"portique\",\n \"position\",\n \"posséder\",\n \"posture\",\n \"potager\",\n \"poteau\",\n \"potion\",\n \"pouce\",\n \"poulain\",\n \"poumon\",\n \"pourpre\",\n \"poussin\",\n \"pouvoir\",\n \"prairie\",\n \"pratique\",\n \"précieux\",\n \"prédire\",\n \"préfixe\",\n \"prélude\",\n \"prénom\",\n \"présence\",\n \"prétexte\",\n \"prévoir\",\n \"primitif\",\n \"prince\",\n \"prison\",\n \"priver\",\n \"problème\",\n \"procéder\",\n \"prodige\",\n \"profond\",\n \"progrès\",\n \"proie\",\n \"projeter\",\n \"prologue\",\n \"promener\",\n \"propre\",\n \"prospère\",\n \"protéger\",\n \"prouesse\",\n \"proverbe\",\n \"prudence\",\n \"pruneau\",\n \"psychose\",\n \"public\",\n \"puceron\",\n \"puiser\",\n \"pulpe\",\n \"pulsar\",\n \"punaise\",\n \"punitif\",\n \"pupitre\",\n \"purifier\",\n \"puzzle\",\n \"pyramide\",\n \"quasar\",\n \"querelle\",\n \"question\",\n \"quiétude\",\n \"quitter\",\n \"quotient\",\n \"racine\",\n \"raconter\",\n \"radieux\",\n \"ragondin\",\n \"raideur\",\n \"raisin\",\n \"ralentir\",\n \"rallonge\",\n \"ramasser\",\n \"rapide\",\n \"rasage\",\n \"ratisser\",\n \"ravager\",\n \"ravin\",\n \"rayonner\",\n \"réactif\",\n \"réagir\",\n \"réaliser\",\n \"réanimer\",\n \"recevoir\",\n \"réciter\",\n \"réclamer\",\n \"récolter\",\n \"recruter\",\n \"reculer\",\n \"recycler\",\n \"rédiger\",\n \"redouter\",\n \"refaire\",\n \"réflexe\",\n \"réformer\",\n \"refrain\",\n \"refuge\",\n \"régalien\",\n \"région\",\n \"réglage\",\n \"régulier\",\n \"réitérer\",\n \"rejeter\",\n \"rejouer\",\n \"relatif\",\n \"relever\",\n \"relief\",\n \"remarque\",\n \"remède\",\n \"remise\",\n \"remonter\",\n \"remplir\",\n \"remuer\",\n \"renard\",\n \"renfort\",\n \"renifler\",\n \"renoncer\",\n \"rentrer\",\n \"renvoi\",\n \"replier\",\n \"reporter\",\n \"reprise\",\n \"reptile\",\n \"requin\",\n \"réserve\",\n \"résineux\",\n \"résoudre\",\n \"respect\",\n \"rester\",\n \"résultat\",\n \"rétablir\",\n \"retenir\",\n \"réticule\",\n \"retomber\",\n \"retracer\",\n \"réunion\",\n \"réussir\",\n \"revanche\",\n \"revivre\",\n \"révolte\",\n \"révulsif\",\n \"richesse\",\n \"rideau\",\n \"rieur\",\n \"rigide\",\n \"rigoler\",\n \"rincer\",\n \"riposter\",\n \"risible\",\n \"risque\",\n \"rituel\",\n \"rival\",\n \"rivière\",\n \"rocheux\",\n \"romance\",\n \"rompre\",\n \"ronce\",\n \"rondin\",\n \"roseau\",\n \"rosier\",\n \"rotatif\",\n \"rotor\",\n \"rotule\",\n \"rouge\",\n \"rouille\",\n \"rouleau\",\n \"routine\",\n \"royaume\",\n \"ruban\",\n \"rubis\",\n \"ruche\",\n \"ruelle\",\n \"rugueux\",\n \"ruiner\",\n \"ruisseau\",\n \"ruser\",\n \"rustique\",\n \"rythme\",\n \"sabler\",\n \"saboter\",\n \"sabre\",\n \"sacoche\",\n \"safari\",\n \"sagesse\",\n \"saisir\",\n \"salade\",\n \"salive\",\n \"salon\",\n \"saluer\",\n \"samedi\",\n \"sanction\",\n \"sanglier\",\n \"sarcasme\",\n \"sardine\",\n \"saturer\",\n \"saugrenu\",\n \"saumon\",\n \"sauter\",\n \"sauvage\",\n \"savant\",\n \"savonner\",\n \"scalpel\",\n \"scandale\",\n \"scélérat\",\n \"scénario\",\n \"sceptre\",\n \"schéma\",\n \"science\",\n \"scinder\",\n \"score\",\n \"scrutin\",\n \"sculpter\",\n \"séance\",\n \"sécable\",\n \"sécher\",\n \"secouer\",\n \"sécréter\",\n \"sédatif\",\n \"séduire\",\n \"seigneur\",\n \"séjour\",\n \"sélectif\",\n \"semaine\",\n \"sembler\",\n \"semence\",\n \"séminal\",\n \"sénateur\",\n \"sensible\",\n \"sentence\",\n \"séparer\",\n \"séquence\",\n \"serein\",\n \"sergent\",\n \"sérieux\",\n \"serrure\",\n \"sérum\",\n \"service\",\n \"sésame\",\n \"sévir\",\n \"sevrage\",\n \"sextuple\",\n \"sidéral\",\n \"siècle\",\n \"siéger\",\n \"siffler\",\n \"sigle\",\n \"signal\",\n \"silence\",\n \"silicium\",\n \"simple\",\n \"sincère\",\n \"sinistre\",\n \"siphon\",\n \"sirop\",\n \"sismique\",\n \"situer\",\n \"skier\",\n \"social\",\n \"socle\",\n \"sodium\",\n \"soigneux\",\n \"soldat\",\n \"soleil\",\n \"solitude\",\n \"soluble\",\n \"sombre\",\n \"sommeil\",\n \"somnoler\",\n \"sonde\",\n \"songeur\",\n \"sonnette\",\n \"sonore\",\n \"sorcier\",\n \"sortir\",\n \"sosie\",\n \"sottise\",\n \"soucieux\",\n \"soudure\",\n \"souffle\",\n \"soulever\",\n \"soupape\",\n \"source\",\n \"soutirer\",\n \"souvenir\",\n \"spacieux\",\n \"spatial\",\n \"spécial\",\n \"sphère\",\n \"spiral\",\n \"stable\",\n \"station\",\n \"sternum\",\n \"stimulus\",\n \"stipuler\",\n \"strict\",\n \"studieux\",\n \"stupeur\",\n \"styliste\",\n \"sublime\",\n \"substrat\",\n \"subtil\",\n \"subvenir\",\n \"succès\",\n \"sucre\",\n \"suffixe\",\n \"suggérer\",\n \"suiveur\",\n \"sulfate\",\n \"superbe\",\n \"supplier\",\n \"surface\",\n \"suricate\",\n \"surmener\",\n \"surprise\",\n \"sursaut\",\n \"survie\",\n \"suspect\",\n \"syllabe\",\n \"symbole\",\n \"symétrie\",\n \"synapse\",\n \"syntaxe\",\n \"système\",\n \"tabac\",\n \"tablier\",\n \"tactile\",\n \"tailler\",\n \"talent\",\n \"talisman\",\n \"talonner\",\n \"tambour\",\n \"tamiser\",\n \"tangible\",\n \"tapis\",\n \"taquiner\",\n \"tarder\",\n \"tarif\",\n \"tartine\",\n \"tasse\",\n \"tatami\",\n \"tatouage\",\n \"taupe\",\n \"taureau\",\n \"taxer\",\n \"témoin\",\n \"temporel\",\n \"tenaille\",\n \"tendre\",\n \"teneur\",\n \"tenir\",\n \"tension\",\n \"terminer\",\n \"terne\",\n \"terrible\",\n \"tétine\",\n \"texte\",\n \"thème\",\n \"théorie\",\n \"thérapie\",\n \"thorax\",\n \"tibia\",\n \"tiède\",\n \"timide\",\n \"tirelire\",\n \"tiroir\",\n \"tissu\",\n \"titane\",\n \"titre\",\n \"tituber\",\n \"toboggan\",\n \"tolérant\",\n \"tomate\",\n \"tonique\",\n \"tonneau\",\n \"toponyme\",\n \"torche\",\n \"tordre\",\n \"tornade\",\n \"torpille\",\n \"torrent\",\n \"torse\",\n \"tortue\",\n \"totem\",\n \"toucher\",\n \"tournage\",\n \"tousser\",\n \"toxine\",\n \"traction\",\n \"trafic\",\n \"tragique\",\n \"trahir\",\n \"train\",\n \"trancher\",\n \"travail\",\n \"trèfle\",\n \"tremper\",\n \"trésor\",\n \"treuil\",\n \"triage\",\n \"tribunal\",\n \"tricoter\",\n \"trilogie\",\n \"triomphe\",\n \"tripler\",\n \"triturer\",\n \"trivial\",\n \"trombone\",\n \"tronc\",\n \"tropical\",\n \"troupeau\",\n \"tuile\",\n \"tulipe\",\n \"tumulte\",\n \"tunnel\",\n \"turbine\",\n \"tuteur\",\n \"tutoyer\",\n \"tuyau\",\n \"tympan\",\n \"typhon\",\n \"typique\",\n \"tyran\",\n \"ubuesque\",\n \"ultime\",\n \"ultrason\",\n \"unanime\",\n \"unifier\",\n \"union\",\n \"unique\",\n \"unitaire\",\n \"univers\",\n \"uranium\",\n \"urbain\",\n \"urticant\",\n \"usage\",\n \"usine\",\n \"usuel\",\n \"usure\",\n \"utile\",\n \"utopie\",\n \"vacarme\",\n \"vaccin\",\n \"vagabond\",\n \"vague\",\n \"vaillant\",\n \"vaincre\",\n \"vaisseau\",\n \"valable\",\n \"valise\",\n \"vallon\",\n \"valve\",\n \"vampire\",\n \"vanille\",\n \"vapeur\",\n \"varier\",\n \"vaseux\",\n \"vassal\",\n \"vaste\",\n \"vecteur\",\n \"vedette\",\n \"végétal\",\n \"véhicule\",\n \"veinard\",\n \"véloce\",\n \"vendredi\",\n \"vénérer\",\n \"venger\",\n \"venimeux\",\n \"ventouse\",\n \"verdure\",\n \"vérin\",\n \"vernir\",\n \"verrou\",\n \"verser\",\n \"vertu\",\n \"veston\",\n \"vétéran\",\n \"vétuste\",\n \"vexant\",\n \"vexer\",\n \"viaduc\",\n \"viande\",\n \"victoire\",\n \"vidange\",\n \"vidéo\",\n \"vignette\",\n \"vigueur\",\n \"vilain\",\n \"village\",\n \"vinaigre\",\n \"violon\",\n \"vipère\",\n \"virement\",\n \"virtuose\",\n \"virus\",\n \"visage\",\n \"viseur\",\n \"vision\",\n \"visqueux\",\n \"visuel\",\n \"vital\",\n \"vitesse\",\n \"viticole\",\n \"vitrine\",\n \"vivace\",\n \"vivipare\",\n \"vocation\",\n \"voguer\",\n \"voile\",\n \"voisin\",\n \"voiture\",\n \"volaille\",\n \"volcan\",\n \"voltiger\",\n \"volume\",\n \"vorace\",\n \"vortex\",\n \"voter\",\n \"vouloir\",\n \"voyage\",\n \"voyelle\",\n \"wagon\",\n \"xénon\",\n \"yacht\",\n \"zèbre\",\n \"zénith\",\n \"zeste\",\n \"zoologie\"\n]\n","[\n \"abaco\",\n \"abbaglio\",\n \"abbinato\",\n \"abete\",\n \"abisso\",\n \"abolire\",\n \"abrasivo\",\n \"abrogato\",\n \"accadere\",\n \"accenno\",\n \"accusato\",\n \"acetone\",\n \"achille\",\n \"acido\",\n \"acqua\",\n \"acre\",\n \"acrilico\",\n \"acrobata\",\n \"acuto\",\n \"adagio\",\n \"addebito\",\n \"addome\",\n \"adeguato\",\n \"aderire\",\n \"adipe\",\n \"adottare\",\n \"adulare\",\n \"affabile\",\n \"affetto\",\n \"affisso\",\n \"affranto\",\n \"aforisma\",\n \"afoso\",\n \"africano\",\n \"agave\",\n \"agente\",\n \"agevole\",\n \"aggancio\",\n \"agire\",\n \"agitare\",\n \"agonismo\",\n \"agricolo\",\n \"agrumeto\",\n \"aguzzo\",\n \"alabarda\",\n \"alato\",\n \"albatro\",\n \"alberato\",\n \"albo\",\n \"albume\",\n \"alce\",\n \"alcolico\",\n \"alettone\",\n \"alfa\",\n \"algebra\",\n \"aliante\",\n \"alibi\",\n \"alimento\",\n \"allagato\",\n \"allegro\",\n \"allievo\",\n \"allodola\",\n \"allusivo\",\n \"almeno\",\n \"alogeno\",\n \"alpaca\",\n \"alpestre\",\n \"altalena\",\n \"alterno\",\n \"alticcio\",\n \"altrove\",\n \"alunno\",\n \"alveolo\",\n \"alzare\",\n \"amalgama\",\n \"amanita\",\n \"amarena\",\n \"ambito\",\n \"ambrato\",\n \"ameba\",\n \"america\",\n \"ametista\",\n \"amico\",\n \"ammasso\",\n \"ammenda\",\n \"ammirare\",\n \"ammonito\",\n \"amore\",\n \"ampio\",\n \"ampliare\",\n \"amuleto\",\n \"anacardo\",\n \"anagrafe\",\n \"analista\",\n \"anarchia\",\n \"anatra\",\n \"anca\",\n \"ancella\",\n \"ancora\",\n \"andare\",\n \"andrea\",\n \"anello\",\n \"angelo\",\n \"angolare\",\n \"angusto\",\n \"anima\",\n \"annegare\",\n \"annidato\",\n \"anno\",\n \"annuncio\",\n \"anonimo\",\n \"anticipo\",\n \"anzi\",\n \"apatico\",\n \"apertura\",\n \"apode\",\n \"apparire\",\n \"appetito\",\n \"appoggio\",\n \"approdo\",\n \"appunto\",\n \"aprile\",\n \"arabica\",\n \"arachide\",\n \"aragosta\",\n \"araldica\",\n \"arancio\",\n \"aratura\",\n \"arazzo\",\n \"arbitro\",\n \"archivio\",\n \"ardito\",\n \"arenile\",\n \"argento\",\n \"argine\",\n \"arguto\",\n \"aria\",\n \"armonia\",\n \"arnese\",\n \"arredato\",\n \"arringa\",\n \"arrosto\",\n \"arsenico\",\n \"arso\",\n \"artefice\",\n \"arzillo\",\n \"asciutto\",\n \"ascolto\",\n \"asepsi\",\n \"asettico\",\n \"asfalto\",\n \"asino\",\n \"asola\",\n \"aspirato\",\n \"aspro\",\n \"assaggio\",\n \"asse\",\n \"assoluto\",\n \"assurdo\",\n \"asta\",\n \"astenuto\",\n \"astice\",\n \"astratto\",\n \"atavico\",\n \"ateismo\",\n \"atomico\",\n \"atono\",\n \"attesa\",\n \"attivare\",\n \"attorno\",\n \"attrito\",\n \"attuale\",\n \"ausilio\",\n \"austria\",\n \"autista\",\n \"autonomo\",\n \"autunno\",\n \"avanzato\",\n \"avere\",\n \"avvenire\",\n \"avviso\",\n \"avvolgere\",\n \"azione\",\n \"azoto\",\n \"azzimo\",\n \"azzurro\",\n \"babele\",\n \"baccano\",\n \"bacino\",\n \"baco\",\n \"badessa\",\n \"badilata\",\n \"bagnato\",\n \"baita\",\n \"balcone\",\n \"baldo\",\n \"balena\",\n \"ballata\",\n \"balzano\",\n \"bambino\",\n \"bandire\",\n \"baraonda\",\n \"barbaro\",\n \"barca\",\n \"baritono\",\n \"barlume\",\n \"barocco\",\n \"basilico\",\n \"basso\",\n \"batosta\",\n \"battuto\",\n \"baule\",\n \"bava\",\n \"bavosa\",\n \"becco\",\n \"beffa\",\n \"belgio\",\n \"belva\",\n \"benda\",\n \"benevole\",\n \"benigno\",\n \"benzina\",\n \"bere\",\n \"berlina\",\n \"beta\",\n \"bibita\",\n \"bici\",\n \"bidone\",\n \"bifido\",\n \"biga\",\n \"bilancia\",\n \"bimbo\",\n \"binocolo\",\n \"biologo\",\n \"bipede\",\n \"bipolare\",\n \"birbante\",\n \"birra\",\n \"biscotto\",\n \"bisesto\",\n \"bisnonno\",\n \"bisonte\",\n \"bisturi\",\n \"bizzarro\",\n \"blando\",\n \"blatta\",\n \"bollito\",\n \"bonifico\",\n \"bordo\",\n \"bosco\",\n \"botanico\",\n \"bottino\",\n \"bozzolo\",\n \"braccio\",\n \"bradipo\",\n \"brama\",\n \"branca\",\n \"bravura\",\n \"bretella\",\n \"brevetto\",\n \"brezza\",\n \"briglia\",\n \"brillante\",\n \"brindare\",\n \"broccolo\",\n \"brodo\",\n \"bronzina\",\n \"brullo\",\n \"bruno\",\n \"bubbone\",\n \"buca\",\n \"budino\",\n \"buffone\",\n \"buio\",\n \"bulbo\",\n \"buono\",\n \"burlone\",\n \"burrasca\",\n \"bussola\",\n \"busta\",\n \"cadetto\",\n \"caduco\",\n \"calamaro\",\n \"calcolo\",\n \"calesse\",\n \"calibro\",\n \"calmo\",\n \"caloria\",\n \"cambusa\",\n \"camerata\",\n \"camicia\",\n \"cammino\",\n \"camola\",\n \"campale\",\n \"canapa\",\n \"candela\",\n \"cane\",\n \"canino\",\n \"canotto\",\n \"cantina\",\n \"capace\",\n \"capello\",\n \"capitolo\",\n \"capogiro\",\n \"cappero\",\n \"capra\",\n \"capsula\",\n \"carapace\",\n \"carcassa\",\n \"cardo\",\n \"carisma\",\n \"carovana\",\n \"carretto\",\n \"cartolina\",\n \"casaccio\",\n \"cascata\",\n \"caserma\",\n \"caso\",\n \"cassone\",\n \"castello\",\n \"casuale\",\n \"catasta\",\n \"catena\",\n \"catrame\",\n \"cauto\",\n \"cavillo\",\n \"cedibile\",\n \"cedrata\",\n \"cefalo\",\n \"celebre\",\n \"cellulare\",\n \"cena\",\n \"cenone\",\n \"centesimo\",\n \"ceramica\",\n \"cercare\",\n \"certo\",\n \"cerume\",\n \"cervello\",\n \"cesoia\",\n \"cespo\",\n \"ceto\",\n \"chela\",\n \"chiaro\",\n \"chicca\",\n \"chiedere\",\n \"chimera\",\n \"china\",\n \"chirurgo\",\n \"chitarra\",\n \"ciao\",\n \"ciclismo\",\n \"cifrare\",\n \"cigno\",\n \"cilindro\",\n \"ciottolo\",\n \"circa\",\n \"cirrosi\",\n \"citrico\",\n \"cittadino\",\n \"ciuffo\",\n \"civetta\",\n \"civile\",\n \"classico\",\n \"clinica\",\n \"cloro\",\n \"cocco\",\n \"codardo\",\n \"codice\",\n \"coerente\",\n \"cognome\",\n \"collare\",\n \"colmato\",\n \"colore\",\n \"colposo\",\n \"coltivato\",\n \"colza\",\n \"coma\",\n \"cometa\",\n \"commando\",\n \"comodo\",\n \"computer\",\n \"comune\",\n \"conciso\",\n \"condurre\",\n \"conferma\",\n \"congelare\",\n \"coniuge\",\n \"connesso\",\n \"conoscere\",\n \"consumo\",\n \"continuo\",\n \"convegno\",\n \"coperto\",\n \"copione\",\n \"coppia\",\n \"copricapo\",\n \"corazza\",\n \"cordata\",\n \"coricato\",\n \"cornice\",\n \"corolla\",\n \"corpo\",\n \"corredo\",\n \"corsia\",\n \"cortese\",\n \"cosmico\",\n \"costante\",\n \"cottura\",\n \"covato\",\n \"cratere\",\n \"cravatta\",\n \"creato\",\n \"credere\",\n \"cremoso\",\n \"crescita\",\n \"creta\",\n \"criceto\",\n \"crinale\",\n \"crisi\",\n \"critico\",\n \"croce\",\n \"cronaca\",\n \"crostata\",\n \"cruciale\",\n \"crusca\",\n \"cucire\",\n \"cuculo\",\n \"cugino\",\n \"cullato\",\n \"cupola\",\n \"curatore\",\n \"cursore\",\n \"curvo\",\n \"cuscino\",\n \"custode\",\n \"dado\",\n \"daino\",\n \"dalmata\",\n \"damerino\",\n \"daniela\",\n \"dannoso\",\n \"danzare\",\n \"datato\",\n \"davanti\",\n \"davvero\",\n \"debutto\",\n \"decennio\",\n \"deciso\",\n \"declino\",\n \"decollo\",\n \"decreto\",\n \"dedicato\",\n \"definito\",\n \"deforme\",\n \"degno\",\n \"delegare\",\n \"delfino\",\n \"delirio\",\n \"delta\",\n \"demenza\",\n \"denotato\",\n \"dentro\",\n \"deposito\",\n \"derapata\",\n \"derivare\",\n \"deroga\",\n \"descritto\",\n \"deserto\",\n \"desiderio\",\n \"desumere\",\n \"detersivo\",\n \"devoto\",\n \"diametro\",\n \"dicembre\",\n \"diedro\",\n \"difeso\",\n \"diffuso\",\n \"digerire\",\n \"digitale\",\n \"diluvio\",\n \"dinamico\",\n \"dinnanzi\",\n \"dipinto\",\n \"diploma\",\n \"dipolo\",\n \"diradare\",\n \"dire\",\n \"dirotto\",\n \"dirupo\",\n \"disagio\",\n \"discreto\",\n \"disfare\",\n \"disgelo\",\n \"disposto\",\n \"distanza\",\n \"disumano\",\n \"dito\",\n \"divano\",\n \"divelto\",\n \"dividere\",\n \"divorato\",\n \"doblone\",\n \"docente\",\n \"doganale\",\n \"dogma\",\n \"dolce\",\n \"domato\",\n \"domenica\",\n \"dominare\",\n \"dondolo\",\n \"dono\",\n \"dormire\",\n \"dote\",\n \"dottore\",\n \"dovuto\",\n \"dozzina\",\n \"drago\",\n \"druido\",\n \"dubbio\",\n \"dubitare\",\n \"ducale\",\n \"duna\",\n \"duomo\",\n \"duplice\",\n \"duraturo\",\n \"ebano\",\n \"eccesso\",\n \"ecco\",\n \"eclissi\",\n \"economia\",\n \"edera\",\n \"edicola\",\n \"edile\",\n \"editoria\",\n \"educare\",\n \"egemonia\",\n \"egli\",\n \"egoismo\",\n \"egregio\",\n \"elaborato\",\n \"elargire\",\n \"elegante\",\n \"elencato\",\n \"eletto\",\n \"elevare\",\n \"elfico\",\n \"elica\",\n \"elmo\",\n \"elsa\",\n \"eluso\",\n \"emanato\",\n \"emblema\",\n \"emesso\",\n \"emiro\",\n \"emotivo\",\n \"emozione\",\n \"empirico\",\n \"emulo\",\n \"endemico\",\n \"enduro\",\n \"energia\",\n \"enfasi\",\n \"enoteca\",\n \"entrare\",\n \"enzima\",\n \"epatite\",\n \"epilogo\",\n \"episodio\",\n \"epocale\",\n \"eppure\",\n \"equatore\",\n \"erario\",\n \"erba\",\n \"erboso\",\n \"erede\",\n \"eremita\",\n \"erigere\",\n \"ermetico\",\n \"eroe\",\n \"erosivo\",\n \"errante\",\n \"esagono\",\n \"esame\",\n \"esanime\",\n \"esaudire\",\n \"esca\",\n \"esempio\",\n \"esercito\",\n \"esibito\",\n \"esigente\",\n \"esistere\",\n \"esito\",\n \"esofago\",\n \"esortato\",\n \"esoso\",\n \"espanso\",\n \"espresso\",\n \"essenza\",\n \"esso\",\n \"esteso\",\n \"estimare\",\n \"estonia\",\n \"estroso\",\n \"esultare\",\n \"etilico\",\n \"etnico\",\n \"etrusco\",\n \"etto\",\n \"euclideo\",\n \"europa\",\n \"evaso\",\n \"evidenza\",\n \"evitato\",\n \"evoluto\",\n \"evviva\",\n \"fabbrica\",\n \"faccenda\",\n \"fachiro\",\n \"falco\",\n \"famiglia\",\n \"fanale\",\n \"fanfara\",\n \"fango\",\n \"fantasma\",\n \"fare\",\n \"farfalla\",\n \"farinoso\",\n \"farmaco\",\n \"fascia\",\n \"fastoso\",\n \"fasullo\",\n \"faticare\",\n \"fato\",\n \"favoloso\",\n \"febbre\",\n \"fecola\",\n \"fede\",\n \"fegato\",\n \"felpa\",\n \"feltro\",\n \"femmina\",\n \"fendere\",\n \"fenomeno\",\n \"fermento\",\n \"ferro\",\n \"fertile\",\n \"fessura\",\n \"festivo\",\n \"fetta\",\n \"feudo\",\n \"fiaba\",\n \"fiducia\",\n \"fifa\",\n \"figurato\",\n \"filo\",\n \"finanza\",\n \"finestra\",\n \"finire\",\n \"fiore\",\n \"fiscale\",\n \"fisico\",\n \"fiume\",\n \"flacone\",\n \"flamenco\",\n \"flebo\",\n \"flemma\",\n \"florido\",\n \"fluente\",\n \"fluoro\",\n \"fobico\",\n \"focaccia\",\n \"focoso\",\n \"foderato\",\n \"foglio\",\n \"folata\",\n \"folclore\",\n \"folgore\",\n \"fondente\",\n \"fonetico\",\n \"fonia\",\n \"fontana\",\n \"forbito\",\n \"forchetta\",\n \"foresta\",\n \"formica\",\n \"fornaio\",\n \"foro\",\n \"fortezza\",\n \"forzare\",\n \"fosfato\",\n \"fosso\",\n \"fracasso\",\n \"frana\",\n \"frassino\",\n \"fratello\",\n \"freccetta\",\n \"frenata\",\n \"fresco\",\n \"frigo\",\n \"frollino\",\n \"fronde\",\n \"frugale\",\n \"frutta\",\n \"fucilata\",\n \"fucsia\",\n \"fuggente\",\n \"fulmine\",\n \"fulvo\",\n \"fumante\",\n \"fumetto\",\n \"fumoso\",\n \"fune\",\n \"funzione\",\n \"fuoco\",\n \"furbo\",\n \"furgone\",\n \"furore\",\n \"fuso\",\n \"futile\",\n \"gabbiano\",\n \"gaffe\",\n \"galateo\",\n \"gallina\",\n \"galoppo\",\n \"gambero\",\n \"gamma\",\n \"garanzia\",\n \"garbo\",\n \"garofano\",\n \"garzone\",\n \"gasdotto\",\n \"gasolio\",\n \"gastrico\",\n \"gatto\",\n \"gaudio\",\n \"gazebo\",\n \"gazzella\",\n \"geco\",\n \"gelatina\",\n \"gelso\",\n \"gemello\",\n \"gemmato\",\n \"gene\",\n \"genitore\",\n \"gennaio\",\n \"genotipo\",\n \"gergo\",\n \"ghepardo\",\n \"ghiaccio\",\n \"ghisa\",\n \"giallo\",\n \"gilda\",\n \"ginepro\",\n \"giocare\",\n \"gioiello\",\n \"giorno\",\n \"giove\",\n \"girato\",\n \"girone\",\n \"gittata\",\n \"giudizio\",\n \"giurato\",\n \"giusto\",\n \"globulo\",\n \"glutine\",\n \"gnomo\",\n \"gobba\",\n \"golf\",\n \"gomito\",\n \"gommone\",\n \"gonfio\",\n \"gonna\",\n \"governo\",\n \"gracile\",\n \"grado\",\n \"grafico\",\n \"grammo\",\n \"grande\",\n \"grattare\",\n \"gravoso\",\n \"grazia\",\n \"greca\",\n \"gregge\",\n \"grifone\",\n \"grigio\",\n \"grinza\",\n \"grotta\",\n \"gruppo\",\n \"guadagno\",\n \"guaio\",\n \"guanto\",\n \"guardare\",\n \"gufo\",\n \"guidare\",\n \"ibernato\",\n \"icona\",\n \"identico\",\n \"idillio\",\n \"idolo\",\n \"idra\",\n \"idrico\",\n \"idrogeno\",\n \"igiene\",\n \"ignaro\",\n \"ignorato\",\n \"ilare\",\n \"illeso\",\n \"illogico\",\n \"illudere\",\n \"imballo\",\n \"imbevuto\",\n \"imbocco\",\n \"imbuto\",\n \"immane\",\n \"immerso\",\n \"immolato\",\n \"impacco\",\n \"impeto\",\n \"impiego\",\n \"importo\",\n \"impronta\",\n \"inalare\",\n \"inarcare\",\n \"inattivo\",\n \"incanto\",\n \"incendio\",\n \"inchino\",\n \"incisivo\",\n \"incluso\",\n \"incontro\",\n \"incrocio\",\n \"incubo\",\n \"indagine\",\n \"india\",\n \"indole\",\n \"inedito\",\n \"infatti\",\n \"infilare\",\n \"inflitto\",\n \"ingaggio\",\n \"ingegno\",\n \"inglese\",\n \"ingordo\",\n \"ingrosso\",\n \"innesco\",\n \"inodore\",\n \"inoltrare\",\n \"inondato\",\n \"insano\",\n \"insetto\",\n \"insieme\",\n \"insonnia\",\n \"insulina\",\n \"intasato\",\n \"intero\",\n \"intonaco\",\n \"intuito\",\n \"inumidire\",\n \"invalido\",\n \"invece\",\n \"invito\",\n \"iperbole\",\n \"ipnotico\",\n \"ipotesi\",\n \"ippica\",\n \"iride\",\n \"irlanda\",\n \"ironico\",\n \"irrigato\",\n \"irrorare\",\n \"isolato\",\n \"isotopo\",\n \"isterico\",\n \"istituto\",\n \"istrice\",\n \"italia\",\n \"iterare\",\n \"labbro\",\n \"labirinto\",\n \"lacca\",\n \"lacerato\",\n \"lacrima\",\n \"lacuna\",\n \"laddove\",\n \"lago\",\n \"lampo\",\n \"lancetta\",\n \"lanterna\",\n \"lardoso\",\n \"larga\",\n \"laringe\",\n \"lastra\",\n \"latenza\",\n \"latino\",\n \"lattuga\",\n \"lavagna\",\n \"lavoro\",\n \"legale\",\n \"leggero\",\n \"lembo\",\n \"lentezza\",\n \"lenza\",\n \"leone\",\n \"lepre\",\n \"lesivo\",\n \"lessato\",\n \"lesto\",\n \"letterale\",\n \"leva\",\n \"levigato\",\n \"libero\",\n \"lido\",\n \"lievito\",\n \"lilla\",\n \"limatura\",\n \"limitare\",\n \"limpido\",\n \"lineare\",\n \"lingua\",\n \"liquido\",\n \"lira\",\n \"lirica\",\n \"lisca\",\n \"lite\",\n \"litigio\",\n \"livrea\",\n \"locanda\",\n \"lode\",\n \"logica\",\n \"lombare\",\n \"londra\",\n \"longevo\",\n \"loquace\",\n \"lorenzo\",\n \"loto\",\n \"lotteria\",\n \"luce\",\n \"lucidato\",\n \"lumaca\",\n \"luminoso\",\n \"lungo\",\n \"lupo\",\n \"luppolo\",\n \"lusinga\",\n \"lusso\",\n \"lutto\",\n \"macabro\",\n \"macchina\",\n \"macero\",\n \"macinato\",\n \"madama\",\n \"magico\",\n \"maglia\",\n \"magnete\",\n \"magro\",\n \"maiolica\",\n \"malafede\",\n \"malgrado\",\n \"malinteso\",\n \"malsano\",\n \"malto\",\n \"malumore\",\n \"mana\",\n \"mancia\",\n \"mandorla\",\n \"mangiare\",\n \"manifesto\",\n \"mannaro\",\n \"manovra\",\n \"mansarda\",\n \"mantide\",\n \"manubrio\",\n \"mappa\",\n \"maratona\",\n \"marcire\",\n \"maretta\",\n \"marmo\",\n \"marsupio\",\n \"maschera\",\n \"massaia\",\n \"mastino\",\n \"materasso\",\n \"matricola\",\n \"mattone\",\n \"maturo\",\n \"mazurca\",\n \"meandro\",\n \"meccanico\",\n \"mecenate\",\n \"medesimo\",\n \"meditare\",\n \"mega\",\n \"melassa\",\n \"melis\",\n \"melodia\",\n \"meninge\",\n \"meno\",\n \"mensola\",\n \"mercurio\",\n \"merenda\",\n \"merlo\",\n \"meschino\",\n \"mese\",\n \"messere\",\n \"mestolo\",\n \"metallo\",\n \"metodo\",\n \"mettere\",\n \"miagolare\",\n \"mica\",\n \"micelio\",\n \"michele\",\n \"microbo\",\n \"midollo\",\n \"miele\",\n \"migliore\",\n \"milano\",\n \"milite\",\n \"mimosa\",\n \"minerale\",\n \"mini\",\n \"minore\",\n \"mirino\",\n \"mirtillo\",\n \"miscela\",\n \"missiva\",\n \"misto\",\n \"misurare\",\n \"mitezza\",\n \"mitigare\",\n \"mitra\",\n \"mittente\",\n \"mnemonico\",\n \"modello\",\n \"modifica\",\n \"modulo\",\n \"mogano\",\n \"mogio\",\n \"mole\",\n \"molosso\",\n \"monastero\",\n \"monco\",\n \"mondina\",\n \"monetario\",\n \"monile\",\n \"monotono\",\n \"monsone\",\n \"montato\",\n \"monviso\",\n \"mora\",\n \"mordere\",\n \"morsicato\",\n \"mostro\",\n \"motivato\",\n \"motosega\",\n \"motto\",\n \"movenza\",\n \"movimento\",\n \"mozzo\",\n \"mucca\",\n \"mucosa\",\n \"muffa\",\n \"mughetto\",\n \"mugnaio\",\n \"mulatto\",\n \"mulinello\",\n \"multiplo\",\n \"mummia\",\n \"munto\",\n \"muovere\",\n \"murale\",\n \"musa\",\n \"muscolo\",\n \"musica\",\n \"mutevole\",\n \"muto\",\n \"nababbo\",\n \"nafta\",\n \"nanometro\",\n \"narciso\",\n \"narice\",\n \"narrato\",\n \"nascere\",\n \"nastrare\",\n \"naturale\",\n \"nautica\",\n \"naviglio\",\n \"nebulosa\",\n \"necrosi\",\n \"negativo\",\n \"negozio\",\n \"nemmeno\",\n \"neofita\",\n \"neretto\",\n \"nervo\",\n \"nessuno\",\n \"nettuno\",\n \"neutrale\",\n \"neve\",\n \"nevrotico\",\n \"nicchia\",\n \"ninfa\",\n \"nitido\",\n \"nobile\",\n \"nocivo\",\n \"nodo\",\n \"nome\",\n \"nomina\",\n \"nordico\",\n \"normale\",\n \"norvegese\",\n \"nostrano\",\n \"notare\",\n \"notizia\",\n \"notturno\",\n \"novella\",\n \"nucleo\",\n \"nulla\",\n \"numero\",\n \"nuovo\",\n \"nutrire\",\n \"nuvola\",\n \"nuziale\",\n \"oasi\",\n \"obbedire\",\n \"obbligo\",\n \"obelisco\",\n \"oblio\",\n \"obolo\",\n \"obsoleto\",\n \"occasione\",\n \"occhio\",\n \"occidente\",\n \"occorrere\",\n \"occultare\",\n \"ocra\",\n \"oculato\",\n \"odierno\",\n \"odorare\",\n \"offerta\",\n \"offrire\",\n \"offuscato\",\n \"oggetto\",\n \"oggi\",\n \"ognuno\",\n \"olandese\",\n \"olfatto\",\n \"oliato\",\n \"oliva\",\n \"ologramma\",\n \"oltre\",\n \"omaggio\",\n \"ombelico\",\n \"ombra\",\n \"omega\",\n \"omissione\",\n \"ondoso\",\n \"onere\",\n \"onice\",\n \"onnivoro\",\n \"onorevole\",\n \"onta\",\n \"operato\",\n \"opinione\",\n \"opposto\",\n \"oracolo\",\n \"orafo\",\n \"ordine\",\n \"orecchino\",\n \"orefice\",\n \"orfano\",\n \"organico\",\n \"origine\",\n \"orizzonte\",\n \"orma\",\n \"ormeggio\",\n \"ornativo\",\n \"orologio\",\n \"orrendo\",\n \"orribile\",\n \"ortensia\",\n \"ortica\",\n \"orzata\",\n \"orzo\",\n \"osare\",\n \"oscurare\",\n \"osmosi\",\n \"ospedale\",\n \"ospite\",\n \"ossa\",\n \"ossidare\",\n \"ostacolo\",\n \"oste\",\n \"otite\",\n \"otre\",\n \"ottagono\",\n \"ottimo\",\n \"ottobre\",\n \"ovale\",\n \"ovest\",\n \"ovino\",\n \"oviparo\",\n \"ovocito\",\n \"ovunque\",\n \"ovviare\",\n \"ozio\",\n \"pacchetto\",\n \"pace\",\n \"pacifico\",\n \"padella\",\n \"padrone\",\n \"paese\",\n \"paga\",\n \"pagina\",\n \"palazzina\",\n \"palesare\",\n \"pallido\",\n \"palo\",\n \"palude\",\n \"pandoro\",\n \"pannello\",\n \"paolo\",\n \"paonazzo\",\n \"paprica\",\n \"parabola\",\n \"parcella\",\n \"parere\",\n \"pargolo\",\n \"pari\",\n \"parlato\",\n \"parola\",\n \"partire\",\n \"parvenza\",\n \"parziale\",\n \"passivo\",\n \"pasticca\",\n \"patacca\",\n \"patologia\",\n \"pattume\",\n \"pavone\",\n \"peccato\",\n \"pedalare\",\n \"pedonale\",\n \"peggio\",\n \"peloso\",\n \"penare\",\n \"pendice\",\n \"penisola\",\n \"pennuto\",\n \"penombra\",\n \"pensare\",\n \"pentola\",\n \"pepe\",\n \"pepita\",\n \"perbene\",\n \"percorso\",\n \"perdonato\",\n \"perforare\",\n \"pergamena\",\n \"periodo\",\n \"permesso\",\n \"perno\",\n \"perplesso\",\n \"persuaso\",\n \"pertugio\",\n \"pervaso\",\n \"pesatore\",\n \"pesista\",\n \"peso\",\n \"pestifero\",\n \"petalo\",\n \"pettine\",\n \"petulante\",\n \"pezzo\",\n \"piacere\",\n \"pianta\",\n \"piattino\",\n \"piccino\",\n \"picozza\",\n \"piega\",\n \"pietra\",\n \"piffero\",\n \"pigiama\",\n \"pigolio\",\n \"pigro\",\n \"pila\",\n \"pilifero\",\n \"pillola\",\n \"pilota\",\n \"pimpante\",\n \"pineta\",\n \"pinna\",\n \"pinolo\",\n \"pioggia\",\n \"piombo\",\n \"piramide\",\n \"piretico\",\n \"pirite\",\n \"pirolisi\",\n \"pitone\",\n \"pizzico\",\n \"placebo\",\n \"planare\",\n \"plasma\",\n \"platano\",\n \"plenario\",\n \"pochezza\",\n \"poderoso\",\n \"podismo\",\n \"poesia\",\n \"poggiare\",\n \"polenta\",\n \"poligono\",\n \"pollice\",\n \"polmonite\",\n \"polpetta\",\n \"polso\",\n \"poltrona\",\n \"polvere\",\n \"pomice\",\n \"pomodoro\",\n \"ponte\",\n \"popoloso\",\n \"porfido\",\n \"poroso\",\n \"porpora\",\n \"porre\",\n \"portata\",\n \"posa\",\n \"positivo\",\n \"possesso\",\n \"postulato\",\n \"potassio\",\n \"potere\",\n \"pranzo\",\n \"prassi\",\n \"pratica\",\n \"precluso\",\n \"predica\",\n \"prefisso\",\n \"pregiato\",\n \"prelievo\",\n \"premere\",\n \"prenotare\",\n \"preparato\",\n \"presenza\",\n \"pretesto\",\n \"prevalso\",\n \"prima\",\n \"principe\",\n \"privato\",\n \"problema\",\n \"procura\",\n \"produrre\",\n \"profumo\",\n \"progetto\",\n \"prolunga\",\n \"promessa\",\n \"pronome\",\n \"proposta\",\n \"proroga\",\n \"proteso\",\n \"prova\",\n \"prudente\",\n \"prugna\",\n \"prurito\",\n \"psiche\",\n \"pubblico\",\n \"pudica\",\n \"pugilato\",\n \"pugno\",\n \"pulce\",\n \"pulito\",\n \"pulsante\",\n \"puntare\",\n \"pupazzo\",\n \"pupilla\",\n \"puro\",\n \"quadro\",\n \"qualcosa\",\n \"quasi\",\n \"querela\",\n \"quota\",\n \"raccolto\",\n \"raddoppio\",\n \"radicale\",\n \"radunato\",\n \"raffica\",\n \"ragazzo\",\n \"ragione\",\n \"ragno\",\n \"ramarro\",\n \"ramingo\",\n \"ramo\",\n \"randagio\",\n \"rantolare\",\n \"rapato\",\n \"rapina\",\n \"rappreso\",\n \"rasatura\",\n \"raschiato\",\n \"rasente\",\n \"rassegna\",\n \"rastrello\",\n \"rata\",\n \"ravveduto\",\n \"reale\",\n \"recepire\",\n \"recinto\",\n \"recluta\",\n \"recondito\",\n \"recupero\",\n \"reddito\",\n \"redimere\",\n \"regalato\",\n \"registro\",\n \"regola\",\n \"regresso\",\n \"relazione\",\n \"remare\",\n \"remoto\",\n \"renna\",\n \"replica\",\n \"reprimere\",\n \"reputare\",\n \"resa\",\n \"residente\",\n \"responso\",\n \"restauro\",\n \"rete\",\n \"retina\",\n \"retorica\",\n \"rettifica\",\n \"revocato\",\n \"riassunto\",\n \"ribadire\",\n \"ribelle\",\n \"ribrezzo\",\n \"ricarica\",\n \"ricco\",\n \"ricevere\",\n \"riciclato\",\n \"ricordo\",\n \"ricreduto\",\n \"ridicolo\",\n \"ridurre\",\n \"rifasare\",\n \"riflesso\",\n \"riforma\",\n \"rifugio\",\n \"rigare\",\n \"rigettato\",\n \"righello\",\n \"rilassato\",\n \"rilevato\",\n \"rimanere\",\n \"rimbalzo\",\n \"rimedio\",\n \"rimorchio\",\n \"rinascita\",\n \"rincaro\",\n \"rinforzo\",\n \"rinnovo\",\n \"rinomato\",\n \"rinsavito\",\n \"rintocco\",\n \"rinuncia\",\n \"rinvenire\",\n \"riparato\",\n \"ripetuto\",\n \"ripieno\",\n \"riportare\",\n \"ripresa\",\n \"ripulire\",\n \"risata\",\n \"rischio\",\n \"riserva\",\n \"risibile\",\n \"riso\",\n \"rispetto\",\n \"ristoro\",\n \"risultato\",\n \"risvolto\",\n \"ritardo\",\n \"ritegno\",\n \"ritmico\",\n \"ritrovo\",\n \"riunione\",\n \"riva\",\n \"riverso\",\n \"rivincita\",\n \"rivolto\",\n \"rizoma\",\n \"roba\",\n \"robotico\",\n \"robusto\",\n \"roccia\",\n \"roco\",\n \"rodaggio\",\n \"rodere\",\n \"roditore\",\n \"rogito\",\n \"rollio\",\n \"romantico\",\n \"rompere\",\n \"ronzio\",\n \"rosolare\",\n \"rospo\",\n \"rotante\",\n \"rotondo\",\n \"rotula\",\n \"rovescio\",\n \"rubizzo\",\n \"rubrica\",\n \"ruga\",\n \"rullino\",\n \"rumine\",\n \"rumoroso\",\n \"ruolo\",\n \"rupe\",\n \"russare\",\n \"rustico\",\n \"sabato\",\n \"sabbiare\",\n \"sabotato\",\n \"sagoma\",\n \"salasso\",\n \"saldatura\",\n \"salgemma\",\n \"salivare\",\n \"salmone\",\n \"salone\",\n \"saltare\",\n \"saluto\",\n \"salvo\",\n \"sapere\",\n \"sapido\",\n \"saporito\",\n \"saraceno\",\n \"sarcasmo\",\n \"sarto\",\n \"sassoso\",\n \"satellite\",\n \"satira\",\n \"satollo\",\n \"saturno\",\n \"savana\",\n \"savio\",\n \"saziato\",\n \"sbadiglio\",\n \"sbalzo\",\n \"sbancato\",\n \"sbarra\",\n \"sbattere\",\n \"sbavare\",\n \"sbendare\",\n \"sbirciare\",\n \"sbloccato\",\n \"sbocciato\",\n \"sbrinare\",\n \"sbruffone\",\n \"sbuffare\",\n \"scabroso\",\n \"scadenza\",\n \"scala\",\n \"scambiare\",\n \"scandalo\",\n \"scapola\",\n \"scarso\",\n \"scatenare\",\n \"scavato\",\n \"scelto\",\n \"scenico\",\n \"scettro\",\n \"scheda\",\n \"schiena\",\n \"sciarpa\",\n \"scienza\",\n \"scindere\",\n \"scippo\",\n \"sciroppo\",\n \"scivolo\",\n \"sclerare\",\n \"scodella\",\n \"scolpito\",\n \"scomparto\",\n \"sconforto\",\n \"scoprire\",\n \"scorta\",\n \"scossone\",\n \"scozzese\",\n \"scriba\",\n \"scrollare\",\n \"scrutinio\",\n \"scuderia\",\n \"scultore\",\n \"scuola\",\n \"scuro\",\n \"scusare\",\n \"sdebitare\",\n \"sdoganare\",\n \"seccatura\",\n \"secondo\",\n \"sedano\",\n \"seggiola\",\n \"segnalato\",\n \"segregato\",\n \"seguito\",\n \"selciato\",\n \"selettivo\",\n \"sella\",\n \"selvaggio\",\n \"semaforo\",\n \"sembrare\",\n \"seme\",\n \"seminato\",\n \"sempre\",\n \"senso\",\n \"sentire\",\n \"sepolto\",\n \"sequenza\",\n \"serata\",\n \"serbato\",\n \"sereno\",\n \"serio\",\n \"serpente\",\n \"serraglio\",\n \"servire\",\n \"sestina\",\n \"setola\",\n \"settimana\",\n \"sfacelo\",\n \"sfaldare\",\n \"sfamato\",\n \"sfarzoso\",\n \"sfaticato\",\n \"sfera\",\n \"sfida\",\n \"sfilato\",\n \"sfinge\",\n \"sfocato\",\n \"sfoderare\",\n \"sfogo\",\n \"sfoltire\",\n \"sforzato\",\n \"sfratto\",\n \"sfruttato\",\n \"sfuggito\",\n \"sfumare\",\n \"sfuso\",\n \"sgabello\",\n \"sgarbato\",\n \"sgonfiare\",\n \"sgorbio\",\n \"sgrassato\",\n \"sguardo\",\n \"sibilo\",\n \"siccome\",\n \"sierra\",\n \"sigla\",\n \"signore\",\n \"silenzio\",\n \"sillaba\",\n \"simbolo\",\n \"simpatico\",\n \"simulato\",\n \"sinfonia\",\n \"singolo\",\n \"sinistro\",\n \"sino\",\n \"sintesi\",\n \"sinusoide\",\n \"sipario\",\n \"sisma\",\n \"sistole\",\n \"situato\",\n \"slitta\",\n \"slogatura\",\n \"sloveno\",\n \"smarrito\",\n \"smemorato\",\n \"smentito\",\n \"smeraldo\",\n \"smilzo\",\n \"smontare\",\n \"smottato\",\n \"smussato\",\n \"snellire\",\n \"snervato\",\n \"snodo\",\n \"sobbalzo\",\n \"sobrio\",\n \"soccorso\",\n \"sociale\",\n \"sodale\",\n \"soffitto\",\n \"sogno\",\n \"soldato\",\n \"solenne\",\n \"solido\",\n \"sollazzo\",\n \"solo\",\n \"solubile\",\n \"solvente\",\n \"somatico\",\n \"somma\",\n \"sonda\",\n \"sonetto\",\n \"sonnifero\",\n \"sopire\",\n \"soppeso\",\n \"sopra\",\n \"sorgere\",\n \"sorpasso\",\n \"sorriso\",\n \"sorso\",\n \"sorteggio\",\n \"sorvolato\",\n \"sospiro\",\n \"sosta\",\n \"sottile\",\n \"spada\",\n \"spalla\",\n \"spargere\",\n \"spatola\",\n \"spavento\",\n \"spazzola\",\n \"specie\",\n \"spedire\",\n \"spegnere\",\n \"spelatura\",\n \"speranza\",\n \"spessore\",\n \"spettrale\",\n \"spezzato\",\n \"spia\",\n \"spigoloso\",\n \"spillato\",\n \"spinoso\",\n \"spirale\",\n \"splendido\",\n \"sportivo\",\n \"sposo\",\n \"spranga\",\n \"sprecare\",\n \"spronato\",\n \"spruzzo\",\n \"spuntino\",\n \"squillo\",\n \"sradicare\",\n \"srotolato\",\n \"stabile\",\n \"stacco\",\n \"staffa\",\n \"stagnare\",\n \"stampato\",\n \"stantio\",\n \"starnuto\",\n \"stasera\",\n \"statuto\",\n \"stelo\",\n \"steppa\",\n \"sterzo\",\n \"stiletto\",\n \"stima\",\n \"stirpe\",\n \"stivale\",\n \"stizzoso\",\n \"stonato\",\n \"storico\",\n \"strappo\",\n \"stregato\",\n \"stridulo\",\n \"strozzare\",\n \"strutto\",\n \"stuccare\",\n \"stufo\",\n \"stupendo\",\n \"subentro\",\n \"succoso\",\n \"sudore\",\n \"suggerito\",\n \"sugo\",\n \"sultano\",\n \"suonare\",\n \"superbo\",\n \"supporto\",\n \"surgelato\",\n \"surrogato\",\n \"sussurro\",\n \"sutura\",\n \"svagare\",\n \"svedese\",\n \"sveglio\",\n \"svelare\",\n \"svenuto\",\n \"svezia\",\n \"sviluppo\",\n \"svista\",\n \"svizzera\",\n \"svolta\",\n \"svuotare\",\n \"tabacco\",\n \"tabulato\",\n \"tacciare\",\n \"taciturno\",\n \"tale\",\n \"talismano\",\n \"tampone\",\n \"tannino\",\n \"tara\",\n \"tardivo\",\n \"targato\",\n \"tariffa\",\n \"tarpare\",\n \"tartaruga\",\n \"tasto\",\n \"tattico\",\n \"taverna\",\n \"tavolata\",\n \"tazza\",\n \"teca\",\n \"tecnico\",\n \"telefono\",\n \"temerario\",\n \"tempo\",\n \"temuto\",\n \"tendone\",\n \"tenero\",\n \"tensione\",\n \"tentacolo\",\n \"teorema\",\n \"terme\",\n \"terrazzo\",\n \"terzetto\",\n \"tesi\",\n \"tesserato\",\n \"testato\",\n \"tetro\",\n \"tettoia\",\n \"tifare\",\n \"tigella\",\n \"timbro\",\n \"tinto\",\n \"tipico\",\n \"tipografo\",\n \"tiraggio\",\n \"tiro\",\n \"titanio\",\n \"titolo\",\n \"titubante\",\n \"tizio\",\n \"tizzone\",\n \"toccare\",\n \"tollerare\",\n \"tolto\",\n \"tombola\",\n \"tomo\",\n \"tonfo\",\n \"tonsilla\",\n \"topazio\",\n \"topologia\",\n \"toppa\",\n \"torba\",\n \"tornare\",\n \"torrone\",\n \"tortora\",\n \"toscano\",\n \"tossire\",\n \"tostatura\",\n \"totano\",\n \"trabocco\",\n \"trachea\",\n \"trafila\",\n \"tragedia\",\n \"tralcio\",\n \"tramonto\",\n \"transito\",\n \"trapano\",\n \"trarre\",\n \"trasloco\",\n \"trattato\",\n \"trave\",\n \"treccia\",\n \"tremolio\",\n \"trespolo\",\n \"tributo\",\n \"tricheco\",\n \"trifoglio\",\n \"trillo\",\n \"trincea\",\n \"trio\",\n \"tristezza\",\n \"triturato\",\n \"trivella\",\n \"tromba\",\n \"trono\",\n \"troppo\",\n \"trottola\",\n \"trovare\",\n \"truccato\",\n \"tubatura\",\n \"tuffato\",\n \"tulipano\",\n \"tumulto\",\n \"tunisia\",\n \"turbare\",\n \"turchino\",\n \"tuta\",\n \"tutela\",\n \"ubicato\",\n \"uccello\",\n \"uccisore\",\n \"udire\",\n \"uditivo\",\n \"uffa\",\n \"ufficio\",\n \"uguale\",\n \"ulisse\",\n \"ultimato\",\n \"umano\",\n \"umile\",\n \"umorismo\",\n \"uncinetto\",\n \"ungere\",\n \"ungherese\",\n \"unicorno\",\n \"unificato\",\n \"unisono\",\n \"unitario\",\n \"unte\",\n \"uovo\",\n \"upupa\",\n \"uragano\",\n \"urgenza\",\n \"urlo\",\n \"usanza\",\n \"usato\",\n \"uscito\",\n \"usignolo\",\n \"usuraio\",\n \"utensile\",\n \"utilizzo\",\n \"utopia\",\n \"vacante\",\n \"vaccinato\",\n \"vagabondo\",\n \"vagliato\",\n \"valanga\",\n \"valgo\",\n \"valico\",\n \"valletta\",\n \"valoroso\",\n \"valutare\",\n \"valvola\",\n \"vampata\",\n \"vangare\",\n \"vanitoso\",\n \"vano\",\n \"vantaggio\",\n \"vanvera\",\n \"vapore\",\n \"varano\",\n \"varcato\",\n \"variante\",\n \"vasca\",\n \"vedetta\",\n \"vedova\",\n \"veduto\",\n \"vegetale\",\n \"veicolo\",\n \"velcro\",\n \"velina\",\n \"velluto\",\n \"veloce\",\n \"venato\",\n \"vendemmia\",\n \"vento\",\n \"verace\",\n \"verbale\",\n \"vergogna\",\n \"verifica\",\n \"vero\",\n \"verruca\",\n \"verticale\",\n \"vescica\",\n \"vessillo\",\n \"vestale\",\n \"veterano\",\n \"vetrina\",\n \"vetusto\",\n \"viandante\",\n \"vibrante\",\n \"vicenda\",\n \"vichingo\",\n \"vicinanza\",\n \"vidimare\",\n \"vigilia\",\n \"vigneto\",\n \"vigore\",\n \"vile\",\n \"villano\",\n \"vimini\",\n \"vincitore\",\n \"viola\",\n \"vipera\",\n \"virgola\",\n \"virologo\",\n \"virulento\",\n \"viscoso\",\n \"visione\",\n \"vispo\",\n \"vissuto\",\n \"visura\",\n \"vita\",\n \"vitello\",\n \"vittima\",\n \"vivanda\",\n \"vivido\",\n \"viziare\",\n \"voce\",\n \"voga\",\n \"volatile\",\n \"volere\",\n \"volpe\",\n \"voragine\",\n \"vulcano\",\n \"zampogna\",\n \"zanna\",\n \"zappato\",\n \"zattera\",\n \"zavorra\",\n \"zefiro\",\n \"zelante\",\n \"zelo\",\n \"zenzero\",\n \"zerbino\",\n \"zibetto\",\n \"zinco\",\n \"zircone\",\n \"zitto\",\n \"zolla\",\n \"zotico\",\n \"zucchero\",\n \"zufolo\",\n \"zulu\",\n \"zuppa\"\n]\n","[\n \"あいこくしん\",\n \"あいさつ\",\n \"あいだ\",\n \"あおぞら\",\n \"あかちゃん\",\n \"あきる\",\n \"あけがた\",\n \"あける\",\n \"あこがれる\",\n \"あさい\",\n \"あさひ\",\n \"あしあと\",\n \"あじわう\",\n \"あずかる\",\n \"あずき\",\n \"あそぶ\",\n \"あたえる\",\n \"あたためる\",\n \"あたりまえ\",\n \"あたる\",\n \"あつい\",\n \"あつかう\",\n \"あっしゅく\",\n \"あつまり\",\n \"あつめる\",\n \"あてな\",\n \"あてはまる\",\n \"あひる\",\n \"あぶら\",\n \"あぶる\",\n \"あふれる\",\n \"あまい\",\n \"あまど\",\n \"あまやかす\",\n \"あまり\",\n \"あみもの\",\n \"あめりか\",\n \"あやまる\",\n \"あゆむ\",\n \"あらいぐま\",\n \"あらし\",\n \"あらすじ\",\n \"あらためる\",\n \"あらゆる\",\n \"あらわす\",\n \"ありがとう\",\n \"あわせる\",\n \"あわてる\",\n \"あんい\",\n \"あんがい\",\n \"あんこ\",\n \"あんぜん\",\n \"あんてい\",\n \"あんない\",\n \"あんまり\",\n \"いいだす\",\n \"いおん\",\n \"いがい\",\n \"いがく\",\n \"いきおい\",\n \"いきなり\",\n \"いきもの\",\n \"いきる\",\n \"いくじ\",\n \"いくぶん\",\n \"いけばな\",\n \"いけん\",\n \"いこう\",\n \"いこく\",\n \"いこつ\",\n \"いさましい\",\n \"いさん\",\n \"いしき\",\n \"いじゅう\",\n \"いじょう\",\n \"いじわる\",\n \"いずみ\",\n \"いずれ\",\n \"いせい\",\n \"いせえび\",\n \"いせかい\",\n \"いせき\",\n \"いぜん\",\n \"いそうろう\",\n \"いそがしい\",\n \"いだい\",\n \"いだく\",\n \"いたずら\",\n \"いたみ\",\n \"いたりあ\",\n \"いちおう\",\n \"いちじ\",\n \"いちど\",\n \"いちば\",\n \"いちぶ\",\n \"いちりゅう\",\n \"いつか\",\n \"いっしゅん\",\n \"いっせい\",\n \"いっそう\",\n \"いったん\",\n \"いっち\",\n \"いってい\",\n \"いっぽう\",\n \"いてざ\",\n \"いてん\",\n \"いどう\",\n \"いとこ\",\n \"いない\",\n \"いなか\",\n \"いねむり\",\n \"いのち\",\n \"いのる\",\n \"いはつ\",\n \"いばる\",\n \"いはん\",\n \"いびき\",\n \"いひん\",\n \"いふく\",\n \"いへん\",\n \"いほう\",\n \"いみん\",\n \"いもうと\",\n \"いもたれ\",\n \"いもり\",\n \"いやがる\",\n \"いやす\",\n \"いよかん\",\n \"いよく\",\n \"いらい\",\n \"いらすと\",\n \"いりぐち\",\n \"いりょう\",\n \"いれい\",\n \"いれもの\",\n \"いれる\",\n \"いろえんぴつ\",\n \"いわい\",\n \"いわう\",\n \"いわかん\",\n \"いわば\",\n \"いわゆる\",\n \"いんげんまめ\",\n \"いんさつ\",\n \"いんしょう\",\n \"いんよう\",\n \"うえき\",\n \"うえる\",\n \"うおざ\",\n \"うがい\",\n \"うかぶ\",\n \"うかべる\",\n \"うきわ\",\n \"うくらいな\",\n \"うくれれ\",\n \"うけたまわる\",\n \"うけつけ\",\n \"うけとる\",\n \"うけもつ\",\n \"うける\",\n \"うごかす\",\n \"うごく\",\n \"うこん\",\n \"うさぎ\",\n \"うしなう\",\n \"うしろがみ\",\n \"うすい\",\n \"うすぎ\",\n \"うすぐらい\",\n \"うすめる\",\n \"うせつ\",\n \"うちあわせ\",\n \"うちがわ\",\n \"うちき\",\n \"うちゅう\",\n \"うっかり\",\n \"うつくしい\",\n \"うったえる\",\n \"うつる\",\n \"うどん\",\n \"うなぎ\",\n \"うなじ\",\n \"うなずく\",\n \"うなる\",\n \"うねる\",\n \"うのう\",\n \"うぶげ\",\n \"うぶごえ\",\n \"うまれる\",\n \"うめる\",\n \"うもう\",\n \"うやまう\",\n \"うよく\",\n \"うらがえす\",\n \"うらぐち\",\n \"うらない\",\n \"うりあげ\",\n \"うりきれ\",\n \"うるさい\",\n \"うれしい\",\n \"うれゆき\",\n \"うれる\",\n \"うろこ\",\n \"うわき\",\n \"うわさ\",\n \"うんこう\",\n \"うんちん\",\n \"うんてん\",\n \"うんどう\",\n \"えいえん\",\n \"えいが\",\n \"えいきょう\",\n \"えいご\",\n \"えいせい\",\n \"えいぶん\",\n \"えいよう\",\n \"えいわ\",\n \"えおり\",\n \"えがお\",\n \"えがく\",\n \"えきたい\",\n \"えくせる\",\n \"えしゃく\",\n \"えすて\",\n \"えつらん\",\n \"えのぐ\",\n \"えほうまき\",\n \"えほん\",\n \"えまき\",\n \"えもじ\",\n \"えもの\",\n \"えらい\",\n \"えらぶ\",\n \"えりあ\",\n \"えんえん\",\n \"えんかい\",\n \"えんぎ\",\n \"えんげき\",\n \"えんしゅう\",\n \"えんぜつ\",\n \"えんそく\",\n \"えんちょう\",\n \"えんとつ\",\n \"おいかける\",\n \"おいこす\",\n \"おいしい\",\n \"おいつく\",\n \"おうえん\",\n \"おうさま\",\n \"おうじ\",\n \"おうせつ\",\n \"おうたい\",\n \"おうふく\",\n \"おうべい\",\n \"おうよう\",\n \"おえる\",\n \"おおい\",\n \"おおう\",\n \"おおどおり\",\n \"おおや\",\n \"おおよそ\",\n \"おかえり\",\n \"おかず\",\n \"おがむ\",\n \"おかわり\",\n \"おぎなう\",\n \"おきる\",\n \"おくさま\",\n \"おくじょう\",\n \"おくりがな\",\n \"おくる\",\n \"おくれる\",\n \"おこす\",\n \"おこなう\",\n \"おこる\",\n \"おさえる\",\n \"おさない\",\n \"おさめる\",\n \"おしいれ\",\n \"おしえる\",\n \"おじぎ\",\n \"おじさん\",\n \"おしゃれ\",\n \"おそらく\",\n \"おそわる\",\n \"おたがい\",\n \"おたく\",\n \"おだやか\",\n \"おちつく\",\n \"おっと\",\n \"おつり\",\n \"おでかけ\",\n \"おとしもの\",\n \"おとなしい\",\n \"おどり\",\n \"おどろかす\",\n \"おばさん\",\n \"おまいり\",\n \"おめでとう\",\n \"おもいで\",\n \"おもう\",\n \"おもたい\",\n \"おもちゃ\",\n \"おやつ\",\n \"おやゆび\",\n \"およぼす\",\n \"おらんだ\",\n \"おろす\",\n \"おんがく\",\n \"おんけい\",\n \"おんしゃ\",\n \"おんせん\",\n \"おんだん\",\n \"おんちゅう\",\n \"おんどけい\",\n \"かあつ\",\n \"かいが\",\n \"がいき\",\n \"がいけん\",\n \"がいこう\",\n \"かいさつ\",\n \"かいしゃ\",\n \"かいすいよく\",\n \"かいぜん\",\n \"かいぞうど\",\n \"かいつう\",\n \"かいてん\",\n \"かいとう\",\n \"かいふく\",\n \"がいへき\",\n \"かいほう\",\n \"かいよう\",\n \"がいらい\",\n \"かいわ\",\n \"かえる\",\n \"かおり\",\n \"かかえる\",\n \"かがく\",\n \"かがし\",\n \"かがみ\",\n \"かくご\",\n \"かくとく\",\n \"かざる\",\n \"がぞう\",\n \"かたい\",\n \"かたち\",\n \"がちょう\",\n \"がっきゅう\",\n \"がっこう\",\n \"がっさん\",\n \"がっしょう\",\n \"かなざわし\",\n \"かのう\",\n \"がはく\",\n \"かぶか\",\n \"かほう\",\n \"かほご\",\n \"かまう\",\n \"かまぼこ\",\n \"かめれおん\",\n \"かゆい\",\n \"かようび\",\n \"からい\",\n \"かるい\",\n \"かろう\",\n \"かわく\",\n \"かわら\",\n \"がんか\",\n \"かんけい\",\n \"かんこう\",\n \"かんしゃ\",\n \"かんそう\",\n \"かんたん\",\n \"かんち\",\n \"がんばる\",\n \"きあい\",\n \"きあつ\",\n \"きいろ\",\n \"ぎいん\",\n \"きうい\",\n \"きうん\",\n \"きえる\",\n \"きおう\",\n \"きおく\",\n \"きおち\",\n \"きおん\",\n \"きかい\",\n \"きかく\",\n \"きかんしゃ\",\n \"ききて\",\n \"きくばり\",\n \"きくらげ\",\n \"きけんせい\",\n \"きこう\",\n \"きこえる\",\n \"きこく\",\n \"きさい\",\n \"きさく\",\n \"きさま\",\n \"きさらぎ\",\n \"ぎじかがく\",\n \"ぎしき\",\n \"ぎじたいけん\",\n \"ぎじにってい\",\n \"ぎじゅつしゃ\",\n \"きすう\",\n \"きせい\",\n \"きせき\",\n \"きせつ\",\n \"きそう\",\n \"きぞく\",\n \"きぞん\",\n \"きたえる\",\n \"きちょう\",\n \"きつえん\",\n \"ぎっちり\",\n \"きつつき\",\n \"きつね\",\n \"きてい\",\n \"きどう\",\n \"きどく\",\n \"きない\",\n \"きなが\",\n \"きなこ\",\n \"きぬごし\",\n \"きねん\",\n \"きのう\",\n \"きのした\",\n \"きはく\",\n \"きびしい\",\n \"きひん\",\n \"きふく\",\n \"きぶん\",\n \"きぼう\",\n \"きほん\",\n \"きまる\",\n \"きみつ\",\n \"きむずかしい\",\n \"きめる\",\n \"きもだめし\",\n \"きもち\",\n \"きもの\",\n \"きゃく\",\n \"きやく\",\n \"ぎゅうにく\",\n \"きよう\",\n \"きょうりゅう\",\n \"きらい\",\n \"きらく\",\n \"きりん\",\n \"きれい\",\n \"きれつ\",\n \"きろく\",\n \"ぎろん\",\n \"きわめる\",\n \"ぎんいろ\",\n \"きんかくじ\",\n \"きんじょ\",\n \"きんようび\",\n \"ぐあい\",\n \"くいず\",\n \"くうかん\",\n \"くうき\",\n \"くうぐん\",\n \"くうこう\",\n \"ぐうせい\",\n \"くうそう\",\n \"ぐうたら\",\n \"くうふく\",\n \"くうぼ\",\n \"くかん\",\n \"くきょう\",\n \"くげん\",\n \"ぐこう\",\n \"くさい\",\n \"くさき\",\n \"くさばな\",\n \"くさる\",\n \"くしゃみ\",\n \"くしょう\",\n \"くすのき\",\n \"くすりゆび\",\n \"くせげ\",\n \"くせん\",\n \"ぐたいてき\",\n \"くださる\",\n \"くたびれる\",\n \"くちこみ\",\n \"くちさき\",\n \"くつした\",\n \"ぐっすり\",\n \"くつろぐ\",\n \"くとうてん\",\n \"くどく\",\n \"くなん\",\n \"くねくね\",\n \"くのう\",\n \"くふう\",\n \"くみあわせ\",\n \"くみたてる\",\n \"くめる\",\n \"くやくしょ\",\n \"くらす\",\n \"くらべる\",\n \"くるま\",\n \"くれる\",\n \"くろう\",\n \"くわしい\",\n \"ぐんかん\",\n \"ぐんしょく\",\n \"ぐんたい\",\n \"ぐんて\",\n \"けあな\",\n \"けいかく\",\n \"けいけん\",\n \"けいこ\",\n \"けいさつ\",\n \"げいじゅつ\",\n \"けいたい\",\n \"げいのうじん\",\n \"けいれき\",\n \"けいろ\",\n \"けおとす\",\n \"けおりもの\",\n \"げきか\",\n \"げきげん\",\n \"げきだん\",\n \"げきちん\",\n \"げきとつ\",\n \"げきは\",\n \"げきやく\",\n \"げこう\",\n \"げこくじょう\",\n \"げざい\",\n \"けさき\",\n \"げざん\",\n \"けしき\",\n \"けしごむ\",\n \"けしょう\",\n \"げすと\",\n \"けたば\",\n \"けちゃっぷ\",\n \"けちらす\",\n \"けつあつ\",\n \"けつい\",\n \"けつえき\",\n \"けっこん\",\n \"けつじょ\",\n \"けっせき\",\n \"けってい\",\n \"けつまつ\",\n \"げつようび\",\n \"げつれい\",\n \"けつろん\",\n \"げどく\",\n \"けとばす\",\n \"けとる\",\n \"けなげ\",\n \"けなす\",\n \"けなみ\",\n \"けぬき\",\n \"げねつ\",\n \"けねん\",\n \"けはい\",\n \"げひん\",\n \"けぶかい\",\n \"げぼく\",\n \"けまり\",\n \"けみかる\",\n \"けむし\",\n \"けむり\",\n \"けもの\",\n \"けらい\",\n \"けろけろ\",\n \"けわしい\",\n \"けんい\",\n \"けんえつ\",\n \"けんお\",\n \"けんか\",\n \"げんき\",\n \"けんげん\",\n \"けんこう\",\n \"けんさく\",\n \"けんしゅう\",\n \"けんすう\",\n \"げんそう\",\n \"けんちく\",\n \"けんてい\",\n \"けんとう\",\n \"けんない\",\n \"けんにん\",\n \"げんぶつ\",\n \"けんま\",\n \"けんみん\",\n \"けんめい\",\n \"けんらん\",\n \"けんり\",\n \"こあくま\",\n \"こいぬ\",\n \"こいびと\",\n \"ごうい\",\n \"こうえん\",\n \"こうおん\",\n \"こうかん\",\n \"ごうきゅう\",\n \"ごうけい\",\n \"こうこう\",\n \"こうさい\",\n \"こうじ\",\n \"こうすい\",\n \"ごうせい\",\n \"こうそく\",\n \"こうたい\",\n \"こうちゃ\",\n \"こうつう\",\n \"こうてい\",\n \"こうどう\",\n \"こうない\",\n \"こうはい\",\n \"ごうほう\",\n \"ごうまん\",\n \"こうもく\",\n \"こうりつ\",\n \"こえる\",\n \"こおり\",\n \"ごかい\",\n \"ごがつ\",\n \"ごかん\",\n \"こくご\",\n \"こくさい\",\n \"こくとう\",\n \"こくない\",\n \"こくはく\",\n \"こぐま\",\n \"こけい\",\n \"こける\",\n \"ここのか\",\n \"こころ\",\n \"こさめ\",\n \"こしつ\",\n \"こすう\",\n \"こせい\",\n \"こせき\",\n \"こぜん\",\n \"こそだて\",\n \"こたい\",\n \"こたえる\",\n \"こたつ\",\n \"こちょう\",\n \"こっか\",\n \"こつこつ\",\n \"こつばん\",\n \"こつぶ\",\n \"こてい\",\n \"こてん\",\n \"ことがら\",\n \"ことし\",\n \"ことば\",\n \"ことり\",\n \"こなごな\",\n \"こねこね\",\n \"このまま\",\n \"このみ\",\n \"このよ\",\n \"ごはん\",\n \"こひつじ\",\n \"こふう\",\n \"こふん\",\n \"こぼれる\",\n \"ごまあぶら\",\n \"こまかい\",\n \"ごますり\",\n \"こまつな\",\n \"こまる\",\n \"こむぎこ\",\n \"こもじ\",\n \"こもち\",\n \"こもの\",\n \"こもん\",\n \"こやく\",\n \"こやま\",\n \"こゆう\",\n \"こゆび\",\n \"こよい\",\n \"こよう\",\n \"こりる\",\n \"これくしょん\",\n \"ころっけ\",\n \"こわもて\",\n \"こわれる\",\n \"こんいん\",\n \"こんかい\",\n \"こんき\",\n \"こんしゅう\",\n \"こんすい\",\n \"こんだて\",\n \"こんとん\",\n \"こんなん\",\n \"こんびに\",\n \"こんぽん\",\n \"こんまけ\",\n \"こんや\",\n \"こんれい\",\n \"こんわく\",\n \"ざいえき\",\n \"さいかい\",\n \"さいきん\",\n \"ざいげん\",\n \"ざいこ\",\n \"さいしょ\",\n \"さいせい\",\n \"ざいたく\",\n \"ざいちゅう\",\n \"さいてき\",\n \"ざいりょう\",\n \"さうな\",\n \"さかいし\",\n \"さがす\",\n \"さかな\",\n \"さかみち\",\n \"さがる\",\n \"さぎょう\",\n \"さくし\",\n \"さくひん\",\n \"さくら\",\n \"さこく\",\n \"さこつ\",\n \"さずかる\",\n \"ざせき\",\n \"さたん\",\n \"さつえい\",\n \"ざつおん\",\n \"ざっか\",\n \"ざつがく\",\n \"さっきょく\",\n \"ざっし\",\n \"さつじん\",\n \"ざっそう\",\n \"さつたば\",\n \"さつまいも\",\n \"さてい\",\n \"さといも\",\n \"さとう\",\n \"さとおや\",\n \"さとし\",\n \"さとる\",\n \"さのう\",\n \"さばく\",\n \"さびしい\",\n \"さべつ\",\n \"さほう\",\n \"さほど\",\n \"さます\",\n \"さみしい\",\n \"さみだれ\",\n \"さむけ\",\n \"さめる\",\n \"さやえんどう\",\n \"さゆう\",\n \"さよう\",\n \"さよく\",\n \"さらだ\",\n \"ざるそば\",\n \"さわやか\",\n \"さわる\",\n \"さんいん\",\n \"さんか\",\n \"さんきゃく\",\n \"さんこう\",\n \"さんさい\",\n \"ざんしょ\",\n \"さんすう\",\n \"さんせい\",\n \"さんそ\",\n \"さんち\",\n \"さんま\",\n \"さんみ\",\n \"さんらん\",\n \"しあい\",\n \"しあげ\",\n \"しあさって\",\n \"しあわせ\",\n \"しいく\",\n \"しいん\",\n \"しうち\",\n \"しえい\",\n \"しおけ\",\n \"しかい\",\n \"しかく\",\n \"じかん\",\n \"しごと\",\n \"しすう\",\n \"じだい\",\n \"したうけ\",\n \"したぎ\",\n \"したて\",\n \"したみ\",\n \"しちょう\",\n \"しちりん\",\n \"しっかり\",\n \"しつじ\",\n \"しつもん\",\n \"してい\",\n \"してき\",\n \"してつ\",\n \"じてん\",\n \"じどう\",\n \"しなぎれ\",\n \"しなもの\",\n \"しなん\",\n \"しねま\",\n \"しねん\",\n \"しのぐ\",\n \"しのぶ\",\n \"しはい\",\n \"しばかり\",\n \"しはつ\",\n \"しはらい\",\n \"しはん\",\n \"しひょう\",\n \"しふく\",\n \"じぶん\",\n \"しへい\",\n \"しほう\",\n \"しほん\",\n \"しまう\",\n \"しまる\",\n \"しみん\",\n \"しむける\",\n \"じむしょ\",\n \"しめい\",\n \"しめる\",\n \"しもん\",\n \"しゃいん\",\n \"しゃうん\",\n \"しゃおん\",\n \"じゃがいも\",\n \"しやくしょ\",\n \"しゃくほう\",\n \"しゃけん\",\n \"しゃこ\",\n \"しゃざい\",\n \"しゃしん\",\n \"しゃせん\",\n \"しゃそう\",\n \"しゃたい\",\n \"しゃちょう\",\n \"しゃっきん\",\n \"じゃま\",\n \"しゃりん\",\n \"しゃれい\",\n \"じゆう\",\n \"じゅうしょ\",\n \"しゅくはく\",\n \"じゅしん\",\n \"しゅっせき\",\n \"しゅみ\",\n \"しゅらば\",\n \"じゅんばん\",\n \"しょうかい\",\n \"しょくたく\",\n \"しょっけん\",\n \"しょどう\",\n \"しょもつ\",\n \"しらせる\",\n \"しらべる\",\n \"しんか\",\n \"しんこう\",\n \"じんじゃ\",\n \"しんせいじ\",\n \"しんちく\",\n \"しんりん\",\n \"すあげ\",\n \"すあし\",\n \"すあな\",\n \"ずあん\",\n \"すいえい\",\n \"すいか\",\n \"すいとう\",\n \"ずいぶん\",\n \"すいようび\",\n \"すうがく\",\n \"すうじつ\",\n \"すうせん\",\n \"すおどり\",\n \"すきま\",\n \"すくう\",\n \"すくない\",\n \"すける\",\n \"すごい\",\n \"すこし\",\n \"ずさん\",\n \"すずしい\",\n \"すすむ\",\n \"すすめる\",\n \"すっかり\",\n \"ずっしり\",\n \"ずっと\",\n \"すてき\",\n \"すてる\",\n \"すねる\",\n \"すのこ\",\n \"すはだ\",\n \"すばらしい\",\n \"ずひょう\",\n \"ずぶぬれ\",\n \"すぶり\",\n \"すふれ\",\n \"すべて\",\n \"すべる\",\n \"ずほう\",\n \"すぼん\",\n \"すまい\",\n \"すめし\",\n \"すもう\",\n \"すやき\",\n \"すらすら\",\n \"するめ\",\n \"すれちがう\",\n \"すろっと\",\n \"すわる\",\n \"すんぜん\",\n \"すんぽう\",\n \"せあぶら\",\n \"せいかつ\",\n \"せいげん\",\n \"せいじ\",\n \"せいよう\",\n \"せおう\",\n \"せかいかん\",\n \"せきにん\",\n \"せきむ\",\n \"せきゆ\",\n \"せきらんうん\",\n \"せけん\",\n \"せこう\",\n \"せすじ\",\n \"せたい\",\n \"せたけ\",\n \"せっかく\",\n \"せっきゃく\",\n \"ぜっく\",\n \"せっけん\",\n \"せっこつ\",\n \"せっさたくま\",\n \"せつぞく\",\n \"せつだん\",\n \"せつでん\",\n \"せっぱん\",\n \"せつび\",\n \"せつぶん\",\n \"せつめい\",\n \"せつりつ\",\n \"せなか\",\n \"せのび\",\n \"せはば\",\n \"せびろ\",\n \"せぼね\",\n \"せまい\",\n \"せまる\",\n \"せめる\",\n \"せもたれ\",\n \"せりふ\",\n \"ぜんあく\",\n \"せんい\",\n \"せんえい\",\n \"せんか\",\n \"せんきょ\",\n \"せんく\",\n \"せんげん\",\n \"ぜんご\",\n \"せんさい\",\n \"せんしゅ\",\n \"せんすい\",\n \"せんせい\",\n \"せんぞ\",\n \"せんたく\",\n \"せんちょう\",\n \"せんてい\",\n \"せんとう\",\n \"せんぬき\",\n \"せんねん\",\n \"せんぱい\",\n \"ぜんぶ\",\n \"ぜんぽう\",\n \"せんむ\",\n \"せんめんじょ\",\n \"せんもん\",\n \"せんやく\",\n \"せんゆう\",\n \"せんよう\",\n \"ぜんら\",\n \"ぜんりゃく\",\n \"せんれい\",\n \"せんろ\",\n \"そあく\",\n \"そいとげる\",\n \"そいね\",\n \"そうがんきょう\",\n \"そうき\",\n \"そうご\",\n \"そうしん\",\n \"そうだん\",\n \"そうなん\",\n \"そうび\",\n \"そうめん\",\n \"そうり\",\n \"そえもの\",\n \"そえん\",\n \"そがい\",\n \"そげき\",\n \"そこう\",\n \"そこそこ\",\n \"そざい\",\n \"そしな\",\n \"そせい\",\n \"そせん\",\n \"そそぐ\",\n \"そだてる\",\n \"そつう\",\n \"そつえん\",\n \"そっかん\",\n \"そつぎょう\",\n \"そっけつ\",\n \"そっこう\",\n \"そっせん\",\n \"そっと\",\n \"そとがわ\",\n \"そとづら\",\n \"そなえる\",\n \"そなた\",\n \"そふぼ\",\n \"そぼく\",\n \"そぼろ\",\n \"そまつ\",\n \"そまる\",\n \"そむく\",\n \"そむりえ\",\n \"そめる\",\n \"そもそも\",\n \"そよかぜ\",\n \"そらまめ\",\n \"そろう\",\n \"そんかい\",\n \"そんけい\",\n \"そんざい\",\n \"そんしつ\",\n \"そんぞく\",\n \"そんちょう\",\n \"ぞんび\",\n \"ぞんぶん\",\n \"そんみん\",\n \"たあい\",\n \"たいいん\",\n \"たいうん\",\n \"たいえき\",\n \"たいおう\",\n \"だいがく\",\n \"たいき\",\n \"たいぐう\",\n \"たいけん\",\n \"たいこ\",\n \"たいざい\",\n \"だいじょうぶ\",\n \"だいすき\",\n \"たいせつ\",\n \"たいそう\",\n \"だいたい\",\n \"たいちょう\",\n \"たいてい\",\n \"だいどころ\",\n \"たいない\",\n \"たいねつ\",\n \"たいのう\",\n \"たいはん\",\n \"だいひょう\",\n \"たいふう\",\n \"たいへん\",\n \"たいほ\",\n \"たいまつばな\",\n \"たいみんぐ\",\n \"たいむ\",\n \"たいめん\",\n \"たいやき\",\n \"たいよう\",\n \"たいら\",\n \"たいりょく\",\n \"たいる\",\n \"たいわん\",\n \"たうえ\",\n \"たえる\",\n \"たおす\",\n \"たおる\",\n \"たおれる\",\n \"たかい\",\n \"たかね\",\n \"たきび\",\n \"たくさん\",\n \"たこく\",\n \"たこやき\",\n \"たさい\",\n \"たしざん\",\n \"だじゃれ\",\n \"たすける\",\n \"たずさわる\",\n \"たそがれ\",\n \"たたかう\",\n \"たたく\",\n \"ただしい\",\n \"たたみ\",\n \"たちばな\",\n \"だっかい\",\n \"だっきゃく\",\n \"だっこ\",\n \"だっしゅつ\",\n \"だったい\",\n \"たてる\",\n \"たとえる\",\n \"たなばた\",\n \"たにん\",\n \"たぬき\",\n \"たのしみ\",\n \"たはつ\",\n \"たぶん\",\n \"たべる\",\n \"たぼう\",\n \"たまご\",\n \"たまる\",\n \"だむる\",\n \"ためいき\",\n \"ためす\",\n \"ためる\",\n \"たもつ\",\n \"たやすい\",\n \"たよる\",\n \"たらす\",\n \"たりきほんがん\",\n \"たりょう\",\n \"たりる\",\n \"たると\",\n \"たれる\",\n \"たれんと\",\n \"たろっと\",\n \"たわむれる\",\n \"だんあつ\",\n \"たんい\",\n \"たんおん\",\n \"たんか\",\n \"たんき\",\n \"たんけん\",\n \"たんご\",\n \"たんさん\",\n \"たんじょうび\",\n \"だんせい\",\n \"たんそく\",\n \"たんたい\",\n \"だんち\",\n \"たんてい\",\n \"たんとう\",\n \"だんな\",\n \"たんにん\",\n \"だんねつ\",\n \"たんのう\",\n \"たんぴん\",\n \"だんぼう\",\n \"たんまつ\",\n \"たんめい\",\n \"だんれつ\",\n \"だんろ\",\n \"だんわ\",\n \"ちあい\",\n \"ちあん\",\n \"ちいき\",\n \"ちいさい\",\n \"ちえん\",\n \"ちかい\",\n \"ちから\",\n \"ちきゅう\",\n \"ちきん\",\n \"ちけいず\",\n \"ちけん\",\n \"ちこく\",\n \"ちさい\",\n \"ちしき\",\n \"ちしりょう\",\n \"ちせい\",\n \"ちそう\",\n \"ちたい\",\n \"ちたん\",\n \"ちちおや\",\n \"ちつじょ\",\n \"ちてき\",\n \"ちてん\",\n \"ちぬき\",\n \"ちぬり\",\n \"ちのう\",\n \"ちひょう\",\n \"ちへいせん\",\n \"ちほう\",\n \"ちまた\",\n \"ちみつ\",\n \"ちみどろ\",\n \"ちめいど\",\n \"ちゃんこなべ\",\n \"ちゅうい\",\n \"ちゆりょく\",\n \"ちょうし\",\n \"ちょさくけん\",\n \"ちらし\",\n \"ちらみ\",\n \"ちりがみ\",\n \"ちりょう\",\n \"ちるど\",\n \"ちわわ\",\n \"ちんたい\",\n \"ちんもく\",\n \"ついか\",\n \"ついたち\",\n \"つうか\",\n \"つうじょう\",\n \"つうはん\",\n \"つうわ\",\n \"つかう\",\n \"つかれる\",\n \"つくね\",\n \"つくる\",\n \"つけね\",\n \"つける\",\n \"つごう\",\n \"つたえる\",\n \"つづく\",\n \"つつじ\",\n \"つつむ\",\n \"つとめる\",\n \"つながる\",\n \"つなみ\",\n \"つねづね\",\n \"つのる\",\n \"つぶす\",\n \"つまらない\",\n \"つまる\",\n \"つみき\",\n \"つめたい\",\n \"つもり\",\n \"つもる\",\n \"つよい\",\n \"つるぼ\",\n \"つるみく\",\n \"つわもの\",\n \"つわり\",\n \"てあし\",\n \"てあて\",\n \"てあみ\",\n \"ていおん\",\n \"ていか\",\n \"ていき\",\n \"ていけい\",\n \"ていこく\",\n \"ていさつ\",\n \"ていし\",\n \"ていせい\",\n \"ていたい\",\n \"ていど\",\n \"ていねい\",\n \"ていひょう\",\n \"ていへん\",\n \"ていぼう\",\n \"てうち\",\n \"ておくれ\",\n \"てきとう\",\n \"てくび\",\n \"でこぼこ\",\n \"てさぎょう\",\n \"てさげ\",\n \"てすり\",\n \"てそう\",\n \"てちがい\",\n \"てちょう\",\n \"てつがく\",\n \"てつづき\",\n \"でっぱ\",\n \"てつぼう\",\n \"てつや\",\n \"でぬかえ\",\n \"てぬき\",\n \"てぬぐい\",\n \"てのひら\",\n \"てはい\",\n \"てぶくろ\",\n \"てふだ\",\n \"てほどき\",\n \"てほん\",\n \"てまえ\",\n \"てまきずし\",\n \"てみじか\",\n \"てみやげ\",\n \"てらす\",\n \"てれび\",\n \"てわけ\",\n \"てわたし\",\n \"でんあつ\",\n \"てんいん\",\n \"てんかい\",\n \"てんき\",\n \"てんぐ\",\n \"てんけん\",\n \"てんごく\",\n \"てんさい\",\n \"てんし\",\n \"てんすう\",\n \"でんち\",\n \"てんてき\",\n \"てんとう\",\n \"てんない\",\n \"てんぷら\",\n \"てんぼうだい\",\n \"てんめつ\",\n \"てんらんかい\",\n \"でんりょく\",\n \"でんわ\",\n \"どあい\",\n \"といれ\",\n \"どうかん\",\n \"とうきゅう\",\n \"どうぐ\",\n \"とうし\",\n \"とうむぎ\",\n \"とおい\",\n \"とおか\",\n \"とおく\",\n \"とおす\",\n \"とおる\",\n \"とかい\",\n \"とかす\",\n \"ときおり\",\n \"ときどき\",\n \"とくい\",\n \"とくしゅう\",\n \"とくてん\",\n \"とくに\",\n \"とくべつ\",\n \"とけい\",\n \"とける\",\n \"とこや\",\n \"とさか\",\n \"としょかん\",\n \"とそう\",\n \"とたん\",\n \"とちゅう\",\n \"とっきゅう\",\n \"とっくん\",\n \"とつぜん\",\n \"とつにゅう\",\n \"とどける\",\n \"ととのえる\",\n \"とない\",\n \"となえる\",\n \"となり\",\n \"とのさま\",\n \"とばす\",\n \"どぶがわ\",\n \"とほう\",\n \"とまる\",\n \"とめる\",\n \"ともだち\",\n \"ともる\",\n \"どようび\",\n \"とらえる\",\n \"とんかつ\",\n \"どんぶり\",\n \"ないかく\",\n \"ないこう\",\n \"ないしょ\",\n \"ないす\",\n \"ないせん\",\n \"ないそう\",\n \"なおす\",\n \"ながい\",\n \"なくす\",\n \"なげる\",\n \"なこうど\",\n \"なさけ\",\n \"なたでここ\",\n \"なっとう\",\n \"なつやすみ\",\n \"ななおし\",\n \"なにごと\",\n \"なにもの\",\n \"なにわ\",\n \"なのか\",\n \"なふだ\",\n \"なまいき\",\n \"なまえ\",\n \"なまみ\",\n \"なみだ\",\n \"なめらか\",\n \"なめる\",\n \"なやむ\",\n \"ならう\",\n \"ならび\",\n \"ならぶ\",\n \"なれる\",\n \"なわとび\",\n \"なわばり\",\n \"にあう\",\n \"にいがた\",\n \"にうけ\",\n \"におい\",\n \"にかい\",\n \"にがて\",\n \"にきび\",\n \"にくしみ\",\n \"にくまん\",\n \"にげる\",\n \"にさんかたんそ\",\n \"にしき\",\n \"にせもの\",\n \"にちじょう\",\n \"にちようび\",\n \"にっか\",\n \"にっき\",\n \"にっけい\",\n \"にっこう\",\n \"にっさん\",\n \"にっしょく\",\n \"にっすう\",\n \"にっせき\",\n \"にってい\",\n \"になう\",\n \"にほん\",\n \"にまめ\",\n \"にもつ\",\n \"にやり\",\n \"にゅういん\",\n \"にりんしゃ\",\n \"にわとり\",\n \"にんい\",\n \"にんか\",\n \"にんき\",\n \"にんげん\",\n \"にんしき\",\n \"にんずう\",\n \"にんそう\",\n \"にんたい\",\n \"にんち\",\n \"にんてい\",\n \"にんにく\",\n \"にんぷ\",\n \"にんまり\",\n \"にんむ\",\n \"にんめい\",\n \"にんよう\",\n \"ぬいくぎ\",\n \"ぬかす\",\n \"ぬぐいとる\",\n \"ぬぐう\",\n \"ぬくもり\",\n \"ぬすむ\",\n \"ぬまえび\",\n \"ぬめり\",\n \"ぬらす\",\n \"ぬんちゃく\",\n \"ねあげ\",\n \"ねいき\",\n \"ねいる\",\n \"ねいろ\",\n \"ねぐせ\",\n \"ねくたい\",\n \"ねくら\",\n \"ねこぜ\",\n \"ねこむ\",\n \"ねさげ\",\n \"ねすごす\",\n \"ねそべる\",\n \"ねだん\",\n \"ねつい\",\n \"ねっしん\",\n \"ねつぞう\",\n \"ねったいぎょ\",\n \"ねぶそく\",\n \"ねふだ\",\n \"ねぼう\",\n \"ねほりはほり\",\n \"ねまき\",\n \"ねまわし\",\n \"ねみみ\",\n \"ねむい\",\n \"ねむたい\",\n \"ねもと\",\n \"ねらう\",\n \"ねわざ\",\n \"ねんいり\",\n \"ねんおし\",\n \"ねんかん\",\n \"ねんきん\",\n \"ねんぐ\",\n \"ねんざ\",\n \"ねんし\",\n \"ねんちゃく\",\n \"ねんど\",\n \"ねんぴ\",\n \"ねんぶつ\",\n \"ねんまつ\",\n \"ねんりょう\",\n \"ねんれい\",\n \"のいず\",\n \"のおづま\",\n \"のがす\",\n \"のきなみ\",\n \"のこぎり\",\n \"のこす\",\n \"のこる\",\n \"のせる\",\n \"のぞく\",\n \"のぞむ\",\n \"のたまう\",\n \"のちほど\",\n \"のっく\",\n \"のばす\",\n \"のはら\",\n \"のべる\",\n \"のぼる\",\n \"のみもの\",\n \"のやま\",\n \"のらいぬ\",\n \"のらねこ\",\n \"のりもの\",\n \"のりゆき\",\n \"のれん\",\n \"のんき\",\n \"ばあい\",\n \"はあく\",\n \"ばあさん\",\n \"ばいか\",\n \"ばいく\",\n \"はいけん\",\n \"はいご\",\n \"はいしん\",\n \"はいすい\",\n \"はいせん\",\n \"はいそう\",\n \"はいち\",\n \"ばいばい\",\n \"はいれつ\",\n \"はえる\",\n \"はおる\",\n \"はかい\",\n \"ばかり\",\n \"はかる\",\n \"はくしゅ\",\n \"はけん\",\n \"はこぶ\",\n \"はさみ\",\n \"はさん\",\n \"はしご\",\n \"ばしょ\",\n \"はしる\",\n \"はせる\",\n \"ぱそこん\",\n \"はそん\",\n \"はたん\",\n \"はちみつ\",\n \"はつおん\",\n \"はっかく\",\n \"はづき\",\n \"はっきり\",\n \"はっくつ\",\n \"はっけん\",\n \"はっこう\",\n \"はっさん\",\n \"はっしん\",\n \"はったつ\",\n \"はっちゅう\",\n \"はってん\",\n \"はっぴょう\",\n \"はっぽう\",\n \"はなす\",\n \"はなび\",\n \"はにかむ\",\n \"はぶらし\",\n \"はみがき\",\n \"はむかう\",\n \"はめつ\",\n \"はやい\",\n \"はやし\",\n \"はらう\",\n \"はろうぃん\",\n \"はわい\",\n \"はんい\",\n \"はんえい\",\n \"はんおん\",\n \"はんかく\",\n \"はんきょう\",\n \"ばんぐみ\",\n \"はんこ\",\n \"はんしゃ\",\n \"はんすう\",\n \"はんだん\",\n \"ぱんち\",\n \"ぱんつ\",\n \"はんてい\",\n \"はんとし\",\n \"はんのう\",\n \"はんぱ\",\n \"はんぶん\",\n \"はんぺん\",\n \"はんぼうき\",\n \"はんめい\",\n \"はんらん\",\n \"はんろん\",\n \"ひいき\",\n \"ひうん\",\n \"ひえる\",\n \"ひかく\",\n \"ひかり\",\n \"ひかる\",\n \"ひかん\",\n \"ひくい\",\n \"ひけつ\",\n \"ひこうき\",\n \"ひこく\",\n \"ひさい\",\n \"ひさしぶり\",\n \"ひさん\",\n \"びじゅつかん\",\n \"ひしょ\",\n \"ひそか\",\n \"ひそむ\",\n \"ひたむき\",\n \"ひだり\",\n \"ひたる\",\n \"ひつぎ\",\n \"ひっこし\",\n \"ひっし\",\n \"ひつじゅひん\",\n \"ひっす\",\n \"ひつぜん\",\n \"ぴったり\",\n \"ぴっちり\",\n \"ひつよう\",\n \"ひてい\",\n \"ひとごみ\",\n \"ひなまつり\",\n \"ひなん\",\n \"ひねる\",\n \"ひはん\",\n \"ひびく\",\n \"ひひょう\",\n \"ひほう\",\n \"ひまわり\",\n \"ひまん\",\n \"ひみつ\",\n \"ひめい\",\n \"ひめじし\",\n \"ひやけ\",\n \"ひやす\",\n \"ひよう\",\n \"びょうき\",\n \"ひらがな\",\n \"ひらく\",\n \"ひりつ\",\n \"ひりょう\",\n \"ひるま\",\n \"ひるやすみ\",\n \"ひれい\",\n \"ひろい\",\n \"ひろう\",\n \"ひろき\",\n \"ひろゆき\",\n \"ひんかく\",\n \"ひんけつ\",\n \"ひんこん\",\n \"ひんしゅ\",\n \"ひんそう\",\n \"ぴんち\",\n \"ひんぱん\",\n \"びんぼう\",\n \"ふあん\",\n \"ふいうち\",\n \"ふうけい\",\n \"ふうせん\",\n \"ぷうたろう\",\n \"ふうとう\",\n \"ふうふ\",\n \"ふえる\",\n \"ふおん\",\n \"ふかい\",\n \"ふきん\",\n \"ふくざつ\",\n \"ふくぶくろ\",\n \"ふこう\",\n \"ふさい\",\n \"ふしぎ\",\n \"ふじみ\",\n \"ふすま\",\n \"ふせい\",\n \"ふせぐ\",\n \"ふそく\",\n \"ぶたにく\",\n \"ふたん\",\n \"ふちょう\",\n \"ふつう\",\n \"ふつか\",\n \"ふっかつ\",\n \"ふっき\",\n \"ふっこく\",\n \"ぶどう\",\n \"ふとる\",\n \"ふとん\",\n \"ふのう\",\n \"ふはい\",\n \"ふひょう\",\n \"ふへん\",\n \"ふまん\",\n \"ふみん\",\n \"ふめつ\",\n \"ふめん\",\n \"ふよう\",\n \"ふりこ\",\n \"ふりる\",\n \"ふるい\",\n \"ふんいき\",\n \"ぶんがく\",\n \"ぶんぐ\",\n \"ふんしつ\",\n \"ぶんせき\",\n \"ふんそう\",\n \"ぶんぽう\",\n \"へいあん\",\n \"へいおん\",\n \"へいがい\",\n \"へいき\",\n \"へいげん\",\n \"へいこう\",\n \"へいさ\",\n \"へいしゃ\",\n \"へいせつ\",\n \"へいそ\",\n \"へいたく\",\n \"へいてん\",\n \"へいねつ\",\n \"へいわ\",\n \"へきが\",\n \"へこむ\",\n \"べにいろ\",\n \"べにしょうが\",\n \"へらす\",\n \"へんかん\",\n \"べんきょう\",\n \"べんごし\",\n \"へんさい\",\n \"へんたい\",\n \"べんり\",\n \"ほあん\",\n \"ほいく\",\n \"ぼうぎょ\",\n \"ほうこく\",\n \"ほうそう\",\n \"ほうほう\",\n \"ほうもん\",\n \"ほうりつ\",\n \"ほえる\",\n \"ほおん\",\n \"ほかん\",\n \"ほきょう\",\n \"ぼきん\",\n \"ほくろ\",\n \"ほけつ\",\n \"ほけん\",\n \"ほこう\",\n \"ほこる\",\n \"ほしい\",\n \"ほしつ\",\n \"ほしゅ\",\n \"ほしょう\",\n \"ほせい\",\n \"ほそい\",\n \"ほそく\",\n \"ほたて\",\n \"ほたる\",\n \"ぽちぶくろ\",\n \"ほっきょく\",\n \"ほっさ\",\n \"ほったん\",\n \"ほとんど\",\n \"ほめる\",\n \"ほんい\",\n \"ほんき\",\n \"ほんけ\",\n \"ほんしつ\",\n \"ほんやく\",\n \"まいにち\",\n \"まかい\",\n \"まかせる\",\n \"まがる\",\n \"まける\",\n \"まこと\",\n \"まさつ\",\n \"まじめ\",\n \"ますく\",\n \"まぜる\",\n \"まつり\",\n \"まとめ\",\n \"まなぶ\",\n \"まぬけ\",\n \"まねく\",\n \"まほう\",\n \"まもる\",\n \"まゆげ\",\n \"まよう\",\n \"まろやか\",\n \"まわす\",\n \"まわり\",\n \"まわる\",\n \"まんが\",\n \"まんきつ\",\n \"まんぞく\",\n \"まんなか\",\n \"みいら\",\n \"みうち\",\n \"みえる\",\n \"みがく\",\n \"みかた\",\n \"みかん\",\n \"みけん\",\n \"みこん\",\n \"みじかい\",\n \"みすい\",\n \"みすえる\",\n \"みせる\",\n \"みっか\",\n \"みつかる\",\n \"みつける\",\n \"みてい\",\n \"みとめる\",\n \"みなと\",\n \"みなみかさい\",\n \"みねらる\",\n \"みのう\",\n \"みのがす\",\n \"みほん\",\n \"みもと\",\n \"みやげ\",\n \"みらい\",\n \"みりょく\",\n \"みわく\",\n \"みんか\",\n \"みんぞく\",\n \"むいか\",\n \"むえき\",\n \"むえん\",\n \"むかい\",\n \"むかう\",\n \"むかえ\",\n \"むかし\",\n \"むぎちゃ\",\n \"むける\",\n \"むげん\",\n \"むさぼる\",\n \"むしあつい\",\n \"むしば\",\n \"むじゅん\",\n \"むしろ\",\n \"むすう\",\n \"むすこ\",\n \"むすぶ\",\n \"むすめ\",\n \"むせる\",\n \"むせん\",\n \"むちゅう\",\n \"むなしい\",\n \"むのう\",\n \"むやみ\",\n \"むよう\",\n \"むらさき\",\n \"むりょう\",\n \"むろん\",\n \"めいあん\",\n \"めいうん\",\n \"めいえん\",\n \"めいかく\",\n \"めいきょく\",\n \"めいさい\",\n \"めいし\",\n \"めいそう\",\n \"めいぶつ\",\n \"めいれい\",\n \"めいわく\",\n \"めぐまれる\",\n \"めざす\",\n \"めした\",\n \"めずらしい\",\n \"めだつ\",\n \"めまい\",\n \"めやす\",\n \"めんきょ\",\n \"めんせき\",\n \"めんどう\",\n \"もうしあげる\",\n \"もうどうけん\",\n \"もえる\",\n \"もくし\",\n \"もくてき\",\n \"もくようび\",\n \"もちろん\",\n \"もどる\",\n \"もらう\",\n \"もんく\",\n \"もんだい\",\n \"やおや\",\n \"やける\",\n \"やさい\",\n \"やさしい\",\n \"やすい\",\n \"やすたろう\",\n \"やすみ\",\n \"やせる\",\n \"やそう\",\n \"やたい\",\n \"やちん\",\n \"やっと\",\n \"やっぱり\",\n \"やぶる\",\n \"やめる\",\n \"ややこしい\",\n \"やよい\",\n \"やわらかい\",\n \"ゆうき\",\n \"ゆうびんきょく\",\n \"ゆうべ\",\n \"ゆうめい\",\n \"ゆけつ\",\n \"ゆしゅつ\",\n \"ゆせん\",\n \"ゆそう\",\n \"ゆたか\",\n \"ゆちゃく\",\n \"ゆでる\",\n \"ゆにゅう\",\n \"ゆびわ\",\n \"ゆらい\",\n \"ゆれる\",\n \"ようい\",\n \"ようか\",\n \"ようきゅう\",\n \"ようじ\",\n \"ようす\",\n \"ようちえん\",\n \"よかぜ\",\n \"よかん\",\n \"よきん\",\n \"よくせい\",\n \"よくぼう\",\n \"よけい\",\n \"よごれる\",\n \"よさん\",\n \"よしゅう\",\n \"よそう\",\n \"よそく\",\n \"よっか\",\n \"よてい\",\n \"よどがわく\",\n \"よねつ\",\n \"よやく\",\n \"よゆう\",\n \"よろこぶ\",\n \"よろしい\",\n \"らいう\",\n \"らくがき\",\n \"らくご\",\n \"らくさつ\",\n \"らくだ\",\n \"らしんばん\",\n \"らせん\",\n \"らぞく\",\n \"らたい\",\n \"らっか\",\n \"られつ\",\n \"りえき\",\n \"りかい\",\n \"りきさく\",\n \"りきせつ\",\n \"りくぐん\",\n \"りくつ\",\n \"りけん\",\n \"りこう\",\n \"りせい\",\n \"りそう\",\n \"りそく\",\n \"りてん\",\n \"りねん\",\n \"りゆう\",\n \"りゅうがく\",\n \"りよう\",\n \"りょうり\",\n \"りょかん\",\n \"りょくちゃ\",\n \"りょこう\",\n \"りりく\",\n \"りれき\",\n \"りろん\",\n \"りんご\",\n \"るいけい\",\n \"るいさい\",\n \"るいじ\",\n \"るいせき\",\n \"るすばん\",\n \"るりがわら\",\n \"れいかん\",\n \"れいぎ\",\n \"れいせい\",\n \"れいぞうこ\",\n \"れいとう\",\n \"れいぼう\",\n \"れきし\",\n \"れきだい\",\n \"れんあい\",\n \"れんけい\",\n \"れんこん\",\n \"れんさい\",\n \"れんしゅう\",\n \"れんぞく\",\n \"れんらく\",\n \"ろうか\",\n \"ろうご\",\n \"ろうじん\",\n \"ろうそく\",\n \"ろくが\",\n \"ろこつ\",\n \"ろじうら\",\n \"ろしゅつ\",\n \"ろせん\",\n \"ろてん\",\n \"ろめん\",\n \"ろれつ\",\n \"ろんぎ\",\n \"ろんぱ\",\n \"ろんぶん\",\n \"ろんり\",\n \"わかす\",\n \"わかめ\",\n \"わかやま\",\n \"わかれる\",\n \"わしつ\",\n \"わじまし\",\n \"わすれもの\",\n \"わらう\",\n \"われる\"\n]\n","[\n \"가격\",\n \"가끔\",\n \"가난\",\n \"가능\",\n \"가득\",\n \"가르침\",\n \"가뭄\",\n \"가방\",\n \"가상\",\n \"가슴\",\n \"가운데\",\n \"가을\",\n \"가이드\",\n \"가입\",\n \"가장\",\n \"가정\",\n \"가족\",\n \"가죽\",\n \"각오\",\n \"각자\",\n \"간격\",\n \"간부\",\n \"간섭\",\n \"간장\",\n \"간접\",\n \"간판\",\n \"갈등\",\n \"갈비\",\n \"갈색\",\n \"갈증\",\n \"감각\",\n \"감기\",\n \"감소\",\n \"감수성\",\n \"감자\",\n \"감정\",\n \"갑자기\",\n \"강남\",\n \"강당\",\n \"강도\",\n \"강력히\",\n \"강변\",\n \"강북\",\n \"강사\",\n \"강수량\",\n \"강아지\",\n \"강원도\",\n \"강의\",\n \"강제\",\n \"강조\",\n \"같이\",\n \"개구리\",\n \"개나리\",\n \"개방\",\n \"개별\",\n \"개선\",\n \"개성\",\n \"개인\",\n \"객관적\",\n \"거실\",\n \"거액\",\n \"거울\",\n \"거짓\",\n \"거품\",\n \"걱정\",\n \"건강\",\n \"건물\",\n \"건설\",\n \"건조\",\n \"건축\",\n \"걸음\",\n \"검사\",\n \"검토\",\n \"게시판\",\n \"게임\",\n \"겨울\",\n \"견해\",\n \"결과\",\n \"결국\",\n \"결론\",\n \"결석\",\n \"결승\",\n \"결심\",\n \"결정\",\n \"결혼\",\n \"경계\",\n \"경고\",\n \"경기\",\n \"경력\",\n \"경복궁\",\n \"경비\",\n \"경상도\",\n \"경영\",\n \"경우\",\n \"경쟁\",\n \"경제\",\n \"경주\",\n \"경찰\",\n \"경치\",\n \"경향\",\n \"경험\",\n \"계곡\",\n \"계단\",\n \"계란\",\n \"계산\",\n \"계속\",\n \"계약\",\n \"계절\",\n \"계층\",\n \"계획\",\n \"고객\",\n \"고구려\",\n \"고궁\",\n \"고급\",\n \"고등학생\",\n \"고무신\",\n \"고민\",\n \"고양이\",\n \"고장\",\n \"고전\",\n \"고집\",\n \"고춧가루\",\n \"고통\",\n \"고향\",\n \"곡식\",\n \"골목\",\n \"골짜기\",\n \"골프\",\n \"공간\",\n \"공개\",\n \"공격\",\n \"공군\",\n \"공급\",\n \"공기\",\n \"공동\",\n \"공무원\",\n \"공부\",\n \"공사\",\n \"공식\",\n \"공업\",\n \"공연\",\n \"공원\",\n \"공장\",\n \"공짜\",\n \"공책\",\n \"공통\",\n \"공포\",\n \"공항\",\n \"공휴일\",\n \"과목\",\n \"과일\",\n \"과장\",\n \"과정\",\n \"과학\",\n \"관객\",\n \"관계\",\n \"관광\",\n \"관념\",\n \"관람\",\n \"관련\",\n \"관리\",\n \"관습\",\n \"관심\",\n \"관점\",\n \"관찰\",\n \"광경\",\n \"광고\",\n \"광장\",\n \"광주\",\n \"괴로움\",\n \"굉장히\",\n \"교과서\",\n \"교문\",\n \"교복\",\n \"교실\",\n \"교양\",\n \"교육\",\n \"교장\",\n \"교직\",\n \"교통\",\n \"교환\",\n \"교훈\",\n \"구경\",\n \"구름\",\n \"구멍\",\n \"구별\",\n \"구분\",\n \"구석\",\n \"구성\",\n \"구속\",\n \"구역\",\n \"구입\",\n \"구청\",\n \"구체적\",\n \"국가\",\n \"국기\",\n \"국내\",\n \"국립\",\n \"국물\",\n \"국민\",\n \"국수\",\n \"국어\",\n \"국왕\",\n \"국적\",\n \"국제\",\n \"국회\",\n \"군대\",\n \"군사\",\n \"군인\",\n \"궁극적\",\n \"권리\",\n \"권위\",\n \"권투\",\n \"귀국\",\n \"귀신\",\n \"규정\",\n \"규칙\",\n \"균형\",\n \"그날\",\n \"그냥\",\n \"그늘\",\n \"그러나\",\n \"그룹\",\n \"그릇\",\n \"그림\",\n \"그제서야\",\n \"그토록\",\n \"극복\",\n \"극히\",\n \"근거\",\n \"근교\",\n \"근래\",\n \"근로\",\n \"근무\",\n \"근본\",\n \"근원\",\n \"근육\",\n \"근처\",\n \"글씨\",\n \"글자\",\n \"금강산\",\n \"금고\",\n \"금년\",\n \"금메달\",\n \"금액\",\n \"금연\",\n \"금요일\",\n \"금지\",\n \"긍정적\",\n \"기간\",\n \"기관\",\n \"기념\",\n \"기능\",\n \"기독교\",\n \"기둥\",\n \"기록\",\n \"기름\",\n \"기법\",\n \"기본\",\n \"기분\",\n \"기쁨\",\n \"기숙사\",\n \"기술\",\n \"기억\",\n \"기업\",\n \"기온\",\n \"기운\",\n \"기원\",\n \"기적\",\n \"기준\",\n \"기침\",\n \"기혼\",\n \"기획\",\n \"긴급\",\n \"긴장\",\n \"길이\",\n \"김밥\",\n \"김치\",\n \"김포공항\",\n \"깍두기\",\n \"깜빡\",\n \"깨달음\",\n \"깨소금\",\n \"껍질\",\n \"꼭대기\",\n \"꽃잎\",\n \"나들이\",\n \"나란히\",\n \"나머지\",\n \"나물\",\n \"나침반\",\n \"나흘\",\n \"낙엽\",\n \"난방\",\n \"날개\",\n \"날씨\",\n \"날짜\",\n \"남녀\",\n \"남대문\",\n \"남매\",\n \"남산\",\n \"남자\",\n \"남편\",\n \"남학생\",\n \"낭비\",\n \"낱말\",\n \"내년\",\n \"내용\",\n \"내일\",\n \"냄비\",\n \"냄새\",\n \"냇물\",\n \"냉동\",\n \"냉면\",\n \"냉방\",\n \"냉장고\",\n \"넥타이\",\n \"넷째\",\n \"노동\",\n \"노란색\",\n \"노력\",\n \"노인\",\n \"녹음\",\n \"녹차\",\n \"녹화\",\n \"논리\",\n \"논문\",\n \"논쟁\",\n \"놀이\",\n \"농구\",\n \"농담\",\n \"농민\",\n \"농부\",\n \"농업\",\n \"농장\",\n \"농촌\",\n \"높이\",\n \"눈동자\",\n \"눈물\",\n \"눈썹\",\n \"뉴욕\",\n \"느낌\",\n \"늑대\",\n \"능동적\",\n \"능력\",\n \"다방\",\n \"다양성\",\n \"다음\",\n \"다이어트\",\n \"다행\",\n \"단계\",\n \"단골\",\n \"단독\",\n \"단맛\",\n \"단순\",\n \"단어\",\n \"단위\",\n \"단점\",\n \"단체\",\n \"단추\",\n \"단편\",\n \"단풍\",\n \"달걀\",\n \"달러\",\n \"달력\",\n \"달리\",\n \"닭고기\",\n \"담당\",\n \"담배\",\n \"담요\",\n \"담임\",\n \"답변\",\n \"답장\",\n \"당근\",\n \"당분간\",\n \"당연히\",\n \"당장\",\n \"대규모\",\n \"대낮\",\n \"대단히\",\n \"대답\",\n \"대도시\",\n \"대략\",\n \"대량\",\n \"대륙\",\n \"대문\",\n \"대부분\",\n \"대신\",\n \"대응\",\n \"대장\",\n \"대전\",\n \"대접\",\n \"대중\",\n \"대책\",\n \"대출\",\n \"대충\",\n \"대통령\",\n \"대학\",\n \"대한민국\",\n \"대합실\",\n \"대형\",\n \"덩어리\",\n \"데이트\",\n \"도대체\",\n \"도덕\",\n \"도둑\",\n \"도망\",\n \"도서관\",\n \"도심\",\n \"도움\",\n \"도입\",\n \"도자기\",\n \"도저히\",\n \"도전\",\n \"도중\",\n \"도착\",\n \"독감\",\n \"독립\",\n \"독서\",\n \"독일\",\n \"독창적\",\n \"동화책\",\n \"뒷모습\",\n \"뒷산\",\n \"딸아이\",\n \"마누라\",\n \"마늘\",\n \"마당\",\n \"마라톤\",\n \"마련\",\n \"마무리\",\n \"마사지\",\n \"마약\",\n \"마요네즈\",\n \"마을\",\n \"마음\",\n \"마이크\",\n \"마중\",\n \"마지막\",\n \"마찬가지\",\n \"마찰\",\n \"마흔\",\n \"막걸리\",\n \"막내\",\n \"막상\",\n \"만남\",\n \"만두\",\n \"만세\",\n \"만약\",\n \"만일\",\n \"만점\",\n \"만족\",\n \"만화\",\n \"많이\",\n \"말기\",\n \"말씀\",\n \"말투\",\n \"맘대로\",\n \"망원경\",\n \"매년\",\n \"매달\",\n \"매력\",\n \"매번\",\n \"매스컴\",\n \"매일\",\n \"매장\",\n \"맥주\",\n \"먹이\",\n \"먼저\",\n \"먼지\",\n \"멀리\",\n \"메일\",\n \"며느리\",\n \"며칠\",\n \"면담\",\n \"멸치\",\n \"명단\",\n \"명령\",\n \"명예\",\n \"명의\",\n \"명절\",\n \"명칭\",\n \"명함\",\n \"모금\",\n \"모니터\",\n \"모델\",\n \"모든\",\n \"모범\",\n \"모습\",\n \"모양\",\n \"모임\",\n \"모조리\",\n \"모집\",\n \"모퉁이\",\n \"목걸이\",\n \"목록\",\n \"목사\",\n \"목소리\",\n \"목숨\",\n \"목적\",\n \"목표\",\n \"몰래\",\n \"몸매\",\n \"몸무게\",\n \"몸살\",\n \"몸속\",\n \"몸짓\",\n \"몸통\",\n \"몹시\",\n \"무관심\",\n \"무궁화\",\n \"무더위\",\n \"무덤\",\n \"무릎\",\n \"무슨\",\n \"무엇\",\n \"무역\",\n \"무용\",\n \"무조건\",\n \"무지개\",\n \"무척\",\n \"문구\",\n \"문득\",\n \"문법\",\n \"문서\",\n \"문제\",\n \"문학\",\n \"문화\",\n \"물가\",\n \"물건\",\n \"물결\",\n \"물고기\",\n \"물론\",\n \"물리학\",\n \"물음\",\n \"물질\",\n \"물체\",\n \"미국\",\n \"미디어\",\n \"미사일\",\n \"미술\",\n \"미역\",\n \"미용실\",\n \"미움\",\n \"미인\",\n \"미팅\",\n \"미혼\",\n \"민간\",\n \"민족\",\n \"민주\",\n \"믿음\",\n \"밀가루\",\n \"밀리미터\",\n \"밑바닥\",\n \"바가지\",\n \"바구니\",\n \"바나나\",\n \"바늘\",\n \"바닥\",\n \"바닷가\",\n \"바람\",\n \"바이러스\",\n \"바탕\",\n \"박물관\",\n \"박사\",\n \"박수\",\n \"반대\",\n \"반드시\",\n \"반말\",\n \"반발\",\n \"반성\",\n \"반응\",\n \"반장\",\n \"반죽\",\n \"반지\",\n \"반찬\",\n \"받침\",\n \"발가락\",\n \"발걸음\",\n \"발견\",\n \"발달\",\n \"발레\",\n \"발목\",\n \"발바닥\",\n \"발생\",\n \"발음\",\n \"발자국\",\n \"발전\",\n \"발톱\",\n \"발표\",\n \"밤하늘\",\n \"밥그릇\",\n \"밥맛\",\n \"밥상\",\n \"밥솥\",\n \"방금\",\n \"방면\",\n \"방문\",\n \"방바닥\",\n \"방법\",\n \"방송\",\n \"방식\",\n \"방안\",\n \"방울\",\n \"방지\",\n \"방학\",\n \"방해\",\n \"방향\",\n \"배경\",\n \"배꼽\",\n \"배달\",\n \"배드민턴\",\n \"백두산\",\n \"백색\",\n \"백성\",\n \"백인\",\n \"백제\",\n \"백화점\",\n \"버릇\",\n \"버섯\",\n \"버튼\",\n \"번개\",\n \"번역\",\n \"번지\",\n \"번호\",\n \"벌금\",\n \"벌레\",\n \"벌써\",\n \"범위\",\n \"범인\",\n \"범죄\",\n \"법률\",\n \"법원\",\n \"법적\",\n \"법칙\",\n \"베이징\",\n \"벨트\",\n \"변경\",\n \"변동\",\n \"변명\",\n \"변신\",\n \"변호사\",\n \"변화\",\n \"별도\",\n \"별명\",\n \"별일\",\n \"병실\",\n \"병아리\",\n \"병원\",\n \"보관\",\n \"보너스\",\n \"보라색\",\n \"보람\",\n \"보름\",\n \"보상\",\n \"보안\",\n \"보자기\",\n \"보장\",\n \"보전\",\n \"보존\",\n \"보통\",\n \"보편적\",\n \"보험\",\n \"복도\",\n \"복사\",\n \"복숭아\",\n \"복습\",\n \"볶음\",\n \"본격적\",\n \"본래\",\n \"본부\",\n \"본사\",\n \"본성\",\n \"본인\",\n \"본질\",\n \"볼펜\",\n \"봉사\",\n \"봉지\",\n \"봉투\",\n \"부근\",\n \"부끄러움\",\n \"부담\",\n \"부동산\",\n \"부문\",\n \"부분\",\n \"부산\",\n \"부상\",\n \"부엌\",\n \"부인\",\n \"부작용\",\n \"부장\",\n \"부정\",\n \"부족\",\n \"부지런히\",\n \"부친\",\n \"부탁\",\n \"부품\",\n \"부회장\",\n \"북부\",\n \"북한\",\n \"분노\",\n \"분량\",\n \"분리\",\n \"분명\",\n \"분석\",\n \"분야\",\n \"분위기\",\n \"분필\",\n \"분홍색\",\n \"불고기\",\n \"불과\",\n \"불교\",\n \"불꽃\",\n \"불만\",\n \"불법\",\n \"불빛\",\n \"불안\",\n \"불이익\",\n \"불행\",\n \"브랜드\",\n \"비극\",\n \"비난\",\n \"비닐\",\n \"비둘기\",\n \"비디오\",\n \"비로소\",\n \"비만\",\n \"비명\",\n \"비밀\",\n \"비바람\",\n \"비빔밥\",\n \"비상\",\n \"비용\",\n \"비율\",\n \"비중\",\n \"비타민\",\n \"비판\",\n \"빌딩\",\n \"빗물\",\n \"빗방울\",\n \"빗줄기\",\n \"빛깔\",\n \"빨간색\",\n \"빨래\",\n \"빨리\",\n \"사건\",\n \"사계절\",\n \"사나이\",\n \"사냥\",\n \"사람\",\n \"사랑\",\n \"사립\",\n \"사모님\",\n \"사물\",\n \"사방\",\n \"사상\",\n \"사생활\",\n \"사설\",\n \"사슴\",\n \"사실\",\n \"사업\",\n \"사용\",\n \"사월\",\n \"사장\",\n \"사전\",\n \"사진\",\n \"사촌\",\n \"사춘기\",\n \"사탕\",\n \"사투리\",\n \"사흘\",\n \"산길\",\n \"산부인과\",\n \"산업\",\n \"산책\",\n \"살림\",\n \"살인\",\n \"살짝\",\n \"삼계탕\",\n \"삼국\",\n \"삼십\",\n \"삼월\",\n \"삼촌\",\n \"상관\",\n \"상금\",\n \"상대\",\n \"상류\",\n \"상반기\",\n \"상상\",\n \"상식\",\n \"상업\",\n \"상인\",\n \"상자\",\n \"상점\",\n \"상처\",\n \"상추\",\n \"상태\",\n \"상표\",\n \"상품\",\n \"상황\",\n \"새벽\",\n \"색깔\",\n \"색연필\",\n \"생각\",\n \"생명\",\n \"생물\",\n \"생방송\",\n \"생산\",\n \"생선\",\n \"생신\",\n \"생일\",\n \"생활\",\n \"서랍\",\n \"서른\",\n \"서명\",\n \"서민\",\n \"서비스\",\n \"서양\",\n \"서울\",\n \"서적\",\n \"서점\",\n \"서쪽\",\n \"서클\",\n \"석사\",\n \"석유\",\n \"선거\",\n \"선물\",\n \"선배\",\n \"선생\",\n \"선수\",\n \"선원\",\n \"선장\",\n \"선전\",\n \"선택\",\n \"선풍기\",\n \"설거지\",\n \"설날\",\n \"설렁탕\",\n \"설명\",\n \"설문\",\n \"설사\",\n \"설악산\",\n \"설치\",\n \"설탕\",\n \"섭씨\",\n \"성공\",\n \"성당\",\n \"성명\",\n \"성별\",\n \"성인\",\n \"성장\",\n \"성적\",\n \"성질\",\n \"성함\",\n \"세금\",\n \"세미나\",\n \"세상\",\n \"세월\",\n \"세종대왕\",\n \"세탁\",\n \"센터\",\n \"센티미터\",\n \"셋째\",\n \"소규모\",\n \"소극적\",\n \"소금\",\n \"소나기\",\n \"소년\",\n \"소득\",\n \"소망\",\n \"소문\",\n \"소설\",\n \"소속\",\n \"소아과\",\n \"소용\",\n \"소원\",\n \"소음\",\n \"소중히\",\n \"소지품\",\n \"소질\",\n \"소풍\",\n \"소형\",\n \"속담\",\n \"속도\",\n \"속옷\",\n \"손가락\",\n \"손길\",\n \"손녀\",\n \"손님\",\n \"손등\",\n \"손목\",\n \"손뼉\",\n \"손실\",\n \"손질\",\n \"손톱\",\n \"손해\",\n \"솔직히\",\n \"솜씨\",\n \"송아지\",\n \"송이\",\n \"송편\",\n \"쇠고기\",\n \"쇼핑\",\n \"수건\",\n \"수년\",\n \"수단\",\n \"수돗물\",\n \"수동적\",\n \"수면\",\n \"수명\",\n \"수박\",\n \"수상\",\n \"수석\",\n \"수술\",\n \"수시로\",\n \"수업\",\n \"수염\",\n \"수영\",\n \"수입\",\n \"수준\",\n \"수집\",\n \"수출\",\n \"수컷\",\n \"수필\",\n \"수학\",\n \"수험생\",\n \"수화기\",\n \"숙녀\",\n \"숙소\",\n \"숙제\",\n \"순간\",\n \"순서\",\n \"순수\",\n \"순식간\",\n \"순위\",\n \"숟가락\",\n \"술병\",\n \"술집\",\n \"숫자\",\n \"스님\",\n \"스물\",\n \"스스로\",\n \"스승\",\n \"스웨터\",\n \"스위치\",\n \"스케이트\",\n \"스튜디오\",\n \"스트레스\",\n \"스포츠\",\n \"슬쩍\",\n \"슬픔\",\n \"습관\",\n \"습기\",\n \"승객\",\n \"승리\",\n \"승부\",\n \"승용차\",\n \"승진\",\n \"시각\",\n \"시간\",\n \"시골\",\n \"시금치\",\n \"시나리오\",\n \"시댁\",\n \"시리즈\",\n \"시멘트\",\n \"시민\",\n \"시부모\",\n \"시선\",\n \"시설\",\n \"시스템\",\n \"시아버지\",\n \"시어머니\",\n \"시월\",\n \"시인\",\n \"시일\",\n \"시작\",\n \"시장\",\n \"시절\",\n \"시점\",\n \"시중\",\n \"시즌\",\n \"시집\",\n \"시청\",\n \"시합\",\n \"시험\",\n \"식구\",\n \"식기\",\n \"식당\",\n \"식량\",\n \"식료품\",\n \"식물\",\n \"식빵\",\n \"식사\",\n \"식생활\",\n \"식초\",\n \"식탁\",\n \"식품\",\n \"신고\",\n \"신규\",\n \"신념\",\n \"신문\",\n \"신발\",\n \"신비\",\n \"신사\",\n \"신세\",\n \"신용\",\n \"신제품\",\n \"신청\",\n \"신체\",\n \"신화\",\n \"실감\",\n \"실내\",\n \"실력\",\n \"실례\",\n \"실망\",\n \"실수\",\n \"실습\",\n \"실시\",\n \"실장\",\n \"실정\",\n \"실질적\",\n \"실천\",\n \"실체\",\n \"실컷\",\n \"실태\",\n \"실패\",\n \"실험\",\n \"실현\",\n \"심리\",\n \"심부름\",\n \"심사\",\n \"심장\",\n \"심정\",\n \"심판\",\n \"쌍둥이\",\n \"씨름\",\n \"씨앗\",\n \"아가씨\",\n \"아나운서\",\n \"아드님\",\n \"아들\",\n \"아쉬움\",\n \"아스팔트\",\n \"아시아\",\n \"아울러\",\n \"아저씨\",\n \"아줌마\",\n \"아직\",\n \"아침\",\n \"아파트\",\n \"아프리카\",\n \"아픔\",\n \"아홉\",\n \"아흔\",\n \"악기\",\n \"악몽\",\n \"악수\",\n \"안개\",\n \"안경\",\n \"안과\",\n \"안내\",\n \"안녕\",\n \"안동\",\n \"안방\",\n \"안부\",\n \"안주\",\n \"알루미늄\",\n \"알코올\",\n \"암시\",\n \"암컷\",\n \"압력\",\n \"앞날\",\n \"앞문\",\n \"애인\",\n \"애정\",\n \"액수\",\n \"앨범\",\n \"야간\",\n \"야단\",\n \"야옹\",\n \"약간\",\n \"약국\",\n \"약속\",\n \"약수\",\n \"약점\",\n \"약품\",\n \"약혼녀\",\n \"양념\",\n \"양력\",\n \"양말\",\n \"양배추\",\n \"양주\",\n \"양파\",\n \"어둠\",\n \"어려움\",\n \"어른\",\n \"어젯밤\",\n \"어쨌든\",\n \"어쩌다가\",\n \"어쩐지\",\n \"언니\",\n \"언덕\",\n \"언론\",\n \"언어\",\n \"얼굴\",\n \"얼른\",\n \"얼음\",\n \"얼핏\",\n \"엄마\",\n \"업무\",\n \"업종\",\n \"업체\",\n \"엉덩이\",\n \"엉망\",\n \"엉터리\",\n \"엊그제\",\n \"에너지\",\n \"에어컨\",\n \"엔진\",\n \"여건\",\n \"여고생\",\n \"여관\",\n \"여군\",\n \"여권\",\n \"여대생\",\n \"여덟\",\n \"여동생\",\n \"여든\",\n \"여론\",\n \"여름\",\n \"여섯\",\n \"여성\",\n \"여왕\",\n \"여인\",\n \"여전히\",\n \"여직원\",\n \"여학생\",\n \"여행\",\n \"역사\",\n \"역시\",\n \"역할\",\n \"연결\",\n \"연구\",\n \"연극\",\n \"연기\",\n \"연락\",\n \"연설\",\n \"연세\",\n \"연속\",\n \"연습\",\n \"연애\",\n \"연예인\",\n \"연인\",\n \"연장\",\n \"연주\",\n \"연출\",\n \"연필\",\n \"연합\",\n \"연휴\",\n \"열기\",\n \"열매\",\n \"열쇠\",\n \"열심히\",\n \"열정\",\n \"열차\",\n \"열흘\",\n \"염려\",\n \"엽서\",\n \"영국\",\n \"영남\",\n \"영상\",\n \"영양\",\n \"영역\",\n \"영웅\",\n \"영원히\",\n \"영하\",\n \"영향\",\n \"영혼\",\n \"영화\",\n \"옆구리\",\n \"옆방\",\n \"옆집\",\n \"예감\",\n \"예금\",\n \"예방\",\n \"예산\",\n \"예상\",\n \"예선\",\n \"예술\",\n \"예습\",\n \"예식장\",\n \"예약\",\n \"예전\",\n \"예절\",\n \"예정\",\n \"예컨대\",\n \"옛날\",\n \"오늘\",\n \"오락\",\n \"오랫동안\",\n \"오렌지\",\n \"오로지\",\n \"오른발\",\n \"오븐\",\n \"오십\",\n \"오염\",\n \"오월\",\n \"오전\",\n \"오직\",\n \"오징어\",\n \"오페라\",\n \"오피스텔\",\n \"오히려\",\n \"옥상\",\n \"옥수수\",\n \"온갖\",\n \"온라인\",\n \"온몸\",\n \"온종일\",\n \"온통\",\n \"올가을\",\n \"올림픽\",\n \"올해\",\n \"옷차림\",\n \"와이셔츠\",\n \"와인\",\n \"완성\",\n \"완전\",\n \"왕비\",\n \"왕자\",\n \"왜냐하면\",\n \"왠지\",\n \"외갓집\",\n \"외국\",\n \"외로움\",\n \"외삼촌\",\n \"외출\",\n \"외침\",\n \"외할머니\",\n \"왼발\",\n \"왼손\",\n \"왼쪽\",\n \"요금\",\n \"요일\",\n \"요즘\",\n \"요청\",\n \"용기\",\n \"용서\",\n \"용어\",\n \"우산\",\n \"우선\",\n \"우승\",\n \"우연히\",\n \"우정\",\n \"우체국\",\n \"우편\",\n \"운동\",\n \"운명\",\n \"운반\",\n \"운전\",\n \"운행\",\n \"울산\",\n \"울음\",\n \"움직임\",\n \"웃어른\",\n \"웃음\",\n \"워낙\",\n \"원고\",\n \"원래\",\n \"원서\",\n \"원숭이\",\n \"원인\",\n \"원장\",\n \"원피스\",\n \"월급\",\n \"월드컵\",\n \"월세\",\n \"월요일\",\n \"웨이터\",\n \"위반\",\n \"위법\",\n \"위성\",\n \"위원\",\n \"위험\",\n \"위협\",\n \"윗사람\",\n \"유난히\",\n \"유럽\",\n \"유명\",\n \"유물\",\n \"유산\",\n \"유적\",\n \"유치원\",\n \"유학\",\n \"유행\",\n \"유형\",\n \"육군\",\n \"육상\",\n \"육십\",\n \"육체\",\n \"은행\",\n \"음력\",\n \"음료\",\n \"음반\",\n \"음성\",\n \"음식\",\n \"음악\",\n \"음주\",\n \"의견\",\n \"의논\",\n \"의문\",\n \"의복\",\n \"의식\",\n \"의심\",\n \"의외로\",\n \"의욕\",\n \"의원\",\n \"의학\",\n \"이것\",\n \"이곳\",\n \"이념\",\n \"이놈\",\n \"이달\",\n \"이대로\",\n \"이동\",\n \"이렇게\",\n \"이력서\",\n \"이론적\",\n \"이름\",\n \"이민\",\n \"이발소\",\n \"이별\",\n \"이불\",\n \"이빨\",\n \"이상\",\n \"이성\",\n \"이슬\",\n \"이야기\",\n \"이용\",\n \"이웃\",\n \"이월\",\n \"이윽고\",\n \"이익\",\n \"이전\",\n \"이중\",\n \"이튿날\",\n \"이틀\",\n \"이혼\",\n \"인간\",\n \"인격\",\n \"인공\",\n \"인구\",\n \"인근\",\n \"인기\",\n \"인도\",\n \"인류\",\n \"인물\",\n \"인생\",\n \"인쇄\",\n \"인연\",\n \"인원\",\n \"인재\",\n \"인종\",\n \"인천\",\n \"인체\",\n \"인터넷\",\n \"인하\",\n \"인형\",\n \"일곱\",\n \"일기\",\n \"일단\",\n \"일대\",\n \"일등\",\n \"일반\",\n \"일본\",\n \"일부\",\n \"일상\",\n \"일생\",\n \"일손\",\n \"일요일\",\n \"일월\",\n \"일정\",\n \"일종\",\n \"일주일\",\n \"일찍\",\n \"일체\",\n \"일치\",\n \"일행\",\n \"일회용\",\n \"임금\",\n \"임무\",\n \"입대\",\n \"입력\",\n \"입맛\",\n \"입사\",\n \"입술\",\n \"입시\",\n \"입원\",\n \"입장\",\n \"입학\",\n \"자가용\",\n \"자격\",\n \"자극\",\n \"자동\",\n \"자랑\",\n \"자부심\",\n \"자식\",\n \"자신\",\n \"자연\",\n \"자원\",\n \"자율\",\n \"자전거\",\n \"자정\",\n \"자존심\",\n \"자판\",\n \"작가\",\n \"작년\",\n \"작성\",\n \"작업\",\n \"작용\",\n \"작은딸\",\n \"작품\",\n \"잔디\",\n \"잔뜩\",\n \"잔치\",\n \"잘못\",\n \"잠깐\",\n \"잠수함\",\n \"잠시\",\n \"잠옷\",\n \"잠자리\",\n \"잡지\",\n \"장관\",\n \"장군\",\n \"장기간\",\n \"장래\",\n \"장례\",\n \"장르\",\n \"장마\",\n \"장면\",\n \"장모\",\n \"장미\",\n \"장비\",\n \"장사\",\n \"장소\",\n \"장식\",\n \"장애인\",\n \"장인\",\n \"장점\",\n \"장차\",\n \"장학금\",\n \"재능\",\n \"재빨리\",\n \"재산\",\n \"재생\",\n \"재작년\",\n \"재정\",\n \"재채기\",\n \"재판\",\n \"재학\",\n \"재활용\",\n \"저것\",\n \"저고리\",\n \"저곳\",\n \"저녁\",\n \"저런\",\n \"저렇게\",\n \"저번\",\n \"저울\",\n \"저절로\",\n \"저축\",\n \"적극\",\n \"적당히\",\n \"적성\",\n \"적용\",\n \"적응\",\n \"전개\",\n \"전공\",\n \"전기\",\n \"전달\",\n \"전라도\",\n \"전망\",\n \"전문\",\n \"전반\",\n \"전부\",\n \"전세\",\n \"전시\",\n \"전용\",\n \"전자\",\n \"전쟁\",\n \"전주\",\n \"전철\",\n \"전체\",\n \"전통\",\n \"전혀\",\n \"전후\",\n \"절대\",\n \"절망\",\n \"절반\",\n \"절약\",\n \"절차\",\n \"점검\",\n \"점수\",\n \"점심\",\n \"점원\",\n \"점점\",\n \"점차\",\n \"접근\",\n \"접시\",\n \"접촉\",\n \"젓가락\",\n \"정거장\",\n \"정도\",\n \"정류장\",\n \"정리\",\n \"정말\",\n \"정면\",\n \"정문\",\n \"정반대\",\n \"정보\",\n \"정부\",\n \"정비\",\n \"정상\",\n \"정성\",\n \"정오\",\n \"정원\",\n \"정장\",\n \"정지\",\n \"정치\",\n \"정확히\",\n \"제공\",\n \"제과점\",\n \"제대로\",\n \"제목\",\n \"제발\",\n \"제법\",\n \"제삿날\",\n \"제안\",\n \"제일\",\n \"제작\",\n \"제주도\",\n \"제출\",\n \"제품\",\n \"제한\",\n \"조각\",\n \"조건\",\n \"조금\",\n \"조깅\",\n \"조명\",\n \"조미료\",\n \"조상\",\n \"조선\",\n \"조용히\",\n \"조절\",\n \"조정\",\n \"조직\",\n \"존댓말\",\n \"존재\",\n \"졸업\",\n \"졸음\",\n \"종교\",\n \"종로\",\n \"종류\",\n \"종소리\",\n \"종업원\",\n \"종종\",\n \"종합\",\n \"좌석\",\n \"죄인\",\n \"주관적\",\n \"주름\",\n \"주말\",\n \"주머니\",\n \"주먹\",\n \"주문\",\n \"주민\",\n \"주방\",\n \"주변\",\n \"주식\",\n \"주인\",\n \"주일\",\n \"주장\",\n \"주전자\",\n \"주택\",\n \"준비\",\n \"줄거리\",\n \"줄기\",\n \"줄무늬\",\n \"중간\",\n \"중계방송\",\n \"중국\",\n \"중년\",\n \"중단\",\n \"중독\",\n \"중반\",\n \"중부\",\n \"중세\",\n \"중소기업\",\n \"중순\",\n \"중앙\",\n \"중요\",\n \"중학교\",\n \"즉석\",\n \"즉시\",\n \"즐거움\",\n \"증가\",\n \"증거\",\n \"증권\",\n \"증상\",\n \"증세\",\n \"지각\",\n \"지갑\",\n \"지경\",\n \"지극히\",\n \"지금\",\n \"지급\",\n \"지능\",\n \"지름길\",\n \"지리산\",\n \"지방\",\n \"지붕\",\n \"지식\",\n \"지역\",\n \"지우개\",\n \"지원\",\n \"지적\",\n \"지점\",\n \"지진\",\n \"지출\",\n \"직선\",\n \"직업\",\n \"직원\",\n \"직장\",\n \"진급\",\n \"진동\",\n \"진로\",\n \"진료\",\n \"진리\",\n \"진짜\",\n \"진찰\",\n \"진출\",\n \"진통\",\n \"진행\",\n \"질문\",\n \"질병\",\n \"질서\",\n \"짐작\",\n \"집단\",\n \"집안\",\n \"집중\",\n \"짜증\",\n \"찌꺼기\",\n \"차남\",\n \"차라리\",\n \"차량\",\n \"차림\",\n \"차별\",\n \"차선\",\n \"차츰\",\n \"착각\",\n \"찬물\",\n \"찬성\",\n \"참가\",\n \"참기름\",\n \"참새\",\n \"참석\",\n \"참여\",\n \"참외\",\n \"참조\",\n \"찻잔\",\n \"창가\",\n \"창고\",\n \"창구\",\n \"창문\",\n \"창밖\",\n \"창작\",\n \"창조\",\n \"채널\",\n \"채점\",\n \"책가방\",\n \"책방\",\n \"책상\",\n \"책임\",\n \"챔피언\",\n \"처벌\",\n \"처음\",\n \"천국\",\n \"천둥\",\n \"천장\",\n \"천재\",\n \"천천히\",\n \"철도\",\n \"철저히\",\n \"철학\",\n \"첫날\",\n \"첫째\",\n \"청년\",\n \"청바지\",\n \"청소\",\n \"청춘\",\n \"체계\",\n \"체력\",\n \"체온\",\n \"체육\",\n \"체중\",\n \"체험\",\n \"초등학생\",\n \"초반\",\n \"초밥\",\n \"초상화\",\n \"초순\",\n \"초여름\",\n \"초원\",\n \"초저녁\",\n \"초점\",\n \"초청\",\n \"초콜릿\",\n \"촛불\",\n \"총각\",\n \"총리\",\n \"총장\",\n \"촬영\",\n \"최근\",\n \"최상\",\n \"최선\",\n \"최신\",\n \"최악\",\n \"최종\",\n \"추석\",\n \"추억\",\n \"추진\",\n \"추천\",\n \"추측\",\n \"축구\",\n \"축소\",\n \"축제\",\n \"축하\",\n \"출근\",\n \"출발\",\n \"출산\",\n \"출신\",\n \"출연\",\n \"출입\",\n \"출장\",\n \"출판\",\n \"충격\",\n \"충고\",\n \"충돌\",\n \"충분히\",\n \"충청도\",\n \"취업\",\n \"취직\",\n \"취향\",\n \"치약\",\n \"친구\",\n \"친척\",\n \"칠십\",\n \"칠월\",\n \"칠판\",\n \"침대\",\n \"침묵\",\n \"침실\",\n \"칫솔\",\n \"칭찬\",\n \"카메라\",\n \"카운터\",\n \"칼국수\",\n \"캐릭터\",\n \"캠퍼스\",\n \"캠페인\",\n \"커튼\",\n \"컨디션\",\n \"컬러\",\n \"컴퓨터\",\n \"코끼리\",\n \"코미디\",\n \"콘서트\",\n \"콜라\",\n \"콤플렉스\",\n \"콩나물\",\n \"쾌감\",\n \"쿠데타\",\n \"크림\",\n \"큰길\",\n \"큰딸\",\n \"큰소리\",\n \"큰아들\",\n \"큰어머니\",\n \"큰일\",\n \"큰절\",\n \"클래식\",\n \"클럽\",\n \"킬로\",\n \"타입\",\n \"타자기\",\n \"탁구\",\n \"탁자\",\n \"탄생\",\n \"태권도\",\n \"태양\",\n \"태풍\",\n \"택시\",\n \"탤런트\",\n \"터널\",\n \"터미널\",\n \"테니스\",\n \"테스트\",\n \"테이블\",\n \"텔레비전\",\n \"토론\",\n \"토마토\",\n \"토요일\",\n \"통계\",\n \"통과\",\n \"통로\",\n \"통신\",\n \"통역\",\n \"통일\",\n \"통장\",\n \"통제\",\n \"통증\",\n \"통합\",\n \"통화\",\n \"퇴근\",\n \"퇴원\",\n \"퇴직금\",\n \"튀김\",\n \"트럭\",\n \"특급\",\n \"특별\",\n \"특성\",\n \"특수\",\n \"특징\",\n \"특히\",\n \"튼튼히\",\n \"티셔츠\",\n \"파란색\",\n \"파일\",\n \"파출소\",\n \"판결\",\n \"판단\",\n \"판매\",\n \"판사\",\n \"팔십\",\n \"팔월\",\n \"팝송\",\n \"패션\",\n \"팩스\",\n \"팩시밀리\",\n \"팬티\",\n \"퍼센트\",\n \"페인트\",\n \"편견\",\n \"편의\",\n \"편지\",\n \"편히\",\n \"평가\",\n \"평균\",\n \"평생\",\n \"평소\",\n \"평양\",\n \"평일\",\n \"평화\",\n \"포스터\",\n \"포인트\",\n \"포장\",\n \"포함\",\n \"표면\",\n \"표정\",\n \"표준\",\n \"표현\",\n \"품목\",\n \"품질\",\n \"풍경\",\n \"풍속\",\n \"풍습\",\n \"프랑스\",\n \"프린터\",\n \"플라스틱\",\n \"피곤\",\n \"피망\",\n \"피아노\",\n \"필름\",\n \"필수\",\n \"필요\",\n \"필자\",\n \"필통\",\n \"핑계\",\n \"하느님\",\n \"하늘\",\n \"하드웨어\",\n \"하룻밤\",\n \"하반기\",\n \"하숙집\",\n \"하순\",\n \"하여튼\",\n \"하지만\",\n \"하천\",\n \"하품\",\n \"하필\",\n \"학과\",\n \"학교\",\n \"학급\",\n \"학기\",\n \"학년\",\n \"학력\",\n \"학번\",\n \"학부모\",\n \"학비\",\n \"학생\",\n \"학술\",\n \"학습\",\n \"학용품\",\n \"학원\",\n \"학위\",\n \"학자\",\n \"학점\",\n \"한계\",\n \"한글\",\n \"한꺼번에\",\n \"한낮\",\n \"한눈\",\n \"한동안\",\n \"한때\",\n \"한라산\",\n \"한마디\",\n \"한문\",\n \"한번\",\n \"한복\",\n \"한식\",\n \"한여름\",\n \"한쪽\",\n \"할머니\",\n \"할아버지\",\n \"할인\",\n \"함께\",\n \"함부로\",\n \"합격\",\n \"합리적\",\n \"항공\",\n \"항구\",\n \"항상\",\n \"항의\",\n \"해결\",\n \"해군\",\n \"해답\",\n \"해당\",\n \"해물\",\n \"해석\",\n \"해설\",\n \"해수욕장\",\n \"해안\",\n \"핵심\",\n \"핸드백\",\n \"햄버거\",\n \"햇볕\",\n \"햇살\",\n \"행동\",\n \"행복\",\n \"행사\",\n \"행운\",\n \"행위\",\n \"향기\",\n \"향상\",\n \"향수\",\n \"허락\",\n \"허용\",\n \"헬기\",\n \"현관\",\n \"현금\",\n \"현대\",\n \"현상\",\n \"현실\",\n \"현장\",\n \"현재\",\n \"현지\",\n \"혈액\",\n \"협력\",\n \"형부\",\n \"형사\",\n \"형수\",\n \"형식\",\n \"형제\",\n \"형태\",\n \"형편\",\n \"혜택\",\n \"호기심\",\n \"호남\",\n \"호랑이\",\n \"호박\",\n \"호텔\",\n \"호흡\",\n \"혹시\",\n \"홀로\",\n \"홈페이지\",\n \"홍보\",\n \"홍수\",\n \"홍차\",\n \"화면\",\n \"화분\",\n \"화살\",\n \"화요일\",\n \"화장\",\n \"화학\",\n \"확보\",\n \"확인\",\n \"확장\",\n \"확정\",\n \"환갑\",\n \"환경\",\n \"환영\",\n \"환율\",\n \"환자\",\n \"활기\",\n \"활동\",\n \"활발히\",\n \"활용\",\n \"활짝\",\n \"회견\",\n \"회관\",\n \"회복\",\n \"회색\",\n \"회원\",\n \"회장\",\n \"회전\",\n \"횟수\",\n \"횡단보도\",\n \"효율적\",\n \"후반\",\n \"후춧가루\",\n \"훈련\",\n \"훨씬\",\n \"휴식\",\n \"휴일\",\n \"흉내\",\n \"흐름\",\n \"흑백\",\n \"흑인\",\n \"흔적\",\n \"흔히\",\n \"흥미\",\n \"흥분\",\n \"희곡\",\n \"희망\",\n \"희생\",\n \"흰색\",\n \"힘껏\"\n]\n","[\n \"ábaco\",\n \"abdomen\",\n \"abeja\",\n \"abierto\",\n \"abogado\",\n \"abono\",\n \"aborto\",\n \"abrazo\",\n \"abrir\",\n \"abuelo\",\n \"abuso\",\n \"acabar\",\n \"academia\",\n \"acceso\",\n \"acción\",\n \"aceite\",\n \"acelga\",\n \"acento\",\n \"aceptar\",\n \"ácido\",\n \"aclarar\",\n \"acné\",\n \"acoger\",\n \"acoso\",\n \"activo\",\n \"acto\",\n \"actriz\",\n \"actuar\",\n \"acudir\",\n \"acuerdo\",\n \"acusar\",\n \"adicto\",\n \"admitir\",\n \"adoptar\",\n \"adorno\",\n \"aduana\",\n \"adulto\",\n \"aéreo\",\n \"afectar\",\n \"afición\",\n \"afinar\",\n \"afirmar\",\n \"ágil\",\n \"agitar\",\n \"agonía\",\n \"agosto\",\n \"agotar\",\n \"agregar\",\n \"agrio\",\n \"agua\",\n \"agudo\",\n \"águila\",\n \"aguja\",\n \"ahogo\",\n \"ahorro\",\n \"aire\",\n \"aislar\",\n \"ajedrez\",\n \"ajeno\",\n \"ajuste\",\n \"alacrán\",\n \"alambre\",\n \"alarma\",\n \"alba\",\n \"álbum\",\n \"alcalde\",\n \"aldea\",\n \"alegre\",\n \"alejar\",\n \"alerta\",\n \"aleta\",\n \"alfiler\",\n \"alga\",\n \"algodón\",\n \"aliado\",\n \"aliento\",\n \"alivio\",\n \"alma\",\n \"almeja\",\n \"almíbar\",\n \"altar\",\n \"alteza\",\n \"altivo\",\n \"alto\",\n \"altura\",\n \"alumno\",\n \"alzar\",\n \"amable\",\n \"amante\",\n \"amapola\",\n \"amargo\",\n \"amasar\",\n \"ámbar\",\n \"ámbito\",\n \"ameno\",\n \"amigo\",\n \"amistad\",\n \"amor\",\n \"amparo\",\n \"amplio\",\n \"ancho\",\n \"anciano\",\n \"ancla\",\n \"andar\",\n \"andén\",\n \"anemia\",\n \"ángulo\",\n \"anillo\",\n \"ánimo\",\n \"anís\",\n \"anotar\",\n \"antena\",\n \"antiguo\",\n \"antojo\",\n \"anual\",\n \"anular\",\n \"anuncio\",\n \"añadir\",\n \"añejo\",\n \"año\",\n \"apagar\",\n \"aparato\",\n \"apetito\",\n \"apio\",\n \"aplicar\",\n \"apodo\",\n \"aporte\",\n \"apoyo\",\n \"aprender\",\n \"aprobar\",\n \"apuesta\",\n \"apuro\",\n \"arado\",\n \"araña\",\n \"arar\",\n \"árbitro\",\n \"árbol\",\n \"arbusto\",\n \"archivo\",\n \"arco\",\n \"arder\",\n \"ardilla\",\n \"arduo\",\n \"área\",\n \"árido\",\n \"aries\",\n \"armonía\",\n \"arnés\",\n \"aroma\",\n \"arpa\",\n \"arpón\",\n \"arreglo\",\n \"arroz\",\n \"arruga\",\n \"arte\",\n \"artista\",\n \"asa\",\n \"asado\",\n \"asalto\",\n \"ascenso\",\n \"asegurar\",\n \"aseo\",\n \"asesor\",\n \"asiento\",\n \"asilo\",\n \"asistir\",\n \"asno\",\n \"asombro\",\n \"áspero\",\n \"astilla\",\n \"astro\",\n \"astuto\",\n \"asumir\",\n \"asunto\",\n \"atajo\",\n \"ataque\",\n \"atar\",\n \"atento\",\n \"ateo\",\n \"ático\",\n \"atleta\",\n \"átomo\",\n \"atraer\",\n \"atroz\",\n \"atún\",\n \"audaz\",\n \"audio\",\n \"auge\",\n \"aula\",\n \"aumento\",\n \"ausente\",\n \"autor\",\n \"aval\",\n \"avance\",\n \"avaro\",\n \"ave\",\n \"avellana\",\n \"avena\",\n \"avestruz\",\n \"avión\",\n \"aviso\",\n \"ayer\",\n \"ayuda\",\n \"ayuno\",\n \"azafrán\",\n \"azar\",\n \"azote\",\n \"azúcar\",\n \"azufre\",\n \"azul\",\n \"baba\",\n \"babor\",\n \"bache\",\n \"bahía\",\n \"baile\",\n \"bajar\",\n \"balanza\",\n \"balcón\",\n \"balde\",\n \"bambú\",\n \"banco\",\n \"banda\",\n \"baño\",\n \"barba\",\n \"barco\",\n \"barniz\",\n \"barro\",\n \"báscula\",\n \"bastón\",\n \"basura\",\n \"batalla\",\n \"batería\",\n \"batir\",\n \"batuta\",\n \"baúl\",\n \"bazar\",\n \"bebé\",\n \"bebida\",\n \"bello\",\n \"besar\",\n \"beso\",\n \"bestia\",\n \"bicho\",\n \"bien\",\n \"bingo\",\n \"blanco\",\n \"bloque\",\n \"blusa\",\n \"boa\",\n \"bobina\",\n \"bobo\",\n \"boca\",\n \"bocina\",\n \"boda\",\n \"bodega\",\n \"boina\",\n \"bola\",\n \"bolero\",\n \"bolsa\",\n \"bomba\",\n \"bondad\",\n \"bonito\",\n \"bono\",\n \"bonsái\",\n \"borde\",\n \"borrar\",\n \"bosque\",\n \"bote\",\n \"botín\",\n \"bóveda\",\n \"bozal\",\n \"bravo\",\n \"brazo\",\n \"brecha\",\n \"breve\",\n \"brillo\",\n \"brinco\",\n \"brisa\",\n \"broca\",\n \"broma\",\n \"bronce\",\n \"brote\",\n \"bruja\",\n \"brusco\",\n \"bruto\",\n \"buceo\",\n \"bucle\",\n \"bueno\",\n \"buey\",\n \"bufanda\",\n \"bufón\",\n \"búho\",\n \"buitre\",\n \"bulto\",\n \"burbuja\",\n \"burla\",\n \"burro\",\n \"buscar\",\n \"butaca\",\n \"buzón\",\n \"caballo\",\n \"cabeza\",\n \"cabina\",\n \"cabra\",\n \"cacao\",\n \"cadáver\",\n \"cadena\",\n \"caer\",\n \"café\",\n \"caída\",\n \"caimán\",\n \"caja\",\n \"cajón\",\n \"cal\",\n \"calamar\",\n \"calcio\",\n \"caldo\",\n \"calidad\",\n \"calle\",\n \"calma\",\n \"calor\",\n \"calvo\",\n \"cama\",\n \"cambio\",\n \"camello\",\n \"camino\",\n \"campo\",\n \"cáncer\",\n \"candil\",\n \"canela\",\n \"canguro\",\n \"canica\",\n \"canto\",\n \"caña\",\n \"cañón\",\n \"caoba\",\n \"caos\",\n \"capaz\",\n \"capitán\",\n \"capote\",\n \"captar\",\n \"capucha\",\n \"cara\",\n \"carbón\",\n \"cárcel\",\n \"careta\",\n \"carga\",\n \"cariño\",\n \"carne\",\n \"carpeta\",\n \"carro\",\n \"carta\",\n \"casa\",\n \"casco\",\n \"casero\",\n \"caspa\",\n \"castor\",\n \"catorce\",\n \"catre\",\n \"caudal\",\n \"causa\",\n \"cazo\",\n \"cebolla\",\n \"ceder\",\n \"cedro\",\n \"celda\",\n \"célebre\",\n \"celoso\",\n \"célula\",\n \"cemento\",\n \"ceniza\",\n \"centro\",\n \"cerca\",\n \"cerdo\",\n \"cereza\",\n \"cero\",\n \"cerrar\",\n \"certeza\",\n \"césped\",\n \"cetro\",\n \"chacal\",\n \"chaleco\",\n \"champú\",\n \"chancla\",\n \"chapa\",\n \"charla\",\n \"chico\",\n \"chiste\",\n \"chivo\",\n \"choque\",\n \"choza\",\n \"chuleta\",\n \"chupar\",\n \"ciclón\",\n \"ciego\",\n \"cielo\",\n \"cien\",\n \"cierto\",\n \"cifra\",\n \"cigarro\",\n \"cima\",\n \"cinco\",\n \"cine\",\n \"cinta\",\n \"ciprés\",\n \"circo\",\n \"ciruela\",\n \"cisne\",\n \"cita\",\n \"ciudad\",\n \"clamor\",\n \"clan\",\n \"claro\",\n \"clase\",\n \"clave\",\n \"cliente\",\n \"clima\",\n \"clínica\",\n \"cobre\",\n \"cocción\",\n \"cochino\",\n \"cocina\",\n \"coco\",\n \"código\",\n \"codo\",\n \"cofre\",\n \"coger\",\n \"cohete\",\n \"cojín\",\n \"cojo\",\n \"cola\",\n \"colcha\",\n \"colegio\",\n \"colgar\",\n \"colina\",\n \"collar\",\n \"colmo\",\n \"columna\",\n \"combate\",\n \"comer\",\n \"comida\",\n \"cómodo\",\n \"compra\",\n \"conde\",\n \"conejo\",\n \"conga\",\n \"conocer\",\n \"consejo\",\n \"contar\",\n \"copa\",\n \"copia\",\n \"corazón\",\n \"corbata\",\n \"corcho\",\n \"cordón\",\n \"corona\",\n \"correr\",\n \"coser\",\n \"cosmos\",\n \"costa\",\n \"cráneo\",\n \"cráter\",\n \"crear\",\n \"crecer\",\n \"creído\",\n \"crema\",\n \"cría\",\n \"crimen\",\n \"cripta\",\n \"crisis\",\n \"cromo\",\n \"crónica\",\n \"croqueta\",\n \"crudo\",\n \"cruz\",\n \"cuadro\",\n \"cuarto\",\n \"cuatro\",\n \"cubo\",\n \"cubrir\",\n \"cuchara\",\n \"cuello\",\n \"cuento\",\n \"cuerda\",\n \"cuesta\",\n \"cueva\",\n \"cuidar\",\n \"culebra\",\n \"culpa\",\n \"culto\",\n \"cumbre\",\n \"cumplir\",\n \"cuna\",\n \"cuneta\",\n \"cuota\",\n \"cupón\",\n \"cúpula\",\n \"curar\",\n \"curioso\",\n \"curso\",\n \"curva\",\n \"cutis\",\n \"dama\",\n \"danza\",\n \"dar\",\n \"dardo\",\n \"dátil\",\n \"deber\",\n \"débil\",\n \"década\",\n \"decir\",\n \"dedo\",\n \"defensa\",\n \"definir\",\n \"dejar\",\n \"delfín\",\n \"delgado\",\n \"delito\",\n \"demora\",\n \"denso\",\n \"dental\",\n \"deporte\",\n \"derecho\",\n \"derrota\",\n \"desayuno\",\n \"deseo\",\n \"desfile\",\n \"desnudo\",\n \"destino\",\n \"desvío\",\n \"detalle\",\n \"detener\",\n \"deuda\",\n \"día\",\n \"diablo\",\n \"diadema\",\n \"diamante\",\n \"diana\",\n \"diario\",\n \"dibujo\",\n \"dictar\",\n \"diente\",\n \"dieta\",\n \"diez\",\n \"difícil\",\n \"digno\",\n \"dilema\",\n \"diluir\",\n \"dinero\",\n \"directo\",\n \"dirigir\",\n \"disco\",\n \"diseño\",\n \"disfraz\",\n \"diva\",\n \"divino\",\n \"doble\",\n \"doce\",\n \"dolor\",\n \"domingo\",\n \"don\",\n \"donar\",\n \"dorado\",\n \"dormir\",\n \"dorso\",\n \"dos\",\n \"dosis\",\n \"dragón\",\n \"droga\",\n \"ducha\",\n \"duda\",\n \"duelo\",\n \"dueño\",\n \"dulce\",\n \"dúo\",\n \"duque\",\n \"durar\",\n \"dureza\",\n \"duro\",\n \"ébano\",\n \"ebrio\",\n \"echar\",\n \"eco\",\n \"ecuador\",\n \"edad\",\n \"edición\",\n \"edificio\",\n \"editor\",\n \"educar\",\n \"efecto\",\n \"eficaz\",\n \"eje\",\n \"ejemplo\",\n \"elefante\",\n \"elegir\",\n \"elemento\",\n \"elevar\",\n \"elipse\",\n \"élite\",\n \"elixir\",\n \"elogio\",\n \"eludir\",\n \"embudo\",\n \"emitir\",\n \"emoción\",\n \"empate\",\n \"empeño\",\n \"empleo\",\n \"empresa\",\n \"enano\",\n \"encargo\",\n \"enchufe\",\n \"encía\",\n \"enemigo\",\n \"enero\",\n \"enfado\",\n \"enfermo\",\n \"engaño\",\n \"enigma\",\n \"enlace\",\n \"enorme\",\n \"enredo\",\n \"ensayo\",\n \"enseñar\",\n \"entero\",\n \"entrar\",\n \"envase\",\n \"envío\",\n \"época\",\n \"equipo\",\n \"erizo\",\n \"escala\",\n \"escena\",\n \"escolar\",\n \"escribir\",\n \"escudo\",\n \"esencia\",\n \"esfera\",\n \"esfuerzo\",\n \"espada\",\n \"espejo\",\n \"espía\",\n \"esposa\",\n \"espuma\",\n \"esquí\",\n \"estar\",\n \"este\",\n \"estilo\",\n \"estufa\",\n \"etapa\",\n \"eterno\",\n \"ética\",\n \"etnia\",\n \"evadir\",\n \"evaluar\",\n \"evento\",\n \"evitar\",\n \"exacto\",\n \"examen\",\n \"exceso\",\n \"excusa\",\n \"exento\",\n \"exigir\",\n \"exilio\",\n \"existir\",\n \"éxito\",\n \"experto\",\n \"explicar\",\n \"exponer\",\n \"extremo\",\n \"fábrica\",\n \"fábula\",\n \"fachada\",\n \"fácil\",\n \"factor\",\n \"faena\",\n \"faja\",\n \"falda\",\n \"fallo\",\n \"falso\",\n \"faltar\",\n \"fama\",\n \"familia\",\n \"famoso\",\n \"faraón\",\n \"farmacia\",\n \"farol\",\n \"farsa\",\n \"fase\",\n \"fatiga\",\n \"fauna\",\n \"favor\",\n \"fax\",\n \"febrero\",\n \"fecha\",\n \"feliz\",\n \"feo\",\n \"feria\",\n \"feroz\",\n \"fértil\",\n \"fervor\",\n \"festín\",\n \"fiable\",\n \"fianza\",\n \"fiar\",\n \"fibra\",\n \"ficción\",\n \"ficha\",\n \"fideo\",\n \"fiebre\",\n \"fiel\",\n \"fiera\",\n \"fiesta\",\n \"figura\",\n \"fijar\",\n \"fijo\",\n \"fila\",\n \"filete\",\n \"filial\",\n \"filtro\",\n \"fin\",\n \"finca\",\n \"fingir\",\n \"finito\",\n \"firma\",\n \"flaco\",\n \"flauta\",\n \"flecha\",\n \"flor\",\n \"flota\",\n \"fluir\",\n \"flujo\",\n \"flúor\",\n \"fobia\",\n \"foca\",\n \"fogata\",\n \"fogón\",\n \"folio\",\n \"folleto\",\n \"fondo\",\n \"forma\",\n \"forro\",\n \"fortuna\",\n \"forzar\",\n \"fosa\",\n \"foto\",\n \"fracaso\",\n \"frágil\",\n \"franja\",\n \"frase\",\n \"fraude\",\n \"freír\",\n \"freno\",\n \"fresa\",\n \"frío\",\n \"frito\",\n \"fruta\",\n \"fuego\",\n \"fuente\",\n \"fuerza\",\n \"fuga\",\n \"fumar\",\n \"función\",\n \"funda\",\n \"furgón\",\n \"furia\",\n \"fusil\",\n \"fútbol\",\n \"futuro\",\n \"gacela\",\n \"gafas\",\n \"gaita\",\n \"gajo\",\n \"gala\",\n \"galería\",\n \"gallo\",\n \"gamba\",\n \"ganar\",\n \"gancho\",\n \"ganga\",\n \"ganso\",\n \"garaje\",\n \"garza\",\n \"gasolina\",\n \"gastar\",\n \"gato\",\n \"gavilán\",\n \"gemelo\",\n \"gemir\",\n \"gen\",\n \"género\",\n \"genio\",\n \"gente\",\n \"geranio\",\n \"gerente\",\n \"germen\",\n \"gesto\",\n \"gigante\",\n \"gimnasio\",\n \"girar\",\n \"giro\",\n \"glaciar\",\n \"globo\",\n \"gloria\",\n \"gol\",\n \"golfo\",\n \"goloso\",\n \"golpe\",\n \"goma\",\n \"gordo\",\n \"gorila\",\n \"gorra\",\n \"gota\",\n \"goteo\",\n \"gozar\",\n \"grada\",\n \"gráfico\",\n \"grano\",\n \"grasa\",\n \"gratis\",\n \"grave\",\n \"grieta\",\n \"grillo\",\n \"gripe\",\n \"gris\",\n \"grito\",\n \"grosor\",\n \"grúa\",\n \"grueso\",\n \"grumo\",\n \"grupo\",\n \"guante\",\n \"guapo\",\n \"guardia\",\n \"guerra\",\n \"guía\",\n \"guiño\",\n \"guion\",\n \"guiso\",\n \"guitarra\",\n \"gusano\",\n \"gustar\",\n \"haber\",\n \"hábil\",\n \"hablar\",\n \"hacer\",\n \"hacha\",\n \"hada\",\n \"hallar\",\n \"hamaca\",\n \"harina\",\n \"haz\",\n \"hazaña\",\n \"hebilla\",\n \"hebra\",\n \"hecho\",\n \"helado\",\n \"helio\",\n \"hembra\",\n \"herir\",\n \"hermano\",\n \"héroe\",\n \"hervir\",\n \"hielo\",\n \"hierro\",\n \"hígado\",\n \"higiene\",\n \"hijo\",\n \"himno\",\n \"historia\",\n \"hocico\",\n \"hogar\",\n \"hoguera\",\n \"hoja\",\n \"hombre\",\n \"hongo\",\n \"honor\",\n \"honra\",\n \"hora\",\n \"hormiga\",\n \"horno\",\n \"hostil\",\n \"hoyo\",\n \"hueco\",\n \"huelga\",\n \"huerta\",\n \"hueso\",\n \"huevo\",\n \"huida\",\n \"huir\",\n \"humano\",\n \"húmedo\",\n \"humilde\",\n \"humo\",\n \"hundir\",\n \"huracán\",\n \"hurto\",\n \"icono\",\n \"ideal\",\n \"idioma\",\n \"ídolo\",\n \"iglesia\",\n \"iglú\",\n \"igual\",\n \"ilegal\",\n \"ilusión\",\n \"imagen\",\n \"imán\",\n \"imitar\",\n \"impar\",\n \"imperio\",\n \"imponer\",\n \"impulso\",\n \"incapaz\",\n \"índice\",\n \"inerte\",\n \"infiel\",\n \"informe\",\n \"ingenio\",\n \"inicio\",\n \"inmenso\",\n \"inmune\",\n \"innato\",\n \"insecto\",\n \"instante\",\n \"interés\",\n \"íntimo\",\n \"intuir\",\n \"inútil\",\n \"invierno\",\n \"ira\",\n \"iris\",\n \"ironía\",\n \"isla\",\n \"islote\",\n \"jabalí\",\n \"jabón\",\n \"jamón\",\n \"jarabe\",\n \"jardín\",\n \"jarra\",\n \"jaula\",\n \"jazmín\",\n \"jefe\",\n \"jeringa\",\n \"jinete\",\n \"jornada\",\n \"joroba\",\n \"joven\",\n \"joya\",\n \"juerga\",\n \"jueves\",\n \"juez\",\n \"jugador\",\n \"jugo\",\n \"juguete\",\n \"juicio\",\n \"junco\",\n \"jungla\",\n \"junio\",\n \"juntar\",\n \"júpiter\",\n \"jurar\",\n \"justo\",\n \"juvenil\",\n \"juzgar\",\n \"kilo\",\n \"koala\",\n \"labio\",\n \"lacio\",\n \"lacra\",\n \"lado\",\n \"ladrón\",\n \"lagarto\",\n \"lágrima\",\n \"laguna\",\n \"laico\",\n \"lamer\",\n \"lámina\",\n \"lámpara\",\n \"lana\",\n \"lancha\",\n \"langosta\",\n \"lanza\",\n \"lápiz\",\n \"largo\",\n \"larva\",\n \"lástima\",\n \"lata\",\n \"látex\",\n \"latir\",\n \"laurel\",\n \"lavar\",\n \"lazo\",\n \"leal\",\n \"lección\",\n \"leche\",\n \"lector\",\n \"leer\",\n \"legión\",\n \"legumbre\",\n \"lejano\",\n \"lengua\",\n \"lento\",\n \"leña\",\n \"león\",\n \"leopardo\",\n \"lesión\",\n \"letal\",\n \"letra\",\n \"leve\",\n \"leyenda\",\n \"libertad\",\n \"libro\",\n \"licor\",\n \"líder\",\n \"lidiar\",\n \"lienzo\",\n \"liga\",\n \"ligero\",\n \"lima\",\n \"límite\",\n \"limón\",\n \"limpio\",\n \"lince\",\n \"lindo\",\n \"línea\",\n \"lingote\",\n \"lino\",\n \"linterna\",\n \"líquido\",\n \"liso\",\n \"lista\",\n \"litera\",\n \"litio\",\n \"litro\",\n \"llaga\",\n \"llama\",\n \"llanto\",\n \"llave\",\n \"llegar\",\n \"llenar\",\n \"llevar\",\n \"llorar\",\n \"llover\",\n \"lluvia\",\n \"lobo\",\n \"loción\",\n \"loco\",\n \"locura\",\n \"lógica\",\n \"logro\",\n \"lombriz\",\n \"lomo\",\n \"lonja\",\n \"lote\",\n \"lucha\",\n \"lucir\",\n \"lugar\",\n \"lujo\",\n \"luna\",\n \"lunes\",\n \"lupa\",\n \"lustro\",\n \"luto\",\n \"luz\",\n \"maceta\",\n \"macho\",\n \"madera\",\n \"madre\",\n \"maduro\",\n \"maestro\",\n \"mafia\",\n \"magia\",\n \"mago\",\n \"maíz\",\n \"maldad\",\n \"maleta\",\n \"malla\",\n \"malo\",\n \"mamá\",\n \"mambo\",\n \"mamut\",\n \"manco\",\n \"mando\",\n \"manejar\",\n \"manga\",\n \"maniquí\",\n \"manjar\",\n \"mano\",\n \"manso\",\n \"manta\",\n \"mañana\",\n \"mapa\",\n \"máquina\",\n \"mar\",\n \"marco\",\n \"marea\",\n \"marfil\",\n \"margen\",\n \"marido\",\n \"mármol\",\n \"marrón\",\n \"martes\",\n \"marzo\",\n \"masa\",\n \"máscara\",\n \"masivo\",\n \"matar\",\n \"materia\",\n \"matiz\",\n \"matriz\",\n \"máximo\",\n \"mayor\",\n \"mazorca\",\n \"mecha\",\n \"medalla\",\n \"medio\",\n \"médula\",\n \"mejilla\",\n \"mejor\",\n \"melena\",\n \"melón\",\n \"memoria\",\n \"menor\",\n \"mensaje\",\n \"mente\",\n \"menú\",\n \"mercado\",\n \"merengue\",\n \"mérito\",\n \"mes\",\n \"mesón\",\n \"meta\",\n \"meter\",\n \"método\",\n \"metro\",\n \"mezcla\",\n \"miedo\",\n \"miel\",\n \"miembro\",\n \"miga\",\n \"mil\",\n \"milagro\",\n \"militar\",\n \"millón\",\n \"mimo\",\n \"mina\",\n \"minero\",\n \"mínimo\",\n \"minuto\",\n \"miope\",\n \"mirar\",\n \"misa\",\n \"miseria\",\n \"misil\",\n \"mismo\",\n \"mitad\",\n \"mito\",\n \"mochila\",\n \"moción\",\n \"moda\",\n \"modelo\",\n \"moho\",\n \"mojar\",\n \"molde\",\n \"moler\",\n \"molino\",\n \"momento\",\n \"momia\",\n \"monarca\",\n \"moneda\",\n \"monja\",\n \"monto\",\n \"moño\",\n \"morada\",\n \"morder\",\n \"moreno\",\n \"morir\",\n \"morro\",\n \"morsa\",\n \"mortal\",\n \"mosca\",\n \"mostrar\",\n \"motivo\",\n \"mover\",\n \"móvil\",\n \"mozo\",\n \"mucho\",\n \"mudar\",\n \"mueble\",\n \"muela\",\n \"muerte\",\n \"muestra\",\n \"mugre\",\n \"mujer\",\n \"mula\",\n \"muleta\",\n \"multa\",\n \"mundo\",\n \"muñeca\",\n \"mural\",\n \"muro\",\n \"músculo\",\n \"museo\",\n \"musgo\",\n \"música\",\n \"muslo\",\n \"nácar\",\n \"nación\",\n \"nadar\",\n \"naipe\",\n \"naranja\",\n \"nariz\",\n \"narrar\",\n \"nasal\",\n \"natal\",\n \"nativo\",\n \"natural\",\n \"náusea\",\n \"naval\",\n \"nave\",\n \"navidad\",\n \"necio\",\n \"néctar\",\n \"negar\",\n \"negocio\",\n \"negro\",\n \"neón\",\n \"nervio\",\n \"neto\",\n \"neutro\",\n \"nevar\",\n \"nevera\",\n \"nicho\",\n \"nido\",\n \"niebla\",\n \"nieto\",\n \"niñez\",\n \"niño\",\n \"nítido\",\n \"nivel\",\n \"nobleza\",\n \"noche\",\n \"nómina\",\n \"noria\",\n \"norma\",\n \"norte\",\n \"nota\",\n \"noticia\",\n \"novato\",\n \"novela\",\n \"novio\",\n \"nube\",\n \"nuca\",\n \"núcleo\",\n \"nudillo\",\n \"nudo\",\n \"nuera\",\n \"nueve\",\n \"nuez\",\n \"nulo\",\n \"número\",\n \"nutria\",\n \"oasis\",\n \"obeso\",\n \"obispo\",\n \"objeto\",\n \"obra\",\n \"obrero\",\n \"observar\",\n \"obtener\",\n \"obvio\",\n \"oca\",\n \"ocaso\",\n \"océano\",\n \"ochenta\",\n \"ocho\",\n \"ocio\",\n \"ocre\",\n \"octavo\",\n \"octubre\",\n \"oculto\",\n \"ocupar\",\n \"ocurrir\",\n \"odiar\",\n \"odio\",\n \"odisea\",\n \"oeste\",\n \"ofensa\",\n \"oferta\",\n \"oficio\",\n \"ofrecer\",\n \"ogro\",\n \"oído\",\n \"oír\",\n \"ojo\",\n \"ola\",\n \"oleada\",\n \"olfato\",\n \"olivo\",\n \"olla\",\n \"olmo\",\n \"olor\",\n \"olvido\",\n \"ombligo\",\n \"onda\",\n \"onza\",\n \"opaco\",\n \"opción\",\n \"ópera\",\n \"opinar\",\n \"oponer\",\n \"optar\",\n \"óptica\",\n \"opuesto\",\n \"oración\",\n \"orador\",\n \"oral\",\n \"órbita\",\n \"orca\",\n \"orden\",\n \"oreja\",\n \"órgano\",\n \"orgía\",\n \"orgullo\",\n \"oriente\",\n \"origen\",\n \"orilla\",\n \"oro\",\n \"orquesta\",\n \"oruga\",\n \"osadía\",\n \"oscuro\",\n \"osezno\",\n \"oso\",\n \"ostra\",\n \"otoño\",\n \"otro\",\n \"oveja\",\n \"óvulo\",\n \"óxido\",\n \"oxígeno\",\n \"oyente\",\n \"ozono\",\n \"pacto\",\n \"padre\",\n \"paella\",\n \"página\",\n \"pago\",\n \"país\",\n \"pájaro\",\n \"palabra\",\n \"palco\",\n \"paleta\",\n \"pálido\",\n \"palma\",\n \"paloma\",\n \"palpar\",\n \"pan\",\n \"panal\",\n \"pánico\",\n \"pantera\",\n \"pañuelo\",\n \"papá\",\n \"papel\",\n \"papilla\",\n \"paquete\",\n \"parar\",\n \"parcela\",\n \"pared\",\n \"parir\",\n \"paro\",\n \"párpado\",\n \"parque\",\n \"párrafo\",\n \"parte\",\n \"pasar\",\n \"paseo\",\n \"pasión\",\n \"paso\",\n \"pasta\",\n \"pata\",\n \"patio\",\n \"patria\",\n \"pausa\",\n \"pauta\",\n \"pavo\",\n \"payaso\",\n \"peatón\",\n \"pecado\",\n \"pecera\",\n \"pecho\",\n \"pedal\",\n \"pedir\",\n \"pegar\",\n \"peine\",\n \"pelar\",\n \"peldaño\",\n \"pelea\",\n \"peligro\",\n \"pellejo\",\n \"pelo\",\n \"peluca\",\n \"pena\",\n \"pensar\",\n \"peñón\",\n \"peón\",\n \"peor\",\n \"pepino\",\n \"pequeño\",\n \"pera\",\n \"percha\",\n \"perder\",\n \"pereza\",\n \"perfil\",\n \"perico\",\n \"perla\",\n \"permiso\",\n \"perro\",\n \"persona\",\n \"pesa\",\n \"pesca\",\n \"pésimo\",\n \"pestaña\",\n \"pétalo\",\n \"petróleo\",\n \"pez\",\n \"pezuña\",\n \"picar\",\n \"pichón\",\n \"pie\",\n \"piedra\",\n \"pierna\",\n \"pieza\",\n \"pijama\",\n \"pilar\",\n \"piloto\",\n \"pimienta\",\n \"pino\",\n \"pintor\",\n \"pinza\",\n \"piña\",\n \"piojo\",\n \"pipa\",\n \"pirata\",\n \"pisar\",\n \"piscina\",\n \"piso\",\n \"pista\",\n \"pitón\",\n \"pizca\",\n \"placa\",\n \"plan\",\n \"plata\",\n \"playa\",\n \"plaza\",\n \"pleito\",\n \"pleno\",\n \"plomo\",\n \"pluma\",\n \"plural\",\n \"pobre\",\n \"poco\",\n \"poder\",\n \"podio\",\n \"poema\",\n \"poesía\",\n \"poeta\",\n \"polen\",\n \"policía\",\n \"pollo\",\n \"polvo\",\n \"pomada\",\n \"pomelo\",\n \"pomo\",\n \"pompa\",\n \"poner\",\n \"porción\",\n \"portal\",\n \"posada\",\n \"poseer\",\n \"posible\",\n \"poste\",\n \"potencia\",\n \"potro\",\n \"pozo\",\n \"prado\",\n \"precoz\",\n \"pregunta\",\n \"premio\",\n \"prensa\",\n \"preso\",\n \"previo\",\n \"primo\",\n \"príncipe\",\n \"prisión\",\n \"privar\",\n \"proa\",\n \"probar\",\n \"proceso\",\n \"producto\",\n \"proeza\",\n \"profesor\",\n \"programa\",\n \"prole\",\n \"promesa\",\n \"pronto\",\n \"propio\",\n \"próximo\",\n \"prueba\",\n \"público\",\n \"puchero\",\n \"pudor\",\n \"pueblo\",\n \"puerta\",\n \"puesto\",\n \"pulga\",\n \"pulir\",\n \"pulmón\",\n \"pulpo\",\n \"pulso\",\n \"puma\",\n \"punto\",\n \"puñal\",\n \"puño\",\n \"pupa\",\n \"pupila\",\n \"puré\",\n \"quedar\",\n \"queja\",\n \"quemar\",\n \"querer\",\n \"queso\",\n \"quieto\",\n \"química\",\n \"quince\",\n \"quitar\",\n \"rábano\",\n \"rabia\",\n \"rabo\",\n \"ración\",\n \"radical\",\n \"raíz\",\n \"rama\",\n \"rampa\",\n \"rancho\",\n \"rango\",\n \"rapaz\",\n \"rápido\",\n \"rapto\",\n \"rasgo\",\n \"raspa\",\n \"rato\",\n \"rayo\",\n \"raza\",\n \"razón\",\n \"reacción\",\n \"realidad\",\n \"rebaño\",\n \"rebote\",\n \"recaer\",\n \"receta\",\n \"rechazo\",\n \"recoger\",\n \"recreo\",\n \"recto\",\n \"recurso\",\n \"red\",\n \"redondo\",\n \"reducir\",\n \"reflejo\",\n \"reforma\",\n \"refrán\",\n \"refugio\",\n \"regalo\",\n \"regir\",\n \"regla\",\n \"regreso\",\n \"rehén\",\n \"reino\",\n \"reír\",\n \"reja\",\n \"relato\",\n \"relevo\",\n \"relieve\",\n \"relleno\",\n \"reloj\",\n \"remar\",\n \"remedio\",\n \"remo\",\n \"rencor\",\n \"rendir\",\n \"renta\",\n \"reparto\",\n \"repetir\",\n \"reposo\",\n \"reptil\",\n \"res\",\n \"rescate\",\n \"resina\",\n \"respeto\",\n \"resto\",\n \"resumen\",\n \"retiro\",\n \"retorno\",\n \"retrato\",\n \"reunir\",\n \"revés\",\n \"revista\",\n \"rey\",\n \"rezar\",\n \"rico\",\n \"riego\",\n \"rienda\",\n \"riesgo\",\n \"rifa\",\n \"rígido\",\n \"rigor\",\n \"rincón\",\n \"riñón\",\n \"río\",\n \"riqueza\",\n \"risa\",\n \"ritmo\",\n \"rito\",\n \"rizo\",\n \"roble\",\n \"roce\",\n \"rociar\",\n \"rodar\",\n \"rodeo\",\n \"rodilla\",\n \"roer\",\n \"rojizo\",\n \"rojo\",\n \"romero\",\n \"romper\",\n \"ron\",\n \"ronco\",\n \"ronda\",\n \"ropa\",\n \"ropero\",\n \"rosa\",\n \"rosca\",\n \"rostro\",\n \"rotar\",\n \"rubí\",\n \"rubor\",\n \"rudo\",\n \"rueda\",\n \"rugir\",\n \"ruido\",\n \"ruina\",\n \"ruleta\",\n \"rulo\",\n \"rumbo\",\n \"rumor\",\n \"ruptura\",\n \"ruta\",\n \"rutina\",\n \"sábado\",\n \"saber\",\n \"sabio\",\n \"sable\",\n \"sacar\",\n \"sagaz\",\n \"sagrado\",\n \"sala\",\n \"saldo\",\n \"salero\",\n \"salir\",\n \"salmón\",\n \"salón\",\n \"salsa\",\n \"salto\",\n \"salud\",\n \"salvar\",\n \"samba\",\n \"sanción\",\n \"sandía\",\n \"sanear\",\n \"sangre\",\n \"sanidad\",\n \"sano\",\n \"santo\",\n \"sapo\",\n \"saque\",\n \"sardina\",\n \"sartén\",\n \"sastre\",\n \"satán\",\n \"sauna\",\n \"saxofón\",\n \"sección\",\n \"seco\",\n \"secreto\",\n \"secta\",\n \"sed\",\n \"seguir\",\n \"seis\",\n \"sello\",\n \"selva\",\n \"semana\",\n \"semilla\",\n \"senda\",\n \"sensor\",\n \"señal\",\n \"señor\",\n \"separar\",\n \"sepia\",\n \"sequía\",\n \"ser\",\n \"serie\",\n \"sermón\",\n \"servir\",\n \"sesenta\",\n \"sesión\",\n \"seta\",\n \"setenta\",\n \"severo\",\n \"sexo\",\n \"sexto\",\n \"sidra\",\n \"siesta\",\n \"siete\",\n \"siglo\",\n \"signo\",\n \"sílaba\",\n \"silbar\",\n \"silencio\",\n \"silla\",\n \"símbolo\",\n \"simio\",\n \"sirena\",\n \"sistema\",\n \"sitio\",\n \"situar\",\n \"sobre\",\n \"socio\",\n \"sodio\",\n \"sol\",\n \"solapa\",\n \"soldado\",\n \"soledad\",\n \"sólido\",\n \"soltar\",\n \"solución\",\n \"sombra\",\n \"sondeo\",\n \"sonido\",\n \"sonoro\",\n \"sonrisa\",\n \"sopa\",\n \"soplar\",\n \"soporte\",\n \"sordo\",\n \"sorpresa\",\n \"sorteo\",\n \"sostén\",\n \"sótano\",\n \"suave\",\n \"subir\",\n \"suceso\",\n \"sudor\",\n \"suegra\",\n \"suelo\",\n \"sueño\",\n \"suerte\",\n \"sufrir\",\n \"sujeto\",\n \"sultán\",\n \"sumar\",\n \"superar\",\n \"suplir\",\n \"suponer\",\n \"supremo\",\n \"sur\",\n \"surco\",\n \"sureño\",\n \"surgir\",\n \"susto\",\n \"sutil\",\n \"tabaco\",\n \"tabique\",\n \"tabla\",\n \"tabú\",\n \"taco\",\n \"tacto\",\n \"tajo\",\n \"talar\",\n \"talco\",\n \"talento\",\n \"talla\",\n \"talón\",\n \"tamaño\",\n \"tambor\",\n \"tango\",\n \"tanque\",\n \"tapa\",\n \"tapete\",\n \"tapia\",\n \"tapón\",\n \"taquilla\",\n \"tarde\",\n \"tarea\",\n \"tarifa\",\n \"tarjeta\",\n \"tarot\",\n \"tarro\",\n \"tarta\",\n \"tatuaje\",\n \"tauro\",\n \"taza\",\n \"tazón\",\n \"teatro\",\n \"techo\",\n \"tecla\",\n \"técnica\",\n \"tejado\",\n \"tejer\",\n \"tejido\",\n \"tela\",\n \"teléfono\",\n \"tema\",\n \"temor\",\n \"templo\",\n \"tenaz\",\n \"tender\",\n \"tener\",\n \"tenis\",\n \"tenso\",\n \"teoría\",\n \"terapia\",\n \"terco\",\n \"término\",\n \"ternura\",\n \"terror\",\n \"tesis\",\n \"tesoro\",\n \"testigo\",\n \"tetera\",\n \"texto\",\n \"tez\",\n \"tibio\",\n \"tiburón\",\n \"tiempo\",\n \"tienda\",\n \"tierra\",\n \"tieso\",\n \"tigre\",\n \"tijera\",\n \"tilde\",\n \"timbre\",\n \"tímido\",\n \"timo\",\n \"tinta\",\n \"tío\",\n \"típico\",\n \"tipo\",\n \"tira\",\n \"tirón\",\n \"titán\",\n \"títere\",\n \"título\",\n \"tiza\",\n \"toalla\",\n \"tobillo\",\n \"tocar\",\n \"tocino\",\n \"todo\",\n \"toga\",\n \"toldo\",\n \"tomar\",\n \"tono\",\n \"tonto\",\n \"topar\",\n \"tope\",\n \"toque\",\n \"tórax\",\n \"torero\",\n \"tormenta\",\n \"torneo\",\n \"toro\",\n \"torpedo\",\n \"torre\",\n \"torso\",\n \"tortuga\",\n \"tos\",\n \"tosco\",\n \"toser\",\n \"tóxico\",\n \"trabajo\",\n \"tractor\",\n \"traer\",\n \"tráfico\",\n \"trago\",\n \"traje\",\n \"tramo\",\n \"trance\",\n \"trato\",\n \"trauma\",\n \"trazar\",\n \"trébol\",\n \"tregua\",\n \"treinta\",\n \"tren\",\n \"trepar\",\n \"tres\",\n \"tribu\",\n \"trigo\",\n \"tripa\",\n \"triste\",\n \"triunfo\",\n \"trofeo\",\n \"trompa\",\n \"tronco\",\n \"tropa\",\n \"trote\",\n \"trozo\",\n \"truco\",\n \"trueno\",\n \"trufa\",\n \"tubería\",\n \"tubo\",\n \"tuerto\",\n \"tumba\",\n \"tumor\",\n \"túnel\",\n \"túnica\",\n \"turbina\",\n \"turismo\",\n \"turno\",\n \"tutor\",\n \"ubicar\",\n \"úlcera\",\n \"umbral\",\n \"unidad\",\n \"unir\",\n \"universo\",\n \"uno\",\n \"untar\",\n \"uña\",\n \"urbano\",\n \"urbe\",\n \"urgente\",\n \"urna\",\n \"usar\",\n \"usuario\",\n \"útil\",\n \"utopía\",\n \"uva\",\n \"vaca\",\n \"vacío\",\n \"vacuna\",\n \"vagar\",\n \"vago\",\n \"vaina\",\n \"vajilla\",\n \"vale\",\n \"válido\",\n \"valle\",\n \"valor\",\n \"válvula\",\n \"vampiro\",\n \"vara\",\n \"variar\",\n \"varón\",\n \"vaso\",\n \"vecino\",\n \"vector\",\n \"vehículo\",\n \"veinte\",\n \"vejez\",\n \"vela\",\n \"velero\",\n \"veloz\",\n \"vena\",\n \"vencer\",\n \"venda\",\n \"veneno\",\n \"vengar\",\n \"venir\",\n \"venta\",\n \"venus\",\n \"ver\",\n \"verano\",\n \"verbo\",\n \"verde\",\n \"vereda\",\n \"verja\",\n \"verso\",\n \"verter\",\n \"vía\",\n \"viaje\",\n \"vibrar\",\n \"vicio\",\n \"víctima\",\n \"vida\",\n \"vídeo\",\n \"vidrio\",\n \"viejo\",\n \"viernes\",\n \"vigor\",\n \"vil\",\n \"villa\",\n \"vinagre\",\n \"vino\",\n \"viñedo\",\n \"violín\",\n \"viral\",\n \"virgo\",\n \"virtud\",\n \"visor\",\n \"víspera\",\n \"vista\",\n \"vitamina\",\n \"viudo\",\n \"vivaz\",\n \"vivero\",\n \"vivir\",\n \"vivo\",\n \"volcán\",\n \"volumen\",\n \"volver\",\n \"voraz\",\n \"votar\",\n \"voto\",\n \"voz\",\n \"vuelo\",\n \"vulgar\",\n \"yacer\",\n \"yate\",\n \"yegua\",\n \"yema\",\n \"yerno\",\n \"yeso\",\n \"yodo\",\n \"yoga\",\n \"yogur\",\n \"zafiro\",\n \"zanja\",\n \"zapato\",\n \"zarza\",\n \"zona\",\n \"zorro\",\n \"zumo\",\n \"zurdo\"\n]\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toEntropy;\n\nrequire(\"../polyfill\");\n\nvar _bip = require(\"bip39\");\n\nvar _util = require(\"@polkadot/util\");\n\nvar _wasmCrypto = require(\"@polkadot/wasm-crypto\");\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction toEntropy(mnemonic) {\n return (0, _wasmCrypto.isReady)() ? (0, _wasmCrypto.bip39ToEntropy)(mnemonic) : (0, _util.hexToU8a)((0, _util.hexAddPrefix)((0, _bip.mnemonicToEntropy)(mnemonic)));\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toMiniSecret;\n\nrequire(\"../polyfill\");\n\nvar _pbkdf = require(\"pbkdf2\");\n\nvar _util = require(\"@polkadot/util\");\n\nvar _wasmCrypto = require(\"@polkadot/wasm-crypto\");\n\nvar _toEntropy = _interopRequireDefault(require(\"./toEntropy\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction toMiniSecret(mnemonic) {\n let password = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n if ((0, _wasmCrypto.isReady)()) {\n return (0, _wasmCrypto.bip39ToMiniSecret)(mnemonic, password);\n }\n\n const entropy = (0, _util.u8aToBuffer)((0, _toEntropy.default)(mnemonic));\n const salt = (0, _util.u8aToBuffer)((0, _util.stringToU8a)(\"mnemonic\".concat(password))); // return the first 32 bytes as the seed\n\n return (0, _util.bufferToU8a)((0, _pbkdf.pbkdf2Sync)(entropy, salt, 2048, 64, 'sha512')).slice(0, 32);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toSeed;\n\nvar _bip = require(\"bip39\");\n\nvar _util = require(\"@polkadot/util\");\n\nvar _wasmCrypto = require(\"@polkadot/wasm-crypto\");\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name toSeed\n * @summary Creates a valid seed from a mnemonic input\n * @example\n *
\n *\n * ```javascript\n * import { mnemonicGenerate, mnemonicToSeed, mnemonicValidate } from '@polkadot/util-crypto';\n *\n * const mnemonic = mnemonicGenerate(); // => string\n * const isValidMnemonic = mnemonicValidate(mnemonic); // => boolean\n *\n * if (isValidMnemonic) {\n * console.log(`Seed generated from mnemonic: ${mnemonicToSeed(mnemonic)}`); => u8a\n * }\n * ```\n */\nfunction toSeed(mnemonic) {\n let password = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return (0, _wasmCrypto.isReady)() ? (0, _wasmCrypto.bip39ToSeed)(mnemonic, password) : (0, _util.bufferToU8a)((0, _bip.mnemonicToSeed)(mnemonic, password)).subarray(0, 32);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = mnemonicValidate;\n\nrequire(\"../polyfill\");\n\nvar _bip = require(\"bip39\");\n\nvar _wasmCrypto = require(\"@polkadot/wasm-crypto\");\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name mnemonicValidate\n * @summary Validates a mnemonic input using [BIP39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki).\n * @example\n *
\n *\n * ```javascript\n * import { mnemonicGenerate, mnemonicValidate } from '@polkadot/util-crypto';\n *\n * const mnemonic = mnemonicGenerate(); // => string\n * const isValidMnemonic = mnemonicValidate(mnemonic); // => boolean\n * ```\n */\nfunction mnemonicValidate(mnemonic) {\n return (0, _wasmCrypto.isReady)() ? (0, _wasmCrypto.bip39Validate)(mnemonic) : (0, _bip.validateMnemonic)(mnemonic);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"naclDecrypt\", {\n enumerable: true,\n get: function get() {\n return _decrypt.default;\n }\n});\nObject.defineProperty(exports, \"deriveHard\", {\n enumerable: true,\n get: function get() {\n return _deriveHard.default;\n }\n});\nObject.defineProperty(exports, \"naclEncrypt\", {\n enumerable: true,\n get: function get() {\n return _encrypt.default;\n }\n});\nObject.defineProperty(exports, \"naclKeypairFromRandom\", {\n enumerable: true,\n get: function get() {\n return _fromRandom.default;\n }\n});\nObject.defineProperty(exports, \"naclKeypairFromSecret\", {\n enumerable: true,\n get: function get() {\n return _fromSecret.default;\n }\n});\nObject.defineProperty(exports, \"naclKeypairFromSeed\", {\n enumerable: true,\n get: function get() {\n return _fromSeed.default;\n }\n});\nObject.defineProperty(exports, \"naclKeypairFromString\", {\n enumerable: true,\n get: function get() {\n return _fromString.default;\n }\n});\nObject.defineProperty(exports, \"naclSign\", {\n enumerable: true,\n get: function get() {\n return _sign.default;\n }\n});\nObject.defineProperty(exports, \"naclVerify\", {\n enumerable: true,\n get: function get() {\n return _verify.default;\n }\n});\n\nvar _decrypt = _interopRequireDefault(require(\"./decrypt\"));\n\nvar _deriveHard = _interopRequireDefault(require(\"./deriveHard\"));\n\nvar _encrypt = _interopRequireDefault(require(\"./encrypt\"));\n\nvar _fromRandom = _interopRequireDefault(require(\"./keypair/fromRandom\"));\n\nvar _fromSecret = _interopRequireDefault(require(\"./keypair/fromSecret\"));\n\nvar _fromSeed = _interopRequireDefault(require(\"./keypair/fromSeed\"));\n\nvar _fromString = _interopRequireDefault(require(\"./keypair/fromString\"));\n\nvar _sign = _interopRequireDefault(require(\"./sign\"));\n\nvar _verify = _interopRequireDefault(require(\"./verify\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = naclDecrypt;\n\nvar _tweetnacl = _interopRequireDefault(require(\"tweetnacl\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name naclDecrypt\n * @summary Decrypts a message using the supplied secretKey and nonce\n * @description\n * Returns an decrypted message, using the `secret` and `nonce`.\n * @example\n *
\n *\n * ```javascript\n * import { naclDecrypt } from '@polkadot/util-crypto';\n *\n * naclDecrypt([...], [...], [...]); // => [...]\n * ```\n */\nfunction naclDecrypt(encrypted, nonce, secret) {\n return _tweetnacl.default.secretbox.open(encrypted, nonce, secret) || null;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = naclEncrypt;\n\nvar _tweetnacl = _interopRequireDefault(require(\"tweetnacl\"));\n\nvar _asU8a = _interopRequireDefault(require(\"../random/asU8a\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name naclEncrypt\n * @summary Encrypts a message using the supplied secretKey and nonce\n * @description\n * Returns an encrypted message, using the `secretKey` and `nonce`. If the `nonce` was not supplied, a random value is generated.\n * @example\n *
\n *\n * ```javascript\n * import { naclEncrypt } from '@polkadot/util-crypto';\n *\n * naclEncrypt([...], [...]); // => [...]\n * ```\n */\nfunction naclEncrypt(message, secret) {\n let nonce = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : (0, _asU8a.default)(24);\n return {\n encrypted: _tweetnacl.default.secretbox(message, nonce, secret),\n nonce\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = randomAsU8a;\n\nvar _tweetnacl = _interopRequireDefault(require(\"tweetnacl\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name randomAsU8a\n * @summary Creates a Uint8Array filled with random bytes.\n * @description\n * Returns a `Uint8Array` with the specified (optional) length filled with random bytes.\n * @example\n *
\n *\n * ```javascript\n * import { randomAsU8a } from '@polkadot/util-crypto';\n *\n * randomAsU8a(); // => Uint8Array([...])\n * ```\n */\nfunction randomAsU8a() {\n let length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 32;\n return _tweetnacl.default.randomBytes(length);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = naclKeypairFromRandom;\n\nvar _tweetnacl = _interopRequireDefault(require(\"tweetnacl\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name naclKeypairFromRandom\n * @summary Creates a new public/secret keypair.\n * @description\n * Returns a new generate object containing a `publicKey` & `secretKey`.\n * @example\n *
\n *\n * ```javascript\n * import { naclKeypairFromRandom } from '@polkadot/util-crypto';\n *\n * naclKeypairFromRandom(); // => { secretKey: [...], publicKey: [...] }\n * ```\n */\nfunction naclKeypairFromRandom() {\n return _tweetnacl.default.sign.keyPair();\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = naclKeypairFromSecret;\n\nvar _tweetnacl = _interopRequireDefault(require(\"tweetnacl\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name naclKeypairFromSecret\n * @summary Creates a new public/secret keypair from a secret.\n * @description\n * Returns a object containing a `publicKey` & `secretKey` generated from the supplied secret.\n * @example\n *
\n *\n * ```javascript\n * import { naclKeypairFromSecret } from '@polkadot/util-crypto';\n *\n * naclKeypairFromSecret(...); // => { secretKey: [...], publicKey: [...] }\n * ```\n */\nfunction naclKeypairFromSecret(secret) {\n return _tweetnacl.default.sign.keyPair.fromSecretKey(secret);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = naclKeypairFromString;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _asU8a = _interopRequireDefault(require(\"../../blake2/asU8a\"));\n\nvar _fromSeed = _interopRequireDefault(require(\"./fromSeed\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name naclKeypairFromString\n * @summary Creates a new public/secret keypair from a string.\n * @description\n * Returns a object containing a `publicKey` & `secretKey` generated from the supplied string. The string is hashed and the value used as the input seed.\n * @example\n *
\n *\n * ```javascript\n * import { naclKeypairFromString } from '@polkadot/util-crypto';\n *\n * naclKeypairFromString('test'); // => { secretKey: [...], publicKey: [...] }\n * ```\n */\nfunction naclKeypairFromString(value) {\n return (0, _fromSeed.default)((0, _asU8a.default)((0, _util.stringToU8a)(value), 256));\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = naclSign;\n\nvar _tweetnacl = _interopRequireDefault(require(\"tweetnacl\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _wasmCrypto = require(\"@polkadot/wasm-crypto\");\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name naclSign\n * @summary Signs a message using the supplied secretKey\n * @description\n * Returns message signature of `message`, using the `secretKey`.\n * @example\n *
\n *\n * ```javascript\n * import { naclSign } from '@polkadot/util-crypto';\n *\n * naclSign([...], [...]); // => [...]\n * ```\n */\nfunction naclSign(message, _ref) {\n let publicKey = _ref.publicKey,\n secretKey = _ref.secretKey;\n (0, _util.assert)(secretKey, 'Expected valid secretKey');\n const messageU8a = (0, _util.u8aToU8a)(message);\n return (0, _wasmCrypto.isReady)() ? (0, _wasmCrypto.ed25519Sign)(publicKey, secretKey.subarray(0, 32), messageU8a) : _tweetnacl.default.sign.detached(messageU8a, secretKey);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = naclVerify;\n\nvar _tweetnacl = _interopRequireDefault(require(\"tweetnacl\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _wasmCrypto = require(\"@polkadot/wasm-crypto\");\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name naclSign\n * @summary Verifies the signature on the supplied message.\n * @description\n * Verifies the `signature` on `message` with the supplied `plublicKey`. Returns `true` on sucess, `false` otherwise.\n * @example\n *
\n *\n * ```javascript\n * import { naclVerify } from '@polkadot/util-crypto';\n *\n * naclVerify([...], [...], [...]); // => true/false\n * ```\n */\nfunction naclVerify(message, signature, publicKey) {\n const messageU8a = (0, _util.u8aToU8a)(message);\n const signatureU8a = (0, _util.u8aToU8a)(signature);\n const publicKeyU8a = (0, _util.u8aToU8a)(publicKey);\n return (0, _wasmCrypto.isReady)() ? (0, _wasmCrypto.ed25519Verify)(signatureU8a, messageU8a, publicKeyU8a) : _tweetnacl.default.sign.detached.verify(messageU8a, signatureU8a, publicKeyU8a);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"randomAsHex\", {\n enumerable: true,\n get: function get() {\n return _asHex.default;\n }\n});\nObject.defineProperty(exports, \"randomAsNumber\", {\n enumerable: true,\n get: function get() {\n return _asNumber.default;\n }\n});\nObject.defineProperty(exports, \"randomAsU8a\", {\n enumerable: true,\n get: function get() {\n return _asU8a.default;\n }\n});\n\nvar _asHex = _interopRequireDefault(require(\"./asHex\"));\n\nvar _asNumber = _interopRequireDefault(require(\"./asNumber\"));\n\nvar _asU8a = _interopRequireDefault(require(\"./asU8a\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = randomAsHex;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _asU8a = _interopRequireDefault(require(\"./asU8a\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name randomAsHex\n * @summary Creates a hex string filled with random bytes.\n * @description\n * Returns a hex string with the specified (optional) length filled with random bytes.\n * @example\n *
\n *\n * ```javascript\n * import { randomAsHex } from '@polkadot/util-crypto';\n *\n * randomAsHex(); // => 0x...\n * ```\n */\nfunction randomAsHex() {\n let length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 32;\n return (0, _util.u8aToHex)((0, _asU8a.default)(length));\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = randomAsNumber;\n\nvar _bn = _interopRequireDefault(require(\"bn.js\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _asHex = _interopRequireDefault(require(\"./asHex\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst BN_53 = new _bn.default(0b11111111111111111111111111111111111111111111111111111);\n/**\n * @name randomAsNumber\n * @summary Creates a random number from random bytes.\n * @description\n * Returns a random number generated from the secure bytes.\n * @example\n *
\n *\n * ```javascript\n * import { randomAsNumber } from '@polkadot/util-crypto';\n *\n * randomAsNumber(); // => \n * ```\n */\n\nfunction randomAsNumber() {\n return (0, _util.hexToBn)((0, _asHex.default)(8)).and(BN_53).toNumber();\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"schnorrkelDeriveHard\", {\n enumerable: true,\n get: function get() {\n return _deriveHard.default;\n }\n});\nObject.defineProperty(exports, \"schnorrkelDeriveSoft\", {\n enumerable: true,\n get: function get() {\n return _deriveSoft.default;\n }\n});\nObject.defineProperty(exports, \"schnorrkelKeypairFromSeed\", {\n enumerable: true,\n get: function get() {\n return _fromSeed.default;\n }\n});\nObject.defineProperty(exports, \"schnorrkelSign\", {\n enumerable: true,\n get: function get() {\n return _sign.default;\n }\n});\nObject.defineProperty(exports, \"schnorrkelVerify\", {\n enumerable: true,\n get: function get() {\n return _verify.default;\n }\n});\n\nrequire(\"../polyfill\");\n\nvar _deriveHard = _interopRequireDefault(require(\"./deriveHard\"));\n\nvar _deriveSoft = _interopRequireDefault(require(\"./deriveSoft\"));\n\nvar _fromSeed = _interopRequireDefault(require(\"./keypair/fromSeed\"));\n\nvar _sign = _interopRequireDefault(require(\"./sign\"));\n\nvar _verify = _interopRequireDefault(require(\"./verify\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = schnorrkelKeypairFromSeed;\n\nrequire(\"../../polyfill\");\n\nvar _wasmCrypto = require(\"@polkadot/wasm-crypto\");\n\nvar _fromU8a = _interopRequireDefault(require(\"./fromU8a\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name schnorrkelKeypairFromSeed\n * @description Returns a object containing a `publicKey` & `secretKey` generated from the supplied seed.\n */\nfunction schnorrkelKeypairFromSeed(seed) {\n return (0, _fromU8a.default)((0, _wasmCrypto.sr25519KeypairFromSeed)(seed));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = schnorrkelSign;\n\nrequire(\"../polyfill\");\n\nvar _util = require(\"@polkadot/util\");\n\nvar _wasmCrypto = require(\"@polkadot/wasm-crypto\");\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name schnorrkelSign\n * @description Returns message signature of `message`, using the supplied pair\n */\nfunction schnorrkelSign(message, _ref) {\n let publicKey = _ref.publicKey,\n secretKey = _ref.secretKey;\n (0, _util.assert)(publicKey && publicKey.length === 32, 'Expected valid publicKey, 32-bytes');\n (0, _util.assert)(secretKey && secretKey.length === 64, 'Expected valid secretKey, 64-bytes');\n const messageU8a = (0, _util.u8aToU8a)(message);\n return (0, _wasmCrypto.sr25519Sign)(publicKey, secretKey, messageU8a);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = schnorrkelVerify;\n\nrequire(\"../polyfill\");\n\nvar _util = require(\"@polkadot/util\");\n\nvar _wasmCrypto = require(\"@polkadot/wasm-crypto\");\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name schnorrkelVerify\n * @description Verifies the signature of `message`, using the supplied pair\n */\nfunction schnorrkelVerify(message, signature, publicKey) {\n const messageU8a = (0, _util.u8aToU8a)(message);\n const signatureU8a = (0, _util.u8aToU8a)(signature);\n const publicKeyU8a = (0, _util.u8aToU8a)(publicKey);\n return (0, _wasmCrypto.sr25519Verify)(signatureU8a, messageU8a, publicKeyU8a);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"secp256k1Recover\", {\n enumerable: true,\n get: function get() {\n return _recover.default;\n }\n});\n\nvar _recover = _interopRequireDefault(require(\"./recover\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = secp256k1Recover;\n\nvar _secp256k = _interopRequireDefault(require(\"secp256k1\"));\n\nvar _util = require(\"@polkadot/util\");\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name secp256k1Recover\n * @description Recovers a publicKey from the supplied signature\n */\nfunction secp256k1Recover(message, signature, recovery) {\n return (0, _util.u8aToU8a)(_secp256k.default.recover((0, _util.u8aToBuffer)(message), (0, _util.u8aToBuffer)(signature), recovery));\n}","'use strict'\nmodule.exports = require('./lib')(require('./lib/elliptic'))\n","'use strict'\nvar assert = require('./assert')\nvar der = require('./der')\nvar messages = require('./messages.json')\n\nfunction initCompressedValue (value, defaultValue) {\n if (value === undefined) return defaultValue\n\n assert.isBoolean(value, messages.COMPRESSED_TYPE_INVALID)\n return value\n}\n\nmodule.exports = function (secp256k1) {\n return {\n privateKeyVerify: function (privateKey) {\n assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)\n return privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)\n },\n\n privateKeyExport: function (privateKey, compressed) {\n assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)\n assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)\n\n compressed = initCompressedValue(compressed, true)\n var publicKey = secp256k1.privateKeyExport(privateKey, compressed)\n\n return der.privateKeyExport(privateKey, publicKey, compressed)\n },\n\n privateKeyImport: function (privateKey) {\n assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)\n\n privateKey = der.privateKeyImport(privateKey)\n if (privateKey && privateKey.length === 32 && secp256k1.privateKeyVerify(privateKey)) return privateKey\n\n throw new Error(messages.EC_PRIVATE_KEY_IMPORT_DER_FAIL)\n },\n\n privateKeyNegate: function (privateKey) {\n assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)\n assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)\n\n return secp256k1.privateKeyNegate(privateKey)\n },\n\n privateKeyModInverse: function (privateKey) {\n assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)\n assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)\n\n return secp256k1.privateKeyModInverse(privateKey)\n },\n\n privateKeyTweakAdd: function (privateKey, tweak) {\n assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)\n assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)\n\n assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)\n assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)\n\n return secp256k1.privateKeyTweakAdd(privateKey, tweak)\n },\n\n privateKeyTweakMul: function (privateKey, tweak) {\n assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)\n assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)\n\n assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)\n assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)\n\n return secp256k1.privateKeyTweakMul(privateKey, tweak)\n },\n\n publicKeyCreate: function (privateKey, compressed) {\n assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)\n assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)\n\n compressed = initCompressedValue(compressed, true)\n\n return secp256k1.publicKeyCreate(privateKey, compressed)\n },\n\n publicKeyConvert: function (publicKey, compressed) {\n assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)\n assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)\n\n compressed = initCompressedValue(compressed, true)\n\n return secp256k1.publicKeyConvert(publicKey, compressed)\n },\n\n publicKeyVerify: function (publicKey) {\n assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)\n return secp256k1.publicKeyVerify(publicKey)\n },\n\n publicKeyTweakAdd: function (publicKey, tweak, compressed) {\n assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)\n assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)\n\n assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)\n assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)\n\n compressed = initCompressedValue(compressed, true)\n\n return secp256k1.publicKeyTweakAdd(publicKey, tweak, compressed)\n },\n\n publicKeyTweakMul: function (publicKey, tweak, compressed) {\n assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)\n assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)\n\n assert.isBuffer(tweak, messages.TWEAK_TYPE_INVALID)\n assert.isBufferLength(tweak, 32, messages.TWEAK_LENGTH_INVALID)\n\n compressed = initCompressedValue(compressed, true)\n\n return secp256k1.publicKeyTweakMul(publicKey, tweak, compressed)\n },\n\n publicKeyCombine: function (publicKeys, compressed) {\n assert.isArray(publicKeys, messages.EC_PUBLIC_KEYS_TYPE_INVALID)\n assert.isLengthGTZero(publicKeys, messages.EC_PUBLIC_KEYS_LENGTH_INVALID)\n for (var i = 0; i < publicKeys.length; ++i) {\n assert.isBuffer(publicKeys[i], messages.EC_PUBLIC_KEY_TYPE_INVALID)\n assert.isBufferLength2(publicKeys[i], 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)\n }\n\n compressed = initCompressedValue(compressed, true)\n\n return secp256k1.publicKeyCombine(publicKeys, compressed)\n },\n\n signatureNormalize: function (signature) {\n assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)\n assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)\n\n return secp256k1.signatureNormalize(signature)\n },\n\n signatureExport: function (signature) {\n assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)\n assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)\n\n var sigObj = secp256k1.signatureExport(signature)\n return der.signatureExport(sigObj)\n },\n\n signatureImport: function (sig) {\n assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)\n assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)\n\n var sigObj = der.signatureImport(sig)\n if (sigObj) return secp256k1.signatureImport(sigObj)\n\n throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)\n },\n\n signatureImportLax: function (sig) {\n assert.isBuffer(sig, messages.ECDSA_SIGNATURE_TYPE_INVALID)\n assert.isLengthGTZero(sig, messages.ECDSA_SIGNATURE_LENGTH_INVALID)\n\n var sigObj = der.signatureImportLax(sig)\n if (sigObj) return secp256k1.signatureImport(sigObj)\n\n throw new Error(messages.ECDSA_SIGNATURE_PARSE_DER_FAIL)\n },\n\n sign: function (message, privateKey, options) {\n assert.isBuffer(message, messages.MSG32_TYPE_INVALID)\n assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)\n\n assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)\n assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)\n\n var data = null\n var noncefn = null\n if (options !== undefined) {\n assert.isObject(options, messages.OPTIONS_TYPE_INVALID)\n\n if (options.data !== undefined) {\n assert.isBuffer(options.data, messages.OPTIONS_DATA_TYPE_INVALID)\n assert.isBufferLength(options.data, 32, messages.OPTIONS_DATA_LENGTH_INVALID)\n data = options.data\n }\n\n if (options.noncefn !== undefined) {\n assert.isFunction(options.noncefn, messages.OPTIONS_NONCEFN_TYPE_INVALID)\n noncefn = options.noncefn\n }\n }\n\n return secp256k1.sign(message, privateKey, noncefn, data)\n },\n\n verify: function (message, signature, publicKey) {\n assert.isBuffer(message, messages.MSG32_TYPE_INVALID)\n assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)\n\n assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)\n assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)\n\n assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)\n assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)\n\n return secp256k1.verify(message, signature, publicKey)\n },\n\n recover: function (message, signature, recovery, compressed) {\n assert.isBuffer(message, messages.MSG32_TYPE_INVALID)\n assert.isBufferLength(message, 32, messages.MSG32_LENGTH_INVALID)\n\n assert.isBuffer(signature, messages.ECDSA_SIGNATURE_TYPE_INVALID)\n assert.isBufferLength(signature, 64, messages.ECDSA_SIGNATURE_LENGTH_INVALID)\n\n assert.isNumber(recovery, messages.RECOVERY_ID_TYPE_INVALID)\n assert.isNumberInInterval(recovery, -1, 4, messages.RECOVERY_ID_VALUE_INVALID)\n\n compressed = initCompressedValue(compressed, true)\n\n return secp256k1.recover(message, signature, recovery, compressed)\n },\n\n ecdh: function (publicKey, privateKey) {\n assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)\n assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)\n\n assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)\n assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)\n\n return secp256k1.ecdh(publicKey, privateKey)\n },\n\n ecdhUnsafe: function (publicKey, privateKey, compressed) {\n assert.isBuffer(publicKey, messages.EC_PUBLIC_KEY_TYPE_INVALID)\n assert.isBufferLength2(publicKey, 33, 65, messages.EC_PUBLIC_KEY_LENGTH_INVALID)\n\n assert.isBuffer(privateKey, messages.EC_PRIVATE_KEY_TYPE_INVALID)\n assert.isBufferLength(privateKey, 32, messages.EC_PRIVATE_KEY_LENGTH_INVALID)\n\n compressed = initCompressedValue(compressed, true)\n\n return secp256k1.ecdhUnsafe(publicKey, privateKey, compressed)\n }\n }\n}\n","'use strict'\nvar toString = Object.prototype.toString\n\n// TypeError\nexports.isArray = function (value, message) {\n if (!Array.isArray(value)) throw TypeError(message)\n}\n\nexports.isBoolean = function (value, message) {\n if (toString.call(value) !== '[object Boolean]') throw TypeError(message)\n}\n\nexports.isBuffer = function (value, message) {\n if (!Buffer.isBuffer(value)) throw TypeError(message)\n}\n\nexports.isFunction = function (value, message) {\n if (toString.call(value) !== '[object Function]') throw TypeError(message)\n}\n\nexports.isNumber = function (value, message) {\n if (toString.call(value) !== '[object Number]') throw TypeError(message)\n}\n\nexports.isObject = function (value, message) {\n if (toString.call(value) !== '[object Object]') throw TypeError(message)\n}\n\n// RangeError\nexports.isBufferLength = function (buffer, length, message) {\n if (buffer.length !== length) throw RangeError(message)\n}\n\nexports.isBufferLength2 = function (buffer, length1, length2, message) {\n if (buffer.length !== length1 && buffer.length !== length2) throw RangeError(message)\n}\n\nexports.isLengthGTZero = function (value, message) {\n if (value.length === 0) throw RangeError(message)\n}\n\nexports.isNumberInInterval = function (number, x, y, message) {\n if (number <= x || number >= y) throw RangeError(message)\n}\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar bip66 = require('bip66')\n\nvar EC_PRIVKEY_EXPORT_DER_COMPRESSED = Buffer.from([\n // begin\n 0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,\n // private key\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // middle\n 0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,\n 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,\n 0x21, 0x02, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,\n 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,\n 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,\n 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,\n // public key\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00\n])\n\nvar EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = Buffer.from([\n // begin\n 0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,\n // private key\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // middle\n 0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48,\n 0xcE, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xfE, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04,\n 0x41, 0x04, 0x79, 0xbE, 0x66, 0x7E, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xcE, 0x87,\n 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xcE, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8,\n 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0E, 0x11,\n 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10,\n 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0xff, 0xff, 0xff, 0xff, 0xfE, 0xba, 0xaE, 0xdc, 0xE6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5E,\n 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,\n // public key\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00\n])\n\nexports.privateKeyExport = function (privateKey, publicKey, compressed) {\n var result = Buffer.from(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED)\n privateKey.copy(result, compressed ? 8 : 9)\n publicKey.copy(result, compressed ? 181 : 214)\n return result\n}\n\nexports.privateKeyImport = function (privateKey) {\n var length = privateKey.length\n\n // sequence header\n var index = 0\n if (length < index + 1 || privateKey[index] !== 0x30) return\n index += 1\n\n // sequence length constructor\n if (length < index + 1 || !(privateKey[index] & 0x80)) return\n\n var lenb = privateKey[index] & 0x7f\n index += 1\n if (lenb < 1 || lenb > 2) return\n if (length < index + lenb) return\n\n // sequence length\n var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0)\n index += lenb\n if (length < index + len) return\n\n // sequence element 0: version number (=1)\n if (length < index + 3 ||\n privateKey[index] !== 0x02 ||\n privateKey[index + 1] !== 0x01 ||\n privateKey[index + 2] !== 0x01) {\n return\n }\n index += 3\n\n // sequence element 1: octet string, up to 32 bytes\n if (length < index + 2 ||\n privateKey[index] !== 0x04 ||\n privateKey[index + 1] > 0x20 ||\n length < index + 2 + privateKey[index + 1]) {\n return\n }\n\n return privateKey.slice(index + 2, index + 2 + privateKey[index + 1])\n}\n\nexports.signatureExport = function (sigObj) {\n var r = Buffer.concat([Buffer.from([0]), sigObj.r])\n for (var lenR = 33, posR = 0; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);\n\n var s = Buffer.concat([Buffer.from([0]), sigObj.s])\n for (var lenS = 33, posS = 0; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);\n\n return bip66.encode(r.slice(posR), s.slice(posS))\n}\n\nexports.signatureImport = function (sig) {\n var r = Buffer.alloc(32, 0)\n var s = Buffer.alloc(32, 0)\n\n try {\n var sigObj = bip66.decode(sig)\n if (sigObj.r.length === 33 && sigObj.r[0] === 0x00) sigObj.r = sigObj.r.slice(1)\n if (sigObj.r.length > 32) throw new Error('R length is too long')\n if (sigObj.s.length === 33 && sigObj.s[0] === 0x00) sigObj.s = sigObj.s.slice(1)\n if (sigObj.s.length > 32) throw new Error('S length is too long')\n } catch (err) {\n return\n }\n\n sigObj.r.copy(r, 32 - sigObj.r.length)\n sigObj.s.copy(s, 32 - sigObj.s.length)\n\n return { r: r, s: s }\n}\n\nexports.signatureImportLax = function (sig) {\n var r = Buffer.alloc(32, 0)\n var s = Buffer.alloc(32, 0)\n\n var length = sig.length\n var index = 0\n\n // sequence tag byte\n if (sig[index++] !== 0x30) return\n\n // sequence length byte\n var lenbyte = sig[index++]\n if (lenbyte & 0x80) {\n index += lenbyte - 0x80\n if (index > length) return\n }\n\n // sequence tag byte for r\n if (sig[index++] !== 0x02) return\n\n // length for r\n var rlen = sig[index++]\n if (rlen & 0x80) {\n lenbyte = rlen - 0x80\n if (index + lenbyte > length) return\n for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);\n for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) rlen = (rlen << 8) + sig[index]\n }\n if (rlen > length - index) return\n var rindex = index\n index += rlen\n\n // sequence tag byte for s\n if (sig[index++] !== 0x02) return\n\n // length for s\n var slen = sig[index++]\n if (slen & 0x80) {\n lenbyte = slen - 0x80\n if (index + lenbyte > length) return\n for (; lenbyte > 0 && sig[index] === 0x00; index += 1, lenbyte -= 1);\n for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) slen = (slen << 8) + sig[index]\n }\n if (slen > length - index) return\n var sindex = index\n index += slen\n\n // ignore leading zeros in r\n for (; rlen > 0 && sig[rindex] === 0x00; rlen -= 1, rindex += 1);\n // copy r value\n if (rlen > 32) return\n var rvalue = sig.slice(rindex, rindex + rlen)\n rvalue.copy(r, 32 - rvalue.length)\n\n // ignore leading zeros in s\n for (; slen > 0 && sig[sindex] === 0x00; slen -= 1, sindex += 1);\n // copy s value\n if (slen > 32) return\n var svalue = sig.slice(sindex, sindex + slen)\n svalue.copy(s, 32 - svalue.length)\n\n return { r: r, s: s }\n}\n","// Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki\n// Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n// NOTE: SIGHASH byte ignored AND restricted, truncate before use\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction check (buffer) {\n if (buffer.length < 8) return false\n if (buffer.length > 72) return false\n if (buffer[0] !== 0x30) return false\n if (buffer[1] !== buffer.length - 2) return false\n if (buffer[2] !== 0x02) return false\n\n var lenR = buffer[3]\n if (lenR === 0) return false\n if (5 + lenR >= buffer.length) return false\n if (buffer[4 + lenR] !== 0x02) return false\n\n var lenS = buffer[5 + lenR]\n if (lenS === 0) return false\n if ((6 + lenR + lenS) !== buffer.length) return false\n\n if (buffer[4] & 0x80) return false\n if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) return false\n\n if (buffer[lenR + 6] & 0x80) return false\n if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) return false\n return true\n}\n\nfunction decode (buffer) {\n if (buffer.length < 8) throw new Error('DER sequence length is too short')\n if (buffer.length > 72) throw new Error('DER sequence length is too long')\n if (buffer[0] !== 0x30) throw new Error('Expected DER sequence')\n if (buffer[1] !== buffer.length - 2) throw new Error('DER sequence length is invalid')\n if (buffer[2] !== 0x02) throw new Error('Expected DER integer')\n\n var lenR = buffer[3]\n if (lenR === 0) throw new Error('R length is zero')\n if (5 + lenR >= buffer.length) throw new Error('R length is too long')\n if (buffer[4 + lenR] !== 0x02) throw new Error('Expected DER integer (2)')\n\n var lenS = buffer[5 + lenR]\n if (lenS === 0) throw new Error('S length is zero')\n if ((6 + lenR + lenS) !== buffer.length) throw new Error('S length is invalid')\n\n if (buffer[4] & 0x80) throw new Error('R value is negative')\n if (lenR > 1 && (buffer[4] === 0x00) && !(buffer[5] & 0x80)) throw new Error('R value excessively padded')\n\n if (buffer[lenR + 6] & 0x80) throw new Error('S value is negative')\n if (lenS > 1 && (buffer[lenR + 6] === 0x00) && !(buffer[lenR + 7] & 0x80)) throw new Error('S value excessively padded')\n\n // non-BIP66 - extract R, S values\n return {\n r: buffer.slice(4, 4 + lenR),\n s: buffer.slice(6 + lenR)\n }\n}\n\n/*\n * Expects r and s to be positive DER integers.\n *\n * The DER format uses the most significant bit as a sign bit (& 0x80).\n * If the significant bit is set AND the integer is positive, a 0x00 is prepended.\n *\n * Examples:\n *\n * 0 => 0x00\n * 1 => 0x01\n * -1 => 0xff\n * 127 => 0x7f\n * -127 => 0x81\n * 128 => 0x0080\n * -128 => 0x80\n * 255 => 0x00ff\n * -255 => 0xff01\n * 16300 => 0x3fac\n * -16300 => 0xc054\n * 62300 => 0x00f35c\n * -62300 => 0xff0ca4\n*/\nfunction encode (r, s) {\n var lenR = r.length\n var lenS = s.length\n if (lenR === 0) throw new Error('R length is zero')\n if (lenS === 0) throw new Error('S length is zero')\n if (lenR > 33) throw new Error('R length is too long')\n if (lenS > 33) throw new Error('S length is too long')\n if (r[0] & 0x80) throw new Error('R value is negative')\n if (s[0] & 0x80) throw new Error('S value is negative')\n if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) throw new Error('R value excessively padded')\n if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) throw new Error('S value excessively padded')\n\n var signature = Buffer.allocUnsafe(6 + lenR + lenS)\n\n // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n signature[0] = 0x30\n signature[1] = signature.length - 2\n signature[2] = 0x02\n signature[3] = r.length\n r.copy(signature, 4)\n signature[4 + lenR] = 0x02\n signature[5 + lenR] = s.length\n s.copy(signature, 6 + lenR)\n\n return signature\n}\n\nmodule.exports = {\n check: check,\n decode: decode,\n encode: encode\n}\n","{\n \"COMPRESSED_TYPE_INVALID\": \"compressed should be a boolean\",\n \"EC_PRIVATE_KEY_TYPE_INVALID\": \"private key should be a Buffer\",\n \"EC_PRIVATE_KEY_LENGTH_INVALID\": \"private key length is invalid\",\n \"EC_PRIVATE_KEY_RANGE_INVALID\": \"private key range is invalid\",\n \"EC_PRIVATE_KEY_TWEAK_ADD_FAIL\": \"tweak out of range or resulting private key is invalid\",\n \"EC_PRIVATE_KEY_TWEAK_MUL_FAIL\": \"tweak out of range\",\n \"EC_PRIVATE_KEY_EXPORT_DER_FAIL\": \"couldn't export to DER format\",\n \"EC_PRIVATE_KEY_IMPORT_DER_FAIL\": \"couldn't import from DER format\",\n \"EC_PUBLIC_KEYS_TYPE_INVALID\": \"public keys should be an Array\",\n \"EC_PUBLIC_KEYS_LENGTH_INVALID\": \"public keys Array should have at least 1 element\",\n \"EC_PUBLIC_KEY_TYPE_INVALID\": \"public key should be a Buffer\",\n \"EC_PUBLIC_KEY_LENGTH_INVALID\": \"public key length is invalid\",\n \"EC_PUBLIC_KEY_PARSE_FAIL\": \"the public key could not be parsed or is invalid\",\n \"EC_PUBLIC_KEY_CREATE_FAIL\": \"private was invalid, try again\",\n \"EC_PUBLIC_KEY_TWEAK_ADD_FAIL\": \"tweak out of range or resulting public key is invalid\",\n \"EC_PUBLIC_KEY_TWEAK_MUL_FAIL\": \"tweak out of range\",\n \"EC_PUBLIC_KEY_COMBINE_FAIL\": \"the sum of the public keys is not valid\",\n \"ECDH_FAIL\": \"scalar was invalid (zero or overflow)\",\n \"ECDSA_SIGNATURE_TYPE_INVALID\": \"signature should be a Buffer\",\n \"ECDSA_SIGNATURE_LENGTH_INVALID\": \"signature length is invalid\",\n \"ECDSA_SIGNATURE_PARSE_FAIL\": \"couldn't parse signature\",\n \"ECDSA_SIGNATURE_PARSE_DER_FAIL\": \"couldn't parse DER signature\",\n \"ECDSA_SIGNATURE_SERIALIZE_DER_FAIL\": \"couldn't serialize signature to DER format\",\n \"ECDSA_SIGN_FAIL\": \"nonce generation function failed or private key is invalid\",\n \"ECDSA_RECOVER_FAIL\": \"couldn't recover public key from signature\",\n \"MSG32_TYPE_INVALID\": \"message should be a Buffer\",\n \"MSG32_LENGTH_INVALID\": \"message length is invalid\",\n \"OPTIONS_TYPE_INVALID\": \"options should be an Object\",\n \"OPTIONS_DATA_TYPE_INVALID\": \"options.data should be a Buffer\",\n \"OPTIONS_DATA_LENGTH_INVALID\": \"options.data length is invalid\",\n \"OPTIONS_NONCEFN_TYPE_INVALID\": \"options.noncefn should be a Function\",\n \"RECOVERY_ID_TYPE_INVALID\": \"recovery should be a Number\",\n \"RECOVERY_ID_VALUE_INVALID\": \"recovery should have value between -1 and 4\",\n \"TWEAK_TYPE_INVALID\": \"tweak should be a Buffer\",\n \"TWEAK_LENGTH_INVALID\": \"tweak length is invalid\"\n}\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\n\nvar messages = require('../messages.json')\n\nvar ec = new EC('secp256k1')\nvar ecparams = ec.curve\n\nfunction loadCompressedPublicKey (first, xBuffer) {\n var x = new BN(xBuffer)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0) return null\n x = x.toRed(ecparams.red)\n\n // compute corresponding Y\n var y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()\n if ((first === 0x03) !== y.isOdd()) y = y.redNeg()\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadUncompressedPublicKey (first, xBuffer, yBuffer) {\n var x = new BN(xBuffer)\n var y = new BN(yBuffer)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null\n\n x = x.toRed(ecparams.red)\n y = y.toRed(ecparams.red)\n\n // is odd flag\n if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null\n\n // x*x*x + b = y*y\n var x3 = x.redSqr().redIMul(x)\n if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadPublicKey (publicKey) {\n var first = publicKey[0]\n switch (first) {\n case 0x02:\n case 0x03:\n if (publicKey.length !== 33) return null\n return loadCompressedPublicKey(first, publicKey.slice(1, 33))\n case 0x04:\n case 0x06:\n case 0x07:\n if (publicKey.length !== 65) return null\n return loadUncompressedPublicKey(first, publicKey.slice(1, 33), publicKey.slice(33, 65))\n default:\n return null\n }\n}\n\nexports.privateKeyVerify = function (privateKey) {\n var bn = new BN(privateKey)\n return bn.cmp(ecparams.n) < 0 && !bn.isZero()\n}\n\nexports.privateKeyExport = function (privateKey, compressed) {\n var d = new BN(privateKey)\n if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PRIVATE_KEY_EXPORT_DER_FAIL)\n\n return Buffer.from(ec.keyFromPrivate(privateKey).getPublic(compressed, true))\n}\n\nexports.privateKeyNegate = function (privateKey) {\n var bn = new BN(privateKey)\n return bn.isZero() ? Buffer.alloc(32) : ecparams.n.sub(bn).umod(ecparams.n).toArrayLike(Buffer, 'be', 32)\n}\n\nexports.privateKeyModInverse = function (privateKey) {\n var bn = new BN(privateKey)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_RANGE_INVALID)\n\n return bn.invm(ecparams.n).toArrayLike(Buffer, 'be', 32)\n}\n\nexports.privateKeyTweakAdd = function (privateKey, tweak) {\n var bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)\n\n bn.iadd(new BN(privateKey))\n if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)\n if (bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_ADD_FAIL)\n\n return bn.toArrayLike(Buffer, 'be', 32)\n}\n\nexports.privateKeyTweakMul = function (privateKey, tweak) {\n var bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) throw new Error(messages.EC_PRIVATE_KEY_TWEAK_MUL_FAIL)\n\n bn.imul(new BN(privateKey))\n if (bn.cmp(ecparams.n)) bn = bn.umod(ecparams.n)\n\n return bn.toArrayLike(Buffer, 'be', 32)\n}\n\nexports.publicKeyCreate = function (privateKey, compressed) {\n var d = new BN(privateKey)\n if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.EC_PUBLIC_KEY_CREATE_FAIL)\n\n return Buffer.from(ec.keyFromPrivate(privateKey).getPublic(compressed, true))\n}\n\nexports.publicKeyConvert = function (publicKey, compressed) {\n var pair = loadPublicKey(publicKey)\n if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)\n\n return Buffer.from(pair.getPublic(compressed, true))\n}\n\nexports.publicKeyVerify = function (publicKey) {\n return loadPublicKey(publicKey) !== null\n}\n\nexports.publicKeyTweakAdd = function (publicKey, tweak, compressed) {\n var pair = loadPublicKey(publicKey)\n if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)\n\n var point = ecparams.g.mul(tweak).add(pair.pub)\n if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_ADD_FAIL)\n\n return Buffer.from(point.encode(true, compressed))\n}\n\nexports.publicKeyTweakMul = function (publicKey, tweak, compressed) {\n var pair = loadPublicKey(publicKey)\n if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) throw new Error(messages.EC_PUBLIC_KEY_TWEAK_MUL_FAIL)\n\n return Buffer.from(pair.pub.mul(tweak).encode(true, compressed))\n}\n\nexports.publicKeyCombine = function (publicKeys, compressed) {\n var pairs = new Array(publicKeys.length)\n for (var i = 0; i < publicKeys.length; ++i) {\n pairs[i] = loadPublicKey(publicKeys[i])\n if (pairs[i] === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)\n }\n\n var point = pairs[0].pub\n for (var j = 1; j < pairs.length; ++j) point = point.add(pairs[j].pub)\n if (point.isInfinity()) throw new Error(messages.EC_PUBLIC_KEY_COMBINE_FAIL)\n\n return Buffer.from(point.encode(true, compressed))\n}\n\nexports.signatureNormalize = function (signature) {\n var r = new BN(signature.slice(0, 32))\n var s = new BN(signature.slice(32, 64))\n if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)\n\n var result = Buffer.from(signature)\n if (s.cmp(ec.nh) === 1) ecparams.n.sub(s).toArrayLike(Buffer, 'be', 32).copy(result, 32)\n\n return result\n}\n\nexports.signatureExport = function (signature) {\n var r = signature.slice(0, 32)\n var s = signature.slice(32, 64)\n if (new BN(r).cmp(ecparams.n) >= 0 || new BN(s).cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)\n\n return { r: r, s: s }\n}\n\nexports.signatureImport = function (sigObj) {\n var r = new BN(sigObj.r)\n if (r.cmp(ecparams.n) >= 0) r = new BN(0)\n\n var s = new BN(sigObj.s)\n if (s.cmp(ecparams.n) >= 0) s = new BN(0)\n\n return Buffer.concat([\n r.toArrayLike(Buffer, 'be', 32),\n s.toArrayLike(Buffer, 'be', 32)\n ])\n}\n\nexports.sign = function (message, privateKey, noncefn, data) {\n if (typeof noncefn === 'function') {\n var getNonce = noncefn\n noncefn = function (counter) {\n var nonce = getNonce(message, privateKey, null, data, counter)\n if (!Buffer.isBuffer(nonce) || nonce.length !== 32) throw new Error(messages.ECDSA_SIGN_FAIL)\n\n return new BN(nonce)\n }\n }\n\n var d = new BN(privateKey)\n if (d.cmp(ecparams.n) >= 0 || d.isZero()) throw new Error(messages.ECDSA_SIGN_FAIL)\n\n var result = ec.sign(message, privateKey, { canonical: true, k: noncefn, pers: data })\n return {\n signature: Buffer.concat([\n result.r.toArrayLike(Buffer, 'be', 32),\n result.s.toArrayLike(Buffer, 'be', 32)\n ]),\n recovery: result.recoveryParam\n }\n}\n\nexports.verify = function (message, signature, publicKey) {\n var sigObj = { r: signature.slice(0, 32), s: signature.slice(32, 64) }\n\n var sigr = new BN(sigObj.r)\n var sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)\n if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return false\n\n var pair = loadPublicKey(publicKey)\n if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)\n\n return ec.verify(message, sigObj, { x: pair.pub.x, y: pair.pub.y })\n}\n\nexports.recover = function (message, signature, recovery, compressed) {\n var sigObj = { r: signature.slice(0, 32), s: signature.slice(32, 64) }\n\n var sigr = new BN(sigObj.r)\n var sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) throw new Error(messages.ECDSA_SIGNATURE_PARSE_FAIL)\n\n try {\n if (sigr.isZero() || sigs.isZero()) throw new Error()\n\n var point = ec.recoverPubKey(message, sigObj, recovery)\n return Buffer.from(point.encode(true, compressed))\n } catch (err) {\n throw new Error(messages.ECDSA_RECOVER_FAIL)\n }\n}\n\nexports.ecdh = function (publicKey, privateKey) {\n var shared = exports.ecdhUnsafe(publicKey, privateKey, true)\n return createHash('sha256').update(shared).digest()\n}\n\nexports.ecdhUnsafe = function (publicKey, privateKey, compressed) {\n var pair = loadPublicKey(publicKey)\n if (pair === null) throw new Error(messages.EC_PUBLIC_KEY_PARSE_FAIL)\n\n var scalar = new BN(privateKey)\n if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) throw new Error(messages.ECDH_FAIL)\n\n return Buffer.from(pair.pub.mul(scalar).encode(true, compressed))\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"sha512AsU8a\", {\n enumerable: true,\n get: function get() {\n return _asU8a.default;\n }\n});\n\nvar _asU8a = _interopRequireDefault(require(\"./asU8a\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = sha512AsU8a;\n\nvar _tweetnacl = _interopRequireDefault(require(\"tweetnacl\"));\n\nvar _wasmCrypto = require(\"@polkadot/wasm-crypto\");\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name sha512AsU8a\n * @summary Creates sha-512 hash of the input.\n * @description\n * Returns a sha-512 `Uint8Array` from the supplied data.\n * @example\n *
\n *\n * ```javascript\n * import { sha512AsU8a } from '@polkadot/util-crypto';\n *\n * sha512AsU8a(Uint8Array.from([...])); // => Uint8Array([...])\n * ```\n */\nfunction sha512AsU8a(data) {\n return (0, _wasmCrypto.isReady)() ? (0, _wasmCrypto.sha512)(data) : _tweetnacl.default.hash(data);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"xxhashAsHex\", {\n enumerable: true,\n get: function get() {\n return _asHex.default;\n }\n});\nObject.defineProperty(exports, \"xxhashAsU8a\", {\n enumerable: true,\n get: function get() {\n return _asU8a.default;\n }\n});\n\nvar _asHex = _interopRequireDefault(require(\"./asHex\"));\n\nvar _asU8a = _interopRequireDefault(require(\"./asU8a\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = xxhashAsHex;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _asU8a = _interopRequireDefault(require(\"./asU8a\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name xxhashAsHex\n * @summary Creates a xxhash64 hex from the input.\n * @description\n * From either a `string`, `Uint8Array` or a `Buffer` input, create the xxhash64 and return the result as a hex string with the specified `bitLength`.\n * @example\n *
\n *\n * ```javascript\n * import { xxhashAsHex } from '@polkadot/util-crypto';\n *\n * xxhashAsHex('abc'); // => 0x44bc2cf5ad770999\n * ```\n */\nfunction xxhashAsHex(data) {\n let bitLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 64;\n return (0, _util.u8aToHex)((0, _asU8a.default)(data, bitLength));\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = xxhashAsU8a;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _wasmCrypto = require(\"@polkadot/wasm-crypto\");\n\nvar _asBn = _interopRequireDefault(require(\"./xxhash64/asBn\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name xxhashAsU8a\n * @summary Creates a xxhash64 u8a from the input.\n * @description\n * From either a `string`, `Uint8Array` or a `Buffer` input, create the xxhash64 and return the result as a `Uint8Array` with the specified `bitLength`.\n * @example\n *
\n *\n * ```javascript\n * import { xxhashAsU8a } from '@polkadot/util-crypto';\n *\n * xxhashAsU8a('abc'); // => 0x44bc2cf5ad770999\n * ```\n */\nfunction xxhashAsU8a(data) {\n let bitLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 64;\n const iterations = Math.ceil(bitLength / 64);\n\n if ((0, _wasmCrypto.isReady)()) {\n return (0, _wasmCrypto.twox)((0, _util.u8aToU8a)(data), iterations);\n }\n\n const u8a = new Uint8Array(Math.ceil(bitLength / 8));\n\n for (let seed = 0; seed < iterations; seed++) {\n u8a.set((0, _asBn.default)(data, seed).toArray('le', 8), seed * 8);\n }\n\n return u8a;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = xxhash64AsBn;\n\nvar _bn = _interopRequireDefault(require(\"bn.js\"));\n\nvar _asRaw = _interopRequireDefault(require(\"./asRaw\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name xxhash64AsBn\n * @summary Creates a xxhash BN from the input.\n * @description\n * From either a `string`, `Uint8Array` or a `Buffer` input, create the xxhash and return the result as a BN.\n * @example\n *
\n *\n * ```javascript\n * import { xxhash64AsNumber } from '@polkadot/util-crypto';\n *\n * xxhash64AsBn('abcd', 0xabcd)); // => new BN(0xe29f70f8b8c96df7)\n * ```\n */\nfunction xxhash64AsBn(data, seed) {\n return new _bn.default((0, _asRaw.default)(data, seed), 16);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = xxhash64AsRaw;\n\nvar _asValue = _interopRequireDefault(require(\"./asValue\"));\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name xxhash64AsRaw\n * @summary Creates a xxhash non-prefixed hex from the input.\n * @description\n * From either a `string`, `Uint8Array` or a `Buffer` input, create the xxhash and return the result as a non-prefixed hex string.\n * @example\n *
\n *\n * ```javascript\n * import { xxhash64AsRaw } from '@polkadot/util-crypto';\n *\n * xxhash64AsRaw('abcd', 0xabcd)); // => e29f70f8b8c96df7\n * ```\n */\nfunction xxhash64AsRaw(data, seed) {\n return (0, _asValue.default)(data, seed).toString(16);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = xxhash64AsValue;\n\nvar _xxhashjs = _interopRequireDefault(require(\"xxhashjs\"));\n\nvar _util = require(\"@polkadot/util\");\n\n// Copyright 2017-2019 @polkadot/util-crypto authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name xxhash64AsValue\n * @summary Creates a hex number from the input.\n * @description\n * From either a `string`, `Uint8Array` or a `Buffer` input, create the xxhash and return the result as a hex number\n * @example\n *
\n *\n * ```javascript\n * import { xxhash64AsValue } from '@polkadot/util-crypto';\n *\n * xxhash64AsValue('abcd', 0xabcd)); // => e29f70f8b8c96df7\n * ```\n */\nfunction xxhash64AsValue(data, seed) {\n if ((0, _util.isBuffer)(data) || (0, _util.isString)(data)) {\n // @ts-ignore Buffer is ArrayBuffer underlying\n return _xxhashjs.default.h64(data, seed);\n } // @ts-ignore conversion works, yields correct result\n\n\n return _xxhashjs.default.h64((0, _util.u8aToBuffer)(data), seed);\n}","module.exports = {\n\th32: require(\"./xxhash\")\n,\th64: require(\"./xxhash64\")\n}\n","/**\nxxHash implementation in pure Javascript\n\nCopyright (C) 2013, Pierre Curto\nMIT license\n*/\nvar UINT32 = require('cuint').UINT32\n\n/*\n\tMerged this sequence of method calls as it speeds up\n\tthe calculations by a factor of 2\n */\n// this.v1.add( other.multiply(PRIME32_2) ).rotl(13).multiply(PRIME32_1);\nUINT32.prototype.xxh_update = function (low, high) {\n\tvar b00 = PRIME32_2._low\n\tvar b16 = PRIME32_2._high\n\n\tvar c16, c00\n\tc00 = low * b00\n\tc16 = c00 >>> 16\n\n\tc16 += high * b00\n\tc16 &= 0xFFFF\t\t// Not required but improves performance\n\tc16 += low * b16\n\n\tvar a00 = this._low + (c00 & 0xFFFF)\n\tvar a16 = a00 >>> 16\n\n\ta16 += this._high + (c16 & 0xFFFF)\n\n\tvar v = (a16 << 16) | (a00 & 0xFFFF)\n\tv = (v << 13) | (v >>> 19)\n\n\ta00 = v & 0xFFFF\n\ta16 = v >>> 16\n\n\tb00 = PRIME32_1._low\n\tb16 = PRIME32_1._high\n\n\tc00 = a00 * b00\n\tc16 = c00 >>> 16\n\n\tc16 += a16 * b00\n\tc16 &= 0xFFFF\t\t// Not required but improves performance\n\tc16 += a00 * b16\n\n\tthis._low = c00 & 0xFFFF\n\tthis._high = c16 & 0xFFFF\n}\n\n/*\n * Constants\n */\nvar PRIME32_1 = UINT32( '2654435761' )\nvar PRIME32_2 = UINT32( '2246822519' )\nvar PRIME32_3 = UINT32( '3266489917' )\nvar PRIME32_4 = UINT32( '668265263' )\nvar PRIME32_5 = UINT32( '374761393' )\n\n/**\n* Convert string to proper UTF-8 array\n* @param str Input string\n* @returns {Uint8Array} UTF8 array is returned as uint8 array\n*/\nfunction toUTF8Array (str) {\n\tvar utf8 = []\n\tfor (var i=0, n=str.length; i < n; i++) {\n\t\tvar charcode = str.charCodeAt(i)\n\t\tif (charcode < 0x80) utf8.push(charcode)\n\t\telse if (charcode < 0x800) {\n\t\t\tutf8.push(0xc0 | (charcode >> 6),\n\t\t\t0x80 | (charcode & 0x3f))\n\t\t}\n\t\telse if (charcode < 0xd800 || charcode >= 0xe000) {\n\t\t\tutf8.push(0xe0 | (charcode >> 12),\n\t\t\t0x80 | ((charcode>>6) & 0x3f),\n\t\t\t0x80 | (charcode & 0x3f))\n\t\t}\n\t\t// surrogate pair\n\t\telse {\n\t\t\ti++;\n\t\t\t// UTF-16 encodes 0x10000-0x10FFFF by\n\t\t\t// subtracting 0x10000 and splitting the\n\t\t\t// 20 bits of 0x0-0xFFFFF into two halves\n\t\t\tcharcode = 0x10000 + (((charcode & 0x3ff)<<10)\n\t\t\t| (str.charCodeAt(i) & 0x3ff))\n\t\t\tutf8.push(0xf0 | (charcode >>18),\n\t\t\t0x80 | ((charcode>>12) & 0x3f),\n\t\t\t0x80 | ((charcode>>6) & 0x3f),\n\t\t\t0x80 | (charcode & 0x3f))\n\t\t}\n\t}\n\n\treturn new Uint8Array(utf8)\n}\n\n/**\n * XXH object used as a constructor or a function\n * @constructor\n * or\n * @param {Object|String} input data\n * @param {Number|UINT32} seed\n * @return ThisExpression\n * or\n * @return {UINT32} xxHash\n */\nfunction XXH () {\n\tif (arguments.length == 2)\n\t\treturn new XXH( arguments[1] ).update( arguments[0] ).digest()\n\n\tif (!(this instanceof XXH))\n\t\treturn new XXH( arguments[0] )\n\n\tinit.call(this, arguments[0])\n}\n\n/**\n * Initialize the XXH instance with the given seed\n * @method init\n * @param {Number|Object} seed as a number or an unsigned 32 bits integer\n * @return ThisExpression\n */\n function init (seed) {\n\tthis.seed = seed instanceof UINT32 ? seed.clone() : UINT32(seed)\n\tthis.v1 = this.seed.clone().add(PRIME32_1).add(PRIME32_2)\n\tthis.v2 = this.seed.clone().add(PRIME32_2)\n\tthis.v3 = this.seed.clone()\n\tthis.v4 = this.seed.clone().subtract(PRIME32_1)\n\tthis.total_len = 0\n\tthis.memsize = 0\n\tthis.memory = null\n\n\treturn this\n}\nXXH.prototype.init = init\n\n/**\n * Add data to be computed for the XXH hash\n * @method update\n * @param {String|Buffer|ArrayBuffer} input as a string or nodejs Buffer or ArrayBuffer\n * @return ThisExpression\n */\nXXH.prototype.update = function (input) {\n\tvar isString = typeof input == 'string'\n\tvar isArrayBuffer\n\n\t// Convert all strings to utf-8 first (issue #5)\n\tif (isString) {\n\t\tinput = toUTF8Array(input)\n\t\tisString = false\n\t\tisArrayBuffer = true\n\t}\n\n\tif (typeof ArrayBuffer !== \"undefined\" && input instanceof ArrayBuffer)\n\t{\n\t\tisArrayBuffer = true\n\t\tinput = new Uint8Array(input);\n\t}\n\n\tvar p = 0\n\tvar len = input.length\n\tvar bEnd = p + len\n\n\tif (len == 0) return this\n\n\tthis.total_len += len\n\n\tif (this.memsize == 0)\n\t{\n\t\tif (isString) {\n\t\t\tthis.memory = ''\n\t\t} else if (isArrayBuffer) {\n\t\t\tthis.memory = new Uint8Array(16)\n\t\t} else {\n\t\t\tthis.memory = new Buffer(16)\n\t\t}\n\t}\n\n\tif (this.memsize + len < 16) // fill in tmp buffer\n\t{\n\t\t// XXH_memcpy(this.memory + this.memsize, input, len)\n\t\tif (isString) {\n\t\t\tthis.memory += input\n\t\t} else if (isArrayBuffer) {\n\t\t\tthis.memory.set( input.subarray(0, len), this.memsize )\n\t\t} else {\n\t\t\tinput.copy( this.memory, this.memsize, 0, len )\n\t\t}\n\n\t\tthis.memsize += len\n\t\treturn this\n\t}\n\n\tif (this.memsize > 0) // some data left from previous update\n\t{\n\t\t// XXH_memcpy(this.memory + this.memsize, input, 16-this.memsize);\n\t\tif (isString) {\n\t\t\tthis.memory += input.slice(0, 16 - this.memsize)\n\t\t} else if (isArrayBuffer) {\n\t\t\tthis.memory.set( input.subarray(0, 16 - this.memsize), this.memsize )\n\t\t} else {\n\t\t\tinput.copy( this.memory, this.memsize, 0, 16 - this.memsize )\n\t\t}\n\n\t\tvar p32 = 0\n\t\tif (isString) {\n\t\t\tthis.v1.xxh_update(\n\t\t\t\t(this.memory.charCodeAt(p32+1) << 8) | this.memory.charCodeAt(p32)\n\t\t\t,\t(this.memory.charCodeAt(p32+3) << 8) | this.memory.charCodeAt(p32+2)\n\t\t\t)\n\t\t\tp32 += 4\n\t\t\tthis.v2.xxh_update(\n\t\t\t\t(this.memory.charCodeAt(p32+1) << 8) | this.memory.charCodeAt(p32)\n\t\t\t,\t(this.memory.charCodeAt(p32+3) << 8) | this.memory.charCodeAt(p32+2)\n\t\t\t)\n\t\t\tp32 += 4\n\t\t\tthis.v3.xxh_update(\n\t\t\t\t(this.memory.charCodeAt(p32+1) << 8) | this.memory.charCodeAt(p32)\n\t\t\t,\t(this.memory.charCodeAt(p32+3) << 8) | this.memory.charCodeAt(p32+2)\n\t\t\t)\n\t\t\tp32 += 4\n\t\t\tthis.v4.xxh_update(\n\t\t\t\t(this.memory.charCodeAt(p32+1) << 8) | this.memory.charCodeAt(p32)\n\t\t\t,\t(this.memory.charCodeAt(p32+3) << 8) | this.memory.charCodeAt(p32+2)\n\t\t\t)\n\t\t} else {\n\t\t\tthis.v1.xxh_update(\n\t\t\t\t(this.memory[p32+1] << 8) | this.memory[p32]\n\t\t\t,\t(this.memory[p32+3] << 8) | this.memory[p32+2]\n\t\t\t)\n\t\t\tp32 += 4\n\t\t\tthis.v2.xxh_update(\n\t\t\t\t(this.memory[p32+1] << 8) | this.memory[p32]\n\t\t\t,\t(this.memory[p32+3] << 8) | this.memory[p32+2]\n\t\t\t)\n\t\t\tp32 += 4\n\t\t\tthis.v3.xxh_update(\n\t\t\t\t(this.memory[p32+1] << 8) | this.memory[p32]\n\t\t\t,\t(this.memory[p32+3] << 8) | this.memory[p32+2]\n\t\t\t)\n\t\t\tp32 += 4\n\t\t\tthis.v4.xxh_update(\n\t\t\t\t(this.memory[p32+1] << 8) | this.memory[p32]\n\t\t\t,\t(this.memory[p32+3] << 8) | this.memory[p32+2]\n\t\t\t)\n\t\t}\n\n\t\tp += 16 - this.memsize\n\t\tthis.memsize = 0\n\t\tif (isString) this.memory = ''\n\t}\n\n\tif (p <= bEnd - 16)\n\t{\n\t\tvar limit = bEnd - 16\n\n\t\tdo\n\t\t{\n\t\t\tif (isString) {\n\t\t\t\tthis.v1.xxh_update(\n\t\t\t\t\t(input.charCodeAt(p+1) << 8) | input.charCodeAt(p)\n\t\t\t\t,\t(input.charCodeAt(p+3) << 8) | input.charCodeAt(p+2)\n\t\t\t\t)\n\t\t\t\tp += 4\n\t\t\t\tthis.v2.xxh_update(\n\t\t\t\t\t(input.charCodeAt(p+1) << 8) | input.charCodeAt(p)\n\t\t\t\t,\t(input.charCodeAt(p+3) << 8) | input.charCodeAt(p+2)\n\t\t\t\t)\n\t\t\t\tp += 4\n\t\t\t\tthis.v3.xxh_update(\n\t\t\t\t\t(input.charCodeAt(p+1) << 8) | input.charCodeAt(p)\n\t\t\t\t,\t(input.charCodeAt(p+3) << 8) | input.charCodeAt(p+2)\n\t\t\t\t)\n\t\t\t\tp += 4\n\t\t\t\tthis.v4.xxh_update(\n\t\t\t\t\t(input.charCodeAt(p+1) << 8) | input.charCodeAt(p)\n\t\t\t\t,\t(input.charCodeAt(p+3) << 8) | input.charCodeAt(p+2)\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tthis.v1.xxh_update(\n\t\t\t\t\t(input[p+1] << 8) | input[p]\n\t\t\t\t,\t(input[p+3] << 8) | input[p+2]\n\t\t\t\t)\n\t\t\t\tp += 4\n\t\t\t\tthis.v2.xxh_update(\n\t\t\t\t\t(input[p+1] << 8) | input[p]\n\t\t\t\t,\t(input[p+3] << 8) | input[p+2]\n\t\t\t\t)\n\t\t\t\tp += 4\n\t\t\t\tthis.v3.xxh_update(\n\t\t\t\t\t(input[p+1] << 8) | input[p]\n\t\t\t\t,\t(input[p+3] << 8) | input[p+2]\n\t\t\t\t)\n\t\t\t\tp += 4\n\t\t\t\tthis.v4.xxh_update(\n\t\t\t\t\t(input[p+1] << 8) | input[p]\n\t\t\t\t,\t(input[p+3] << 8) | input[p+2]\n\t\t\t\t)\n\t\t\t}\n\t\t\tp += 4\n\t\t} while (p <= limit)\n\t}\n\n\tif (p < bEnd)\n\t{\n\t\t// XXH_memcpy(this.memory, p, bEnd-p);\n\t\tif (isString) {\n\t\t\tthis.memory += input.slice(p)\n\t\t} else if (isArrayBuffer) {\n\t\t\tthis.memory.set( input.subarray(p, bEnd), this.memsize )\n\t\t} else {\n\t\t\tinput.copy( this.memory, this.memsize, p, bEnd )\n\t\t}\n\n\t\tthis.memsize = bEnd - p\n\t}\n\n\treturn this\n}\n\n/**\n * Finalize the XXH computation. The XXH instance is ready for reuse for the given seed\n * @method digest\n * @return {UINT32} xxHash\n */\nXXH.prototype.digest = function () {\n\tvar input = this.memory\n\tvar isString = typeof input == 'string'\n\tvar p = 0\n\tvar bEnd = this.memsize\n\tvar h32, h\n\tvar u = new UINT32\n\n\tif (this.total_len >= 16)\n\t{\n\t\th32 = this.v1.rotl(1).add( this.v2.rotl(7).add( this.v3.rotl(12).add( this.v4.rotl(18) ) ) )\n\t}\n\telse\n\t{\n\t\th32 = this.seed.clone().add( PRIME32_5 )\n\t}\n\n\th32.add( u.fromNumber(this.total_len) )\n\n\twhile (p <= bEnd - 4)\n\t{\n\t\tif (isString) {\n\t\t\tu.fromBits(\n\t\t\t\t(input.charCodeAt(p+1) << 8) | input.charCodeAt(p)\n\t\t\t,\t(input.charCodeAt(p+3) << 8) | input.charCodeAt(p+2)\n\t\t\t)\n\t\t} else {\n\t\t\tu.fromBits(\n\t\t\t\t(input[p+1] << 8) | input[p]\n\t\t\t,\t(input[p+3] << 8) | input[p+2]\n\t\t\t)\n\t\t}\n\t\th32\n\t\t\t.add( u.multiply(PRIME32_3) )\n\t\t\t.rotl(17)\n\t\t\t.multiply( PRIME32_4 )\n\t\tp += 4\n\t}\n\n\twhile (p < bEnd)\n\t{\n\t\tu.fromBits( isString ? input.charCodeAt(p++) : input[p++], 0 )\n\t\th32\n\t\t\t.add( u.multiply(PRIME32_5) )\n\t\t\t.rotl(11)\n\t\t\t.multiply(PRIME32_1)\n\t}\n\n\th = h32.clone().shiftRight(15)\n\th32.xor(h).multiply(PRIME32_2)\n\n\th = h32.clone().shiftRight(13)\n\th32.xor(h).multiply(PRIME32_3)\n\n\th = h32.clone().shiftRight(16)\n\th32.xor(h)\n\n\t// Reset the state\n\tthis.init( this.seed )\n\n\treturn h32\n}\n\nmodule.exports = XXH\n","exports.UINT32 = require('./lib/uint32')\nexports.UINT64 = require('./lib/uint64')","/**\n\tC-like unsigned 32 bits integers in Javascript\n\tCopyright (C) 2013, Pierre Curto\n\tMIT license\n */\n;(function (root) {\n\n\t// Local cache for typical radices\n\tvar radixPowerCache = {\n\t\t36: UINT32( Math.pow(36, 5) )\n\t,\t16: UINT32( Math.pow(16, 7) )\n\t,\t10: UINT32( Math.pow(10, 9) )\n\t,\t2: UINT32( Math.pow(2, 30) )\n\t}\n\tvar radixCache = {\n\t\t36: UINT32(36)\n\t,\t16: UINT32(16)\n\t,\t10: UINT32(10)\n\t,\t2: UINT32(2)\n\t}\n\n\t/**\n\t *\tRepresents an unsigned 32 bits integer\n\t * @constructor\n\t * @param {Number|String|Number} low bits | integer as a string \t\t | integer as a number\n\t * @param {Number|Number|Undefined} high bits | radix (optional, default=10)\n\t * @return \n\t */\n\tfunction UINT32 (l, h) {\n\t\tif ( !(this instanceof UINT32) )\n\t\t\treturn new UINT32(l, h)\n\n\t\tthis._low = 0\n\t\tthis._high = 0\n\t\tthis.remainder = null\n\t\tif (typeof h == 'undefined')\n\t\t\treturn fromNumber.call(this, l)\n\n\t\tif (typeof l == 'string')\n\t\t\treturn fromString.call(this, l, h)\n\n\t\tfromBits.call(this, l, h)\n\t}\n\n\t/**\n\t * Set the current _UINT32_ object with its low and high bits\n\t * @method fromBits\n\t * @param {Number} low bits\n\t * @param {Number} high bits\n\t * @return ThisExpression\n\t */\n\tfunction fromBits (l, h) {\n\t\tthis._low = l | 0\n\t\tthis._high = h | 0\n\n\t\treturn this\n\t}\n\tUINT32.prototype.fromBits = fromBits\n\n\t/**\n\t * Set the current _UINT32_ object from a number\n\t * @method fromNumber\n\t * @param {Number} number\n\t * @return ThisExpression\n\t */\n\tfunction fromNumber (value) {\n\t\tthis._low = value & 0xFFFF\n\t\tthis._high = value >>> 16\n\n\t\treturn this\n\t}\n\tUINT32.prototype.fromNumber = fromNumber\n\n\t/**\n\t * Set the current _UINT32_ object from a string\n\t * @method fromString\n\t * @param {String} integer as a string\n\t * @param {Number} radix (optional, default=10)\n\t * @return ThisExpression\n\t */\n\tfunction fromString (s, radix) {\n\t\tvar value = parseInt(s, radix || 10)\n\n\t\tthis._low = value & 0xFFFF\n\t\tthis._high = value >>> 16\n\n\t\treturn this\n\t}\n\tUINT32.prototype.fromString = fromString\n\n\t/**\n\t * Convert this _UINT32_ to a number\n\t * @method toNumber\n\t * @return {Number} the converted UINT32\n\t */\n\tUINT32.prototype.toNumber = function () {\n\t\treturn (this._high * 65536) + this._low\n\t}\n\n\t/**\n\t * Convert this _UINT32_ to a string\n\t * @method toString\n\t * @param {Number} radix (optional, default=10)\n\t * @return {String} the converted UINT32\n\t */\n\tUINT32.prototype.toString = function (radix) {\n\t\treturn this.toNumber().toString(radix || 10)\n\t}\n\n\t/**\n\t * Add two _UINT32_. The current _UINT32_ stores the result\n\t * @method add\n\t * @param {Object} other UINT32\n\t * @return ThisExpression\n\t */\n\tUINT32.prototype.add = function (other) {\n\t\tvar a00 = this._low + other._low\n\t\tvar a16 = a00 >>> 16\n\n\t\ta16 += this._high + other._high\n\n\t\tthis._low = a00 & 0xFFFF\n\t\tthis._high = a16 & 0xFFFF\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Subtract two _UINT32_. The current _UINT32_ stores the result\n\t * @method subtract\n\t * @param {Object} other UINT32\n\t * @return ThisExpression\n\t */\n\tUINT32.prototype.subtract = function (other) {\n\t\t//TODO inline\n\t\treturn this.add( other.clone().negate() )\n\t}\n\n\t/**\n\t * Multiply two _UINT32_. The current _UINT32_ stores the result\n\t * @method multiply\n\t * @param {Object} other UINT32\n\t * @return ThisExpression\n\t */\n\tUINT32.prototype.multiply = function (other) {\n\t\t/*\n\t\t\ta = a00 + a16\n\t\t\tb = b00 + b16\n\t\t\ta*b = (a00 + a16)(b00 + b16)\n\t\t\t\t= a00b00 + a00b16 + a16b00 + a16b16\n\n\t\t\ta16b16 overflows the 32bits\n\t\t */\n\t\tvar a16 = this._high\n\t\tvar a00 = this._low\n\t\tvar b16 = other._high\n\t\tvar b00 = other._low\n\n/* Removed to increase speed under normal circumstances (i.e. not multiplying by 0 or 1)\n\t\t// this == 0 or other == 1: nothing to do\n\t\tif ((a00 == 0 && a16 == 0) || (b00 == 1 && b16 == 0)) return this\n\n\t\t// other == 0 or this == 1: this = other\n\t\tif ((b00 == 0 && b16 == 0) || (a00 == 1 && a16 == 0)) {\n\t\t\tthis._low = other._low\n\t\t\tthis._high = other._high\n\t\t\treturn this\n\t\t}\n*/\n\n\t\tvar c16, c00\n\t\tc00 = a00 * b00\n\t\tc16 = c00 >>> 16\n\n\t\tc16 += a16 * b00\n\t\tc16 &= 0xFFFF\t\t// Not required but improves performance\n\t\tc16 += a00 * b16\n\n\t\tthis._low = c00 & 0xFFFF\n\t\tthis._high = c16 & 0xFFFF\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Divide two _UINT32_. The current _UINT32_ stores the result.\n\t * The remainder is made available as the _remainder_ property on\n\t * the _UINT32_ object. It can be null, meaning there are no remainder.\n\t * @method div\n\t * @param {Object} other UINT32\n\t * @return ThisExpression\n\t */\n\tUINT32.prototype.div = function (other) {\n\t\tif ( (other._low == 0) && (other._high == 0) ) throw Error('division by zero')\n\n\t\t// other == 1\n\t\tif (other._high == 0 && other._low == 1) {\n\t\t\tthis.remainder = new UINT32(0)\n\t\t\treturn this\n\t\t}\n\n\t\t// other > this: 0\n\t\tif ( other.gt(this) ) {\n\t\t\tthis.remainder = this.clone()\n\t\t\tthis._low = 0\n\t\t\tthis._high = 0\n\t\t\treturn this\n\t\t}\n\t\t// other == this: 1\n\t\tif ( this.eq(other) ) {\n\t\t\tthis.remainder = new UINT32(0)\n\t\t\tthis._low = 1\n\t\t\tthis._high = 0\n\t\t\treturn this\n\t\t}\n\n\t\t// Shift the divisor left until it is higher than the dividend\n\t\tvar _other = other.clone()\n\t\tvar i = -1\n\t\twhile ( !this.lt(_other) ) {\n\t\t\t// High bit can overflow the default 16bits\n\t\t\t// Its ok since we right shift after this loop\n\t\t\t// The overflown bit must be kept though\n\t\t\t_other.shiftLeft(1, true)\n\t\t\ti++\n\t\t}\n\n\t\t// Set the remainder\n\t\tthis.remainder = this.clone()\n\t\t// Initialize the current result to 0\n\t\tthis._low = 0\n\t\tthis._high = 0\n\t\tfor (; i >= 0; i--) {\n\t\t\t_other.shiftRight(1)\n\t\t\t// If shifted divisor is smaller than the dividend\n\t\t\t// then subtract it from the dividend\n\t\t\tif ( !this.remainder.lt(_other) ) {\n\t\t\t\tthis.remainder.subtract(_other)\n\t\t\t\t// Update the current result\n\t\t\t\tif (i >= 16) {\n\t\t\t\t\tthis._high |= 1 << (i - 16)\n\t\t\t\t} else {\n\t\t\t\t\tthis._low |= 1 << i\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Negate the current _UINT32_\n\t * @method negate\n\t * @return ThisExpression\n\t */\n\tUINT32.prototype.negate = function () {\n\t\tvar v = ( ~this._low & 0xFFFF ) + 1\n\t\tthis._low = v & 0xFFFF\n\t\tthis._high = (~this._high + (v >>> 16)) & 0xFFFF\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Equals\n\t * @method eq\n\t * @param {Object} other UINT32\n\t * @return {Boolean}\n\t */\n\tUINT32.prototype.equals = UINT32.prototype.eq = function (other) {\n\t\treturn (this._low == other._low) && (this._high == other._high)\n\t}\n\n\t/**\n\t * Greater than (strict)\n\t * @method gt\n\t * @param {Object} other UINT32\n\t * @return {Boolean}\n\t */\n\tUINT32.prototype.greaterThan = UINT32.prototype.gt = function (other) {\n\t\tif (this._high > other._high) return true\n\t\tif (this._high < other._high) return false\n\t\treturn this._low > other._low\n\t}\n\n\t/**\n\t * Less than (strict)\n\t * @method lt\n\t * @param {Object} other UINT32\n\t * @return {Boolean}\n\t */\n\tUINT32.prototype.lessThan = UINT32.prototype.lt = function (other) {\n\t\tif (this._high < other._high) return true\n\t\tif (this._high > other._high) return false\n\t\treturn this._low < other._low\n\t}\n\n\t/**\n\t * Bitwise OR\n\t * @method or\n\t * @param {Object} other UINT32\n\t * @return ThisExpression\n\t */\n\tUINT32.prototype.or = function (other) {\n\t\tthis._low |= other._low\n\t\tthis._high |= other._high\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Bitwise AND\n\t * @method and\n\t * @param {Object} other UINT32\n\t * @return ThisExpression\n\t */\n\tUINT32.prototype.and = function (other) {\n\t\tthis._low &= other._low\n\t\tthis._high &= other._high\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Bitwise NOT\n\t * @method not\n\t * @return ThisExpression\n\t */\n\tUINT32.prototype.not = function() {\n\t\tthis._low = ~this._low & 0xFFFF\n\t\tthis._high = ~this._high & 0xFFFF\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Bitwise XOR\n\t * @method xor\n\t * @param {Object} other UINT32\n\t * @return ThisExpression\n\t */\n\tUINT32.prototype.xor = function (other) {\n\t\tthis._low ^= other._low\n\t\tthis._high ^= other._high\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Bitwise shift right\n\t * @method shiftRight\n\t * @param {Number} number of bits to shift\n\t * @return ThisExpression\n\t */\n\tUINT32.prototype.shiftRight = UINT32.prototype.shiftr = function (n) {\n\t\tif (n > 16) {\n\t\t\tthis._low = this._high >> (n - 16)\n\t\t\tthis._high = 0\n\t\t} else if (n == 16) {\n\t\t\tthis._low = this._high\n\t\t\tthis._high = 0\n\t\t} else {\n\t\t\tthis._low = (this._low >> n) | ( (this._high << (16-n)) & 0xFFFF )\n\t\t\tthis._high >>= n\n\t\t}\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Bitwise shift left\n\t * @method shiftLeft\n\t * @param {Number} number of bits to shift\n\t * @param {Boolean} allow overflow\n\t * @return ThisExpression\n\t */\n\tUINT32.prototype.shiftLeft = UINT32.prototype.shiftl = function (n, allowOverflow) {\n\t\tif (n > 16) {\n\t\t\tthis._high = this._low << (n - 16)\n\t\t\tthis._low = 0\n\t\t\tif (!allowOverflow) {\n\t\t\t\tthis._high &= 0xFFFF\n\t\t\t}\n\t\t} else if (n == 16) {\n\t\t\tthis._high = this._low\n\t\t\tthis._low = 0\n\t\t} else {\n\t\t\tthis._high = (this._high << n) | (this._low >> (16-n))\n\t\t\tthis._low = (this._low << n) & 0xFFFF\n\t\t\tif (!allowOverflow) {\n\t\t\t\t// Overflow only allowed on the high bits...\n\t\t\t\tthis._high &= 0xFFFF\n\t\t\t}\n\t\t}\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Bitwise rotate left\n\t * @method rotl\n\t * @param {Number} number of bits to rotate\n\t * @return ThisExpression\n\t */\n\tUINT32.prototype.rotateLeft = UINT32.prototype.rotl = function (n) {\n\t\tvar v = (this._high << 16) | this._low\n\t\tv = (v << n) | (v >>> (32 - n))\n\t\tthis._low = v & 0xFFFF\n\t\tthis._high = v >>> 16\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Bitwise rotate right\n\t * @method rotr\n\t * @param {Number} number of bits to rotate\n\t * @return ThisExpression\n\t */\n\tUINT32.prototype.rotateRight = UINT32.prototype.rotr = function (n) {\n\t\tvar v = (this._high << 16) | this._low\n\t\tv = (v >>> n) | (v << (32 - n))\n\t\tthis._low = v & 0xFFFF\n\t\tthis._high = v >>> 16\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Clone the current _UINT32_\n\t * @method clone\n\t * @return {Object} cloned UINT32\n\t */\n\tUINT32.prototype.clone = function () {\n\t\treturn new UINT32(this._low, this._high)\n\t}\n\n\tif (typeof define != 'undefined' && define.amd) {\n\t\t// AMD / RequireJS\n\t\tdefine([], function () {\n\t\t\treturn UINT32\n\t\t})\n\t} else if (typeof module != 'undefined' && module.exports) {\n\t\t// Node.js\n\t\tmodule.exports = UINT32\n\t} else {\n\t\t// Browser\n\t\troot['UINT32'] = UINT32\n\t}\n\n})(this)\n","/**\n\tC-like unsigned 64 bits integers in Javascript\n\tCopyright (C) 2013, Pierre Curto\n\tMIT license\n */\n;(function (root) {\n\n\t// Local cache for typical radices\n\tvar radixPowerCache = {\n\t\t16: UINT64( Math.pow(16, 5) )\n\t,\t10: UINT64( Math.pow(10, 5) )\n\t,\t2: UINT64( Math.pow(2, 5) )\n\t}\n\tvar radixCache = {\n\t\t16: UINT64(16)\n\t,\t10: UINT64(10)\n\t,\t2: UINT64(2)\n\t}\n\n\t/**\n\t *\tRepresents an unsigned 64 bits integer\n\t * @constructor\n\t * @param {Number} first low bits (8)\n\t * @param {Number} second low bits (8)\n\t * @param {Number} first high bits (8)\n\t * @param {Number} second high bits (8)\n\t * or\n\t * @param {Number} low bits (32)\n\t * @param {Number} high bits (32)\n\t * or\n\t * @param {String|Number} integer as a string \t\t | integer as a number\n\t * @param {Number|Undefined} radix (optional, default=10)\n\t * @return \n\t */\n\tfunction UINT64 (a00, a16, a32, a48) {\n\t\tif ( !(this instanceof UINT64) )\n\t\t\treturn new UINT64(a00, a16, a32, a48)\n\n\t\tthis.remainder = null\n\t\tif (typeof a00 == 'string')\n\t\t\treturn fromString.call(this, a00, a16)\n\n\t\tif (typeof a16 == 'undefined')\n\t\t\treturn fromNumber.call(this, a00)\n\n\t\tfromBits.apply(this, arguments)\n\t}\n\n\t/**\n\t * Set the current _UINT64_ object with its low and high bits\n\t * @method fromBits\n\t * @param {Number} first low bits (8)\n\t * @param {Number} second low bits (8)\n\t * @param {Number} first high bits (8)\n\t * @param {Number} second high bits (8)\n\t * or\n\t * @param {Number} low bits (32)\n\t * @param {Number} high bits (32)\n\t * @return ThisExpression\n\t */\n\tfunction fromBits (a00, a16, a32, a48) {\n\t\tif (typeof a32 == 'undefined') {\n\t\t\tthis._a00 = a00 & 0xFFFF\n\t\t\tthis._a16 = a00 >>> 16\n\t\t\tthis._a32 = a16 & 0xFFFF\n\t\t\tthis._a48 = a16 >>> 16\n\t\t\treturn this\n\t\t}\n\n\t\tthis._a00 = a00 | 0\n\t\tthis._a16 = a16 | 0\n\t\tthis._a32 = a32 | 0\n\t\tthis._a48 = a48 | 0\n\n\t\treturn this\n\t}\n\tUINT64.prototype.fromBits = fromBits\n\n\t/**\n\t * Set the current _UINT64_ object from a number\n\t * @method fromNumber\n\t * @param {Number} number\n\t * @return ThisExpression\n\t */\n\tfunction fromNumber (value) {\n\t\tthis._a00 = value & 0xFFFF\n\t\tthis._a16 = value >>> 16\n\t\tthis._a32 = 0\n\t\tthis._a48 = 0\n\n\t\treturn this\n\t}\n\tUINT64.prototype.fromNumber = fromNumber\n\n\t/**\n\t * Set the current _UINT64_ object from a string\n\t * @method fromString\n\t * @param {String} integer as a string\n\t * @param {Number} radix (optional, default=10)\n\t * @return ThisExpression\n\t */\n\tfunction fromString (s, radix) {\n\t\tradix = radix || 10\n\n\t\tthis._a00 = 0\n\t\tthis._a16 = 0\n\t\tthis._a32 = 0\n\t\tthis._a48 = 0\n\n\t\t/*\n\t\t\tIn Javascript, bitwise operators only operate on the first 32 bits \n\t\t\tof a number, even though parseInt() encodes numbers with a 53 bits \n\t\t\tmantissa.\n\t\t\tTherefore UINT64() can only work on 32 bits.\n\t\t\tThe radix maximum value is 36 (as per ECMA specs) (26 letters + 10 digits)\n\t\t\tmaximum input value is m = 32bits as 1 = 2^32 - 1\n\t\t\tSo the maximum substring length n is:\n\t\t\t36^(n+1) - 1 = 2^32 - 1\n\t\t\t36^(n+1) = 2^32\n\t\t\t(n+1)ln(36) = 32ln(2)\n\t\t\tn = 32ln(2)/ln(36) - 1\n\t\t\tn = 5.189644915687692\n\t\t\tn = 5\n\t\t */\n\t\tvar radixUint = radixPowerCache[radix] || new UINT64( Math.pow(radix, 5) )\n\n\t\tfor (var i = 0, len = s.length; i < len; i += 5) {\n\t\t\tvar size = Math.min(5, len - i)\n\t\t\tvar value = parseInt( s.slice(i, i + size), radix )\n\t\t\tthis.multiply(\n\t\t\t\t\tsize < 5\n\t\t\t\t\t\t? new UINT64( Math.pow(radix, size) )\n\t\t\t\t\t\t: radixUint\n\t\t\t\t)\n\t\t\t\t.add( new UINT64(value) )\n\t\t}\n\n\t\treturn this\n\t}\n\tUINT64.prototype.fromString = fromString\n\n\t/**\n\t * Convert this _UINT64_ to a number (last 32 bits are dropped)\n\t * @method toNumber\n\t * @return {Number} the converted UINT64\n\t */\n\tUINT64.prototype.toNumber = function () {\n\t\treturn (this._a16 * 65536) + this._a00\n\t}\n\n\t/**\n\t * Convert this _UINT64_ to a string\n\t * @method toString\n\t * @param {Number} radix (optional, default=10)\n\t * @return {String} the converted UINT64\n\t */\n\tUINT64.prototype.toString = function (radix) {\n\t\tradix = radix || 10\n\t\tvar radixUint = radixCache[radix] || new UINT64(radix)\n\n\t\tif ( !this.gt(radixUint) ) return this.toNumber().toString(radix)\n\n\t\tvar self = this.clone()\n\t\tvar res = new Array(64)\n\t\tfor (var i = 63; i >= 0; i--) {\n\t\t\tself.div(radixUint)\n\t\t\tres[i] = self.remainder.toNumber().toString(radix)\n\t\t\tif ( !self.gt(radixUint) ) break\n\t\t}\n\t\tres[i-1] = self.toNumber().toString(radix)\n\n\t\treturn res.join('')\n\t}\n\n\t/**\n\t * Add two _UINT64_. The current _UINT64_ stores the result\n\t * @method add\n\t * @param {Object} other UINT64\n\t * @return ThisExpression\n\t */\n\tUINT64.prototype.add = function (other) {\n\t\tvar a00 = this._a00 + other._a00\n\n\t\tvar a16 = a00 >>> 16\n\t\ta16 += this._a16 + other._a16\n\n\t\tvar a32 = a16 >>> 16\n\t\ta32 += this._a32 + other._a32\n\n\t\tvar a48 = a32 >>> 16\n\t\ta48 += this._a48 + other._a48\n\n\t\tthis._a00 = a00 & 0xFFFF\n\t\tthis._a16 = a16 & 0xFFFF\n\t\tthis._a32 = a32 & 0xFFFF\n\t\tthis._a48 = a48 & 0xFFFF\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Subtract two _UINT64_. The current _UINT64_ stores the result\n\t * @method subtract\n\t * @param {Object} other UINT64\n\t * @return ThisExpression\n\t */\n\tUINT64.prototype.subtract = function (other) {\n\t\treturn this.add( other.clone().negate() )\n\t}\n\n\t/**\n\t * Multiply two _UINT64_. The current _UINT64_ stores the result\n\t * @method multiply\n\t * @param {Object} other UINT64\n\t * @return ThisExpression\n\t */\n\tUINT64.prototype.multiply = function (other) {\n\t\t/*\n\t\t\ta = a00 + a16 + a32 + a48\n\t\t\tb = b00 + b16 + b32 + b48\n\t\t\ta*b = (a00 + a16 + a32 + a48)(b00 + b16 + b32 + b48)\n\t\t\t\t= a00b00 + a00b16 + a00b32 + a00b48\n\t\t\t\t+ a16b00 + a16b16 + a16b32 + a16b48\n\t\t\t\t+ a32b00 + a32b16 + a32b32 + a32b48\n\t\t\t\t+ a48b00 + a48b16 + a48b32 + a48b48\n\n\t\t\ta16b48, a32b32, a48b16, a48b32 and a48b48 overflow the 64 bits\n\t\t\tso it comes down to:\n\t\t\ta*b\t= a00b00 + a00b16 + a00b32 + a00b48\n\t\t\t\t+ a16b00 + a16b16 + a16b32\n\t\t\t\t+ a32b00 + a32b16\n\t\t\t\t+ a48b00\n\t\t\t\t= a00b00\n\t\t\t\t+ a00b16 + a16b00\n\t\t\t\t+ a00b32 + a16b16 + a32b00\n\t\t\t\t+ a00b48 + a16b32 + a32b16 + a48b00\n\t\t */\n\t\tvar a00 = this._a00\n\t\tvar a16 = this._a16\n\t\tvar a32 = this._a32\n\t\tvar a48 = this._a48\n\t\tvar b00 = other._a00\n\t\tvar b16 = other._a16\n\t\tvar b32 = other._a32\n\t\tvar b48 = other._a48\n\n\t\tvar c00 = a00 * b00\n\n\t\tvar c16 = c00 >>> 16\n\t\tc16 += a00 * b16\n\t\tvar c32 = c16 >>> 16\n\t\tc16 &= 0xFFFF\n\t\tc16 += a16 * b00\n\n\t\tc32 += c16 >>> 16\n\t\tc32 += a00 * b32\n\t\tvar c48 = c32 >>> 16\n\t\tc32 &= 0xFFFF\n\t\tc32 += a16 * b16\n\t\tc48 += c32 >>> 16\n\t\tc32 &= 0xFFFF\n\t\tc32 += a32 * b00\n\n\t\tc48 += c32 >>> 16\n\t\tc48 += a00 * b48\n\t\tc48 &= 0xFFFF\n\t\tc48 += a16 * b32\n\t\tc48 &= 0xFFFF\n\t\tc48 += a32 * b16\n\t\tc48 &= 0xFFFF\n\t\tc48 += a48 * b00\n\n\t\tthis._a00 = c00 & 0xFFFF\n\t\tthis._a16 = c16 & 0xFFFF\n\t\tthis._a32 = c32 & 0xFFFF\n\t\tthis._a48 = c48 & 0xFFFF\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Divide two _UINT64_. The current _UINT64_ stores the result.\n\t * The remainder is made available as the _remainder_ property on\n\t * the _UINT64_ object. It can be null, meaning there are no remainder.\n\t * @method div\n\t * @param {Object} other UINT64\n\t * @return ThisExpression\n\t */\n\tUINT64.prototype.div = function (other) {\n\t\tif ( (other._a16 == 0) && (other._a32 == 0) && (other._a48 == 0) ) {\n\t\t\tif (other._a00 == 0) throw Error('division by zero')\n\n\t\t\t// other == 1: this\n\t\t\tif (other._a00 == 1) {\n\t\t\t\tthis.remainder = new UINT64(0)\n\t\t\t\treturn this\n\t\t\t}\n\t\t}\n\n\t\t// other > this: 0\n\t\tif ( other.gt(this) ) {\n\t\t\tthis.remainder = this.clone()\n\t\t\tthis._a00 = 0\n\t\t\tthis._a16 = 0\n\t\t\tthis._a32 = 0\n\t\t\tthis._a48 = 0\n\t\t\treturn this\n\t\t}\n\t\t// other == this: 1\n\t\tif ( this.eq(other) ) {\n\t\t\tthis.remainder = new UINT64(0)\n\t\t\tthis._a00 = 1\n\t\t\tthis._a16 = 0\n\t\t\tthis._a32 = 0\n\t\t\tthis._a48 = 0\n\t\t\treturn this\n\t\t}\n\n\t\t// Shift the divisor left until it is higher than the dividend\n\t\tvar _other = other.clone()\n\t\tvar i = -1\n\t\twhile ( !this.lt(_other) ) {\n\t\t\t// High bit can overflow the default 16bits\n\t\t\t// Its ok since we right shift after this loop\n\t\t\t// The overflown bit must be kept though\n\t\t\t_other.shiftLeft(1, true)\n\t\t\ti++\n\t\t}\n\n\t\t// Set the remainder\n\t\tthis.remainder = this.clone()\n\t\t// Initialize the current result to 0\n\t\tthis._a00 = 0\n\t\tthis._a16 = 0\n\t\tthis._a32 = 0\n\t\tthis._a48 = 0\n\t\tfor (; i >= 0; i--) {\n\t\t\t_other.shiftRight(1)\n\t\t\t// If shifted divisor is smaller than the dividend\n\t\t\t// then subtract it from the dividend\n\t\t\tif ( !this.remainder.lt(_other) ) {\n\t\t\t\tthis.remainder.subtract(_other)\n\t\t\t\t// Update the current result\n\t\t\t\tif (i >= 48) {\n\t\t\t\t\tthis._a48 |= 1 << (i - 48)\n\t\t\t\t} else if (i >= 32) {\n\t\t\t\t\tthis._a32 |= 1 << (i - 32)\n\t\t\t\t} else if (i >= 16) {\n\t\t\t\t\tthis._a16 |= 1 << (i - 16)\n\t\t\t\t} else {\n\t\t\t\t\tthis._a00 |= 1 << i\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Negate the current _UINT64_\n\t * @method negate\n\t * @return ThisExpression\n\t */\n\tUINT64.prototype.negate = function () {\n\t\tvar v = ( ~this._a00 & 0xFFFF ) + 1\n\t\tthis._a00 = v & 0xFFFF\n\t\tv = (~this._a16 & 0xFFFF) + (v >>> 16)\n\t\tthis._a16 = v & 0xFFFF\n\t\tv = (~this._a32 & 0xFFFF) + (v >>> 16)\n\t\tthis._a32 = v & 0xFFFF\n\t\tthis._a48 = (~this._a48 + (v >>> 16)) & 0xFFFF\n\n\t\treturn this\n\t}\n\n\t/**\n\n\t * @method eq\n\t * @param {Object} other UINT64\n\t * @return {Boolean}\n\t */\n\tUINT64.prototype.equals = UINT64.prototype.eq = function (other) {\n\t\treturn (this._a48 == other._a48) && (this._a00 == other._a00)\n\t\t\t && (this._a32 == other._a32) && (this._a16 == other._a16)\n\t}\n\n\t/**\n\t * Greater than (strict)\n\t * @method gt\n\t * @param {Object} other UINT64\n\t * @return {Boolean}\n\t */\n\tUINT64.prototype.greaterThan = UINT64.prototype.gt = function (other) {\n\t\tif (this._a48 > other._a48) return true\n\t\tif (this._a48 < other._a48) return false\n\t\tif (this._a32 > other._a32) return true\n\t\tif (this._a32 < other._a32) return false\n\t\tif (this._a16 > other._a16) return true\n\t\tif (this._a16 < other._a16) return false\n\t\treturn this._a00 > other._a00\n\t}\n\n\t/**\n\t * Less than (strict)\n\t * @method lt\n\t * @param {Object} other UINT64\n\t * @return {Boolean}\n\t */\n\tUINT64.prototype.lessThan = UINT64.prototype.lt = function (other) {\n\t\tif (this._a48 < other._a48) return true\n\t\tif (this._a48 > other._a48) return false\n\t\tif (this._a32 < other._a32) return true\n\t\tif (this._a32 > other._a32) return false\n\t\tif (this._a16 < other._a16) return true\n\t\tif (this._a16 > other._a16) return false\n\t\treturn this._a00 < other._a00\n\t}\n\n\t/**\n\t * Bitwise OR\n\t * @method or\n\t * @param {Object} other UINT64\n\t * @return ThisExpression\n\t */\n\tUINT64.prototype.or = function (other) {\n\t\tthis._a00 |= other._a00\n\t\tthis._a16 |= other._a16\n\t\tthis._a32 |= other._a32\n\t\tthis._a48 |= other._a48\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Bitwise AND\n\t * @method and\n\t * @param {Object} other UINT64\n\t * @return ThisExpression\n\t */\n\tUINT64.prototype.and = function (other) {\n\t\tthis._a00 &= other._a00\n\t\tthis._a16 &= other._a16\n\t\tthis._a32 &= other._a32\n\t\tthis._a48 &= other._a48\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Bitwise XOR\n\t * @method xor\n\t * @param {Object} other UINT64\n\t * @return ThisExpression\n\t */\n\tUINT64.prototype.xor = function (other) {\n\t\tthis._a00 ^= other._a00\n\t\tthis._a16 ^= other._a16\n\t\tthis._a32 ^= other._a32\n\t\tthis._a48 ^= other._a48\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Bitwise NOT\n\t * @method not\n\t * @return ThisExpression\n\t */\n\tUINT64.prototype.not = function() {\n\t\tthis._a00 = ~this._a00 & 0xFFFF\n\t\tthis._a16 = ~this._a16 & 0xFFFF\n\t\tthis._a32 = ~this._a32 & 0xFFFF\n\t\tthis._a48 = ~this._a48 & 0xFFFF\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Bitwise shift right\n\t * @method shiftRight\n\t * @param {Number} number of bits to shift\n\t * @return ThisExpression\n\t */\n\tUINT64.prototype.shiftRight = UINT64.prototype.shiftr = function (n) {\n\t\tn %= 64\n\t\tif (n >= 48) {\n\t\t\tthis._a00 = this._a48 >> (n - 48)\n\t\t\tthis._a16 = 0\n\t\t\tthis._a32 = 0\n\t\t\tthis._a48 = 0\n\t\t} else if (n >= 32) {\n\t\t\tn -= 32\n\t\t\tthis._a00 = ( (this._a32 >> n) | (this._a48 << (16-n)) ) & 0xFFFF\n\t\t\tthis._a16 = (this._a48 >> n) & 0xFFFF\n\t\t\tthis._a32 = 0\n\t\t\tthis._a48 = 0\n\t\t} else if (n >= 16) {\n\t\t\tn -= 16\n\t\t\tthis._a00 = ( (this._a16 >> n) | (this._a32 << (16-n)) ) & 0xFFFF\n\t\t\tthis._a16 = ( (this._a32 >> n) | (this._a48 << (16-n)) ) & 0xFFFF\n\t\t\tthis._a32 = (this._a48 >> n) & 0xFFFF\n\t\t\tthis._a48 = 0\n\t\t} else {\n\t\t\tthis._a00 = ( (this._a00 >> n) | (this._a16 << (16-n)) ) & 0xFFFF\n\t\t\tthis._a16 = ( (this._a16 >> n) | (this._a32 << (16-n)) ) & 0xFFFF\n\t\t\tthis._a32 = ( (this._a32 >> n) | (this._a48 << (16-n)) ) & 0xFFFF\n\t\t\tthis._a48 = (this._a48 >> n) & 0xFFFF\n\t\t}\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Bitwise shift left\n\t * @method shiftLeft\n\t * @param {Number} number of bits to shift\n\t * @param {Boolean} allow overflow\n\t * @return ThisExpression\n\t */\n\tUINT64.prototype.shiftLeft = UINT64.prototype.shiftl = function (n, allowOverflow) {\n\t\tn %= 64\n\t\tif (n >= 48) {\n\t\t\tthis._a48 = this._a00 << (n - 48)\n\t\t\tthis._a32 = 0\n\t\t\tthis._a16 = 0\n\t\t\tthis._a00 = 0\n\t\t} else if (n >= 32) {\n\t\t\tn -= 32\n\t\t\tthis._a48 = (this._a16 << n) | (this._a00 >> (16-n))\n\t\t\tthis._a32 = (this._a00 << n) & 0xFFFF\n\t\t\tthis._a16 = 0\n\t\t\tthis._a00 = 0\n\t\t} else if (n >= 16) {\n\t\t\tn -= 16\n\t\t\tthis._a48 = (this._a32 << n) | (this._a16 >> (16-n))\n\t\t\tthis._a32 = ( (this._a16 << n) | (this._a00 >> (16-n)) ) & 0xFFFF\n\t\t\tthis._a16 = (this._a00 << n) & 0xFFFF\n\t\t\tthis._a00 = 0\n\t\t} else {\n\t\t\tthis._a48 = (this._a48 << n) | (this._a32 >> (16-n))\n\t\t\tthis._a32 = ( (this._a32 << n) | (this._a16 >> (16-n)) ) & 0xFFFF\n\t\t\tthis._a16 = ( (this._a16 << n) | (this._a00 >> (16-n)) ) & 0xFFFF\n\t\t\tthis._a00 = (this._a00 << n) & 0xFFFF\n\t\t}\n\t\tif (!allowOverflow) {\n\t\t\tthis._a48 &= 0xFFFF\n\t\t}\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Bitwise rotate left\n\t * @method rotl\n\t * @param {Number} number of bits to rotate\n\t * @return ThisExpression\n\t */\n\tUINT64.prototype.rotateLeft = UINT64.prototype.rotl = function (n) {\n\t\tn %= 64\n\t\tif (n == 0) return this\n\t\tif (n >= 32) {\n\t\t\t// A.B.C.D\n\t\t\t// B.C.D.A rotl(16)\n\t\t\t// C.D.A.B rotl(32)\n\t\t\tvar v = this._a00\n\t\t\tthis._a00 = this._a32\n\t\t\tthis._a32 = v\n\t\t\tv = this._a48\n\t\t\tthis._a48 = this._a16\n\t\t\tthis._a16 = v\n\t\t\tif (n == 32) return this\n\t\t\tn -= 32\n\t\t}\n\n\t\tvar high = (this._a48 << 16) | this._a32\n\t\tvar low = (this._a16 << 16) | this._a00\n\n\t\tvar _high = (high << n) | (low >>> (32 - n))\n\t\tvar _low = (low << n) | (high >>> (32 - n))\n\n\t\tthis._a00 = _low & 0xFFFF\n\t\tthis._a16 = _low >>> 16\n\t\tthis._a32 = _high & 0xFFFF\n\t\tthis._a48 = _high >>> 16\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Bitwise rotate right\n\t * @method rotr\n\t * @param {Number} number of bits to rotate\n\t * @return ThisExpression\n\t */\n\tUINT64.prototype.rotateRight = UINT64.prototype.rotr = function (n) {\n\t\tn %= 64\n\t\tif (n == 0) return this\n\t\tif (n >= 32) {\n\t\t\t// A.B.C.D\n\t\t\t// D.A.B.C rotr(16)\n\t\t\t// C.D.A.B rotr(32)\n\t\t\tvar v = this._a00\n\t\t\tthis._a00 = this._a32\n\t\t\tthis._a32 = v\n\t\t\tv = this._a48\n\t\t\tthis._a48 = this._a16\n\t\t\tthis._a16 = v\n\t\t\tif (n == 32) return this\n\t\t\tn -= 32\n\t\t}\n\n\t\tvar high = (this._a48 << 16) | this._a32\n\t\tvar low = (this._a16 << 16) | this._a00\n\n\t\tvar _high = (high >>> n) | (low << (32 - n))\n\t\tvar _low = (low >>> n) | (high << (32 - n))\n\n\t\tthis._a00 = _low & 0xFFFF\n\t\tthis._a16 = _low >>> 16\n\t\tthis._a32 = _high & 0xFFFF\n\t\tthis._a48 = _high >>> 16\n\n\t\treturn this\n\t}\n\n\t/**\n\t * Clone the current _UINT64_\n\t * @method clone\n\t * @return {Object} cloned UINT64\n\t */\n\tUINT64.prototype.clone = function () {\n\t\treturn new UINT64(this._a00, this._a16, this._a32, this._a48)\n\t}\n\n\tif (typeof define != 'undefined' && define.amd) {\n\t\t// AMD / RequireJS\n\t\tdefine([], function () {\n\t\t\treturn UINT64\n\t\t})\n\t} else if (typeof module != 'undefined' && module.exports) {\n\t\t// Node.js\n\t\tmodule.exports = UINT64\n\t} else {\n\t\t// Browser\n\t\troot['UINT64'] = UINT64\n\t}\n\n})(this)\n","/**\nxxHash64 implementation in pure Javascript\n\nCopyright (C) 2016, Pierre Curto\nMIT license\n*/\nvar UINT64 = require('cuint').UINT64\n\n/*\n * Constants\n */\nvar PRIME64_1 = UINT64( '11400714785074694791' )\nvar PRIME64_2 = UINT64( '14029467366897019727' )\nvar PRIME64_3 = UINT64( '1609587929392839161' )\nvar PRIME64_4 = UINT64( '9650029242287828579' )\nvar PRIME64_5 = UINT64( '2870177450012600261' )\n\n/**\n* Convert string to proper UTF-8 array\n* @param str Input string\n* @returns {Uint8Array} UTF8 array is returned as uint8 array\n*/\nfunction toUTF8Array (str) {\n\tvar utf8 = []\n\tfor (var i=0, n=str.length; i < n; i++) {\n\t\tvar charcode = str.charCodeAt(i)\n\t\tif (charcode < 0x80) utf8.push(charcode)\n\t\telse if (charcode < 0x800) {\n\t\t\tutf8.push(0xc0 | (charcode >> 6),\n\t\t\t0x80 | (charcode & 0x3f))\n\t\t}\n\t\telse if (charcode < 0xd800 || charcode >= 0xe000) {\n\t\t\tutf8.push(0xe0 | (charcode >> 12),\n\t\t\t0x80 | ((charcode>>6) & 0x3f),\n\t\t\t0x80 | (charcode & 0x3f))\n\t\t}\n\t\t// surrogate pair\n\t\telse {\n\t\t\ti++;\n\t\t\t// UTF-16 encodes 0x10000-0x10FFFF by\n\t\t\t// subtracting 0x10000 and splitting the\n\t\t\t// 20 bits of 0x0-0xFFFFF into two halves\n\t\t\tcharcode = 0x10000 + (((charcode & 0x3ff)<<10)\n\t\t\t| (str.charCodeAt(i) & 0x3ff))\n\t\t\tutf8.push(0xf0 | (charcode >>18),\n\t\t\t0x80 | ((charcode>>12) & 0x3f),\n\t\t\t0x80 | ((charcode>>6) & 0x3f),\n\t\t\t0x80 | (charcode & 0x3f))\n\t\t}\n\t}\n\n\treturn new Uint8Array(utf8)\n}\n\n/**\n * XXH64 object used as a constructor or a function\n * @constructor\n * or\n * @param {Object|String} input data\n * @param {Number|UINT64} seed\n * @return ThisExpression\n * or\n * @return {UINT64} xxHash\n */\nfunction XXH64 () {\n\tif (arguments.length == 2)\n\t\treturn new XXH64( arguments[1] ).update( arguments[0] ).digest()\n\n\tif (!(this instanceof XXH64))\n\t\treturn new XXH64( arguments[0] )\n\n\tinit.call(this, arguments[0])\n}\n\n/**\n * Initialize the XXH64 instance with the given seed\n * @method init\n * @param {Number|Object} seed as a number or an unsigned 32 bits integer\n * @return ThisExpression\n */\n function init (seed) {\n\tthis.seed = seed instanceof UINT64 ? seed.clone() : UINT64(seed)\n\tthis.v1 = this.seed.clone().add(PRIME64_1).add(PRIME64_2)\n\tthis.v2 = this.seed.clone().add(PRIME64_2)\n\tthis.v3 = this.seed.clone()\n\tthis.v4 = this.seed.clone().subtract(PRIME64_1)\n\tthis.total_len = 0\n\tthis.memsize = 0\n\tthis.memory = null\n\n\treturn this\n}\nXXH64.prototype.init = init\n\n/**\n * Add data to be computed for the XXH64 hash\n * @method update\n * @param {String|Buffer|ArrayBuffer} input as a string or nodejs Buffer or ArrayBuffer\n * @return ThisExpression\n */\nXXH64.prototype.update = function (input) {\n\tvar isString = typeof input == 'string'\n\tvar isArrayBuffer\n\n\t// Convert all strings to utf-8 first (issue #5)\n\tif (isString) {\n\t\tinput = toUTF8Array(input)\n\t\tisString = false\n\t\tisArrayBuffer = true\n\t}\n\n\tif (typeof ArrayBuffer !== \"undefined\" && input instanceof ArrayBuffer)\n\t{\n\t\tisArrayBuffer = true\n\t\tinput = new Uint8Array(input);\n\t}\n\n\tvar p = 0\n\tvar len = input.length\n\tvar bEnd = p + len\n\n\tif (len == 0) return this\n\n\tthis.total_len += len\n\n\tif (this.memsize == 0)\n\t{\n\t\tif (isString) {\n\t\t\tthis.memory = ''\n\t\t} else if (isArrayBuffer) {\n\t\t\tthis.memory = new Uint8Array(32)\n\t\t} else {\n\t\t\tthis.memory = new Buffer(32)\n\t\t}\n\t}\n\n\tif (this.memsize + len < 32) // fill in tmp buffer\n\t{\n\t\t// XXH64_memcpy(this.memory + this.memsize, input, len)\n\t\tif (isString) {\n\t\t\tthis.memory += input\n\t\t} else if (isArrayBuffer) {\n\t\t\tthis.memory.set( input.subarray(0, len), this.memsize )\n\t\t} else {\n\t\t\tinput.copy( this.memory, this.memsize, 0, len )\n\t\t}\n\n\t\tthis.memsize += len\n\t\treturn this\n\t}\n\n\tif (this.memsize > 0) // some data left from previous update\n\t{\n\t\t// XXH64_memcpy(this.memory + this.memsize, input, 16-this.memsize);\n\t\tif (isString) {\n\t\t\tthis.memory += input.slice(0, 32 - this.memsize)\n\t\t} else if (isArrayBuffer) {\n\t\t\tthis.memory.set( input.subarray(0, 32 - this.memsize), this.memsize )\n\t\t} else {\n\t\t\tinput.copy( this.memory, this.memsize, 0, 32 - this.memsize )\n\t\t}\n\n\t\tvar p64 = 0\n\t\tif (isString) {\n\t\t\tvar other\n\t\t\tother = UINT64(\n\t\t\t\t\t(this.memory.charCodeAt(p64+1) << 8) | this.memory.charCodeAt(p64)\n\t\t\t\t,\t(this.memory.charCodeAt(p64+3) << 8) | this.memory.charCodeAt(p64+2)\n\t\t\t\t,\t(this.memory.charCodeAt(p64+5) << 8) | this.memory.charCodeAt(p64+4)\n\t\t\t\t,\t(this.memory.charCodeAt(p64+7) << 8) | this.memory.charCodeAt(p64+6)\n\t\t\t\t)\n\t\t\tthis.v1.add( other.multiply(PRIME64_2) ).rotl(31).multiply(PRIME64_1);\n\t\t\tp64 += 8\n\t\t\tother = UINT64(\n\t\t\t\t\t(this.memory.charCodeAt(p64+1) << 8) | this.memory.charCodeAt(p64)\n\t\t\t\t,\t(this.memory.charCodeAt(p64+3) << 8) | this.memory.charCodeAt(p64+2)\n\t\t\t\t,\t(this.memory.charCodeAt(p64+5) << 8) | this.memory.charCodeAt(p64+4)\n\t\t\t\t,\t(this.memory.charCodeAt(p64+7) << 8) | this.memory.charCodeAt(p64+6)\n\t\t\t\t)\n\t\t\tthis.v2.add( other.multiply(PRIME64_2) ).rotl(31).multiply(PRIME64_1);\n\t\t\tp64 += 8\n\t\t\tother = UINT64(\n\t\t\t\t\t(this.memory.charCodeAt(p64+1) << 8) | this.memory.charCodeAt(p64)\n\t\t\t\t,\t(this.memory.charCodeAt(p64+3) << 8) | this.memory.charCodeAt(p64+2)\n\t\t\t\t,\t(this.memory.charCodeAt(p64+5) << 8) | this.memory.charCodeAt(p64+4)\n\t\t\t\t,\t(this.memory.charCodeAt(p64+7) << 8) | this.memory.charCodeAt(p64+6)\n\t\t\t\t)\n\t\t\tthis.v3.add( other.multiply(PRIME64_2) ).rotl(31).multiply(PRIME64_1);\n\t\t\tp64 += 8\n\t\t\tother = UINT64(\n\t\t\t\t\t(this.memory.charCodeAt(p64+1) << 8) | this.memory.charCodeAt(p64)\n\t\t\t\t,\t(this.memory.charCodeAt(p64+3) << 8) | this.memory.charCodeAt(p64+2)\n\t\t\t\t,\t(this.memory.charCodeAt(p64+5) << 8) | this.memory.charCodeAt(p64+4)\n\t\t\t\t,\t(this.memory.charCodeAt(p64+7) << 8) | this.memory.charCodeAt(p64+6)\n\t\t\t\t)\n\t\t\tthis.v4.add( other.multiply(PRIME64_2) ).rotl(31).multiply(PRIME64_1);\n\t\t} else {\n\t\t\tvar other\n\t\t\tother = UINT64(\n\t\t\t\t\t(this.memory[p64+1] << 8) | this.memory[p64]\n\t\t\t\t,\t(this.memory[p64+3] << 8) | this.memory[p64+2]\n\t\t\t\t,\t(this.memory[p64+5] << 8) | this.memory[p64+4]\n\t\t\t\t,\t(this.memory[p64+7] << 8) | this.memory[p64+6]\n\t\t\t\t)\n\t\t\tthis.v1.add( other.multiply(PRIME64_2) ).rotl(31).multiply(PRIME64_1);\n\t\t\tp64 += 8\n\t\t\tother = UINT64(\n\t\t\t\t\t(this.memory[p64+1] << 8) | this.memory[p64]\n\t\t\t\t,\t(this.memory[p64+3] << 8) | this.memory[p64+2]\n\t\t\t\t,\t(this.memory[p64+5] << 8) | this.memory[p64+4]\n\t\t\t\t,\t(this.memory[p64+7] << 8) | this.memory[p64+6]\n\t\t\t\t)\n\t\t\tthis.v2.add( other.multiply(PRIME64_2) ).rotl(31).multiply(PRIME64_1);\n\t\t\tp64 += 8\n\t\t\tother = UINT64(\n\t\t\t\t\t(this.memory[p64+1] << 8) | this.memory[p64]\n\t\t\t\t,\t(this.memory[p64+3] << 8) | this.memory[p64+2]\n\t\t\t\t,\t(this.memory[p64+5] << 8) | this.memory[p64+4]\n\t\t\t\t,\t(this.memory[p64+7] << 8) | this.memory[p64+6]\n\t\t\t\t)\n\t\t\tthis.v3.add( other.multiply(PRIME64_2) ).rotl(31).multiply(PRIME64_1);\n\t\t\tp64 += 8\n\t\t\tother = UINT64(\n\t\t\t\t\t(this.memory[p64+1] << 8) | this.memory[p64]\n\t\t\t\t,\t(this.memory[p64+3] << 8) | this.memory[p64+2]\n\t\t\t\t,\t(this.memory[p64+5] << 8) | this.memory[p64+4]\n\t\t\t\t,\t(this.memory[p64+7] << 8) | this.memory[p64+6]\n\t\t\t\t)\n\t\t\tthis.v4.add( other.multiply(PRIME64_2) ).rotl(31).multiply(PRIME64_1);\n\t\t}\n\n\t\tp += 32 - this.memsize\n\t\tthis.memsize = 0\n\t\tif (isString) this.memory = ''\n\t}\n\n\tif (p <= bEnd - 32)\n\t{\n\t\tvar limit = bEnd - 32\n\n\t\tdo\n\t\t{\n\t\t\tif (isString) {\n\t\t\t\tvar other\n\t\t\t\tother = UINT64(\n\t\t\t\t\t\t(input.charCodeAt(p+1) << 8) | input.charCodeAt(p)\n\t\t\t\t\t,\t(input.charCodeAt(p+3) << 8) | input.charCodeAt(p+2)\n\t\t\t\t\t,\t(input.charCodeAt(p+5) << 8) | input.charCodeAt(p+4)\n\t\t\t\t\t,\t(input.charCodeAt(p+7) << 8) | input.charCodeAt(p+6)\n\t\t\t\t\t)\n\t\t\t\tthis.v1.add( other.multiply(PRIME64_2) ).rotl(31).multiply(PRIME64_1);\n\t\t\t\tp += 8\n\t\t\t\tother = UINT64(\n\t\t\t\t\t\t(input.charCodeAt(p+1) << 8) | input.charCodeAt(p)\n\t\t\t\t\t,\t(input.charCodeAt(p+3) << 8) | input.charCodeAt(p+2)\n\t\t\t\t\t,\t(input.charCodeAt(p+5) << 8) | input.charCodeAt(p+4)\n\t\t\t\t\t,\t(input.charCodeAt(p+7) << 8) | input.charCodeAt(p+6)\n\t\t\t\t\t)\n\t\t\t\tthis.v2.add( other.multiply(PRIME64_2) ).rotl(31).multiply(PRIME64_1);\n\t\t\t\tp += 8\n\t\t\t\tother = UINT64(\n\t\t\t\t\t\t(input.charCodeAt(p+1) << 8) | input.charCodeAt(p)\n\t\t\t\t\t,\t(input.charCodeAt(p+3) << 8) | input.charCodeAt(p+2)\n\t\t\t\t\t,\t(input.charCodeAt(p+5) << 8) | input.charCodeAt(p+4)\n\t\t\t\t\t,\t(input.charCodeAt(p+7) << 8) | input.charCodeAt(p+6)\n\t\t\t\t\t)\n\t\t\t\tthis.v3.add( other.multiply(PRIME64_2) ).rotl(31).multiply(PRIME64_1);\n\t\t\t\tp += 8\n\t\t\t\tother = UINT64(\n\t\t\t\t\t\t(input.charCodeAt(p+1) << 8) | input.charCodeAt(p)\n\t\t\t\t\t,\t(input.charCodeAt(p+3) << 8) | input.charCodeAt(p+2)\n\t\t\t\t\t,\t(input.charCodeAt(p+5) << 8) | input.charCodeAt(p+4)\n\t\t\t\t\t,\t(input.charCodeAt(p+7) << 8) | input.charCodeAt(p+6)\n\t\t\t\t\t)\n\t\t\t\tthis.v4.add( other.multiply(PRIME64_2) ).rotl(31).multiply(PRIME64_1);\n\t\t\t} else {\n\t\t\t\tvar other\n\t\t\t\tother = UINT64(\n\t\t\t\t\t\t(input[p+1] << 8) | input[p]\n\t\t\t\t\t,\t(input[p+3] << 8) | input[p+2]\n\t\t\t\t\t,\t(input[p+5] << 8) | input[p+4]\n\t\t\t\t\t,\t(input[p+7] << 8) | input[p+6]\n\t\t\t\t\t)\n\t\t\t\tthis.v1.add( other.multiply(PRIME64_2) ).rotl(31).multiply(PRIME64_1);\n\t\t\t\tp += 8\n\t\t\t\tother = UINT64(\n\t\t\t\t\t\t(input[p+1] << 8) | input[p]\n\t\t\t\t\t,\t(input[p+3] << 8) | input[p+2]\n\t\t\t\t\t,\t(input[p+5] << 8) | input[p+4]\n\t\t\t\t\t,\t(input[p+7] << 8) | input[p+6]\n\t\t\t\t\t)\n\t\t\t\tthis.v2.add( other.multiply(PRIME64_2) ).rotl(31).multiply(PRIME64_1);\n\t\t\t\tp += 8\n\t\t\t\tother = UINT64(\n\t\t\t\t\t\t(input[p+1] << 8) | input[p]\n\t\t\t\t\t,\t(input[p+3] << 8) | input[p+2]\n\t\t\t\t\t,\t(input[p+5] << 8) | input[p+4]\n\t\t\t\t\t,\t(input[p+7] << 8) | input[p+6]\n\t\t\t\t\t)\n\t\t\t\tthis.v3.add( other.multiply(PRIME64_2) ).rotl(31).multiply(PRIME64_1);\n\t\t\t\tp += 8\n\t\t\t\tother = UINT64(\n\t\t\t\t\t\t(input[p+1] << 8) | input[p]\n\t\t\t\t\t,\t(input[p+3] << 8) | input[p+2]\n\t\t\t\t\t,\t(input[p+5] << 8) | input[p+4]\n\t\t\t\t\t,\t(input[p+7] << 8) | input[p+6]\n\t\t\t\t\t)\n\t\t\t\tthis.v4.add( other.multiply(PRIME64_2) ).rotl(31).multiply(PRIME64_1);\n\t\t\t}\n\t\t\tp += 8\n\t\t} while (p <= limit)\n\t}\n\n\tif (p < bEnd)\n\t{\n\t\t// XXH64_memcpy(this.memory, p, bEnd-p);\n\t\tif (isString) {\n\t\t\tthis.memory += input.slice(p)\n\t\t} else if (isArrayBuffer) {\n\t\t\tthis.memory.set( input.subarray(p, bEnd), this.memsize )\n\t\t} else {\n\t\t\tinput.copy( this.memory, this.memsize, p, bEnd )\n\t\t}\n\n\t\tthis.memsize = bEnd - p\n\t}\n\n\treturn this\n}\n\n/**\n * Finalize the XXH64 computation. The XXH64 instance is ready for reuse for the given seed\n * @method digest\n * @return {UINT64} xxHash\n */\nXXH64.prototype.digest = function () {\n\tvar input = this.memory\n\tvar isString = typeof input == 'string'\n\tvar p = 0\n\tvar bEnd = this.memsize\n\tvar h64, h\n\tvar u = new UINT64\n\n\tif (this.total_len >= 32)\n\t{\n\t\th64 = this.v1.clone().rotl(1)\n\t\th64.add( this.v2.clone().rotl(7) )\n\t\th64.add( this.v3.clone().rotl(12) )\n\t\th64.add( this.v4.clone().rotl(18) )\n\n\t\th64.xor( this.v1.multiply(PRIME64_2).rotl(31).multiply(PRIME64_1) )\n\t\th64.multiply(PRIME64_1).add(PRIME64_4)\n\n\t\th64.xor( this.v2.multiply(PRIME64_2).rotl(31).multiply(PRIME64_1) )\n\t\th64.multiply(PRIME64_1).add(PRIME64_4)\n\n\t\th64.xor( this.v3.multiply(PRIME64_2).rotl(31).multiply(PRIME64_1) )\n\t\th64.multiply(PRIME64_1).add(PRIME64_4)\n\n\t\th64.xor( this.v4.multiply(PRIME64_2).rotl(31).multiply(PRIME64_1) )\n\t\th64.multiply(PRIME64_1).add(PRIME64_4)\n\t}\n\telse\n\t{\n\t\th64 = this.seed.clone().add( PRIME64_5 )\n\t}\n\n\th64.add( u.fromNumber(this.total_len) )\n\n\twhile (p <= bEnd - 8)\n\t{\n\t\tif (isString) {\n\t\t\tu.fromBits(\n\t\t\t\t(input.charCodeAt(p+1) << 8) | input.charCodeAt(p)\n\t\t\t,\t(input.charCodeAt(p+3) << 8) | input.charCodeAt(p+2)\n\t\t\t,\t(input.charCodeAt(p+5) << 8) | input.charCodeAt(p+4)\n\t\t\t,\t(input.charCodeAt(p+7) << 8) | input.charCodeAt(p+6)\n\t\t\t)\n\t\t} else {\n\t\t\tu.fromBits(\n\t\t\t\t(input[p+1] << 8) | input[p]\n\t\t\t,\t(input[p+3] << 8) | input[p+2]\n\t\t\t,\t(input[p+5] << 8) | input[p+4]\n\t\t\t,\t(input[p+7] << 8) | input[p+6]\n\t\t\t)\n\t\t}\n\t\tu.multiply(PRIME64_2).rotl(31).multiply(PRIME64_1)\n\t\th64\n\t\t\t.xor(u)\n\t\t\t.rotl(27)\n\t\t\t.multiply( PRIME64_1 )\n\t\t\t.add( PRIME64_4 )\n\t\tp += 8\n\t}\n\n\tif (p + 4 <= bEnd) {\n\t\tif (isString) {\n\t\t\tu.fromBits(\n\t\t\t\t(input.charCodeAt(p+1) << 8) | input.charCodeAt(p)\n\t\t\t,\t(input.charCodeAt(p+3) << 8) | input.charCodeAt(p+2)\n\t\t\t,\t0\n\t\t\t,\t0\n\t\t\t)\n\t\t} else {\n\t\t\tu.fromBits(\n\t\t\t\t(input[p+1] << 8) | input[p]\n\t\t\t,\t(input[p+3] << 8) | input[p+2]\n\t\t\t,\t0\n\t\t\t,\t0\n\t\t\t)\n\t\t}\n\t\th64\n\t\t\t.xor( u.multiply(PRIME64_1) )\n\t\t\t.rotl(23)\n\t\t\t.multiply( PRIME64_2 )\n\t\t\t.add( PRIME64_3 )\n\t\tp += 4\n\t}\n\n\twhile (p < bEnd)\n\t{\n\t\tu.fromBits( isString ? input.charCodeAt(p++) : input[p++], 0, 0, 0 )\n\t\th64\n\t\t\t.xor( u.multiply(PRIME64_5) )\n\t\t\t.rotl(11)\n\t\t\t.multiply(PRIME64_1)\n\t}\n\n\th = h64.clone().shiftRight(33)\n\th64.xor(h).multiply(PRIME64_2)\n\n\th = h64.clone().shiftRight(29)\n\th64.xor(h).multiply(PRIME64_3)\n\n\th = h64.clone().shiftRight(32)\n\th64.xor(h)\n\n\t// Reset the state\n\tthis.init( this.seed )\n\n\treturn h64\n}\n\nmodule.exports = XXH64\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"decodeAddress\", {\n enumerable: true,\n get: function get() {\n return _decode.default;\n }\n});\nObject.defineProperty(exports, \"encodeAddress\", {\n enumerable: true,\n get: function get() {\n return _encode.default;\n }\n});\nObject.defineProperty(exports, \"setAddressPrefix\", {\n enumerable: true,\n get: function get() {\n return _setPrefix.default;\n }\n});\n\nvar _decode = _interopRequireDefault(require(\"./decode\"));\n\nvar _encode = _interopRequireDefault(require(\"./encode\"));\n\nvar _setPrefix = _interopRequireDefault(require(\"./setPrefix\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = decode;\n\nvar _bs = _interopRequireDefault(require(\"bs58\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _defaults = _interopRequireDefault(require(\"./defaults\"));\n\nvar _sshash = _interopRequireDefault(require(\"./sshash\"));\n\n// Copyright 2017-2019 @polkadot/keyring authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// Original implementation: https://github.com/paritytech/polka-ui/blob/4858c094684769080f5811f32b081dd7780b0880/src/polkadot.js#L6\nfunction decode(encoded, ignoreChecksum) {\n let prefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _defaults.default.prefix;\n\n if ((0, _util.isU8a)(encoded) || (0, _util.isHex)(encoded)) {\n return (0, _util.u8aToU8a)(encoded);\n }\n\n const decoded = (0, _util.bufferToU8a)(_bs.default.decode(encoded));\n\n const error = message => \"Decoding \".concat(encoded, \": \").concat(message); // assert(defaults.allowedPrefix.includes(decoded[0] as Prefix), error('Invalid decoded address prefix'));\n\n\n (0, _util.assert)(_defaults.default.allowedEncodedLengths.includes(decoded.length), error('Invalid decoded address length')); // TODO Unless it is an \"use everywhere\" prefix, throw an error\n // if (decoded[0] !== prefix) {\n // console.log(`WARN: Expected ${prefix}, found ${decoded[0]}`);\n // }\n\n const isPublicKey = decoded.length === 35; // non-publicKeys has 1 byte checksums, else default to 2\n\n const endPos = decoded.length - (isPublicKey ? 2 : 1); // calculate the hash and do the checksum byte checks\n\n const hash = (0, _sshash.default)(decoded.subarray(0, endPos));\n const checks = isPublicKey ? decoded[decoded.length - 2] === hash[0] && decoded[decoded.length - 1] === hash[1] : decoded[decoded.length - 1] === hash[0];\n (0, _util.assert)(ignoreChecksum || checks, error('Invalid decoded address checksum'));\n return decoded.slice(1, endPos);\n}","var basex = require('base-x')\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n\nconst Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function base (ALPHABET) {\n if (ALPHABET.length >= 255) throw new TypeError('Alphabet too long')\n\n const BASE_MAP = new Uint8Array(256)\n BASE_MAP.fill(255)\n\n for (let i = 0; i < ALPHABET.length; i++) {\n const x = ALPHABET.charAt(i)\n const xc = x.charCodeAt(0)\n\n if (BASE_MAP[xc] !== 255) throw new TypeError(x + ' is ambiguous')\n BASE_MAP[xc] = i\n }\n\n const BASE = ALPHABET.length\n const LEADER = ALPHABET.charAt(0)\n const FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n const iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n\n function encode (source) {\n if (!Buffer.isBuffer(source)) throw new TypeError('Expected Buffer')\n if (source.length === 0) return ''\n\n // Skip & count leading zeroes.\n let zeroes = 0\n let length = 0\n let pbegin = 0\n const pend = source.length\n\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n\n // Allocate enough space in big-endian base58 representation.\n const size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n const b58 = new Uint8Array(size)\n\n // Process the bytes.\n while (pbegin !== pend) {\n let carry = source[pbegin]\n\n // Apply \"b58 = b58 * 256 + ch\".\n let i = 0\n for (let it = size - 1; (carry !== 0 || i < length) && (it !== -1); it--, i++) {\n carry += (256 * b58[it]) >>> 0\n b58[it] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n\n if (carry !== 0) throw new Error('Non-zero carry')\n length = i\n pbegin++\n }\n\n // Skip leading zeroes in base58 result.\n let it = size - length\n while (it !== size && b58[it] === 0) {\n it++\n }\n\n // Translate the result into a string.\n let str = LEADER.repeat(zeroes)\n for (; it < size; ++it) str += ALPHABET.charAt(b58[it])\n\n return str\n }\n\n function decodeUnsafe (source) {\n if (typeof source !== 'string') throw new TypeError('Expected String')\n if (source.length === 0) return Buffer.alloc(0)\n\n let psz = 0\n\n // Skip leading spaces.\n if (source[psz] === ' ') return\n\n // Skip and count leading '1's.\n let zeroes = 0\n let length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n\n // Allocate enough space in big-endian base256 representation.\n const size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n const b256 = new Uint8Array(size)\n\n // Process the characters.\n while (source[psz]) {\n // Decode character\n let carry = BASE_MAP[source.charCodeAt(psz)]\n\n // Invalid character\n if (carry === 255) return\n\n let i = 0\n for (let it = size - 1; (carry !== 0 || i < length) && (it !== -1); it--, i++) {\n carry += (BASE * b256[it]) >>> 0\n b256[it] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n\n if (carry !== 0) throw new Error('Non-zero carry')\n length = i\n psz++\n }\n\n // Skip trailing spaces.\n if (source[psz] === ' ') return\n\n // Skip leading zeroes in b256.\n let it = size - length\n while (it !== size && b256[it] === 0) {\n it++\n }\n\n const vch = Buffer.allocUnsafe(zeroes + (size - it))\n vch.fill(0x00, 0, zeroes)\n\n let j = zeroes\n while (it !== size) {\n vch[j++] = b256[it++]\n }\n\n return vch\n }\n\n function decode (string) {\n const buffer = decodeUnsafe(string)\n if (buffer) return buffer\n\n throw new Error('Non-base' + BASE + ' character')\n }\n\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n// Copyright 2017-2019 @polkadot/keyring authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst defaults = {\n allowedDecodedLengths: [1, 2, 4, 8, 32],\n // publicKey has prefix + 2 checksum bytes, short only prefix + 1 checksum byte\n allowedEncodedLengths: [3, 4, 6, 10, 35],\n allowedPrefix: [0, 1, 3, 42, 43, 68, 69],\n prefix: 42\n};\nvar _default = defaults;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hash;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _utilCrypto = require(\"@polkadot/util-crypto\");\n\n// Copyright 2017-2019 @polkadot/keyring authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst SS58_PREFIX = (0, _util.stringToU8a)('SS58PRE');\n\nfunction hash(key) {\n return (0, _utilCrypto.blake2AsU8a)((0, _util.u8aConcat)(SS58_PREFIX, key), 512);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = encode;\n\nvar _bs = _interopRequireDefault(require(\"bs58\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _defaults = _interopRequireDefault(require(\"./defaults\"));\n\nvar _sshash = _interopRequireDefault(require(\"./sshash\"));\n\n// Copyright 2017-2019 @polkadot/keyring authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// Original implementation: https://github.com/paritytech/polka-ui/blob/4858c094684769080f5811f32b081dd7780b0880/src/polkadot.js#L34\nfunction encode(_key) {\n let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _defaults.default.prefix;\n const key = (0, _util.u8aToU8a)(_key);\n (0, _util.assert)(_defaults.default.allowedDecodedLengths.includes(key.length), \"Expected a valid key to convert, with length \".concat(_defaults.default.allowedDecodedLengths));\n const isPublicKey = key.length === 32;\n const input = (0, _util.u8aConcat)(new Uint8Array([prefix]), key);\n const hash = (0, _sshash.default)(input);\n return _bs.default.encode((0, _util.u8aToBuffer)((0, _util.u8aConcat)(input, hash.subarray(0, isPublicKey ? 2 : 1))));\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = setPrefix;\n\nvar _defaults = _interopRequireDefault(require(\"./defaults\"));\n\n// Copyright 2017-2019 @polkadot/keyring authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction setPrefix(prefix) {\n _defaults.default.prefix = prefix;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DEV_SEED = exports.DEV_PHRASE = void 0;\n// Copyright 2017-2019 @polkadot/keyring authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// default substrate dev phrase\nconst DEV_PHRASE = 'bottom drive obey lake curtain smoke basket hold race lonely fit walk'; // seed from the above phrase\n\nexports.DEV_PHRASE = DEV_PHRASE;\nconst DEV_SEED = '0xfac7959dbfe72f052e5a0c3c8d6530f202b02fd8f9f5ca3580ec8deb7797479e';\nexports.DEV_SEED = DEV_SEED;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createPair;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _utilCrypto = require(\"@polkadot/util-crypto\");\n\nvar _address = require(\"../address\");\n\nvar _decode = _interopRequireDefault(require(\"./decode\"));\n\nvar _encode = _interopRequireDefault(require(\"./encode\"));\n\nvar _toJson2 = _interopRequireDefault(require(\"./toJson\"));\n\n// Copyright 2017-2019 @polkadot/keyring authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst isSr25519 = type => type === 'sr25519';\n\nconst fromSeed = (type, seed) => isSr25519(type) ? (0, _utilCrypto.schnorrkelKeypairFromSeed)(seed) : (0, _utilCrypto.naclKeypairFromSeed)(seed);\n\nconst _sign = (type, message, pair) => isSr25519(type) ? (0, _utilCrypto.schnorrkelSign)(message, pair) : (0, _utilCrypto.naclSign)(message, pair);\n\nconst _verify = (type, message, signature, publicKey) => isSr25519(type) ? (0, _utilCrypto.schnorrkelVerify)(message, signature, publicKey) : (0, _utilCrypto.naclVerify)(message, signature, publicKey);\n/**\n * @name pair\n * @summary Creates a keyring pair object\n * @description Creates a keyring pair object with provided account public key, metadata, and encoded arguments.\n * The keyring pair stores the account state including the encoded address and associated metadata.\n *\n * It has properties whose values are functions that may be called to perform account actions:\n *\n * - `address` function retrieves the address associated with the account.\n * - `decodedPkcs8` function is called with the account passphrase and account encoded public key.\n * It decodes the encoded public key using the passphrase provided to obtain the decoded account public key\n * and associated secret key that are then available in memory, and changes the account address stored in the\n * state of the pair to correspond to the address of the decoded public key.\n * - `encodePkcs8` function when provided with the correct passphrase associated with the account pair\n * and when the secret key is in memory (when the account pair is not locked) it returns an encoded\n * public key of the account.\n * - `getMeta` returns the metadata that is stored in the state of the pair, either when it was originally\n * created or set via `setMeta`.\n * - `publicKey` returns the public key stored in memory for the pair.\n * - `sign` may be used to return a signature by signing a provided message with the secret\n * key (if it is in memory) using Nacl.\n * - `toJson` calls another `toJson` function and provides the state of the pair,\n * it generates arguments to be passed to the other `toJson` function including an encoded public key of the account\n * that it generates using the secret key from memory (if it has been made available in memory)\n * and the optionally provided passphrase argument. It passes a third boolean argument to `toJson`\n * indicating whether the public key has been encoded or not (if a passphrase argument was provided then it is encoded).\n * The `toJson` function that it calls returns a JSON object with properties including the `address`\n * and `meta` that are assigned with the values stored in the corresponding state variables of the account pair,\n * an `encoded` property that is assigned with the encoded public key in hex format, and an `encoding`\n * property that indicates whether the public key value of the `encoded` property is encoded or not.\n */\n\n\nfunction createPair(type, _ref) {\n let _publicKey = _ref.publicKey,\n secretKey = _ref.secretKey;\n let meta = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let encoded = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n return {\n type,\n address: () => (0, _address.encodeAddress)(_publicKey),\n decodePkcs8: (passphrase, _encoded) => {\n const decoded = (0, _decode.default)(passphrase, _encoded || encoded);\n\n if (decoded.secretKey.length === 64) {\n _publicKey = decoded.publicKey;\n secretKey = decoded.secretKey;\n } else {\n const pair = fromSeed(type, decoded.secretKey);\n _publicKey = pair.publicKey;\n secretKey = pair.secretKey;\n }\n },\n encodePkcs8: passphrase => (0, _encode.default)({\n publicKey: _publicKey,\n secretKey\n }, passphrase),\n getMeta: () => meta,\n isLocked: () => !secretKey || secretKey.length === 0,\n lock: () => {\n secretKey = new Uint8Array(0);\n },\n publicKey: () => _publicKey,\n setMeta: additional => {\n meta = (0, _objectSpread2.default)({}, meta, additional);\n },\n sign: message => _sign(type, message, {\n publicKey: _publicKey,\n secretKey\n }),\n toJson: passphrase => (0, _toJson2.default)(type, {\n meta,\n publicKey: _publicKey\n }, (0, _encode.default)({\n publicKey: _publicKey,\n secretKey\n }, passphrase), !!passphrase),\n verify: (message, signature) => _verify(type, message, signature, _publicKey)\n };\n}","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = decode;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _utilCrypto = require(\"@polkadot/util-crypto\");\n\nvar _defaults = require(\"./defaults\");\n\n// Copyright 2017-2019 @polkadot/keyring authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst SEED_OFFSET = _defaults.PKCS8_HEADER.length;\n\nfunction decode(passphrase, _encrypted) {\n (0, _util.assert)(_encrypted, \"No encrypted data available to decode\");\n const encrypted = _encrypted;\n const encoded = passphrase ? (0, _utilCrypto.naclDecrypt)(encrypted.subarray(_defaults.NONCE_LENGTH), encrypted.subarray(0, _defaults.NONCE_LENGTH), (0, _util.u8aFixLength)((0, _util.stringToU8a)(passphrase), 256, true)) : encrypted;\n (0, _util.assert)(encoded, \"Unable to unencrypt using the supplied passphrase\");\n const header = encoded.subarray(0, _defaults.PKCS8_HEADER.length);\n (0, _util.assert)(header.toString() === _defaults.PKCS8_HEADER.toString(), 'Invalid Pkcs8 header found in body');\n let secretKey = encoded.subarray(SEED_OFFSET, SEED_OFFSET + _defaults.SEC_LENGTH);\n let divOffset = SEED_OFFSET + _defaults.SEC_LENGTH;\n let divider = encoded.subarray(divOffset, divOffset + _defaults.PKCS8_DIVIDER.length); // old-style, we have the seed here\n\n if (divider.toString() !== _defaults.PKCS8_DIVIDER.toString()) {\n divOffset = SEED_OFFSET + _defaults.SEED_LENGTH;\n secretKey = encoded.subarray(SEED_OFFSET, divOffset);\n divider = encoded.subarray(divOffset, divOffset + _defaults.PKCS8_DIVIDER.length);\n }\n\n (0, _util.assert)(divider.toString() === _defaults.PKCS8_DIVIDER.toString(), 'Invalid Pkcs8 divider found in body');\n const pubOffset = divOffset + _defaults.PKCS8_DIVIDER.length;\n const publicKey = encoded.subarray(pubOffset, pubOffset + _defaults.PUB_LENGTH);\n return {\n publicKey,\n secretKey\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SEED_LENGTH = exports.SEC_LENGTH = exports.PUB_LENGTH = exports.PKCS8_HEADER = exports.PKCS8_DIVIDER = exports.NONCE_LENGTH = void 0;\n// Copyright 2017-2019 @polkadot/keyring authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst NONCE_LENGTH = 24;\nexports.NONCE_LENGTH = NONCE_LENGTH;\nconst PKCS8_DIVIDER = new Uint8Array([161, 35, 3, 33, 0]);\nexports.PKCS8_DIVIDER = PKCS8_DIVIDER;\nconst PKCS8_HEADER = new Uint8Array([48, 83, 2, 1, 1, 48, 5, 6, 3, 43, 101, 112, 4, 34, 4, 32]);\nexports.PKCS8_HEADER = PKCS8_HEADER;\nconst PUB_LENGTH = 32;\nexports.PUB_LENGTH = PUB_LENGTH;\nconst SEC_LENGTH = 64;\nexports.SEC_LENGTH = SEC_LENGTH;\nconst SEED_LENGTH = 32;\nexports.SEED_LENGTH = SEED_LENGTH;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = encode;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _utilCrypto = require(\"@polkadot/util-crypto\");\n\nvar _defaults = require(\"./defaults\");\n\n// Copyright 2017-2019 @polkadot/keyring authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction encode(_ref, passphrase) {\n let publicKey = _ref.publicKey,\n secretKey = _ref.secretKey;\n (0, _util.assert)(secretKey, 'Expected a valid secretKey to be passed to encode');\n const encoded = (0, _util.u8aConcat)(_defaults.PKCS8_HEADER, secretKey, _defaults.PKCS8_DIVIDER, publicKey);\n\n if (!passphrase) {\n return encoded;\n }\n\n const _naclEncrypt = (0, _utilCrypto.naclEncrypt)(encoded, (0, _util.u8aFixLength)((0, _util.stringToU8a)(passphrase), 256, true)),\n encrypted = _naclEncrypt.encrypted,\n nonce = _naclEncrypt.nonce;\n\n return (0, _util.u8aConcat)(nonce, encrypted);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toJson;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _address = require(\"../address\");\n\n// Copyright 2017-2019 @polkadot/keyring authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction toJson(type, _ref, encoded, isEncrypted) {\n let publicKey = _ref.publicKey,\n meta = _ref.meta;\n return {\n address: (0, _address.encodeAddress)(publicKey),\n encoded: (0, _util.u8aToHex)(encoded),\n encoding: {\n content: ['pkcs8', type],\n type: isEncrypted ? 'xsalsa20-poly1305' : 'none',\n version: '2'\n },\n meta\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _decode = _interopRequireDefault(require(\"./address/decode\"));\n\n// Copyright 2017-2019 @polkadot/keyring authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nclass Pairs {\n constructor() {\n this._map = void 0;\n this._map = {};\n }\n\n add(pair) {\n // @ts-ignore we use coercion :(\n this._map[pair.publicKey()] = pair;\n return pair;\n }\n\n all() {\n return Object.values(this._map);\n }\n\n get(address) {\n // @ts-ignore we use coercion :(\n const pair = this._map[(0, _decode.default)(address)];\n\n (0, _util.assert)(pair, () => {\n const formatted = (0, _util.isU8a)(address) || (0, _util.isHex)(address) ? (0, _util.u8aToHex)((0, _util.u8aToU8a)(address)) : address;\n return \"Unable to retrieve keypair '\".concat(formatted, \"'\");\n });\n return pair;\n }\n\n remove(address) {\n // @ts-ignore we use coercion :(\n delete this._map[(0, _decode.default)(address)];\n }\n\n}\n\nexports.default = Pairs;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _exportNames = {\n ContractAbi: true\n};\nObject.defineProperty(exports, \"ContractAbi\", {\n enumerable: true,\n get: function get() {\n return _ContractAbi.default;\n }\n});\n\nvar _util = require(\"@polkadot/util\");\n\nvar _ContractAbi = _interopRequireDefault(require(\"./ContractAbi\"));\n\nvar _codec = require(\"./codec\");\n\nObject.keys(_codec).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _codec[key];\n }\n });\n});\n\nvar _index = require(\"./index.types\");\n\nObject.keys(_index).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _index[key];\n }\n });\n});\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// NOTE When adding any types here, we need to update the coumentation links as\n// well - /docs/SUMMARY.md as well as ../README.md\n(0, _util.assertSingletonPackage)('@polkadot/types');","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.validateArgs = validateArgs;\nexports.validateDeploy = validateDeploy;\nexports.validateMethods = validateMethods;\nexports.validateAbi = validateAbi;\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Compact = _interopRequireDefault(require(\"./codec/Compact\"));\n\nvar _createType = require(\"./codec/createType\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction validateArgs(name, args) {\n (0, _util.assert)(Array.isArray(args), \"Expected 'args' to exist on \".concat(name));\n args.forEach(arg => {\n const unknownKeys = Object.keys(arg).filter(key => !['name', 'type'].includes(key));\n (0, _util.assert)(unknownKeys.length === 0, \"Unknown keys \".concat(unknownKeys.join(', '), \" found in ABI args for \").concat(name));\n (0, _util.assert)((0, _util.isString)(arg.name) && (0, _util.isString)(arg.type), \"\".concat(name, \" args should have valid name & type values\"));\n });\n}\n\nfunction validateDeploy(_ref) {\n let deploy = _ref.deploy;\n const unknownKeys = Object.keys(deploy).filter(key => !['args'].includes(key));\n (0, _util.assert)(unknownKeys.length === 0, \"Unknown keys \".concat(unknownKeys.join(', '), \" found in ABI deploy\"));\n validateArgs('deploy', deploy.args);\n}\n\nfunction validateMethods(_ref2) {\n let messages = _ref2.messages;\n messages.forEach(method => {\n const unknownKeys = Object.keys(method).filter(key => !['args', 'mutates', 'name', 'selector', 'return_type'].includes(key));\n (0, _util.assert)(unknownKeys.length === 0, \"Unknown keys \".concat(unknownKeys.join(', '), \" found in ABI args for messages.\").concat(name));\n (0, _util.assert)((0, _util.isString)(method.name) && (0, _util.isNumber)(method.selector) && ((0, _util.isNull)(method.return_type) || (0, _util.isString)(method.return_type)), \"Expected name, selector & return_type specified for messages.\".concat(method.name));\n validateArgs(\"messages.\".concat(method.name), method.args);\n });\n}\n\nfunction validateAbi(abi) {\n const unknownKeys = Object.keys(abi).filter(key => !['deploy', 'messages', 'name'].includes(key));\n (0, _util.assert)(unknownKeys.length === 0, \"Unknown fields \".concat(unknownKeys.join(', '), \" found in ABI\"));\n (0, _util.assert)(abi.deploy && abi.messages && (0, _util.isString)(abi.name), 'ABI should have deploy, messages & name sections');\n validateDeploy(abi);\n validateMethods(abi);\n}\n\nclass ContractAbi {\n constructor(abi) {\n this.abi = void 0;\n this.deploy = void 0;\n this.messages = {};\n validateAbi(abi);\n this.abi = abi;\n this.deploy = this._createEncoded('deploy', abi.deploy);\n abi.messages.forEach(method => {\n const name = (0, _util.stringCamelCase)(method.name);\n this.messages[name] = this._createEncoded(\"messages.\".concat(name), method);\n });\n }\n\n _createClazz(args, baseDef) {\n return (0, _createType.createClass)(JSON.stringify(args.reduce((base, _ref3) => {\n let name = _ref3.name,\n type = _ref3.type;\n base[name] = type;\n return base;\n }, baseDef)));\n }\n\n _createEncoded(name, method) {\n const args = method.args.map((_ref4) => {\n let name = _ref4.name,\n type = _ref4.type;\n return {\n name: (0, _util.stringCamelCase)(name),\n type\n };\n });\n\n const Clazz = this._createClazz(args, (0, _util.isUndefined)(method.selector) ? {} : {\n __selector: 'u32'\n });\n\n const baseStruct = {\n __selector: method.selector\n };\n\n const encoder = function encoder() {\n for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {\n params[_key] = arguments[_key];\n }\n\n (0, _util.assert)(params.length === args.length, \"Expected \".concat(args.length, \" arguments to contract \").concat(name, \", found \").concat(params.length));\n const u8a = new Clazz(args.reduce((mapped, _ref5, index) => {\n let name = _ref5.name;\n mapped[name] = params[index];\n return mapped;\n }, (0, _objectSpread2.default)({}, baseStruct))).toU8a();\n return _Compact.default.addLengthPrefix(u8a);\n };\n\n const fn = encoder;\n fn.args = args;\n fn.isConstant = !(method.mutates || false);\n fn.type = method.return_type || null;\n return fn;\n }\n\n}\n\nexports.default = ContractAbi;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _bn = _interopRequireDefault(require(\"bn.js\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _defaults = require(\"@polkadot/util/compact/defaults\");\n\nvar _Base = _interopRequireDefault(require(\"./Base\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Compact\n * @description\n * A compact length-encoding codec wrapper. It performs the same function as Length, however\n * differs in that it uses a variable number of bytes to do the actual encoding. This is mostly\n * used by other types to add length-prefixed encoding, or in the case of wrapped types, taking\n * a number and making the compact representation thereof\n */\nclass Compact extends _Base.default {\n constructor(Type) {\n let value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n super(Compact.decodeCompact(Type, value));\n }\n\n static with(Type) {\n return class extends Compact {\n constructor(value) {\n super(Type, value);\n }\n\n };\n }\n /**\n * Prepend a Uint8Array with its compact length.\n *\n * @param u8a - The Uint8Array to be prefixed\n */\n\n\n static stripLengthPrefix(u8a) {\n let bitLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _defaults.DEFAULT_BITLENGTH;\n\n const _compactStripLength = (0, _util.compactStripLength)(u8a, bitLength),\n _compactStripLength2 = (0, _slicedToArray2.default)(_compactStripLength, 2),\n value = _compactStripLength2[1];\n\n return value;\n }\n\n static decodeCompact(Type, value) {\n if (value instanceof Compact) {\n return new Type(value.raw);\n } else if ((0, _util.isString)(value)) {\n return new Type((0, _util.isHex)(value, -1, true) ? (0, _util.hexToBn)(value) : new _bn.default(value, 10));\n } else if ((0, _util.isNumber)(value) || (0, _util.isBn)(value)) {\n return new Type((0, _util.bnToBn)(value));\n }\n\n const _Compact$decodeU8a = Compact.decodeU8a(value, new Type(0).bitLength()),\n _Compact$decodeU8a2 = (0, _slicedToArray2.default)(_Compact$decodeU8a, 2),\n _value = _Compact$decodeU8a2[1];\n\n return new Type(_value);\n }\n /**\n * @description The length of the value when encoded as a Uint8Array\n */\n\n\n get encodedLength() {\n return this.toU8a().length;\n }\n /**\n * @description Checks if the value is an empty value\n */\n\n\n get isEmpty() {\n return this.raw.isEmpty;\n }\n /**\n * @description Returns the number of bits in the value\n */\n\n\n bitLength() {\n return this.raw.bitLength();\n }\n /**\n * @description Compares the value of the input to see if there is a match\n */\n\n\n eq(other) {\n return this.raw.eq(other instanceof Compact ? other.raw : other);\n }\n /**\n * @description Returns the BN representation of the number\n */\n\n\n toBn() {\n return this.raw.toBn();\n }\n /**\n * @description Returns a hex string representation of the value\n */\n\n\n toHex(isLe) {\n return this.raw.toHex(isLe);\n }\n /**\n * @description Converts the Object to JSON, typically used for RPC transfers\n */\n\n\n toJSON() {\n return this.raw.toJSON();\n }\n /**\n * @description Returns the number representation for the value\n */\n\n\n toNumber() {\n return this.raw.toNumber();\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return \"Compact<\".concat(this.raw.toRawType(), \">\");\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n return this.raw.toString();\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n return Compact.encodeU8a(this.raw.toBn());\n }\n /**\n * @description Returns the embedded [[UInt]] or [[Moment]] value\n */\n\n\n unwrap() {\n return this.raw;\n }\n\n}\n\nexports.default = Compact;\nCompact.addLengthPrefix = _util.compactAddLength;\nCompact.decodeU8a = _util.compactFromU8a;\nCompact.encodeU8a = _util.compactToU8a;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Base\n * @description A type extends the Base class, when it holds a value\n */\nclass Base {\n constructor(value) {\n this.raw = void 0;\n this.raw = value;\n }\n\n}\n\nexports.default = Base;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.typeSplit = typeSplit;\nexports.getTypeDef = getTypeDef;\nexports.getTypeClass = getTypeClass;\nexports.createClass = createClass;\nexports.default = createType;\nexports.TypeDefInfo = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Null = _interopRequireDefault(require(\"../primitive/Null\"));\n\nvar _Compact = _interopRequireDefault(require(\"./Compact\"));\n\nvar _Enum = _interopRequireDefault(require(\"./Enum\"));\n\nvar _Linkage = _interopRequireDefault(require(\"./Linkage\"));\n\nvar _Option = _interopRequireDefault(require(\"./Option\"));\n\nvar _Struct = _interopRequireDefault(require(\"./Struct\"));\n\nvar _Tuple = _interopRequireDefault(require(\"./Tuple\"));\n\nvar _Vector = _interopRequireDefault(require(\"./Vector\"));\n\nvar _typeRegistry = _interopRequireDefault(require(\"./typeRegistry\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nlet TypeDefInfo;\nexports.TypeDefInfo = TypeDefInfo;\n\n(function (TypeDefInfo) {\n TypeDefInfo[TypeDefInfo[\"Compact\"] = 0] = \"Compact\";\n TypeDefInfo[TypeDefInfo[\"Enum\"] = 1] = \"Enum\";\n TypeDefInfo[TypeDefInfo[\"Option\"] = 2] = \"Option\";\n TypeDefInfo[TypeDefInfo[\"Plain\"] = 3] = \"Plain\";\n TypeDefInfo[TypeDefInfo[\"Struct\"] = 4] = \"Struct\";\n TypeDefInfo[TypeDefInfo[\"Tuple\"] = 5] = \"Tuple\";\n TypeDefInfo[TypeDefInfo[\"Vector\"] = 6] = \"Vector\";\n TypeDefInfo[TypeDefInfo[\"Linkage\"] = 7] = \"Linkage\";\n TypeDefInfo[TypeDefInfo[\"Null\"] = 8] = \"Null\";\n})(TypeDefInfo || (exports.TypeDefInfo = TypeDefInfo = {}));\n\n// safely split a string on ', ' while taking care of any nested occurences\nfunction typeSplit(type) {\n let sDepth = 0;\n let tDepth = 0;\n let vDepth = 0;\n let start = 0;\n const result = [];\n\n for (let index = 0; index < type.length; index++) {\n switch (type[index]) {\n case ',':\n // we are not nested, add the type\n if (sDepth === 0 && tDepth === 0 && vDepth === 0) {\n result.push(type.substr(start, index - start).trim());\n start = index + 1;\n }\n\n break;\n // inc struct depth, start found\n\n case '{':\n sDepth++;\n break;\n // dec struct depth, end found\n\n case '}':\n sDepth--;\n break;\n // inc tuple depth, start found\n\n case '(':\n tDepth++;\n break;\n // dec tuple depth, end found\n\n case ')':\n tDepth--;\n break;\n // inc compact/vec depth, start found\n\n case '<':\n vDepth++;\n break;\n // dec compact/vec depth, end found\n\n case '>':\n vDepth--;\n break;\n // normal character\n\n default:\n break;\n }\n }\n\n (0, _util.assert)(!sDepth && !tDepth && !vDepth, \"Invalid defintion (missing terminators) found in \".concat(type)); // the final leg of the journey\n\n result.push(type.substr(start, type.length - start).trim());\n return result;\n}\n\nfunction getTypeDef(_type, name) {\n const type = _type.toString().trim();\n\n const value = {\n info: TypeDefInfo.Plain,\n name,\n type\n };\n let subType = '';\n\n const startingWith = (type, start, end) => {\n if (type.substr(0, start.length) !== start) {\n return false;\n }\n\n (0, _util.assert)(type[type.length - 1] === end, \"Expected '\".concat(start, \"' closing with '\").concat(end, \"'\"));\n subType = type.substr(start.length, type.length - start.length - 1);\n return true;\n };\n\n if (startingWith(type, '(', ')')) {\n value.info = TypeDefInfo.Tuple;\n value.sub = typeSplit(subType).map(inner => getTypeDef(inner));\n } else if (startingWith(type, '{', '}')) {\n const parsed = JSON.parse(type);\n const keys = Object.keys(parsed);\n\n if (keys.length === 1 && keys[0] === '_enum') {\n const details = parsed[keys[0]]; // not as pretty, but remain compatible with oo7 for both struct and Array types\n\n value.sub = Array.isArray(details) ? details.map(name => ({\n info: TypeDefInfo.Plain,\n name,\n type: 'Null'\n })) : Object.keys(details).map(name => ({\n info: TypeDefInfo.Plain,\n name,\n type: details[name] || 'Null'\n }));\n value.info = TypeDefInfo.Enum;\n } else {\n value.info = TypeDefInfo.Struct;\n value.sub = keys.map(name => getTypeDef(parsed[name], name));\n }\n } else if (startingWith(type, 'Compact<', '>')) {\n value.info = TypeDefInfo.Compact;\n value.sub = getTypeDef(subType);\n } else if (startingWith(type, 'Option<', '>')) {\n value.info = TypeDefInfo.Option;\n value.sub = getTypeDef(subType);\n } else if (startingWith(type, 'Vec<', '>')) {\n value.info = TypeDefInfo.Vector;\n value.sub = getTypeDef(subType);\n } else if (startingWith(type, 'Linkage<', '>')) {\n value.info = TypeDefInfo.Linkage;\n value.sub = getTypeDef(subType);\n } else if (startingWith(type, 'DoubleMap<', '>')) {\n // FIXME As a first step, only allow parsing of DoubleMap, don't actually init\n value.info = TypeDefInfo.Null;\n }\n\n return value;\n} // Returns the type Class for construction\n\n\nfunction getTypeClass(value) {\n const Type = (0, _typeRegistry.default)().get(value.type);\n\n if (Type) {\n return Type;\n }\n\n switch (value.info) {\n case TypeDefInfo.Compact:\n (0, _util.assert)(value.sub && !Array.isArray(value.sub), 'Expected subtype for Compact');\n return _Compact.default.with(getTypeClass(value.sub));\n\n case TypeDefInfo.Enum:\n (0, _util.assert)(value.sub && Array.isArray(value.sub), 'Expected subtype for Enum');\n return _Enum.default.with(value.sub.reduce((result, sub, index) => {\n result[sub.name] = getTypeClass(sub);\n return result;\n }, {}));\n\n case TypeDefInfo.Option:\n (0, _util.assert)(value.sub && !Array.isArray(value.sub), 'Expected subtype for Option');\n return _Option.default.with(getTypeClass(value.sub));\n\n case TypeDefInfo.Struct:\n (0, _util.assert)(Array.isArray(value.sub), 'Expected nested subtypes for Struct');\n return _Struct.default.with(value.sub.reduce((result, sub) => {\n result[sub.name] = getTypeClass(sub);\n return result;\n }, {}));\n\n case TypeDefInfo.Tuple:\n (0, _util.assert)(Array.isArray(value.sub), 'Expected nested subtypes for Tuple');\n return _Tuple.default.with(value.sub.map(getTypeClass));\n\n case TypeDefInfo.Vector:\n (0, _util.assert)(value.sub && !Array.isArray(value.sub), 'Expected subtype for Vector');\n return _Vector.default.with(getTypeClass(value.sub));\n\n case TypeDefInfo.Linkage:\n (0, _util.assert)(value.sub && !Array.isArray(value.sub), 'Expected subtype for Linkage');\n return _Linkage.default.withKey(getTypeClass(value.sub));\n\n case TypeDefInfo.Null:\n return _Null.default;\n }\n\n throw new Error(\"Unable to determine type from '\".concat(value.type, \"'\"));\n}\n\nfunction createClass(type) {\n return getTypeClass(getTypeDef(type));\n}\n\nfunction initType(Type, value, isPedantic) {\n try {\n const created = new Type(value); // in pedantic mode, actually check that the encoding matches that supplied - this\n // is much slower, but ensures that we have a 100% grasp on the actual provided value\n\n if (isPedantic && value && value.toHex) {\n const inHex = value.toHex(true);\n const crHex = created.toHex(true);\n (0, _util.assert)(crHex === inHex, \"Encoding for input doesn't match output, created \".concat(crHex, \" from \").concat(inHex));\n }\n\n return created;\n } catch (error) {\n if (Type.Fallback) {\n return initType(Type.Fallback, value, isPedantic);\n }\n\n throw error;\n }\n}\n\nfunction createType(type, value, isPedantic) {\n // l.debug(() => ['createType', { type, value }]);\n return initType(createClass(type), value, isPedantic);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Null\n * @description\n * Implements a type that does not contain anything (apart from `null`)\n */\nclass Null {\n /**\n * @description The length of the value when encoded as a Uint8Array\n */\n get encodedLength() {\n return 0;\n }\n /**\n * @description Checks if the value is an empty value (always true)\n */\n\n\n get isEmpty() {\n return true;\n }\n /**\n * @description Compares the value of the input to see if there is a match\n */\n\n\n eq(other) {\n return other instanceof Null || (0, _util.isNull)(other);\n }\n /**\n * @description Returns a hex string representation of the value\n */\n\n\n toHex() {\n return '0x';\n }\n /**\n * @description Converts the Object to JSON, typically used for RPC transfers\n */\n\n\n toJSON() {\n return null;\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return 'Null';\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n return '';\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n return new Uint8Array();\n }\n\n}\n\nexports.default = Null;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _EnumType = _interopRequireDefault(require(\"./EnumType\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nvar _default = _EnumType.default;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Null = _interopRequireDefault(require(\"../primitive/Null\"));\n\nvar _Base = _interopRequireDefault(require(\"./Base\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Enum\n * @description\n * This implements an enum, that based on the value wraps a different type. It is effectively\n * an extension to enum where the value type is determined by the actual index.\n */\n// TODO:\n// - As per Enum, actually use TS enum\n// - It should rather probably extend Enum instead of copying code\nclass Enum extends _Base.default {\n constructor(def, value, index) {\n const defInfo = Enum.extractDef(def);\n const decoded = Enum.decodeEnum(defInfo.def, value, index);\n super(decoded.value);\n this._def = void 0;\n this._index = void 0;\n this._indexes = void 0;\n this._isBasic = void 0;\n this._def = defInfo.def;\n this._isBasic = defInfo.isBasic;\n this._indexes = Object.keys(defInfo.def).map((_, index) => index);\n this._index = this._indexes.indexOf(decoded.index) || 0;\n }\n\n static extractDef(def) {\n if (!Array.isArray(def)) {\n return {\n def,\n isBasic: false\n };\n }\n\n return {\n def: def.reduce((def, key) => {\n def[key] = _Null.default;\n return def;\n }, {}),\n isBasic: true\n };\n }\n\n static decodeEnum(def, value, index) {\n // If `index` is set, we parse it.\n if (index instanceof Enum) {\n return Enum.createValue(def, index._index, index.raw);\n } else if ((0, _util.isNumber)(index)) {\n return Enum.createValue(def, index, value);\n } // Or else, we just look at `value`\n\n\n return Enum.decodeViaValue(def, value);\n }\n\n static decodeViaValue(def, value) {\n if (value instanceof Enum) {\n return Enum.createValue(def, value._index, value.raw);\n } else if ((0, _util.isU8a)(value)) {\n return Enum.createValue(def, value[0], value.subarray(1));\n } else if ((0, _util.isNumber)(value)) {\n return Enum.createValue(def, value);\n } else if ((0, _util.isString)(value)) {\n const _str = value.toString();\n\n return (0, _util.isHex)(_str) ? Enum.decodeViaValue(def, (0, _util.hexToU8a)(_str)) : Enum.createViaJSON(def, _str);\n } else if ((0, _util.isObject)(value)) {\n const key = Object.keys(value)[0];\n return Enum.createViaJSON(def, key, value[key]);\n } // Worst-case scenario, return the first with default\n\n\n return Enum.createValue(def, 0);\n }\n\n static createViaJSON(def, key, value) {\n // JSON comes in the form of { \"\": \"\" }, here we\n // additionally force to lower to ensure forward compat\n const keys = Object.keys(def).map(k => k.toLowerCase());\n const keyLower = key.toLowerCase();\n const index = keys.indexOf(keyLower);\n (0, _util.assert)(index !== -1, \"Cannot map Enum JSON, unable to find '\".concat(key, \"' in \").concat(keys.join(', ')));\n return Enum.createValue(def, index, value);\n }\n\n static createValue(def) {\n let index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let value = arguments.length > 2 ? arguments[2] : undefined;\n const Clazz = Object.values(def)[index];\n (0, _util.assert)(!(0, _util.isUndefined)(Clazz), \"Unable to create Enum via index \".concat(index, \", in \").concat(Object.keys(def).join(', ')));\n return {\n index,\n value: new Clazz(value)\n };\n }\n\n static with(Types) {\n return class extends Enum {\n constructor(value, index) {\n super(Types, value, index);\n }\n\n };\n }\n /**\n * @description The length of the value when encoded as a Uint8Array\n */\n\n\n get encodedLength() {\n return 1 + this.raw.encodedLength;\n }\n /**\n * @description The index of the metadata value\n */\n\n\n get index() {\n return this._index;\n }\n /**\n * @description Checks if the value is an empty value\n */\n\n\n get isEmpty() {\n return this.isEmpty;\n }\n /**\n * @description Checks if the Enum points to a [[Null]] type\n */\n\n\n get isNone() {\n return this.isNull;\n }\n /**\n * @description Checks if the Enum points to a [[Null]] type (deprecated, use isNone)\n */\n\n\n get isNull() {\n return this.raw instanceof _Null.default;\n }\n /**\n * @description The name of the type this enum value represents\n */\n\n\n get type() {\n return Object.keys(this._def)[this._index];\n }\n /**\n * @description The value of the enum\n */\n\n\n get value() {\n return this.raw;\n }\n /**\n * @description Compares the value of the input to see if there is a match\n */\n\n\n eq(other) {\n // cater for the case where we only pass the enum index\n if ((0, _util.isNumber)(other)) {\n return this.toNumber() === other;\n } else if (this._isBasic && (0, _util.isString)(other)) {\n return this.type === other;\n } // compare the actual wrapper value\n\n\n return this.value.eq(other);\n }\n /**\n * @description Returns a hex string representation of the value\n */\n\n\n toHex() {\n return (0, _util.u8aToHex)(this.toU8a());\n }\n /**\n * @description Converts the Object to JSON, typically used for RPC transfers\n */\n\n\n toJSON() {\n return this._isBasic ? this._index : {\n [this.type]: this.raw.toJSON()\n };\n }\n /**\n * @description Returns the number representation for the value\n */\n\n\n toNumber() {\n return this._index;\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n const kv = this._isBasic ? Object.keys(this._def).map(key => \"\\\"\".concat(key, \"\\\"\")) : Object.entries(this._def).map((_ref) => {\n let _ref2 = (0, _slicedToArray2.default)(_ref, 2),\n key = _ref2[0],\n Type = _ref2[1];\n\n return \"\\\"\".concat(key, \"\\\":\\\"\").concat(new Type().toRawType(), \"\\\"\");\n });\n const braces = this._isBasic ? '[]' : '{}';\n return \"{\\\"_enum\\\":\".concat(braces[0]).concat(kv.join(',')).concat(braces[1], \"}\");\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n return this.isNull ? this.type : JSON.stringify(this.toJSON());\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n const index = this._indexes[this._index];\n return (0, _util.u8aConcat)(new Uint8Array([index]), this.raw.toU8a(isBare));\n }\n\n}\n\nexports.default = Enum;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LinkageResult = exports.default = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _ = require(\".\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nclass Linkage extends _.Struct {\n constructor(Type, value) {\n super({\n previous: _.Option.with(Type),\n next: _.Option.with(Type)\n }, value);\n }\n\n static withKey(Type) {\n return class extends Linkage {\n constructor(value) {\n super(Type, value);\n }\n\n };\n }\n\n get previous() {\n return this.get('previous');\n }\n\n get next() {\n return this.get('next');\n }\n\n}\n\nexports.default = Linkage;\n\nclass LinkageResult extends _.Tuple {\n constructor(_ref, _ref2) {\n let _ref3 = (0, _slicedToArray2.default)(_ref, 2),\n TypeKey = _ref3[0],\n keys = _ref3[1];\n\n let _ref4 = (0, _slicedToArray2.default)(_ref2, 2),\n TypeValue = _ref4[0],\n values = _ref4[1];\n\n super({\n Keys: _.Vector.with(TypeKey),\n Values: _.Vector.with(TypeValue)\n }, [keys, values]);\n }\n\n}\n\nexports.LinkageResult = LinkageResult;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Compact\", {\n enumerable: true,\n get: function get() {\n return _Compact.default;\n }\n});\nObject.defineProperty(exports, \"Enum\", {\n enumerable: true,\n get: function get() {\n return _Enum.default;\n }\n});\nObject.defineProperty(exports, \"EnumType\", {\n enumerable: true,\n get: function get() {\n return _EnumType.default;\n }\n});\nObject.defineProperty(exports, \"Option\", {\n enumerable: true,\n get: function get() {\n return _Option.default;\n }\n});\nObject.defineProperty(exports, \"Set\", {\n enumerable: true,\n get: function get() {\n return _Set.default;\n }\n});\nObject.defineProperty(exports, \"Struct\", {\n enumerable: true,\n get: function get() {\n return _Struct.default;\n }\n});\nObject.defineProperty(exports, \"Tuple\", {\n enumerable: true,\n get: function get() {\n return _Tuple.default;\n }\n});\nObject.defineProperty(exports, \"Vector\", {\n enumerable: true,\n get: function get() {\n return _Vector.default;\n }\n});\nObject.defineProperty(exports, \"U8a\", {\n enumerable: true,\n get: function get() {\n return _U8a.default;\n }\n});\nObject.defineProperty(exports, \"UInt\", {\n enumerable: true,\n get: function get() {\n return _UInt.default;\n }\n});\nObject.defineProperty(exports, \"createType\", {\n enumerable: true,\n get: function get() {\n return _createType.default;\n }\n});\nObject.defineProperty(exports, \"createClass\", {\n enumerable: true,\n get: function get() {\n return _createType.createClass;\n }\n});\nObject.defineProperty(exports, \"getTypeClass\", {\n enumerable: true,\n get: function get() {\n return _createType.getTypeClass;\n }\n});\nObject.defineProperty(exports, \"getTypeDef\", {\n enumerable: true,\n get: function get() {\n return _createType.getTypeDef;\n }\n});\nObject.defineProperty(exports, \"TypeDef\", {\n enumerable: true,\n get: function get() {\n return _createType.TypeDef;\n }\n});\nObject.defineProperty(exports, \"TypeDefInfo\", {\n enumerable: true,\n get: function get() {\n return _createType.TypeDefInfo;\n }\n});\nObject.defineProperty(exports, \"getTypeRegistry\", {\n enumerable: true,\n get: function get() {\n return _typeRegistry.default;\n }\n});\n\nvar _Compact = _interopRequireDefault(require(\"./Compact\"));\n\nvar _Enum = _interopRequireDefault(require(\"./Enum\"));\n\nvar _EnumType = _interopRequireDefault(require(\"./EnumType\"));\n\nvar _Option = _interopRequireDefault(require(\"./Option\"));\n\nvar _Set = _interopRequireDefault(require(\"./Set\"));\n\nvar _Struct = _interopRequireDefault(require(\"./Struct\"));\n\nvar _Tuple = _interopRequireDefault(require(\"./Tuple\"));\n\nvar _Vector = _interopRequireDefault(require(\"./Vector\"));\n\nvar _U8a = _interopRequireDefault(require(\"./U8a\"));\n\nvar _UInt = _interopRequireDefault(require(\"./UInt\"));\n\nvar _createType = _interopRequireWildcard(require(\"./createType\"));\n\nvar _typeRegistry = _interopRequireDefault(require(\"./typeRegistry\"));","function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n\n newObj[\"default\"] = obj;\n return newObj;\n }\n}\n\nmodule.exports = _interopRequireWildcard;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Base = _interopRequireDefault(require(\"./Base\"));\n\nvar _Null = _interopRequireDefault(require(\"../primitive/Null\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Option\n * @description\n * An Option is an optional field. Basically the first byte indicates that there is\n * is value to follow. If the byte is `1` there is an actual value. So the Option\n * implements that - decodes, checks for optionality and wraps the required structure\n * with a value if/as required/found.\n */\nclass Option extends _Base.default {\n constructor(Type, value) {\n super(Option.decodeOption(Type, value));\n }\n\n static decodeOption(Type, value) {\n if ((0, _util.isNull)(value) || (0, _util.isUndefined)(value) || value instanceof _Null.default) {\n return new _Null.default();\n } else if (value instanceof Option) {\n return Option.decodeOption(Type, value.value);\n } else if (value instanceof Type || Type.Fallback && value instanceof Type.Fallback) {\n // don't re-create, use as it (which also caters for derived types)\n return value;\n } else if ((0, _util.isU8a)(value)) {\n // the isU8a check happens last in the if-tree - since the wrapped value\n // may be an instance of it, so Type and Option checks go in first\n return value[0] === 0 ? new _Null.default() : new Type(value.subarray(1));\n }\n\n return new Type(value);\n }\n\n static with(Type) {\n return class extends Option {\n constructor(value) {\n super(Type, value);\n }\n\n };\n }\n /**\n * @description The length of the value when encoded as a Uint8Array\n */\n\n\n get encodedLength() {\n // boolean byte (has value, doesn't have) along with wrapped length\n return 1 + this.raw.encodedLength;\n }\n /**\n * @description Checks if the Option has no value\n */\n\n\n get isEmpty() {\n return this.isNone;\n }\n /**\n * @description Checks if the Option has no value\n */\n\n\n get isNone() {\n return this.raw instanceof _Null.default;\n }\n /**\n * @description Checks if the Option has a value\n */\n\n\n get isSome() {\n return !this.isNone;\n }\n /**\n * @description The actual value for the Option\n */\n\n\n get value() {\n return this.raw;\n }\n /**\n * @description Compares the value of the input to see if there is a match\n */\n\n\n eq(other) {\n if (other instanceof Option) {\n return this.isSome === other.isSome && this.value.eq(other.value);\n }\n\n return this.value.eq(other);\n }\n /**\n * @description Returns a hex string representation of the value\n */\n\n\n toHex() {\n return (0, _util.u8aToHex)(this.toU8a());\n }\n /**\n * @description Converts the Object to JSON, typically used for RPC transfers\n */\n\n\n toJSON() {\n return this.raw.toJSON();\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return \"Option<\".concat(this.raw.toRawType(), \">\");\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n return this.raw.toString();\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n if (isBare) {\n return this.raw.toU8a(true);\n }\n\n const u8a = new Uint8Array(this.encodedLength);\n\n if (this.isSome) {\n u8a.set([1]);\n u8a.set(this.raw.toU8a(), 1);\n }\n\n return u8a;\n }\n /**\n * @description Returns the value that the Option represents (if available), throws if null\n */\n\n\n unwrap() {\n if (this.isNone) {\n throw new Error('Option: unwrapping a None value');\n }\n\n return this.raw;\n }\n /**\n * @description Returns the value that the Option represents (if available) or defaultValue if none\n * @param defaultValue The value to return if the option isNone\n */\n\n\n unwrapOr(defaultValue) {\n return this.isSome ? this.unwrap() : defaultValue;\n }\n\n}\n\nexports.default = Option;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _utils = require(\"./utils\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Set\n * @description\n * An Set is an array of string values, represented an an encoded type by\n * a bitwise representation of the values.\n */\n// FIXME This is a prime candidate to extend the JavaScript built-in Set\nclass CodecSet extends Set {\n constructor(setValues, value) {\n super(CodecSet.decodeSet(setValues, value));\n this._setValues = void 0;\n this._setValues = setValues;\n }\n\n static decodeSet(setValues) {\n let value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if ((0, _util.isU8a)(value)) {\n return value.length === 0 ? [] : CodecSet.decodeSet(setValues, value[0]);\n } else if (value instanceof Set) {\n return CodecSet.decodeSet(setValues, [...value.values()]);\n } else if (Array.isArray(value)) {\n return value.reduce((result, key) => {\n (0, _util.assert)(!(0, _util.isUndefined)(setValues[key]), \"Set: Invalid key '\".concat(key, \"' passed to Set, allowed \").concat(Object.keys(setValues).join(', ')));\n result.push(key);\n return result;\n }, []);\n }\n\n const result = Object.keys(setValues).reduce((result, key) => {\n if ((value & setValues[key]) === setValues[key]) {\n result.push(key);\n }\n\n return result;\n }, []);\n const computed = CodecSet.encodeSet(setValues, result);\n (0, _util.assert)(value === computed, \"Set: Mismatch decoding '\".concat(value, \"', computed as '\").concat(computed, \"' with \").concat(result));\n return result;\n }\n\n static encodeSet(setValues, value) {\n return value.reduce((result, value) => {\n return result | (setValues[value] || 0);\n }, 0);\n }\n /**\n * @description The length of the value when encoded as a Uint8Array\n */\n\n\n get encodedLength() {\n return 1;\n }\n /**\n * @description true is the Set contains no values\n */\n\n\n get isEmpty() {\n return this.size === 0;\n }\n /**\n * @description The actual set values as a Array\n */\n\n\n get strings() {\n return [...super.values()];\n }\n /**\n * @description The encoded value for the set members\n */\n\n\n get valueEncoded() {\n return CodecSet.encodeSet(this._setValues, this.strings);\n }\n /**\n * @description adds a value to the Set (extended to allow for validity checking)\n */\n\n\n add(key) {\n // we have the isUndefined(this._setValues) in here as well, add is used internally\n // in the Set constructor (so it is undefined at this point, and should allow)\n (0, _util.assert)((0, _util.isUndefined)(this._setValues) || !(0, _util.isUndefined)(this._setValues[key]), \"Set: Invalid key '\".concat(key, \"' on add\"));\n super.add(key);\n return this;\n }\n /**\n * @description Compares the value of the input to see if there is a match\n */\n\n\n eq(other) {\n if (Array.isArray(other)) {\n // we don't actually care about the order, sort the values\n return (0, _utils.compareArray)(this.strings.sort(), other.sort());\n } else if (other instanceof Set) {\n return this.eq([...other.values()]);\n } else if ((0, _util.isNumber)(other)) {\n return this.valueEncoded === other;\n }\n\n return false;\n }\n /**\n * @description Returns a hex string representation of the value\n */\n\n\n toHex() {\n return (0, _util.u8aToHex)(this.toU8a());\n }\n /**\n * @description Converts the Object to JSON, typically used for RPC transfers\n */\n\n\n toJSON() {\n return this.strings;\n }\n /**\n * @description The encoded value for the set members\n */\n\n\n toNumber() {\n return this.valueEncoded;\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n const kv = Object.entries(this._setValues).map((_ref) => {\n let _ref2 = (0, _slicedToArray2.default)(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n\n return \"\\\"\".concat(key, \"\\\":\").concat(value);\n } // JSON format\n ); // FIXME We don't cater for this in createType as of yet\n\n return \"{\\\"_set\\\":{\".concat(kv.join(','), \"}}\");\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n return \"[\".concat(this.strings.join(', '), \"]\");\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n return new Uint8Array([this.valueEncoded]);\n }\n\n}\n\nexports.default = CodecSet;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar superPropBase = require(\"./superPropBase\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf\");\n\nvar isNativeFunction = require(\"./isNativeFunction\");\n\nvar construct = require(\"./construct\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"compareArray\", {\n enumerable: true,\n get: function get() {\n return _compareArray.default;\n }\n});\nObject.defineProperty(exports, \"compareMap\", {\n enumerable: true,\n get: function get() {\n return _compareMap.default;\n }\n});\nObject.defineProperty(exports, \"decodeU8a\", {\n enumerable: true,\n get: function get() {\n return _decodeU8a.default;\n }\n});\n\nvar _compareArray = _interopRequireDefault(require(\"./compareArray\"));\n\nvar _compareMap = _interopRequireDefault(require(\"./compareMap\"));\n\nvar _decodeU8a = _interopRequireDefault(require(\"./decodeU8a\"));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = compareArray;\n\nvar _util = require(\"@polkadot/util\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// NOTE These are used internally and when comparing objects, expects that\n// when the second is an Array that the first has to be as well\nfunction compareArray(a, b) {\n if (Array.isArray(b)) {\n return a.length === b.length && (0, _util.isUndefined)(a.find((value, index) => (0, _util.isFunction)(value.eq) ? !value.eq(b[index]) : value !== b[index]));\n }\n\n return false;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = compareMap;\n\nvar _util = require(\"@polkadot/util\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// NOTE These are used internally and when comparing objects, expects that\n// when the second is an Map that the first has to be as well\nfunction compareMap(a, b) {\n if (Array.isArray(b)) {\n return a.size === b.length && (0, _util.isUndefined)(b.find(entry => {\n if (!Array.isArray(entry) || entry.length !== 2) {\n return true;\n }\n\n const value = a.get(entry[0]);\n return (0, _util.isUndefined)(value) || ( // Codec has .eq, use it here\n (0, _util.isFunction)(value.eq) ? !value.eq(entry[1]) : value !== entry[1]);\n }));\n } else if (b instanceof Map) {\n return compareMap(a, [...b.entries()]);\n } else if ((0, _util.isObject)(b)) {\n return compareMap(a, Object.entries(b));\n }\n\n return false;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = decodeU8a;\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * Given an u8a, and an array of Type constructors, decode the u8a against the\n * types, and return an array of decoded values.\n *\n * @param u8a - The u8a to decode.\n * @param types - The array of Constructor to decode the U8a against.\n */\nfunction decodeU8a(u8a, _types) {\n const types = Array.isArray(_types) ? _types : Object.values(_types);\n\n if (!types.length) {\n return [];\n }\n\n const Type = types[0];\n\n try {\n const value = new Type(u8a);\n return [value].concat(decodeU8a(u8a.subarray(value.encodedLength), types.slice(1)));\n } catch (error) {\n console.error(\"Unable to decode Uint8Array for type '\".concat(Type.name, \"': \").concat(error.message));\n throw error;\n }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _utils = require(\"./utils\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Struct\n * @description\n * A Struct defines an Object with key-value pairs - where the values are Codec values. It removes\n * a lot of repetition from the actual coding, define a structure type, pass it the key/Codec\n * values in the constructor and it manages the decoding. It is important that the constructor\n * values matches 100% to the order in th Rust code, i.e. don't go crazy and make it alphabetical,\n * it needs to decoded in the specific defined order.\n * @noInheritDoc\n */\nclass Struct extends Map {\n constructor(Types) {\n let value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let jsonMap = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Map();\n const decoded = Struct.decodeStruct(Types, value, jsonMap);\n super(Object.entries(decoded));\n this._jsonMap = void 0;\n this._Types = void 0;\n this._jsonMap = jsonMap;\n this._Types = Object.keys(Types).reduce((result, key) => {\n // TS2322: Type 'string' is not assignable to type 'E[keyof S]'.\n result[key] = Types[key].name;\n return result;\n }, {});\n }\n /**\n * Decode input to pass into constructor.\n *\n * @param Types - Types definition.\n * @param value - Value to decode, one of:\n * - null\n * - undefined\n * - hex\n * - Uint8Array\n * - object with `{ key1: value1, key2: value2 }`, assuming `key1` and `key2`\n * are also keys in `Types`\n * - array with `[value1, value2]` assuming the array has the same length as\n * `Object.keys(Types)`\n * @param jsonMap\n */\n\n\n static decodeStruct(Types, value, jsonMap) {\n // l.debug(() => ['Struct.decode', { Types, value }]);\n if ((0, _util.isHex)(value)) {\n return Struct.decodeStruct(Types, (0, _util.hexToU8a)(value), jsonMap);\n } else if ((0, _util.isU8a)(value)) {\n const values = (0, _utils.decodeU8a)(value, Object.values(Types)); // Transform array of values to {key: value} mapping\n\n return Object.keys(Types).reduce((raw, key, index) => {\n // TS2322: Type 'Codec' is not assignable to type 'T[keyof S]'.\n raw[key] = values[index];\n return raw;\n }, {});\n } else if (!value) {\n return {};\n } // We assume from here that value is a JS object (Array, Map, Object)\n\n\n return Struct.decodeStructFromObject(Types, value, jsonMap);\n }\n\n static decodeStructFromObject(Types, value, jsonMap) {\n return Object.keys(Types).reduce((raw, key, index) => {\n // The key in the JSON can be snake_case (or other cases), but in our\n // Types, result or any other maps, it's camelCase\n const jsonKey = jsonMap.get(key) && !value[key] ? jsonMap.get(key) : key;\n\n try {\n if (Array.isArray(value)) {\n raw[key] = value[index] instanceof Types[key] ? value[index] : new Types[key](value[index]);\n } else if (value instanceof Map) {\n const mapped = value.get(jsonKey); // TS2322: Type 'Codec' is not assignable to type 'T[keyof S]'.\n\n raw[key] = mapped instanceof Types[key] ? mapped : new Types[key](mapped);\n } else if ((0, _util.isObject)(value)) {\n raw[key] = value[jsonKey] instanceof Types[key] ? value[jsonKey] : new Types[key](value[jsonKey]);\n } else {\n throw new Error(\"Struct: cannot decode type \".concat(Types[key].name, \" with value \").concat(JSON.stringify(value)));\n }\n } catch (error) {\n console.error(\"Unable to decode Struct on key '\".concat(jsonKey, \"': \").concat(error.message));\n throw error;\n }\n\n return raw;\n }, {});\n }\n\n static with(Types) {\n return class extends Struct {\n constructor(value, jsonMap) {\n super(Types, value, jsonMap);\n Object.keys(Types).forEach(key => {\n // do not clobber existing properties on the object\n if (!(0, _util.isUndefined)(this[key])) {\n return;\n }\n\n Object.defineProperty(this, key, {\n enumerable: true,\n get: () => this.get(key)\n });\n });\n }\n\n };\n }\n /**\n * @description Checks if the value is an empty value\n */\n\n\n get isEmpty() {\n const items = this.toArray();\n\n for (let i = 0; i < items.length; i++) {\n if (!items[i].isEmpty) {\n return false;\n }\n }\n\n return true;\n }\n /**\n * @description Returns the Type description to sthe structure\n */\n\n\n get Type() {\n return this._Types;\n }\n /**\n * @description The length of the value when encoded as a Uint8Array\n */\n\n\n get encodedLength() {\n return this.toArray().reduce((length, entry) => {\n return length += entry.encodedLength;\n }, 0);\n }\n /**\n * @description Compares the value of the input to see if there is a match\n */\n\n\n eq(other) {\n return (0, _utils.compareMap)(this, other);\n }\n /**\n * @description Returns a specific names entry in the structure\n * @param name The name of the entry to retrieve\n */\n\n\n get(name) {\n return super.get(name);\n }\n /**\n * @description Returns the values of a member at a specific index (Rather use get(name) for performance)\n */\n\n\n getAtIndex(index) {\n return this.toArray()[index];\n }\n /**\n * @description Converts the Object to an standard JavaScript Array\n */\n\n\n toArray() {\n return [...this.values()];\n }\n /**\n * @description Returns a hex string representation of the value\n */\n\n\n toHex() {\n return (0, _util.u8aToHex)(this.toU8a());\n }\n /**\n * @description Converts the Object to JSON, typically used for RPC transfers\n */\n\n\n toJSON() {\n return [...this.keys()].reduce((json, key) => {\n const jsonKey = this._jsonMap.get(key) || key;\n const value = this.get(key);\n json[jsonKey] = value && value.toJSON();\n return json;\n }, {});\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n const kv = [...this.entries()].map((_ref) => {\n let _ref2 = (0, _slicedToArray2.default)(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n\n return \"\\\"\".concat(key, \"\\\":\\\"\").concat(value.toRawType(), \"\\\"\");\n } // double-quotes, JSON\n );\n return \"{\".concat(kv.join(','), \"}\");\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n return JSON.stringify(this.toJSON());\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n return (0, _util.u8aConcat)(...this.toArray().map(entry => entry.toU8a(isBare)));\n }\n\n}\n\nexports.default = Struct;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _utils = require(\"./utils\");\n\nvar _AbstractArray = _interopRequireDefault(require(\"./AbstractArray\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Tuple\n * @description\n * A Tuple defines an anonymous fixed-length array, where each element has its\n * own type. It extends the base JS `Array` object.\n */\nclass Tuple extends _AbstractArray.default {\n constructor(Types, value) {\n super(...Tuple.decodeTuple(Types, value));\n this._Types = void 0;\n this._Types = Types;\n }\n\n static decodeTuple(_Types, value) {\n if ((0, _util.isU8a)(value)) {\n return (0, _utils.decodeU8a)(value, _Types);\n } else if ((0, _util.isHex)(value)) {\n return Tuple.decodeTuple(_Types, (0, _util.hexToU8a)(value));\n }\n\n const Types = Array.isArray(_Types) ? _Types : Object.values(_Types);\n return Types.map((Type, index) => {\n try {\n return new Type(value && value[index]);\n } catch (error) {\n console.error(\"Unable to decode Tuple on index \".concat(index), error.message);\n throw error;\n }\n });\n }\n\n static with(Types) {\n return class extends Tuple {\n constructor(value) {\n super(Types, value);\n }\n\n };\n }\n /**\n * @description The length of the value when encoded as a Uint8Array\n */\n\n\n get encodedLength() {\n return this.reduce((length, entry) => {\n return length += entry.encodedLength;\n }, 0);\n }\n /**\n * @description The types definition of the tuple\n */\n\n\n get Types() {\n return Array.isArray(this._Types) ? this._Types.map((_ref) => {\n let name = _ref.name;\n return name;\n }) : Object.keys(this._Types);\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n const types = Array.isArray(this._Types) ? this._Types.map(Type => new Type().toRawType()) : Object.keys(this._Types);\n return \"(\".concat(types.join(','), \")\");\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n // Overwrite the default toString representation of Array.\n return JSON.stringify(this.toJSON());\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n return (0, _util.u8aConcat)(...this.map(entry => entry.toU8a(isBare)));\n }\n\n}\n\nexports.default = Tuple;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Compact = _interopRequireDefault(require(\"./Compact\"));\n\nvar _utils = require(\"./utils\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name AbstractArray\n * @description\n * This manages codec arrays. It is an extension to Array, providing\n * specific encoding/decoding on top of the base type.\n * @noInheritDoc\n */\nclass AbstractArray extends Array {\n /**\n * @description Checks if the value is an empty value\n */\n get isEmpty() {\n return this.length === 0;\n }\n /**\n * @description The length of the value when encoded as a Uint8Array\n */\n\n\n get encodedLength() {\n return this.reduce((total, raw) => {\n return total + raw.encodedLength;\n }, _Compact.default.encodeU8a(this.length).length);\n }\n /**\n * @description The length of the value\n */\n\n\n get length() {\n // only included here since we ignore inherited docs\n return super.length;\n }\n /**\n * @description Compares the value of the input to see if there is a match\n */\n\n\n eq(other) {\n return (0, _utils.compareArray)(this, other);\n }\n /**\n * @description Converts the Object to an standard JavaScript Array\n */\n\n\n toArray() {\n return Array.from(this);\n }\n /**\n * @description Returns a hex string representation of the value\n */\n\n\n toHex() {\n return (0, _util.u8aToHex)(this.toU8a());\n }\n /**\n * @description Converts the Object to JSON, typically used for RPC transfers\n */\n\n\n toJSON() {\n return this.map(entry => entry.toJSON());\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n /**\n * @description Returns the string representation of the value\n */\n toString() {\n // Overwrite the default toString representation of Array.\n const data = this.map(entry => entry.toString());\n return \"[\".concat(data.join(', '), \"]\");\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n const encoded = this.map(entry => entry.toU8a(isBare));\n return isBare ? (0, _util.u8aConcat)(...encoded) : (0, _util.u8aConcat)(_Compact.default.encodeU8a(this.length), ...encoded);\n } // Below are methods that we override. When we do a `new Vector(...).map()`,\n // we want it to return an Array. We only override the methods that return a\n // new instance.\n\n /**\n * @description Filters the array with the callback\n * @param callbackfn The filter function\n * @param thisArg The `this` object to apply the result to\n */\n\n\n filter(callbackfn, thisArg) {\n return this.toArray().filter(callbackfn, thisArg);\n }\n /**\n * @description Maps the array with the callback\n * @param callbackfn The mapping function\n * @param thisArg The `this` onject to apply the result to\n */\n\n\n map(callbackfn, thisArg) {\n return this.toArray().map(callbackfn, thisArg);\n }\n\n}\n\nexports.default = AbstractArray;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Compact = _interopRequireDefault(require(\"./Compact\"));\n\nvar _utils = require(\"./utils\");\n\nvar _AbstractArray = _interopRequireDefault(require(\"./AbstractArray\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst MAX_LENGTH = 32768;\n/**\n * @name Vector\n * @description\n * This manages codec arrays. Internally it keeps track of the length (as decoded) and allows\n * construction with the passed `Type` in the constructor. It is an extension to Array, providing\n * specific encoding/decoding on top of the base type.\n */\n\nclass Vector extends _AbstractArray.default {\n constructor(Type) {\n let value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n super(...Vector.decodeVector(Type, value));\n this._Type = void 0;\n this._Type = Type;\n }\n\n static decodeVector(Type, value) {\n if (Array.isArray(value)) {\n return value.map((entry, index) => {\n try {\n return entry instanceof Type ? entry : new Type(entry);\n } catch (error) {\n console.error(\"Unable to decode Vector on index \".concat(index), error.message);\n throw error;\n }\n });\n }\n\n const u8a = (0, _util.u8aToU8a)(value);\n\n const _Compact$decodeU8a = _Compact.default.decodeU8a(u8a),\n _Compact$decodeU8a2 = (0, _slicedToArray2.default)(_Compact$decodeU8a, 2),\n offset = _Compact$decodeU8a2[0],\n length = _Compact$decodeU8a2[1];\n\n (0, _util.assert)(length.lten(MAX_LENGTH), \"Vector length \".concat(length.toString(), \" exceeds \").concat(MAX_LENGTH));\n return (0, _utils.decodeU8a)(u8a.subarray(offset), new Array(length.toNumber()).fill(Type));\n }\n\n static with(Type) {\n var _class, _temp;\n\n return _temp = _class = class extends Vector {\n constructor(value) {\n super(Type, value);\n }\n\n }, _class.Fallback = Type.Fallback ? Vector.with(Type.Fallback) : undefined, _temp;\n }\n /**\n * @description The type for the items\n */\n\n\n get Type() {\n return this._Type.name;\n }\n /**\n * @description Finds the index of the value in the array\n */\n\n\n indexOf(_other) {\n // convert type first, this removes overhead from the eq\n const other = _other instanceof this._Type ? _other : new this._Type(_other);\n\n for (let i = 0; i < this.length; i++) {\n if (other.eq(this[i])) {\n return i;\n }\n }\n\n return -1;\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return \"Vec<\".concat(new this._Type().toRawType(), \">\");\n }\n\n}\n\nexports.default = Vector;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name U8a\n * @description\n * A basic wrapper around Uint8Array, with no frills and no fuss. It does differ\n * from other implementations where it will consume the full Uint8Array as passed to it.\n * As such it is meant to be subclassed where the wrapper takes care of the\n * actual lengths instead of used directly.\n * @noInheritDoc\n */\nclass U8a extends Uint8Array {\n constructor(value) {\n super(U8a.decodeU8a(value));\n }\n\n static decodeU8a(value) {\n if ((0, _util.isU8a)(value)) {\n return value;\n }\n\n return (0, _util.u8aToU8a)(value);\n }\n /**\n * @description The length of the value when encoded as a Uint8Array\n */\n\n\n get encodedLength() {\n return this.length;\n }\n /**\n * @description Returns true if the type wraps an empty/default all-0 value\n */\n\n\n get isEmpty() {\n return !this.length || (0, _util.isUndefined)(this.find(value => !!value));\n }\n /**\n * @description The length of the value\n */\n\n\n get length() {\n // only included here since we ignore inherited docs\n return super.length;\n }\n /**\n * @description Compares the value of the input to see if there is a match\n */\n\n\n eq(other) {\n if (other instanceof Uint8Array) {\n return this.length === other.length && (0, _util.isUndefined)(this.find((value, index) => value !== other[index]));\n }\n\n return this.eq(U8a.decodeU8a(other));\n }\n /**\n * @description Create a new subarray from the actual buffer. This is needed for compat reasons since a new Uint8Array gets returned here\n * @param begin The position to start at\n * @param end The position to end at\n */\n\n\n subarray(begin, end) {\n return Uint8Array.from(this).subarray(begin, end);\n }\n /**\n * @description Returns a hex string representation of the value\n */\n\n\n toHex() {\n return (0, _util.u8aToHex)(this);\n }\n /**\n * @description Converts the Object to JSON, typically used for RPC transfers\n */\n\n\n toJSON() {\n return this.toHex();\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return \"Vec\";\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n return this.toHex();\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n return Uint8Array.from(this);\n }\n\n}\n\nexports.default = U8a;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _AbstractInt = _interopRequireWildcard(require(\"./AbstractInt\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name UInt\n * @description\n * A generic unsigned integer codec. For Substrate all numbers are Little Endian encoded,\n * this handles the encoding and decoding of those numbers. Upon construction\n * the bitLength is provided and any additional use keeps the number to this\n * length. This extends `BN`, so all methods available on a normal `BN` object\n * is available here.\n * @noInheritDoc\n */\nclass UInt extends _AbstractInt.default {\n constructor() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let bitLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _AbstractInt.DEFAULT_UINT_BITS;\n let isHexJson = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n super(false, value, bitLength, isHexJson);\n }\n /**\n * @description Returns a hex string representation of the value\n */\n\n\n toHex() {\n let isLe = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n // For display/JSON, this is BE, for compare, use isLe\n return (0, _util.bnToHex)(this, {\n bitLength: this._bitLength,\n isLe,\n isNegative: false\n });\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return \"u\".concat(this._bitLength);\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n return (0, _util.bnToU8a)(this, {\n bitLength: this._bitLength,\n isLe: true,\n isNegative: false\n });\n }\n\n}\n\nexports.default = UInt;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.DEFAULT_UINT_BITS = void 0;\n\nvar _bn = _interopRequireDefault(require(\"bn.js\"));\n\nvar _util = require(\"@polkadot/util\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst DEFAULT_UINT_BITS = 64;\n/**\n * @name AbstractInt\n * @ignore\n * @noInheritDoc\n */\n// TODO:\n// - Apart from encoding/decoding we don't actually keep check on the sizes, is this good enough?\n\nexports.DEFAULT_UINT_BITS = DEFAULT_UINT_BITS;\n\nclass AbstractInt extends _bn.default {\n constructor(isNegative) {\n let value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let bitLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_UINT_BITS;\n let isHexJson = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n super(AbstractInt.decodeAbstracInt(value, bitLength, isNegative));\n this._bitLength = void 0;\n this._isHexJson = void 0;\n this._isNegative = void 0;\n this._bitLength = bitLength;\n this._isHexJson = isHexJson;\n this._isNegative = isNegative;\n }\n\n static decodeAbstracInt(value, bitLength, isNegative) {\n // This function returns a string, which will be passed in the BN\n // constructor. It would be ideal to actually return a BN, but there's a\n // bug: https://github.com/indutny/bn.js/issues/206.\n if ((0, _util.isHex)(value)) {\n return (0, _util.hexToBn)(value, {\n isLe: false,\n isNegative\n }).toString();\n } else if ((0, _util.isU8a)(value)) {\n try {\n // NOTE When passing u8a in (typically from decoded data), it is always Little Endian\n return (0, _util.u8aToBn)(value.subarray(0, bitLength / 8), {\n isLe: true,\n isNegative\n }).toString();\n } catch (error) {\n console.error(\"AbstractInt value decoding failed \".concat(error.message), value);\n return '0';\n }\n } else if ((0, _util.isString)(value)) {\n return new _bn.default(value, 10).toString();\n }\n\n return (0, _util.bnToBn)(value).toString();\n }\n /**\n * @description The length of the value when encoded as a Uint8Array\n */\n\n\n get encodedLength() {\n return this._bitLength / 8;\n }\n /**\n * @description Checks if the value is a zero value (align elsewhere)\n */\n\n\n get isEmpty() {\n return this.isZero();\n }\n /**\n * @description Returns the number of bits in the value\n */\n\n\n bitLength() {\n return this._bitLength;\n }\n /**\n * @description Compares the value of the input to see if there is a match\n */\n\n\n eq(other) {\n // Here we are actually overriding the built-in .eq to take care of both\n // number and BN inputs (no `.eqn` needed) - numbers will be converted\n return super.eq((0, _util.isHex)(other) ? (0, _util.hexToBn)(other.toString(), {\n isLe: false,\n isNegative: this._isNegative\n }) : (0, _util.bnToBn)(other));\n }\n /**\n * @description Returns the BN representation of the number. (Compatibility)\n */\n\n\n toBn() {\n return this;\n }\n /**\n * @description Returns a hex string representation of the value\n */\n\n\n /**\n * @description Converts the Object to JSON, typically used for RPC transfers\n */\n toJSON() {\n // Maximum allowed integer for JS is 2^53 - 1, set limit at 52\n return this._isHexJson || super.bitLength() > 52 ? this.toHex() : this.toNumber();\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n /**\n * @description Returns the string representation of the value\n * @param base The base to use for the conversion\n */\n toString(base) {\n // only included here since we do not inherit docs\n return super.toString(base);\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n}\n\nexports.default = AbstractInt;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getDefaultRegistry;\nexports.TypeRegistry = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _createType = require(\"./createType\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nclass TypeRegistry {\n constructor() {\n this._registry = new Map();\n }\n\n register(arg1, arg2) {\n if ((0, _util.isString)(arg1)) {\n const name = arg1;\n const type = arg2;\n\n this._registry.set(name, type);\n } else if ((0, _util.isFunction)(arg1)) {\n const name = arg1.name;\n const type = arg1;\n\n this._registry.set(name, type);\n } else {\n this.registerObject(arg1);\n }\n }\n\n registerObject(obj) {\n let overwrite = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n Object.entries(obj).forEach((_ref) => {\n let _ref2 = (0, _slicedToArray2.default)(_ref, 2),\n name = _ref2[0],\n type = _ref2[1];\n\n if (overwrite || !this.get(name)) {\n if ((0, _util.isString)(type)) {\n this._registry.set(name, (0, _createType.createClass)(type));\n } else if ((0, _util.isFunction)(type)) {\n // This _looks_ a bit funny, but `typeof Clazz === 'function'\n this._registry.set(name, type);\n } else {\n this._registry.set(name, (0, _createType.createClass)(JSON.stringify(type)));\n }\n }\n });\n }\n\n get(name) {\n return this._registry.get(name);\n }\n\n getOrThrow(name, msg) {\n const type = this.get(name);\n\n if ((0, _util.isUndefined)(type)) {\n throw new Error(msg || \"type \".concat(name, \" not found\"));\n }\n\n return type;\n }\n\n}\n\nexports.TypeRegistry = TypeRegistry;\nTypeRegistry.defaultRegistry = new TypeRegistry();\nlet defaultRegistry;\n\nfunction getDefaultRegistry() {\n if (!defaultRegistry) {\n const defaultTypes = require('../index.types');\n\n defaultRegistry = new TypeRegistry();\n defaultRegistry.register((0, _objectSpread2.default)({}, defaultTypes));\n }\n\n return defaultRegistry;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _exportNames = {\n Metadata: true\n};\nObject.defineProperty(exports, \"Metadata\", {\n enumerable: true,\n get: function get() {\n return _Metadata.default;\n }\n});\n\nvar _Metadata = _interopRequireDefault(require(\"./Metadata\"));\n\nvar _primitive = require(\"./primitive\");\n\nObject.keys(_primitive).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _primitive[key];\n }\n });\n});\n\nvar _rpc = require(\"./rpc\");\n\nObject.keys(_rpc).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _rpc[key];\n }\n });\n});\n\nvar _type = require(\"./type\");\n\nObject.keys(_type).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _type[key];\n }\n });\n});","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Metadata = _interopRequireDefault(require(\"./Metadata\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nvar _default = _Metadata.default;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _MagicNumber = require(\"./MagicNumber\");\n\nvar _MetadataVersioned = _interopRequireDefault(require(\"./MetadataVersioned\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Metadata\n * @description\n * The versioned runtime metadata as a decoded structure\n */\nclass Metadata extends _MetadataVersioned.default {\n constructor(value) {\n super(Metadata.decodeMetadata(value));\n } // first we try and parse using the versioned structure, if this does fail,\n // we adjust with the magic number and a manual version and re-try. As soon as\n // we remove support for V0, we will just do a new here\n\n\n static decodeMetadata() {\n let _value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Uint8Array();\n\n const value = (0, _util.isHex)(_value) ? (0, _util.hexToU8a)(_value) : _value;\n\n try {\n return new _MetadataVersioned.default(value);\n } catch (error) {\n if (error.code !== _MagicNumber.MAGIC_ERROR) {\n throw error;\n }\n }\n\n return new _MetadataVersioned.default((0, _util.u8aConcat)(_MagicNumber.MAGIC_NUMBER.toU8a(), // manually add the magic number\n Uint8Array.from([0]), // add the version for the original\n value // the actual data as retrieved\n ));\n }\n\n}\n\nexports.default = Metadata;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.MAGIC_ERROR = exports.MAGIC_NUMBER = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _U = _interopRequireDefault(require(\"../primitive/U32\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst MAGIC_NUMBER = new _U.default(0x6174656d); // `meta`, reversed for Little Endian encoding\n\nexports.MAGIC_NUMBER = MAGIC_NUMBER;\nconst MAGIC_ERROR = -61746;\nexports.MAGIC_ERROR = MAGIC_ERROR;\n\nclass MagicNumber extends _U.default {\n constructor(value) {\n super(value);\n (0, _util.assert)(this.eq(MAGIC_NUMBER), \"MagicNumber: expected \".concat(MAGIC_NUMBER.toHex(), \", found \").concat(this.toHex()), MAGIC_ERROR);\n }\n\n}\n\nexports.default = MagicNumber;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _UInt = _interopRequireDefault(require(\"../codec/UInt\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name U32\n * @description\n * A 32-bit unsigned integer\n */\nclass U32 extends _UInt.default {\n constructor(value) {\n super(value, 32);\n }\n\n}\n\nexports.default = U32;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Enum = _interopRequireDefault(require(\"../codec/Enum\"));\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _MagicNumber = _interopRequireDefault(require(\"./MagicNumber\"));\n\nvar _v = _interopRequireDefault(require(\"./v0\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v1\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v2\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v3\"));\n\nvar _v5 = _interopRequireDefault(require(\"./v4\"));\n\nvar _toV = _interopRequireDefault(require(\"./v0/toV1\"));\n\nvar _toV2 = _interopRequireDefault(require(\"./v1/toV2\"));\n\nvar _toV3 = _interopRequireDefault(require(\"./v2/toV3\"));\n\nvar _toV4 = _interopRequireDefault(require(\"./v3/toV4\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nclass MetadataEnum extends _Enum.default {\n constructor(value) {\n super({\n MetadataV0: _v.default,\n // once rolled-out, can replace this with MetadataDeprecated\n MetadataV1: _v2.default,\n // once rolled-out, can replace this with MetadataDeprecated\n MetadataV2: _v3.default,\n // once rolled-out, can replace this with MetadataDeprecated\n MetadataV3: _v4.default,\n // once rolled-out, can replace this with MetadataDeprecated\n MetadataV4: _v5.default\n }, value);\n }\n /**\n * @description Returns the wrapped values as a V0 object\n */\n\n\n get asV0() {\n (0, _util.assert)(this.isV0, \"Cannot convert '\".concat(this.type, \"' via asV0\"));\n return this.value;\n }\n /**\n * @description Returns the wrapped values as a V1 object\n */\n\n\n get asV1() {\n (0, _util.assert)(this.isV1, \"Cannot convert '\".concat(this.type, \"' via asV1\"));\n return this.value;\n }\n /**\n * @description Returns the wrapped values as a V2 object\n */\n\n\n get asV2() {\n (0, _util.assert)(this.isV2, \"Cannot convert '\".concat(this.type, \"' via asV2\"));\n return this.value;\n }\n /**\n * @description Returns the wrapped values as a V3 object\n */\n\n\n get asV3() {\n (0, _util.assert)(this.isV3, \"Cannot convert '\".concat(this.type, \"' via asV3\"));\n return this.value;\n }\n /**\n * @description Returns the wrapped values as a V4 object\n */\n\n\n get asV4() {\n (0, _util.assert)(this.isV4, \"Cannot convert '\".concat(this.type, \"' via asV4\"));\n return this.value;\n }\n /**\n * @description `true` if Deprecated\n */\n\n\n get isDeprecated() {\n return this.type === 'MetadataDeprectated';\n }\n /**\n * @description `true` if V0\n */\n\n\n get isV0() {\n return this.type === 'MetadataV0';\n }\n /**\n * @description `true` if V1\n */\n\n\n get isV1() {\n return this.type === 'MetadataV1';\n }\n /**\n * @description `true` if V2\n */\n\n\n get isV2() {\n return this.type === 'MetadataV2';\n }\n /**\n * @description `true` if V3\n */\n\n\n get isV3() {\n return this.type === 'MetadataV3';\n }\n /**\n * @description `true` if V4\n */\n\n\n get isV4() {\n return this.type === 'MetadataV4';\n }\n /**\n * @description The version this metadata represents\n */\n\n\n get version() {\n return this.index;\n }\n\n}\n/**\n * @name MetadataVersioned\n * @description\n * The versioned runtime metadata as a decoded structure\n */\n\n\nclass MetadataVersioned extends _Struct.default {\n constructor(value) {\n super({\n magicNumber: _MagicNumber.default,\n metadata: MetadataEnum\n }, value);\n this._convertedV1 = void 0;\n this._convertedV2 = void 0;\n this._convertedV3 = void 0;\n this._convertedV4 = void 0;\n }\n /**\n * @description\n */\n\n\n get magicNumber() {\n return this.get('magicNumber');\n }\n /**\n * @description the metadata wrapped\n */\n\n\n get metadata() {\n return this.get('metadata');\n }\n /**\n * @description the metadata version this structure represents\n */\n\n\n get version() {\n return this.metadata.index;\n }\n /**\n * @description Returns the wrapped metadata as a V0 object\n */\n\n\n get asV0() {\n (0, _util.assert)(this.metadata.version === 0, \"Cannot convert metadata from v\".concat(this.metadata.version, \" to v0\"));\n return this.metadata.asV0;\n }\n /**\n * @description Returns the wrapped values as a V1 object\n */\n\n\n get asV1() {\n (0, _util.assert)(this.metadata.version <= 1, \"Cannot convert metadata from v\".concat(this.metadata.version, \" to v1\"));\n\n if (this.metadata.version === 1) {\n return this.metadata.asV1;\n }\n\n if ((0, _util.isUndefined)(this._convertedV1)) {\n this._convertedV1 = (0, _toV.default)(this.asV0);\n }\n\n return this._convertedV1;\n }\n /**\n * @description Returns the wrapped values as a V2 object\n */\n\n\n get asV2() {\n (0, _util.assert)(this.metadata.version <= 2, \"Cannot convert metadata from v\".concat(this.metadata.version, \" to v2\"));\n\n if (this.metadata.version === 2) {\n return this.metadata.asV2;\n }\n\n if ((0, _util.isUndefined)(this._convertedV2)) {\n this._convertedV2 = (0, _toV2.default)(this.asV1);\n }\n\n return this._convertedV2;\n }\n /**\n * @description Returns the wrapped values as a V3 object\n */\n\n\n get asV3() {\n (0, _util.assert)(this.metadata.version <= 3, \"Cannot convert metadata from v\".concat(this.metadata.version, \" to v3\"));\n\n if (this.metadata.version === 3) {\n return this.metadata.asV3;\n }\n\n if ((0, _util.isUndefined)(this._convertedV3)) {\n this._convertedV3 = (0, _toV3.default)(this.asV2);\n }\n\n return this._convertedV3;\n }\n\n getUniqTypes(throwError) {\n return this.asV4.getUniqTypes(throwError);\n }\n /**\n * @description Returns the wrapped values as a V4 object\n */\n\n\n get asV4() {\n (0, _util.assert)(this.metadata.version <= 4, \"Cannot convert metadata from v\".concat(this.metadata.version, \" to v3\"));\n\n if (this.metadata.version === 4) {\n return this.metadata.asV4;\n }\n\n if ((0, _util.isUndefined)(this._convertedV4)) {\n this._convertedV4 = (0, _toV4.default)(this.asV3);\n }\n\n return this._convertedV4;\n }\n\n}\n\nexports.default = MetadataVersioned;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Metadata = _interopRequireDefault(require(\"./Metadata\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nvar _default = _Metadata.default;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Compact = _interopRequireDefault(require(\"../../codec/Compact\"));\n\nvar _Struct = _interopRequireDefault(require(\"../../codec/Struct\"));\n\nvar _Vector = _interopRequireDefault(require(\"../../codec/Vector\"));\n\nvar _util2 = require(\"../util\");\n\nvar _Calls = require(\"./Calls\");\n\nvar _Events = require(\"./Events\");\n\nvar _Modules = require(\"./Modules\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// Decodes the runtime metadata as passed through from the `state_getMetadata` call.\n\n/**\n * @name MetadataV0\n * @description\n * The runtime metadata as a decoded structure\n */\nclass MetadataV0 extends _Struct.default {\n constructor(value) {\n super({\n outerEvent: _Events.OuterEventMetadata,\n modules: _Vector.default.with(_Modules.RuntimeModuleMetadata),\n outerDispatch: _Calls.OuterDispatchMetadata\n }, MetadataV0.decodeMetadata(value));\n }\n\n static decodeMetadata(value) {\n if ((0, _util.isHex)(value)) {\n // We receive this as an hex in the JSON output from the Node.\n // Convert to u8a and use the U8a version to do the actual parsing.\n return MetadataV0.decodeMetadata((0, _util.hexToU8a)(value));\n } else if ((0, _util.isU8a)(value)) {\n // HACK 13 Oct 2018 - For current running BBQ nodes, Metadata is not properly\n // encoded, it does not have a length prefix. For latest substrate master, it\n // is properly encoded. Here we pull the prefix, check it agianst the length -\n // if matches, then we have the length, otherwise we assume it is an older node\n const _Compact$decodeU8a = _Compact.default.decodeU8a(value),\n _Compact$decodeU8a2 = (0, _slicedToArray2.default)(_Compact$decodeU8a, 2),\n offset = _Compact$decodeU8a2[0],\n length = _Compact$decodeU8a2[1];\n\n return value.length === offset + length.toNumber() ? value.subarray(offset) : value;\n } // Decode as normal struct\n\n\n return value;\n }\n /**\n * @description Wrapped [[OuterDispatchCall]]\n */\n\n\n get calls() {\n return this.get('outerDispatch').calls;\n }\n /**\n * @description Wrapped [[OuterEventEventMetadata]]\n */\n\n\n get events() {\n return this.get('outerEvent').events;\n }\n /**\n * @description Wrapped [[RuntimeModuleMetadata]]\n */\n\n\n get modules() {\n return this.get('modules');\n }\n\n get argNames() {\n return this.modules.map(modul => modul.module.call.functions.map(fn => fn.args.map(argument => argument.type.toString())));\n }\n\n get eventNames() {\n return this.events.map(modul => modul.events.map(event => event.args.map(argument => argument.toString())));\n }\n\n get storageNames() {\n return this.modules.map(modul => modul.storage.isSome ? modul.storage.unwrap().functions.map(fn => fn.type.isMap ? [fn.type.asMap.key.toString(), fn.type.asMap.value.toString()] : [fn.type.asType.toString()]) : []);\n }\n /**\n * @description Helper to retrieve a list of all type that are found, sorted and de-deuplicated\n */\n\n\n getUniqTypes(throwError) {\n const types = (0, _util2.flattenUniq)([this.argNames, this.eventNames, this.storageNames]);\n (0, _util2.validateTypes)(types, throwError);\n return types;\n }\n\n}\n\nexports.default = MetadataV0;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"flattenUniq\", {\n enumerable: true,\n get: function get() {\n return _flattenUniq.default;\n }\n});\nObject.defineProperty(exports, \"validateTypes\", {\n enumerable: true,\n get: function get() {\n return _validateTypes.default;\n }\n});\n\nvar _flattenUniq = _interopRequireDefault(require(\"./flattenUniq\"));\n\nvar _validateTypes = _interopRequireDefault(require(\"./validateTypes\"));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = flattenUniq;\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// Quick and dirty flatten (.flat() not available)\nfunction flattenUniq(list) {\n const flat = list.reduce((result, entry) => {\n return result.concat(Array.isArray(entry) ? flattenUniq(entry) : entry);\n }, []);\n return [...new Set(flat)].filter(value => value).sort();\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = validateTypes;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _createType = require(\"../../codec/createType\");\n\nvar _flattenUniq = _interopRequireDefault(require(\"./flattenUniq\"));\n\nvar _codec = require(\"../../codec\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction validateTypes(types, throwError) {\n const extractTypes = types => {\n return types.map(type => {\n const decoded = (0, _createType.getTypeDef)(type);\n\n switch (decoded.info) {\n case _createType.TypeDefInfo.Plain:\n return decoded.type;\n\n case _createType.TypeDefInfo.Compact:\n case _createType.TypeDefInfo.Option:\n case _createType.TypeDefInfo.Vector:\n return extractTypes([decoded.sub.type]);\n\n case _createType.TypeDefInfo.Tuple:\n return extractTypes(decoded.sub.map(sub => sub.type));\n\n default:\n throw new Error('Unreachable');\n }\n });\n };\n\n const typeRegistry = (0, _codec.getTypeRegistry)();\n const missing = (0, _flattenUniq.default)(extractTypes(types)).filter(type => (0, _util.isUndefined)(typeRegistry.get(type)));\n\n if (missing.length !== 0) {\n const message = \"Unknown types found, no types for \".concat(missing);\n\n if (throwError) {\n throw new Error(message);\n } else {\n console.error(message);\n }\n }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OuterDispatchMetadata = exports.OuterDispatchCall = void 0;\n\nvar _Struct = _interopRequireDefault(require(\"../../codec/Struct\"));\n\nvar _Vector = _interopRequireDefault(require(\"../../codec/Vector\"));\n\nvar _Text = _interopRequireDefault(require(\"../../primitive/Text\"));\n\nvar _U = _interopRequireDefault(require(\"../../primitive/U16\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nclass OuterDispatchCall extends _Struct.default {\n constructor(value) {\n super({\n name: _Text.default,\n prefix: _Text.default,\n index: _U.default\n }, value);\n }\n /**\n * @description The [[U16]] index for the call\n */\n\n\n get index() {\n return this.get('index');\n }\n /**\n * @description The name for the call\n */\n\n\n get name() {\n return this.get('name');\n }\n /**\n * @description The call prefix (or section)\n */\n\n\n get prefix() {\n return this.get('prefix');\n }\n\n}\n\nexports.OuterDispatchCall = OuterDispatchCall;\n\nclass OuterDispatchMetadata extends _Struct.default {\n constructor(value) {\n super({\n name: _Text.default,\n calls: _Vector.default.with(OuterDispatchCall)\n }, value);\n }\n /**\n * @description The [[OuterDispathCall]] wrapped\n */\n\n\n get calls() {\n return this.get('calls');\n }\n /**\n * @description The name for the dispatch\n */\n\n\n get name() {\n return this.get('name');\n }\n\n}\n\nexports.OuterDispatchMetadata = OuterDispatchMetadata;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Compact = _interopRequireDefault(require(\"../codec/Compact\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Text\n * @description\n * This is a string wrapper, along with the length. It is used both for strings as well\n * as items such as documentation. It simply extends the standard JS `String` built-in\n * object, inheriting all methods exposed from `String`.\n * @noInheritDoc\n */\n// TODO\n// - Strings should probably be trimmed (docs do come through with extra padding)\n// - Potentially we want a \"TypeString\" extension to this. Basically something that\n// wraps the `Balance`, `T::AccountId`, etc. The reasoning - with a \"TypeString\"\n// we can nicely strip types down like \"T::AcountId\" -> \"AccountId\"\nclass Text extends String {\n constructor() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n super(Text.decodeText(value));\n }\n\n static decodeText(value) {\n if ((0, _util.isString)(value)) {\n return value.toString();\n } else if (value instanceof Uint8Array) {\n if (!value.length) {\n return '';\n }\n\n const _Compact$decodeU8a = _Compact.default.decodeU8a(value),\n _Compact$decodeU8a2 = (0, _slicedToArray2.default)(_Compact$decodeU8a, 2),\n offset = _Compact$decodeU8a2[0],\n length = _Compact$decodeU8a2[1];\n\n const total = offset + length.toNumber();\n (0, _util.assert)(total <= value.length, \"Text: required length less than remainder, expected at least \".concat(total, \", found \").concat(value.length));\n return (0, _util.u8aToString)(value.subarray(offset, total));\n }\n\n return \"\".concat(value);\n }\n /**\n * @description The length of the value when encoded as a Uint8Array\n */\n\n\n get encodedLength() {\n return this.toU8a().length;\n }\n /**\n * @description Checks if the value is an empty value\n */\n\n\n get isEmpty() {\n return this.length === 0;\n }\n /**\n * @description The length of the value\n */\n\n\n get length() {\n // only included here since we ignore inherited docs\n return super.length;\n }\n /**\n * @description Compares the value of the input to see if there is a match\n */\n\n\n eq(other) {\n return (0, _util.isString)(other) ? this.toString() === other.toString() : false;\n }\n /**\n * @description Returns a hex string representation of the value\n */\n\n\n toHex() {\n return (0, _util.u8aToHex)(this.toU8a());\n }\n /**\n * @description Converts the Object to JSON, typically used for RPC transfers\n */\n\n\n toJSON() {\n return this.toString();\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return 'Text';\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n // only included here since we do not inherit docs\n return super.toString();\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n const encoded = (0, _util.stringToU8a)(this.toString());\n return isBare ? encoded : _Compact.default.addLengthPrefix(encoded);\n }\n\n}\n\nexports.default = Text;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _UInt = _interopRequireDefault(require(\"../codec/UInt\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name U16\n * @description\n * A 16-bit unsigned integer\n */\nclass U16 extends _UInt.default {\n constructor(value) {\n super(value, 16);\n }\n\n}\n\nexports.default = U16;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OuterEventMetadata = exports.OuterEventEventMetadata = exports.EventMetadata = void 0;\n\nvar _Struct = _interopRequireDefault(require(\"../../codec/Struct\"));\n\nvar _Tuple = _interopRequireDefault(require(\"../../codec/Tuple\"));\n\nvar _Vector = _interopRequireDefault(require(\"../../codec/Vector\"));\n\nvar _Text = _interopRequireDefault(require(\"../../primitive/Text\"));\n\nvar _Type = _interopRequireDefault(require(\"../../primitive/Type\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nclass EventMetadata extends _Struct.default {\n constructor(value) {\n super({\n name: _Text.default,\n args: _Vector.default.with(_Type.default),\n documentation: _Vector.default.with(_Text.default)\n }, value);\n }\n /**\n * @description The arguments of [[Type]]\n */\n\n\n get args() {\n return this.get('args');\n }\n /**\n * @description The arguments of [[Type]]\n * @deprecated Use `.args` instead\n */\n\n\n get arguments() {\n return this.args;\n }\n /**\n * @description The [[Text]] documentation\n */\n\n\n get documentation() {\n return this.get('documentation');\n }\n /**\n * @description The [[Text]] documentation\n * @deprecated Use `.documentation` instead.\n */\n\n\n get docs() {\n return this.documentation;\n }\n /**\n * @description The name for the event\n */\n\n\n get name() {\n return this.get('name');\n }\n\n}\n\nexports.EventMetadata = EventMetadata;\n\nclass OuterEventEventMetadata extends _Tuple.default {\n constructor(value) {\n super({\n Text: _Text.default,\n 'Vec': _Vector.default.with(EventMetadata)\n }, value);\n }\n /**\n * @description The [[EventMetadata]]\n */\n\n\n get events() {\n return this[1];\n }\n /**\n * @description The name of the section\n */\n\n\n get name() {\n return this[0];\n }\n\n}\n\nexports.OuterEventEventMetadata = OuterEventEventMetadata;\n\nclass OuterEventMetadata extends _Struct.default {\n constructor(value) {\n super({\n name: _Text.default,\n events: _Vector.default.with(OuterEventEventMetadata)\n }, value);\n }\n /**\n * @description The [[OuterEventEventMetadata]]\n */\n\n\n get events() {\n return this.get('events');\n }\n /**\n * @description The name of the event\n */\n\n\n get name() {\n return this.get('name');\n }\n\n}\n\nexports.OuterEventMetadata = OuterEventMetadata;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Text = _interopRequireDefault(require(\"./Text\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst ALLOWED_BOXES = ['Compact', 'Option', 'Vec'];\n/**\n * @name Type\n * @description\n * This is a extended version of String, specifically to handle types. Here we rely fully\n * on what string provides us, however we also adjust the types received from the runtime,\n * i.e. we remove the `T::` prefixes found in some types for consistency accross implementation.\n */\n\nclass Type extends _Text.default {\n constructor() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n // First decode it with Text\n const textValue = new _Text.default(value); // Then cleanup the textValue to get the @polkadot/types type, and pass the\n // sanitized value to constructor\n\n super(Type.decodeType(textValue.toString()));\n this._originalLength = void 0;\n this._originalLength = textValue.encodedLength;\n }\n\n static decodeType(value) {\n const mappings = [// alias ::Inherent -> InherentOfflineReport\n Type._alias('::Inherent', 'InherentOfflineReport'), // alias TreasuryProposal from Proposal>\n Type._alias('Proposal>', 'TreasuryProposal'), // \n Type._cleanupCompact(), // Remove all the trait prefixes\n Type._removeTraits(), // remove PairOf -> (T, T)\n Type._removePairOf(), // remove boxing, `Box` -> `Proposal`\n Type._removeWrap('Box'), // remove generics, `MisbehaviorReport` -> `MisbehaviorReport`\n Type._removeGenerics(), // alias String -> Text (compat with jsonrpc methods)\n Type._alias('String', 'Text'), // alias () -> Null\n Type._alias('\\\\\\(\\\\\\)', 'Null'), // alias Vec -> Bytes\n Type._alias('Compact', 'IndexCompact'), // alias Vec -> Bytes\n Type._alias('Vec', 'Bytes'), // alias RawAddress -> Address\n Type._alias('RawAddress', 'Address'), // alias Lookup::Source to Address (_could_ be AccountId on certain chains)\n Type._alias('Lookup::Source', 'Address'), // alias Lookup::Target to AccountId (always the case)\n Type._alias('Lookup::Target', 'AccountId'), // flattens tuples with one value, `(AccountId)` -> `AccountId`\n Type._flattenSingleTuple()];\n return mappings.reduce((result, fn) => {\n return fn(result);\n }, value).trim();\n }\n /**\n * @description The length of the value when encoded as a Uint8Array\n */\n\n\n get encodedLength() {\n // NOTE Length is used in the decoding calculations, so return the original (pre-cleanup)\n // length of the data. Since toU8a is disabled, this does not affect encoding, but rather\n // only the decoding leg, allowing the decoders to work with original pointers\n return this._originalLength;\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n // Note Since we are mangling what we get in beyond recognition, we really should\n // not allow the re-encoding. Additionally, this is probably more of a decoder-only\n // helper, so treat it as such.\n throw new Error('Type::toU8a: unimplemented');\n } // given a starting index, find the closing >\n\n\n static _findClosing(value, start) {\n let depth = 0;\n\n for (let index = start; index < value.length; index++) {\n if (value[index] === '>') {\n if (!depth) {\n return index;\n }\n\n depth--;\n } else if (value[index] === '<') {\n depth++;\n }\n }\n\n throw new Error(\"Unable to find closing matching <> on '\".concat(value, \"' (start \").concat(start, \")\"));\n }\n\n static _alias(src, dest) {\n return value => {\n return value.replace(new RegExp(src, 'g'), dest);\n };\n }\n\n static _cleanupCompact() {\n return value => {\n for (let index = 0; index < value.length; index++) {\n if (value[index] !== '<') {\n continue;\n }\n\n const end = Type._findClosing(value, index + 1) - 14;\n\n if (value.substr(end, 14) === ' as HasCompact') {\n value = \"Compact<\".concat(value.substr(index + 1, end - index - 1), \">\");\n }\n }\n\n return value;\n };\n }\n\n static _flattenSingleTuple() {\n return value => {\n return value.replace(/\\(([^,]*)\\)/, '$1');\n };\n }\n\n static _removeGenerics() {\n return value => {\n for (let index = 0; index < value.length; index++) {\n if (value[index] === '<') {\n // check against the allowed wrappers, be it Vec<..>, Option<...> ...\n const box = ALLOWED_BOXES.find(box => {\n const start = index - box.length;\n return start >= 0 && value.substr(start, box.length) === box;\n }); // we have not found anything, unwrap generic innards\n\n if (!box) {\n const end = Type._findClosing(value, index + 1);\n\n value = \"\".concat(value.substr(0, index)).concat(value.substr(end + 1));\n }\n }\n }\n\n return value;\n };\n } // remove the PairOf wrappers\n\n\n static _removePairOf() {\n return value => {\n for (let index = 0; index < value.length; index++) {\n if (value.substr(index, 7) === 'PairOf<') {\n const start = index + 7;\n\n const end = Type._findClosing(value, start);\n\n const type = value.substr(start, end - start);\n value = \"\".concat(value.substr(0, index), \"(\").concat(type, \",\").concat(type, \")\").concat(value.substr(end + 1));\n }\n }\n\n return value;\n };\n } // remove the type traits\n\n\n static _removeTraits() {\n return value => {\n return value // remove all whitespaces\n .replace(/\\s/g, '') // anything `T::` to end up as ``\n .replace(/T::/g, '') // anything `Self::` to end up as ``\n .replace(/Self::/g, '') // `system::` with `` - basically we find ``\n .replace(/system::/g, '') // replace `::` (whitespaces were removed above)\n .replace(/::/g, '') // replace `::` (whitespaces were removed above)\n .replace(/::/g, '') // replace `::` (whitespaces were removed above)\n .replace(/::/g, '') // replace \n .replace(//g, 'Lookup') // replace `<...>::Type`\n .replace(/::Type/g, '') // replace `wasm::*` eg. `wasm::PrefabWasmModule`\n .replace(/wasm::/g, '');\n };\n } // remove wrapping values, i.e. Box -> Proposal\n\n\n static _removeWrap(_check) {\n const check = \"\".concat(_check, \"<\");\n return value => {\n let index = 0;\n\n while (index !== -1) {\n index = value.indexOf(check);\n\n if (index !== -1) {\n const start = index + check.length;\n\n const end = Type._findClosing(value, start);\n\n value = \"\".concat(value.substr(0, index)).concat(value.substr(start, end - start)).concat(value.substr(end + 1));\n }\n }\n\n return value;\n };\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return 'Type';\n }\n\n}\n\nexports.default = Type;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.RuntimeModuleMetadata = exports.ModuleMetadata = exports.CallMetadata = exports.FunctionMetadata = exports.FunctionArgumentMetadata = void 0;\n\nvar _Option = _interopRequireDefault(require(\"../../codec/Option\"));\n\nvar _Struct = _interopRequireDefault(require(\"../../codec/Struct\"));\n\nvar _Vector = _interopRequireDefault(require(\"../../codec/Vector\"));\n\nvar _Text = _interopRequireDefault(require(\"../../primitive/Text\"));\n\nvar _Type = _interopRequireDefault(require(\"../../primitive/Type\"));\n\nvar _U = _interopRequireDefault(require(\"../../primitive/U16\"));\n\nvar _Storage = require(\"./Storage\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nclass FunctionArgumentMetadata extends _Struct.default {\n constructor(value) {\n super({\n name: _Text.default,\n type: _Type.default\n }, value);\n }\n /**\n * @description The argument name\n */\n\n\n get name() {\n return this.get('name');\n }\n /**\n * @description The [[Type]]\n */\n\n\n get type() {\n return this.get('type');\n }\n\n}\n\nexports.FunctionArgumentMetadata = FunctionArgumentMetadata;\n\nclass FunctionMetadata extends _Struct.default {\n constructor(value) {\n super({\n id: _U.default,\n name: _Text.default,\n args: _Vector.default.with(FunctionArgumentMetadata),\n documentation: _Vector.default.with(_Text.default)\n }, value);\n }\n /**\n * @description The arguments of [[Type]]\n */\n\n\n get args() {\n return this.get('args');\n }\n /**\n * @description The [[FunctionArgumentMetadata]] for arguments\n * @deprecated Use `.args` instead\n */\n\n\n get arguments() {\n return this.get('arguments');\n }\n /**\n * @description The [[Text]] documentation\n */\n\n\n get documentation() {\n return this.get('documentation');\n }\n /**\n * @description The [[Text]] documentation\n * @deprecated Use `.documentation` instead.\n */\n\n\n get docs() {\n return this.documentation;\n }\n /**\n * @description The `[sectionIndex, methodIndex]` call id\n */\n\n\n get id() {\n return this.get('id');\n }\n /**\n * @description The call name\n */\n\n\n get name() {\n return this.get('name');\n }\n\n}\n\nexports.FunctionMetadata = FunctionMetadata;\n\nclass CallMetadata extends _Struct.default {\n constructor(value) {\n super({\n name: _Text.default,\n functions: _Vector.default.with(FunctionMetadata)\n }, value);\n }\n /**\n * @description The functions available as [[FunctionMetadata]]\n */\n\n\n get functions() {\n return this.get('functions');\n }\n /**\n * @description The section name\n */\n\n\n get name() {\n return this.get('name');\n }\n\n}\n\nexports.CallMetadata = CallMetadata;\n\nclass ModuleMetadata extends _Struct.default {\n constructor(value) {\n super({\n name: _Text.default,\n call: CallMetadata\n }, value);\n }\n /**\n * @description The calls as [[FunctionMetadata]]\n */\n\n\n get call() {\n return this.get('call');\n }\n /**\n * @description The name\n */\n\n\n get name() {\n return this.get('name');\n }\n\n}\n\nexports.ModuleMetadata = ModuleMetadata;\n\nclass RuntimeModuleMetadata extends _Struct.default {\n constructor(value) {\n super({\n prefix: _Text.default,\n module: ModuleMetadata,\n storage: _Option.default.with(_Storage.StorageMetadata)\n }, value);\n }\n /**\n * @description The [[ModuleMetadata]]\n */\n\n\n get module() {\n return this.get('module');\n }\n /**\n * @description The prefix\n */\n\n\n get prefix() {\n return this.get('prefix');\n }\n /**\n * @description The optional [[StorageMetadata]]\n */\n\n\n get storage() {\n return this.get('storage');\n }\n\n}\n\nexports.RuntimeModuleMetadata = RuntimeModuleMetadata;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StorageMetadata = exports.StorageFunctionMetadata = exports.StorageFunctionType = exports.PlainType = exports.MapType = exports.StorageFunctionModifier = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Enum = _interopRequireDefault(require(\"../../codec/Enum\"));\n\nvar _Struct = _interopRequireDefault(require(\"../../codec/Struct\"));\n\nvar _Vector = _interopRequireDefault(require(\"../../codec/Vector\"));\n\nvar _Bytes = _interopRequireDefault(require(\"../../primitive/Bytes\"));\n\nvar _Text = _interopRequireDefault(require(\"../../primitive/Text\"));\n\nvar _Type = _interopRequireDefault(require(\"../../primitive/Type\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nclass StorageFunctionModifier extends _Enum.default {\n constructor(value) {\n super(['Optional', 'Default', 'Required'], value);\n }\n /**\n * @description `true` if the storage entry is optional\n */\n\n\n get isOptional() {\n return this.toNumber() === 0;\n }\n\n toJSON() {\n // This looks prettier in the generated JSON\n return this.toString();\n }\n\n}\n\nexports.StorageFunctionModifier = StorageFunctionModifier;\n\nclass MapType extends _Struct.default {\n constructor(value) {\n super({\n key: _Type.default,\n value: _Type.default\n }, value);\n this._isLinked = false;\n\n if (value && value.isLinked) {\n this._isLinked = true;\n }\n }\n /**\n * @description The mapped key as [[Type]]\n */\n\n\n get key() {\n return this.get('key');\n }\n /**\n * @description The mapped value as [[Type]]\n */\n\n\n get value() {\n return this.get('value');\n }\n /**\n * @description Is this an enumerable linked map\n */\n\n\n get isLinked() {\n return this._isLinked;\n }\n\n}\n\nexports.MapType = MapType;\n\nclass PlainType extends _Type.default {}\n\nexports.PlainType = PlainType;\n\nclass StorageFunctionType extends _Enum.default {\n constructor(value, index) {\n super({\n PlainType,\n MapType\n }, value, index);\n }\n /**\n * @description The value as a mapped value\n */\n\n\n get asMap() {\n (0, _util.assert)(this.isMap, \"Cannot convert '\".concat(this.type, \"' via asMap\"));\n return this.value;\n }\n /**\n * @description The value as a [[Type]] value\n */\n\n\n get asType() {\n (0, _util.assert)(this.isPlainType, \"Cannot convert '\".concat(this.type, \"' via asType\"));\n return this.value;\n }\n /**\n * @description `true` if the storage entry is a map\n */\n\n\n get isMap() {\n return this.toNumber() === 1;\n }\n /**\n * @description `true` if the storage entry is a plain type\n */\n\n\n get isPlainType() {\n return this.toNumber() === 0;\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n if (this.isMap) {\n if (this.asMap.isLinked) {\n return \"(\".concat(this.asMap.value.toString(), \", Linkage<\").concat(this.asMap.key.toString(), \">)\");\n }\n\n return this.asMap.value.toString();\n }\n\n return this.asType.toString();\n }\n\n}\n\nexports.StorageFunctionType = StorageFunctionType;\n\nclass StorageFunctionMetadata extends _Struct.default {\n constructor(value) {\n super({\n name: _Text.default,\n modifier: StorageFunctionModifier,\n type: StorageFunctionType,\n fallback: _Bytes.default,\n documentation: _Vector.default.with(_Text.default)\n }, value);\n }\n /**\n * @description The default value of the storage function\n * @deprecated Use `.fallback` instead.\n */\n\n\n get default() {\n return this.fallback;\n }\n /**\n * @description The default value of the storage function\n */\n\n\n get fallback() {\n return this.get('fallback');\n }\n /**\n * @description The [[Text]] documentation\n */\n\n\n get documentation() {\n return this.get('documentation');\n }\n /**\n * @description The [[Text]] documentation\n * @deprecated Use `.documentation` instead.\n */\n\n\n get docs() {\n return this.documentation;\n }\n /**\n * @description The key name\n */\n\n\n get name() {\n return this.get('name');\n }\n /**\n * @description The modifier\n */\n\n\n get modifier() {\n return this.get('modifier');\n }\n /**\n * @description The [[StorageFunctionType]]\n */\n\n\n get type() {\n return this.get('type');\n }\n\n}\n\nexports.StorageFunctionMetadata = StorageFunctionMetadata;\n\nclass StorageMetadata extends _Struct.default {\n constructor(value) {\n super({\n prefix: _Text.default,\n functions: _Vector.default.with(StorageFunctionMetadata)\n }, value);\n }\n /**\n * @description The [[StorageFunctionMetadata]] for the section\n */\n\n\n get functions() {\n return this.get('functions');\n }\n /**\n * @description The section prefix\n */\n\n\n get prefix() {\n return this.get('prefix');\n }\n\n}\n\nexports.StorageMetadata = StorageMetadata;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Compact = _interopRequireDefault(require(\"../codec/Compact\"));\n\nvar _U8a = _interopRequireDefault(require(\"../codec/U8a\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Bytes\n * @description\n * A Bytes wrapper for Vec. The significant difference between this and a normal Uint8Array\n * is that this version allows for length-encoding. (i.e. it is a variable-item codec, the same\n * as what is found in [[Text]] and [[Vector]])\n */\nclass Bytes extends _U8a.default {\n constructor(value) {\n super(Bytes.decodeBytes(value));\n }\n\n static decodeBytes(value) {\n // FIXME Cyclic dependency, however needed for the StoreageData check below. In a perfect\n // world, we should probably be checking Bytes - however as a first step, check against\n // StorageData to cater for the _specific_ problematic case\n const StorageData = require('./StorageData').default;\n\n if (Array.isArray(value) || (0, _util.isString)(value)) {\n const u8a = (0, _util.u8aToU8a)(value);\n return Bytes.decodeBytes(_Compact.default.addLengthPrefix(u8a));\n } else if (value instanceof StorageData) {\n // Here we cater for the actual StorageData that _could_ have a length prefix. In the\n // case of `:code` it is not added, for others it is\n const u8a = value;\n\n const _Compact$decodeU8a = _Compact.default.decodeU8a(u8a),\n _Compact$decodeU8a2 = (0, _slicedToArray2.default)(_Compact$decodeU8a, 2),\n offset = _Compact$decodeU8a2[0],\n length = _Compact$decodeU8a2[1];\n\n return u8a.length === length.addn(offset).toNumber() ? u8a.subarray(offset) : u8a;\n } else if (value instanceof _U8a.default) {\n // This is required. In the case of a U8a we already have gotten rid of the length,\n // i.e. new Bytes(new Bytes(...)) will work as expected\n return value;\n } else if ((0, _util.isU8a)(value)) {\n if (!value.length) {\n return new Uint8Array();\n } // handle all other Uint8Array inputs, these do have a length prefix\n\n\n const _Compact$decodeU8a3 = _Compact.default.decodeU8a(value),\n _Compact$decodeU8a4 = (0, _slicedToArray2.default)(_Compact$decodeU8a3, 2),\n offset = _Compact$decodeU8a4[0],\n length = _Compact$decodeU8a4[1];\n\n const total = offset + length.toNumber();\n (0, _util.assert)(total <= value.length, \"Bytes: required length less than remainder, expected at least \".concat(total, \", found \").concat(value.length));\n return value.subarray(offset, total);\n }\n\n return value;\n }\n /**\n * @description The length of the value when encoded as a Uint8Array\n */\n\n\n get encodedLength() {\n return this.length + _Compact.default.encodeU8a(this.length).length;\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return 'Bytes';\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n return isBare ? super.toU8a(isBare) : _Compact.default.addLengthPrefix(this);\n }\n\n}\n\nexports.default = Bytes;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Bytes = _interopRequireDefault(require(\"./Bytes\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name StorageData\n * @description\n * Data retrieved via Storage queries and data for key-value pairs\n */\nclass StorageData extends _Bytes.default {}\n\nexports.default = StorageData;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"ModuleMetadataV1\", {\n enumerable: true,\n get: function get() {\n return _Metadata.ModuleMetadata;\n }\n});\nexports.default = void 0;\n\nvar _Metadata = _interopRequireWildcard(require(\"./Metadata\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nvar _default = _Metadata.default;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.ModuleMetadata = void 0;\n\nvar _Option = _interopRequireDefault(require(\"../../codec/Option\"));\n\nvar _Struct = _interopRequireDefault(require(\"../../codec/Struct\"));\n\nvar _Vector = _interopRequireDefault(require(\"../../codec/Vector\"));\n\nvar _Text = _interopRequireDefault(require(\"../../primitive/Text\"));\n\nvar _util = require(\"../util\");\n\nvar _Calls = require(\"./Calls\");\n\nvar _Events = require(\"./Events\");\n\nvar _Storage = require(\"./Storage\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name ModuleMetadata\n * @description\n * The definition of a module in the system\n */\nclass ModuleMetadata extends _Struct.default {\n constructor(value) {\n super({\n name: _Text.default,\n prefix: _Text.default,\n storage: _Option.default.with(_Vector.default.with(_Storage.StorageFunctionMetadata)),\n calls: _Option.default.with(_Vector.default.with(_Calls.FunctionMetadata)),\n events: _Option.default.with(_Vector.default.with(_Events.EventMetadata))\n }, value);\n }\n /**\n * @description the module calls\n */\n\n\n get calls() {\n return this.get('calls');\n }\n /**\n * @description the module events\n */\n\n\n get events() {\n return this.get('events');\n }\n /**\n * @description the module name\n */\n\n\n get name() {\n return this.get('name');\n }\n /**\n * @description the module prefix\n */\n\n\n get prefix() {\n return this.get('prefix');\n }\n /**\n * @description the associated module storage\n */\n\n\n get storage() {\n return this.get('storage');\n }\n\n}\n/**\n * @name MetadataV1\n * @description\n * The runtime metadata as a decoded structure\n */\n\n\nexports.ModuleMetadata = ModuleMetadata;\n\nclass MetadataV1 extends _Struct.default {\n constructor(value) {\n super({\n modules: _Vector.default.with(ModuleMetadata)\n }, value);\n }\n /**\n * @description The associated modules for this structure\n */\n\n\n get modules() {\n return this.get('modules');\n }\n\n get callNames() {\n return this.modules.map(mod => mod.calls.isNone ? [] : mod.calls.unwrap().map(fn => fn.args.map(arg => arg.type.toString())));\n }\n\n get eventNames() {\n return this.modules.map(mod => mod.events.isNone ? [] : mod.events.unwrap().map(event => event.args.map(arg => arg.toString())));\n }\n\n get storageNames() {\n return this.modules.map(mod => mod.storage.isNone ? [] : mod.storage.unwrap().map(fn => fn.type.isMap ? [fn.type.asMap.key.toString(), fn.type.asMap.value.toString()] : [fn.type.asType.toString()]));\n }\n /**\n * @description Helper to retrieve a list of all type that are found, sorted and de-deuplicated\n */\n\n\n getUniqTypes(throwError) {\n const types = (0, _util.flattenUniq)([this.callNames, this.eventNames, this.storageNames]);\n (0, _util.validateTypes)(types, throwError);\n return types;\n }\n\n}\n\nexports.default = MetadataV1;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FunctionMetadata = exports.FunctionArgumentMetadata = void 0;\n\nvar _Struct = _interopRequireDefault(require(\"../../codec/Struct\"));\n\nvar _Vector = _interopRequireDefault(require(\"../../codec/Vector\"));\n\nvar _Text = _interopRequireDefault(require(\"../../primitive/Text\"));\n\nvar _Type = _interopRequireDefault(require(\"../../primitive/Type\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nclass FunctionArgumentMetadata extends _Struct.default {\n constructor(value) {\n super({\n name: _Text.default,\n type: _Type.default\n }, value);\n }\n /**\n * @description The argument name\n */\n\n\n get name() {\n return this.get('name');\n }\n /**\n * @description The [[Type]]\n */\n\n\n get type() {\n return this.get('type');\n }\n\n}\n/**\n * @name FunctionMetadata\n * @description\n * The definition of a call\n */\n\n\nexports.FunctionArgumentMetadata = FunctionArgumentMetadata;\n\nclass FunctionMetadata extends _Struct.default {\n constructor(value) {\n super({\n name: _Text.default,\n args: _Vector.default.with(FunctionArgumentMetadata),\n documentation: _Vector.default.with(_Text.default)\n }, value);\n }\n /**\n * @description The [[FunctionArgumentMetadata]] for arguments\n */\n\n\n get args() {\n return this.get('args');\n }\n /**\n * @description The [[Text]] documentation\n */\n\n\n get documentation() {\n return this.get('documentation');\n }\n /**\n * @description The [[Text]] documentation\n * @deprecated Use `.documentation` instead.\n */\n\n\n get docs() {\n return this.documentation;\n }\n /**\n * @description The call name\n */\n\n\n get name() {\n return this.get('name');\n }\n\n}\n\nexports.FunctionMetadata = FunctionMetadata;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"EventMetadata\", {\n enumerable: true,\n get: function get() {\n return _Events.EventMetadata;\n }\n});\n\nvar _Events = require(\"../v0/Events\");","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"MapType\", {\n enumerable: true,\n get: function get() {\n return _Storage.MapType;\n }\n});\nObject.defineProperty(exports, \"PlainType\", {\n enumerable: true,\n get: function get() {\n return _Storage.PlainType;\n }\n});\nObject.defineProperty(exports, \"StorageFunctionModifier\", {\n enumerable: true,\n get: function get() {\n return _Storage.StorageFunctionModifier;\n }\n});\nObject.defineProperty(exports, \"StorageFunctionType\", {\n enumerable: true,\n get: function get() {\n return _Storage.StorageFunctionType;\n }\n});\nObject.defineProperty(exports, \"StorageFunctionMetadata\", {\n enumerable: true,\n get: function get() {\n return _Storage.StorageFunctionMetadata;\n }\n});\n\nvar _Storage = require(\"../v0/Storage\");","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"ModuleMetadataV2\", {\n enumerable: true,\n get: function get() {\n return _Metadata.ModuleMetadata;\n }\n});\nexports.default = void 0;\n\nvar _Metadata = _interopRequireWildcard(require(\"./Metadata\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nvar _default = _Metadata.default;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.ModuleMetadata = void 0;\n\nvar _Option = _interopRequireDefault(require(\"../../codec/Option\"));\n\nvar _Struct = _interopRequireDefault(require(\"../../codec/Struct\"));\n\nvar _Vector = _interopRequireDefault(require(\"../../codec/Vector\"));\n\nvar _Text = _interopRequireDefault(require(\"../../primitive/Text\"));\n\nvar _util = require(\"../util\");\n\nvar _Calls = require(\"./Calls\");\n\nvar _Events = require(\"./Events\");\n\nvar _Storage = require(\"./Storage\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name ModuleMetadata\n * @description\n * The definition of a module in the system\n */\nclass ModuleMetadata extends _Struct.default {\n constructor(value) {\n super({\n name: _Text.default,\n prefix: _Text.default,\n storage: _Option.default.with(_Vector.default.with(_Storage.StorageFunctionMetadata)),\n calls: _Option.default.with(_Vector.default.with(_Calls.FunctionMetadata)),\n events: _Option.default.with(_Vector.default.with(_Events.EventMetadata))\n }, value);\n }\n /**\n * @description the module calls\n */\n\n\n get calls() {\n return this.get('calls');\n }\n /**\n * @description the module events\n */\n\n\n get events() {\n return this.get('events');\n }\n /**\n * @description the module name\n */\n\n\n get name() {\n return this.get('name');\n }\n /**\n * @description the module prefix\n */\n\n\n get prefix() {\n return this.get('prefix');\n }\n /**\n * @description the associated module storage\n */\n\n\n get storage() {\n return this.get('storage');\n }\n\n}\n/**\n * @name MetadataV2\n * @description\n * The runtime metadata as a decoded structure\n */\n\n\nexports.ModuleMetadata = ModuleMetadata;\n\nclass MetadataV2 extends _Struct.default {\n constructor(value) {\n super({\n modules: _Vector.default.with(ModuleMetadata)\n }, value);\n }\n /**\n * @description The associated modules for this structure\n */\n\n\n get modules() {\n return this.get('modules');\n }\n\n get callNames() {\n return this.modules.map(mod => mod.calls.isNone ? [] : mod.calls.unwrap().map(fn => fn.args.map(arg => arg.type.toString())));\n }\n\n get eventNames() {\n return this.modules.map(mod => mod.events.isNone ? [] : mod.events.unwrap().map(event => event.args.map(arg => arg.toString())));\n }\n\n get storageNames() {\n return this.modules.map(mod => mod.storage.isNone ? [] : mod.storage.unwrap().map(fn => fn.type.isMap ? [fn.type.asMap.key.toString(), fn.type.asMap.value.toString()] : [fn.type.asType.toString()]));\n }\n /**\n * @description Helper to retrieve a list of all type that are found, sorted and de-deuplicated\n */\n\n\n getUniqTypes(throwError) {\n const types = (0, _util.flattenUniq)([this.callNames, this.eventNames, this.storageNames]);\n (0, _util.validateTypes)(types, throwError);\n return types;\n }\n\n}\n\nexports.default = MetadataV2;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"FunctionArgumentMetadata\", {\n enumerable: true,\n get: function get() {\n return _Calls.FunctionArgumentMetadata;\n }\n});\nObject.defineProperty(exports, \"FunctionMetadata\", {\n enumerable: true,\n get: function get() {\n return _Calls.FunctionMetadata;\n }\n});\n\nvar _Calls = require(\"../v1/Calls\");","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"EventMetadata\", {\n enumerable: true,\n get: function get() {\n return _Events.EventMetadata;\n }\n});\n\nvar _Events = require(\"../v1/Events\");","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"PlainType\", {\n enumerable: true,\n get: function get() {\n return _Storage.PlainType;\n }\n});\nObject.defineProperty(exports, \"StorageFunctionModifier\", {\n enumerable: true,\n get: function get() {\n return _Storage.StorageFunctionModifier;\n }\n});\nexports.StorageFunctionMetadata = exports.StorageFunctionType = exports.MapType = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Enum = _interopRequireDefault(require(\"../../codec/Enum\"));\n\nvar _Struct = _interopRequireDefault(require(\"../../codec/Struct\"));\n\nvar _Vector = _interopRequireDefault(require(\"../../codec/Vector\"));\n\nvar _Bool = _interopRequireDefault(require(\"../../primitive/Bool\"));\n\nvar _Bytes = _interopRequireDefault(require(\"../../primitive/Bytes\"));\n\nvar _Text = _interopRequireDefault(require(\"../../primitive/Text\"));\n\nvar _Type = _interopRequireDefault(require(\"../../primitive/Type\"));\n\nvar _Storage = require(\"../v1/Storage\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// Re-export classes that haven't changed between V1 and V2\nclass MapType extends _Struct.default {\n constructor(value) {\n super({\n key: _Type.default,\n value: _Type.default,\n isLinked: _Bool.default\n }, value);\n }\n /**\n * @description The mapped key as [[Type]]\n */\n\n\n get key() {\n return this.get('key');\n }\n /**\n * @description The mapped value as [[Type]]\n */\n\n\n get value() {\n return this.get('value');\n }\n /**\n * @description Is this an enumerable linked map\n */\n\n\n get isLinked() {\n return this.get('isLinked').valueOf();\n }\n\n}\n\nexports.MapType = MapType;\n\nclass StorageFunctionType extends _Enum.default {\n constructor(value, index) {\n super({\n PlainType: _Storage.PlainType,\n MapType\n }, value, index);\n }\n /**\n * @description The value as a mapped value\n */\n\n\n get asMap() {\n (0, _util.assert)(this.isMap, \"Cannot convert '\".concat(this.type, \"' via asMap\"));\n return this.value;\n }\n /**\n * @description The value as a [[Type]] value\n */\n\n\n get asType() {\n (0, _util.assert)(this.isPlainType, \"Cannot convert '\".concat(this.type, \"' via asType\"));\n return this.value;\n }\n /**\n * @description `true` if the storage entry is a map\n */\n\n\n get isMap() {\n return this.toNumber() === 1;\n }\n /**\n * @description `true` if the storage entry is a plain type\n */\n\n\n get isPlainType() {\n return this.toNumber() === 0;\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n if (this.isMap) {\n if (this.asMap.isLinked) {\n return \"(\".concat(this.asMap.value.toString(), \", Linkage<\").concat(this.asMap.key.toString(), \">)\");\n }\n\n return this.asMap.value.toString();\n }\n\n return this.asType.toString();\n }\n\n}\n\nexports.StorageFunctionType = StorageFunctionType;\n\n/**\n * @name ModuleMetadata\n * @description\n * The definition of a storage function\n */\nclass StorageFunctionMetadata extends _Struct.default {\n constructor(value) {\n super({\n name: _Text.default,\n modifier: _Storage.StorageFunctionModifier,\n type: StorageFunctionType,\n fallback: _Bytes.default,\n documentation: _Vector.default.with(_Text.default)\n }, value);\n }\n /**\n * @description The default value of the storage function\n * @deprecated Use `.fallback` instead.\n */\n\n\n get default() {\n return this.fallback;\n }\n /**\n * @description The [[Text]] documentation\n */\n\n\n get documentation() {\n return this.get('documentation');\n }\n /**\n * @description The [[Text]] documentation\n * @deprecated Use `.documentation` instead.\n */\n\n\n get docs() {\n return this.documentation;\n }\n /**\n * @description The [[Bytes]] fallback default\n */\n\n\n get fallback() {\n return this.get('fallback');\n }\n /**\n * @description The [[MetadataArgument]] for arguments\n */\n\n\n get modifier() {\n return this.get('modifier');\n }\n /**\n * @description The call name\n */\n\n\n get name() {\n return this.get('name');\n }\n /**\n * @description The [[StorageFunctionType]]\n */\n\n\n get type() {\n return this.get('type');\n }\n\n}\n\nexports.StorageFunctionMetadata = StorageFunctionMetadata;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Bool\n * @description\n * Representation for a boolean value in the system. It extends the base JS `Boolean` class\n * @noInheritDoc\n */\nclass Bool extends Boolean {\n constructor() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n super(Bool.decodeBool(value));\n }\n\n static decodeBool(value) {\n if (value instanceof Boolean) {\n return value.valueOf();\n } else if ((0, _util.isU8a)(value)) {\n return value[0] === 1;\n }\n\n return !!value;\n }\n /**\n * @description The length of the value when encoded as a Uint8Array\n */\n\n\n get encodedLength() {\n return 1;\n }\n /**\n * @description Checks if the value is an empty value (always false)\n */\n\n\n get isEmpty() {\n return false;\n }\n /**\n * @description Compares the value of the input to see if there is a match\n */\n\n\n eq(other) {\n return this.valueOf() === (other instanceof Boolean ? other.valueOf() : other);\n }\n /**\n * @description Returns a hex string representation of the value\n */\n\n\n toHex() {\n return (0, _util.u8aToHex)(this.toU8a());\n }\n /**\n * @description Converts the Object to JSON, typically used for RPC transfers\n */\n\n\n toJSON() {\n return this.valueOf();\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return 'bool';\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n return \"\".concat(this.toJSON());\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n return new Uint8Array([this.valueOf() ? 1 : 0]);\n }\n\n}\n\nexports.default = Bool;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"ModuleMetadataV3\", {\n enumerable: true,\n get: function get() {\n return _Metadata.ModuleMetadata;\n }\n});\nexports.default = void 0;\n\nvar _Metadata = _interopRequireWildcard(require(\"./Metadata\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nvar _default = _Metadata.default;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.ModuleMetadata = void 0;\n\nvar _Option = _interopRequireDefault(require(\"../../codec/Option\"));\n\nvar _Struct = _interopRequireDefault(require(\"../../codec/Struct\"));\n\nvar _Vector = _interopRequireDefault(require(\"../../codec/Vector\"));\n\nvar _Text = _interopRequireDefault(require(\"../../primitive/Text\"));\n\nvar _util = require(\"../util\");\n\nvar _Calls = require(\"./Calls\");\n\nvar _Events = require(\"./Events\");\n\nvar _Storage = require(\"./Storage\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name ModuleMetadata\n * @description\n * The definition of a module in the system\n */\nclass ModuleMetadata extends _Struct.default {\n constructor(value) {\n super({\n name: _Text.default,\n prefix: _Text.default,\n storage: _Option.default.with(_Vector.default.with(_Storage.StorageFunctionMetadata)),\n calls: _Option.default.with(_Vector.default.with(_Calls.FunctionMetadata)),\n events: _Option.default.with(_Vector.default.with(_Events.EventMetadata))\n }, value);\n }\n /**\n * @description the module calls\n */\n\n\n get calls() {\n return this.get('calls');\n }\n /**\n * @description the module events\n */\n\n\n get events() {\n return this.get('events');\n }\n /**\n * @description the module name\n */\n\n\n get name() {\n return this.get('name');\n }\n /**\n * @description the module prefix\n */\n\n\n get prefix() {\n return this.get('prefix');\n }\n /**\n * @description the associated module storage\n */\n\n\n get storage() {\n return this.get('storage');\n }\n\n}\n/**\n * @name MetadataV3\n * @description\n * The runtime metadata as a decoded structure\n */\n\n\nexports.ModuleMetadata = ModuleMetadata;\n\nclass MetadataV3 extends _Struct.default {\n constructor(value) {\n super({\n modules: _Vector.default.with(ModuleMetadata)\n }, value);\n }\n /**\n * @description The associated modules for this structure\n */\n\n\n get modules() {\n return this.get('modules');\n }\n\n get callNames() {\n return this.modules.map(mod => mod.calls.isNone ? [] : mod.calls.unwrap().map(fn => fn.args.map(arg => arg.type.toString())));\n }\n\n get eventNames() {\n return this.modules.map(mod => mod.events.isNone ? [] : mod.events.unwrap().map(event => event.args.map(arg => arg.toString())));\n }\n\n get storageNames() {\n return this.modules.map(mod => mod.storage.isNone ? [] : mod.storage.unwrap().map(fn => {\n if (fn.type.isMap) {\n return [fn.type.asMap.key.toString(), fn.type.asMap.value.toString()];\n } else if (fn.type.isDoubleMap) {\n return [fn.type.asDoubleMap.key1.toString(), fn.type.asDoubleMap.key2.toString(), fn.type.asDoubleMap.value.toString()];\n } else {\n return [fn.type.asType.toString()];\n }\n }));\n }\n /**\n * @description Helper to retrieve a list of all type that are found, sorted and de-deuplicated\n */\n\n\n getUniqTypes(throwError) {\n const types = (0, _util.flattenUniq)([this.callNames, this.eventNames, this.storageNames]);\n (0, _util.validateTypes)(types, throwError);\n return types;\n }\n\n}\n\nexports.default = MetadataV3;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"FunctionArgumentMetadata\", {\n enumerable: true,\n get: function get() {\n return _Calls.FunctionArgumentMetadata;\n }\n});\nObject.defineProperty(exports, \"FunctionMetadata\", {\n enumerable: true,\n get: function get() {\n return _Calls.FunctionMetadata;\n }\n});\n\nvar _Calls = require(\"../v2/Calls\");","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"EventMetadata\", {\n enumerable: true,\n get: function get() {\n return _Events.EventMetadata;\n }\n});\n\nvar _Events = require(\"../v2/Events\");","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"MapType\", {\n enumerable: true,\n get: function get() {\n return _Storage.MapType;\n }\n});\nObject.defineProperty(exports, \"PlainType\", {\n enumerable: true,\n get: function get() {\n return _Storage.PlainType;\n }\n});\nObject.defineProperty(exports, \"StorageFunctionModifier\", {\n enumerable: true,\n get: function get() {\n return _Storage.StorageFunctionModifier;\n }\n});\nexports.StorageFunctionMetadata = exports.StorageFunctionType = exports.DoubleMapType = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Enum = _interopRequireDefault(require(\"../../codec/Enum\"));\n\nvar _Struct = _interopRequireDefault(require(\"../../codec/Struct\"));\n\nvar _Vector = _interopRequireDefault(require(\"../../codec/Vector\"));\n\nvar _Bytes = _interopRequireDefault(require(\"../../primitive/Bytes\"));\n\nvar _Text = _interopRequireDefault(require(\"../../primitive/Text\"));\n\nvar _Type = _interopRequireDefault(require(\"../../primitive/Type\"));\n\nvar _Storage = require(\"../v2/Storage\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// Re-export classes that haven't changed between V2 and V3\nclass DoubleMapType extends _Struct.default {\n constructor(value) {\n super({\n key1: _Type.default,\n key2: _Type.default,\n value: _Type.default,\n key2Hasher: _Text.default\n }, value);\n }\n /**\n * @description The mapped key as [[Type]]\n */\n\n\n get key1() {\n return this.get('key1');\n }\n /**\n * @description The mapped key as [[Type]]\n */\n\n\n get key2() {\n return this.get('key2');\n }\n /**\n * @description The hashing algorithm used to hash key2, as [[Text]]\n */\n\n\n get key2Hasher() {\n return this.get('key2Hasher');\n }\n /**\n * @description The mapped key as [[Type]]\n */\n\n\n get value() {\n return this.get('value');\n }\n\n}\n\nexports.DoubleMapType = DoubleMapType;\n\nclass StorageFunctionType extends _Enum.default {\n constructor(value, index) {\n super({\n PlainType: _Storage.PlainType,\n MapType: _Storage.MapType,\n DoubleMapType\n }, value, index);\n }\n /**\n * @description The value as a mapped value\n */\n\n\n get asDoubleMap() {\n (0, _util.assert)(this.isDoubleMap, \"Cannot convert '\".concat(this.type, \"' via asDoubleMap\"));\n return this.value;\n }\n /**\n * @description The value as a mapped value\n */\n\n\n get asMap() {\n (0, _util.assert)(this.isMap, \"Cannot convert '\".concat(this.type, \"' via asMap\"));\n return this.value;\n }\n /**\n * @description The value as a [[Type]] value\n */\n\n\n get asType() {\n (0, _util.assert)(this.isPlainType, \"Cannot convert '\".concat(this.type, \"' via asType\"));\n return this.value;\n }\n /**\n * @description `true` if the storage entry is a doublemap\n */\n\n\n get isDoubleMap() {\n return this.toNumber() === 2;\n }\n /**\n * @description `true` if the storage entry is a map\n */\n\n\n get isMap() {\n return this.toNumber() === 1;\n }\n /**\n * @description `true` if the storage entry is a plain type\n */\n\n\n get isPlainType() {\n return this.toNumber() === 0;\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n if (this.isDoubleMap) {\n return \"DoubleMap<\".concat(this.asDoubleMap.toString(), \">\");\n }\n\n if (this.isMap) {\n if (this.asMap.isLinked) {\n return \"(\".concat(this.asMap.value.toString(), \", Linkage<\").concat(this.asMap.key.toString(), \">)\");\n }\n\n return this.asMap.value.toString();\n }\n\n return this.asType.toString();\n }\n\n}\n\nexports.StorageFunctionType = StorageFunctionType;\n\n/**\n * @name StorageFunctionMetadata\n * @description\n * The definition of a storage function\n */\nclass StorageFunctionMetadata extends _Struct.default {\n constructor(value) {\n super({\n name: _Text.default,\n modifier: _Storage.StorageFunctionModifier,\n type: StorageFunctionType,\n fallback: _Bytes.default,\n documentation: _Vector.default.with(_Text.default)\n }, value);\n }\n /**\n * @description The default value of the storage function\n * @deprecated Use `.fallback` instead.\n */\n\n\n get default() {\n return this.fallback;\n }\n /**\n * @description The [[Text]] documentation\n */\n\n\n get documentation() {\n return this.get('documentation');\n }\n /**\n * @description The [[Text]] documentation\n * @deprecated Use `.documentation` instead.\n */\n\n\n get docs() {\n return this.documentation;\n }\n /**\n * @description The [[Bytes]] fallback default\n */\n\n\n get fallback() {\n return this.get('fallback');\n }\n /**\n * @description The [[MetadataArgument]] for arguments\n */\n\n\n get modifier() {\n return this.get('modifier');\n }\n /**\n * @description The call name\n */\n\n\n get name() {\n return this.get('name');\n }\n /**\n * @description The [[StorageFunctionType]]\n */\n\n\n get type() {\n return this.get('type');\n }\n\n}\n\nexports.StorageFunctionMetadata = StorageFunctionMetadata;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"ModuleMetadataV4\", {\n enumerable: true,\n get: function get() {\n return _Metadata.ModuleMetadata;\n }\n});\nexports.default = void 0;\n\nvar _Metadata = _interopRequireWildcard(require(\"./Metadata\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nvar _default = _Metadata.default;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.ModuleMetadata = void 0;\n\nvar _Option = _interopRequireDefault(require(\"../../codec/Option\"));\n\nvar _Struct = _interopRequireDefault(require(\"../../codec/Struct\"));\n\nvar _Vector = _interopRequireDefault(require(\"../../codec/Vector\"));\n\nvar _Text = _interopRequireDefault(require(\"../../primitive/Text\"));\n\nvar _util = require(\"../util\");\n\nvar _Calls = require(\"./Calls\");\n\nvar _Events = require(\"./Events\");\n\nvar _Storage = require(\"./Storage\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name ModuleMetadata\n * @description\n * The definition of a module in the system\n */\nclass ModuleMetadata extends _Struct.default {\n constructor(value) {\n super({\n name: _Text.default,\n prefix: _Text.default,\n storage: _Option.default.with(_Vector.default.with(_Storage.StorageFunctionMetadata)),\n calls: _Option.default.with(_Vector.default.with(_Calls.FunctionMetadata)),\n events: _Option.default.with(_Vector.default.with(_Events.EventMetadata))\n }, value);\n }\n /**\n * @description the module calls\n */\n\n\n get calls() {\n return this.get('calls');\n }\n /**\n * @description the module events\n */\n\n\n get events() {\n return this.get('events');\n }\n /**\n * @description the module name\n */\n\n\n get name() {\n return this.get('name');\n }\n /**\n * @description the module prefix\n */\n\n\n get prefix() {\n return this.get('prefix');\n }\n /**\n * @description the associated module storage\n */\n\n\n get storage() {\n return this.get('storage');\n }\n\n}\n/**\n * @name MetadataV4\n * @description\n * The runtime metadata as a decoded structure\n */\n\n\nexports.ModuleMetadata = ModuleMetadata;\n\nclass MetadataV4 extends _Struct.default {\n constructor(value) {\n super({\n modules: _Vector.default.with(ModuleMetadata)\n }, value);\n }\n /**\n * @description The associated modules for this structure\n */\n\n\n get modules() {\n return this.get('modules');\n }\n\n get callNames() {\n return this.modules.map(mod => mod.calls.isNone ? [] : mod.calls.unwrap().map(fn => fn.args.map(arg => arg.type.toString())));\n }\n\n get eventNames() {\n return this.modules.map(mod => mod.events.isNone ? [] : mod.events.unwrap().map(event => event.args.map(arg => arg.toString())));\n }\n\n get storageNames() {\n return this.modules.map(mod => mod.storage.isNone ? [] : mod.storage.unwrap().map(fn => {\n if (fn.type.isMap) {\n return [fn.type.asMap.key.toString(), fn.type.asMap.value.toString()];\n } else if (fn.type.isDoubleMap) {\n return [fn.type.asDoubleMap.key1.toString(), fn.type.asDoubleMap.key2.toString(), fn.type.asDoubleMap.value.toString()];\n } else {\n return [fn.type.asType.toString()];\n }\n }));\n }\n /**\n * @description Helper to retrieve a list of all type that are found, sorted and de-deuplicated\n */\n\n\n getUniqTypes(throwError) {\n const types = (0, _util.flattenUniq)([this.callNames, this.eventNames, this.storageNames]);\n (0, _util.validateTypes)(types, throwError);\n return types;\n }\n\n}\n\nexports.default = MetadataV4;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"FunctionArgumentMetadata\", {\n enumerable: true,\n get: function get() {\n return _Calls.FunctionArgumentMetadata;\n }\n});\nObject.defineProperty(exports, \"FunctionMetadata\", {\n enumerable: true,\n get: function get() {\n return _Calls.FunctionMetadata;\n }\n});\n\nvar _Calls = require(\"../v3/Calls\");","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"EventMetadata\", {\n enumerable: true,\n get: function get() {\n return _Events.EventMetadata;\n }\n});\n\nvar _Events = require(\"../v3/Events\");","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"PlainType\", {\n enumerable: true,\n get: function get() {\n return _Storage.PlainType;\n }\n});\nObject.defineProperty(exports, \"StorageFunctionModifier\", {\n enumerable: true,\n get: function get() {\n return _Storage.StorageFunctionModifier;\n }\n});\nexports.StorageFunctionMetadata = exports.StorageFunctionType = exports.DoubleMapType = exports.MapType = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Enum = _interopRequireDefault(require(\"../../codec/Enum\"));\n\nvar _Struct = _interopRequireDefault(require(\"../../codec/Struct\"));\n\nvar _Vector = _interopRequireDefault(require(\"../../codec/Vector\"));\n\nvar _Bool = _interopRequireDefault(require(\"../../primitive/Bool\"));\n\nvar _Bytes = _interopRequireDefault(require(\"../../primitive/Bytes\"));\n\nvar _StorageHasher = _interopRequireDefault(require(\"../../primitive/StorageHasher\"));\n\nvar _Text = _interopRequireDefault(require(\"../../primitive/Text\"));\n\nvar _Type = _interopRequireDefault(require(\"../../primitive/Type\"));\n\nvar _Storage = require(\"../v3/Storage\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// Re-export classes that haven't changed between V3 and V4\nclass MapType extends _Struct.default {\n constructor(value) {\n super({\n hasher: _StorageHasher.default,\n key: _Type.default,\n value: _Type.default,\n isLinked: _Bool.default\n }, value);\n }\n /**\n * @description The hash algorithm used to hash keys, as [[StorageHasher]]\n */\n\n\n get hasher() {\n return this.get('hasher');\n }\n /**\n * @description Is this an enumerable linked map\n */\n\n\n get isLinked() {\n return this.get('isLinked').valueOf();\n }\n /**\n * @description The mapped key as [[Type]]\n */\n\n\n get key() {\n return this.get('key');\n }\n /**\n * @description The mapped value as [[Type]]\n */\n\n\n get value() {\n return this.get('value');\n }\n\n}\n\nexports.MapType = MapType;\n\nclass DoubleMapType extends _Struct.default {\n constructor(value) {\n super({\n hasher: _StorageHasher.default,\n key1: _Type.default,\n key2: _Type.default,\n value: _Type.default,\n key2Hasher: _Text.default\n }, value);\n }\n /**\n * @description The hashing algorithm used to hash keys, as [[StorageHasher]]\n */\n\n\n get hasher() {\n return this.get('hasher');\n }\n /**\n * @description The mapped key as [[Type]]\n */\n\n\n get key1() {\n return this.get('key1');\n }\n /**\n * @description The mapped key as [[Type]]\n */\n\n\n get key2() {\n return this.get('key2');\n }\n /**\n * @description The hashing algorithm used to hash key2, as [[Text]]\n */\n\n\n get key2Hasher() {\n return this.get('key2Hasher');\n }\n /**\n * @description The mapped key as [[Type]]\n */\n\n\n get value() {\n return this.get('value');\n }\n\n}\n\nexports.DoubleMapType = DoubleMapType;\n\nclass StorageFunctionType extends _Enum.default {\n constructor(value, index) {\n super({\n PlainType: _Storage.PlainType,\n MapType,\n DoubleMapType\n }, value, index);\n }\n /**\n * @description The value as a mapped value\n */\n\n\n get asDoubleMap() {\n (0, _util.assert)(this.isDoubleMap, \"Cannot convert '\".concat(this.type, \"' via asDoubleMap\"));\n return this.value;\n }\n /**\n * @description The value as a mapped value\n */\n\n\n get asMap() {\n (0, _util.assert)(this.isMap, \"Cannot convert '\".concat(this.type, \"' via asMap\"));\n return this.value;\n }\n /**\n * @description The value as a [[Type]] value\n */\n\n\n get asType() {\n (0, _util.assert)(this.isPlainType, \"Cannot convert '\".concat(this.type, \"' via asType\"));\n return this.value;\n }\n /**\n * @description `true` if the storage entry is a doublemap\n */\n\n\n get isDoubleMap() {\n return this.toNumber() === 2;\n }\n /**\n * @description `true` if the storage entry is a map\n */\n\n\n get isMap() {\n return this.toNumber() === 1;\n }\n /**\n * @description `true` if the storage entry is a plain type\n */\n\n\n get isPlainType() {\n return this.toNumber() === 0;\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n if (this.isDoubleMap) {\n return \"DoubleMap<\".concat(this.asDoubleMap.toString(), \">\");\n }\n\n if (this.isMap) {\n if (this.asMap.isLinked) {\n return \"(\".concat(this.asMap.value.toString(), \", Linkage<\").concat(this.asMap.key.toString(), \">)\");\n }\n\n return this.asMap.value.toString();\n }\n\n return this.asType.toString();\n }\n\n}\n\nexports.StorageFunctionType = StorageFunctionType;\n\n/**\n * @name StorageFunctionMetadata\n * @description\n * The definition of a storage function\n */\nclass StorageFunctionMetadata extends _Struct.default {\n constructor(value) {\n super({\n name: _Text.default,\n modifier: _Storage.StorageFunctionModifier,\n type: StorageFunctionType,\n fallback: _Bytes.default,\n documentation: _Vector.default.with(_Text.default)\n }, value);\n }\n /**\n * @description The default value of the storage function\n * @deprecated Use `.fallback` instead.\n */\n\n\n get default() {\n return this.fallback;\n }\n /**\n * @description The default value of the storage function\n */\n\n\n get fallback() {\n return this.get('fallback');\n }\n /**\n * @description The [[Text]] documentation\n */\n\n\n get documentation() {\n return this.get('documentation');\n }\n /**\n * @description The [[Text]] documentation\n * @deprecated Use `.documentation` instead.\n */\n\n\n get docs() {\n return this.documentation;\n }\n /**\n * @description The key name\n */\n\n\n get name() {\n return this.get('name');\n }\n /**\n * @description The modifier\n */\n\n\n get modifier() {\n return this.get('modifier');\n }\n /**\n * @description The [[StorageFunctionType]]\n */\n\n\n get type() {\n return this.get('type');\n }\n\n}\n\nexports.StorageFunctionMetadata = StorageFunctionMetadata;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Enum = _interopRequireDefault(require(\"../codec/Enum\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nclass StorageHasher extends _Enum.default {\n constructor(value) {\n super(['Blake2_128', 'Blake2_256', 'Twox128', 'Twox256', 'Twox128Concat'], value);\n }\n /**\n * @description Is the enum Blake2_128?\n */\n\n\n get isBlake2128() {\n return this.toNumber() === 0;\n }\n /**\n * @description Is the enum Blake2_256?\n */\n\n\n get isBlake2256() {\n return this.toNumber() === 1;\n }\n /**\n * @description Is the enum Twox128?\n */\n\n\n get isTwox128() {\n return this.toNumber() === 2;\n }\n /**\n * @description Is the enum Twox256?\n */\n\n\n get isTwox256() {\n return this.toNumber() === 3;\n }\n /**\n * @description Is the enum isTwox128Concat?\n */\n\n\n get isTwox128Concat() {\n return this.toNumber() === 4;\n }\n\n toJSON() {\n // This looks prettier in the generated JSON\n return this.toString();\n }\n\n}\n\nexports.default = StorageHasher;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toV1;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _codec = require(\"../../codec\");\n\nvar _Calls = require(\"../v1/Calls\");\n\nvar _Events = require(\"../v1/Events\");\n\nvar _Metadata = _interopRequireWildcard(require(\"../v1/Metadata\"));\n\nvar _Storage = require(\"../v1/Storage\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction toV1Calls(modul) {\n return modul.module.call.functions.length === 0 ? new _codec.Option(_codec.Vector.with(_Calls.FunctionMetadata)) : new _codec.Option(_codec.Vector.with(_Calls.FunctionMetadata), modul.module.call.functions);\n}\n\nfunction toV1Events(metadataV0, prefix) {\n const events = metadataV0.events.find(event => event.name.eq(prefix));\n return events ? new _codec.Option(_codec.Vector.with(_Events.EventMetadata), events.events) : new _codec.Option(_codec.Vector.with(_Events.EventMetadata));\n}\n\nfunction toV1Storage(modul) {\n return modul.storage.isNone ? new _codec.Option(_codec.Vector.with(_Storage.StorageFunctionMetadata)) : new _codec.Option(_codec.Vector.with(_Storage.StorageFunctionMetadata), modul.storage.unwrap().functions);\n}\n/**\n * Function that converts MetadataV0 to MetadataV1\n */\n\n\nfunction toV1(metadataV0) {\n return new _Metadata.default({\n modules: metadataV0.modules.map(modul => {\n // The prefix of this module (capitalized)\n const prefix = modul.storage.isSome ? modul.storage.unwrap().prefix.toString() : (0, _util.stringUpperFirst)(modul.prefix.toString()); // If this module doesn't have storage, we just assume the prefix is the name capitalized\n\n return new _Metadata.ModuleMetadata({\n name: modul.prefix,\n // Not capitalized\n prefix,\n // Capitalized\n storage: toV1Storage(modul),\n calls: toV1Calls(modul),\n events: toV1Events(metadataV0, modul.prefix)\n });\n })\n });\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toV2;\n\nvar _v = _interopRequireDefault(require(\"../v2\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction toV2(metadataV1) {\n return new _v.default(metadataV1);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toV3;\n\nvar _v = _interopRequireDefault(require(\"../v3\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction toV3(metadataV2) {\n return new _v.default(metadataV2);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toV4;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _codec = require(\"../../codec\");\n\nvar _StorageHasher = _interopRequireDefault(require(\"../../primitive/StorageHasher\"));\n\nvar _v = _interopRequireDefault(require(\"../v4\"));\n\nvar _Storage = require(\"../v4/Storage\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * Convert V3 StorageFunction to V4 StorageFunction\n */\nfunction toV4StorageFunction(storageFn) {\n const documentation = storageFn.documentation,\n fallback = storageFn.fallback,\n modifier = storageFn.modifier,\n name = storageFn.name,\n type = storageFn.type; // Convert the old type to the new type: there is one new field\n // called `hasher`, which we initialize to xxHash (the default in\n // v3).\n\n const _ref = type.isPlainType ? [type, 0] : type.isMap ? [new _Storage.MapType({\n hasher: new _StorageHasher.default('Twox128'),\n key: type.asMap.key,\n value: type.asMap.value,\n isLinked: type.asMap.isLinked\n }), 1] : [new _Storage.DoubleMapType({\n hasher: new _StorageHasher.default('Twox128'),\n key1: type.asDoubleMap.key1,\n key2: type.asDoubleMap.key2,\n value: type.asDoubleMap.value,\n key2Hasher: type.asDoubleMap.key2Hasher\n }), 2],\n _ref2 = (0, _slicedToArray2.default)(_ref, 2),\n newType = _ref2[0],\n index = _ref2[1];\n\n return new _Storage.StorageFunctionMetadata({\n name: name,\n modifier: modifier,\n type: new _Storage.StorageFunctionType(newType, index),\n fallback: fallback,\n documentation: documentation\n });\n}\n/**\n * Convert from MetadataV3 to MetadataV4\n * See https://github.com/paritytech/substrate/pull/2268 for details\n */\n\n\nfunction toV4(metadataV3) {\n return new _v.default({\n modules: metadataV3.modules.map(modul => {\n return {\n name: modul.name,\n prefix: modul.prefix,\n storage: modul.storage.isSome ? new _codec.Option(_codec.Vector.with(_Storage.StorageFunctionMetadata), modul.storage.unwrap().map(toV4StorageFunction)) : undefined,\n calls: modul.calls,\n events: modul.events\n };\n })\n });\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"AccountId\", {\n enumerable: true,\n get: function get() {\n return _AccountId.default;\n }\n});\nObject.defineProperty(exports, \"AccountIdOf\", {\n enumerable: true,\n get: function get() {\n return _AccountId.AccountIdOf;\n }\n});\nObject.defineProperty(exports, \"AccountIndex\", {\n enumerable: true,\n get: function get() {\n return _AccountIndex.default;\n }\n});\nObject.defineProperty(exports, \"AccountInfo\", {\n enumerable: true,\n get: function get() {\n return _AccountInfo.default;\n }\n});\nObject.defineProperty(exports, \"Address\", {\n enumerable: true,\n get: function get() {\n return _Address.default;\n }\n});\nObject.defineProperty(exports, \"Event\", {\n enumerable: true,\n get: function get() {\n return _Event.default;\n }\n});\nObject.defineProperty(exports, \"EventIndex\", {\n enumerable: true,\n get: function get() {\n return _Event.EventIndex;\n }\n});\nObject.defineProperty(exports, \"EventRecord\", {\n enumerable: true,\n get: function get() {\n return _EventRecord.default;\n }\n});\nObject.defineProperty(exports, \"EventRecord_0_76\", {\n enumerable: true,\n get: function get() {\n return _EventRecord.EventRecord_0_76;\n }\n});\nObject.defineProperty(exports, \"Bool\", {\n enumerable: true,\n get: function get() {\n return _Bool.default;\n }\n});\nObject.defineProperty(exports, \"bool\", {\n enumerable: true,\n get: function get() {\n return _Bool.default;\n }\n});\nObject.defineProperty(exports, \"Bytes\", {\n enumerable: true,\n get: function get() {\n return _Bytes.default;\n }\n});\nObject.defineProperty(exports, \"Data\", {\n enumerable: true,\n get: function get() {\n return _Data.default;\n }\n});\nObject.defineProperty(exports, \"H160\", {\n enumerable: true,\n get: function get() {\n return _H.default;\n }\n});\nObject.defineProperty(exports, \"H256\", {\n enumerable: true,\n get: function get() {\n return _H2.default;\n }\n});\nObject.defineProperty(exports, \"H512\", {\n enumerable: true,\n get: function get() {\n return _H3.default;\n }\n});\nObject.defineProperty(exports, \"Hash\", {\n enumerable: true,\n get: function get() {\n return _Hash.default;\n }\n});\nObject.defineProperty(exports, \"I8\", {\n enumerable: true,\n get: function get() {\n return _I.default;\n }\n});\nObject.defineProperty(exports, \"i8\", {\n enumerable: true,\n get: function get() {\n return _I.default;\n }\n});\nObject.defineProperty(exports, \"I16\", {\n enumerable: true,\n get: function get() {\n return _I2.default;\n }\n});\nObject.defineProperty(exports, \"i16\", {\n enumerable: true,\n get: function get() {\n return _I2.default;\n }\n});\nObject.defineProperty(exports, \"I32\", {\n enumerable: true,\n get: function get() {\n return _I3.default;\n }\n});\nObject.defineProperty(exports, \"i32\", {\n enumerable: true,\n get: function get() {\n return _I3.default;\n }\n});\nObject.defineProperty(exports, \"I64\", {\n enumerable: true,\n get: function get() {\n return _I4.default;\n }\n});\nObject.defineProperty(exports, \"i64\", {\n enumerable: true,\n get: function get() {\n return _I4.default;\n }\n});\nObject.defineProperty(exports, \"I128\", {\n enumerable: true,\n get: function get() {\n return _I5.default;\n }\n});\nObject.defineProperty(exports, \"i128\", {\n enumerable: true,\n get: function get() {\n return _I5.default;\n }\n});\nObject.defineProperty(exports, \"I256\", {\n enumerable: true,\n get: function get() {\n return _I6.default;\n }\n});\nObject.defineProperty(exports, \"i256\", {\n enumerable: true,\n get: function get() {\n return _I6.default;\n }\n});\nObject.defineProperty(exports, \"Method\", {\n enumerable: true,\n get: function get() {\n return _Method.default;\n }\n});\nObject.defineProperty(exports, \"Moment\", {\n enumerable: true,\n get: function get() {\n return _Moment.default;\n }\n});\nObject.defineProperty(exports, \"MomentOf\", {\n enumerable: true,\n get: function get() {\n return _Moment.MomentOf;\n }\n});\nObject.defineProperty(exports, \"Null\", {\n enumerable: true,\n get: function get() {\n return _Null.default;\n }\n});\nObject.defineProperty(exports, \"Origin\", {\n enumerable: true,\n get: function get() {\n return _Origin.default;\n }\n});\nObject.defineProperty(exports, \"StorageData\", {\n enumerable: true,\n get: function get() {\n return _StorageData.default;\n }\n});\nObject.defineProperty(exports, \"StorageHasher\", {\n enumerable: true,\n get: function get() {\n return _StorageHasher.default;\n }\n});\nObject.defineProperty(exports, \"StorageKey\", {\n enumerable: true,\n get: function get() {\n return _StorageKey.default;\n }\n});\nObject.defineProperty(exports, \"Text\", {\n enumerable: true,\n get: function get() {\n return _Text.default;\n }\n});\nObject.defineProperty(exports, \"Type\", {\n enumerable: true,\n get: function get() {\n return _Type.default;\n }\n});\nObject.defineProperty(exports, \"U8\", {\n enumerable: true,\n get: function get() {\n return _U.default;\n }\n});\nObject.defineProperty(exports, \"u8\", {\n enumerable: true,\n get: function get() {\n return _U.default;\n }\n});\nObject.defineProperty(exports, \"U16\", {\n enumerable: true,\n get: function get() {\n return _U2.default;\n }\n});\nObject.defineProperty(exports, \"u16\", {\n enumerable: true,\n get: function get() {\n return _U2.default;\n }\n});\nObject.defineProperty(exports, \"U32\", {\n enumerable: true,\n get: function get() {\n return _U3.default;\n }\n});\nObject.defineProperty(exports, \"u32\", {\n enumerable: true,\n get: function get() {\n return _U3.default;\n }\n});\nObject.defineProperty(exports, \"U64\", {\n enumerable: true,\n get: function get() {\n return _U4.default;\n }\n});\nObject.defineProperty(exports, \"u64\", {\n enumerable: true,\n get: function get() {\n return _U4.default;\n }\n});\nObject.defineProperty(exports, \"U128\", {\n enumerable: true,\n get: function get() {\n return _U5.default;\n }\n});\nObject.defineProperty(exports, \"u128\", {\n enumerable: true,\n get: function get() {\n return _U5.default;\n }\n});\nObject.defineProperty(exports, \"U256\", {\n enumerable: true,\n get: function get() {\n return _U6.default;\n }\n});\nObject.defineProperty(exports, \"u256\", {\n enumerable: true,\n get: function get() {\n return _U6.default;\n }\n});\nObject.defineProperty(exports, \"USize\", {\n enumerable: true,\n get: function get() {\n return _USize.default;\n }\n});\nObject.defineProperty(exports, \"usize\", {\n enumerable: true,\n get: function get() {\n return _USize.default;\n }\n});\n\nvar _AccountId = _interopRequireWildcard(require(\"./AccountId\"));\n\nvar _AccountIndex = _interopRequireDefault(require(\"./AccountIndex\"));\n\nvar _AccountInfo = _interopRequireDefault(require(\"./AccountInfo\"));\n\nvar _Address = _interopRequireDefault(require(\"./Address\"));\n\nvar _Event = _interopRequireWildcard(require(\"./Event\"));\n\nvar _EventRecord = _interopRequireWildcard(require(\"./EventRecord\"));\n\nvar _Bool = _interopRequireDefault(require(\"./Bool\"));\n\nvar _Bytes = _interopRequireDefault(require(\"./Bytes\"));\n\nvar _Data = _interopRequireDefault(require(\"./Data\"));\n\nvar _H = _interopRequireDefault(require(\"./H160\"));\n\nvar _H2 = _interopRequireDefault(require(\"./H256\"));\n\nvar _H3 = _interopRequireDefault(require(\"./H512\"));\n\nvar _Hash = _interopRequireDefault(require(\"./Hash\"));\n\nvar _I = _interopRequireDefault(require(\"./I8\"));\n\nvar _I2 = _interopRequireDefault(require(\"./I16\"));\n\nvar _I3 = _interopRequireDefault(require(\"./I32\"));\n\nvar _I4 = _interopRequireDefault(require(\"./I64\"));\n\nvar _I5 = _interopRequireDefault(require(\"./I128\"));\n\nvar _I6 = _interopRequireDefault(require(\"./I256\"));\n\nvar _Method = _interopRequireDefault(require(\"./Method\"));\n\nvar _Moment = _interopRequireWildcard(require(\"./Moment\"));\n\nvar _Null = _interopRequireDefault(require(\"./Null\"));\n\nvar _Origin = _interopRequireDefault(require(\"./Origin\"));\n\nvar _StorageData = _interopRequireDefault(require(\"./StorageData\"));\n\nvar _StorageHasher = _interopRequireDefault(require(\"./StorageHasher\"));\n\nvar _StorageKey = _interopRequireDefault(require(\"./StorageKey\"));\n\nvar _Text = _interopRequireDefault(require(\"./Text\"));\n\nvar _Type = _interopRequireDefault(require(\"./Type\"));\n\nvar _U = _interopRequireDefault(require(\"./U8\"));\n\nvar _U2 = _interopRequireDefault(require(\"./U16\"));\n\nvar _U3 = _interopRequireDefault(require(\"./U32\"));\n\nvar _U4 = _interopRequireDefault(require(\"./U64\"));\n\nvar _U5 = _interopRequireDefault(require(\"./U128\"));\n\nvar _U6 = _interopRequireDefault(require(\"./U256\"));\n\nvar _USize = _interopRequireDefault(require(\"./USize\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AccountIdOf = exports.default = void 0;\n\nvar _keyring = require(\"@polkadot/keyring\");\n\nvar _util = require(\"@polkadot/util\");\n\nvar _U8aFixed = _interopRequireDefault(require(\"../codec/U8aFixed\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name AccountId\n * @description\n * A wrapper around an AccountId/PublicKey representation. Since we are dealing with\n * underlying PublicKeys (32 bytes in length), we extend from U8aFixed which is\n * just a Uint8Array wrapper with a fixed length.\n */\nclass AccountId extends _U8aFixed.default {\n constructor() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Uint8Array();\n super(AccountId.decodeAccountId(value), 256);\n }\n\n static encode(value) {\n return (0, _keyring.encodeAddress)(value);\n }\n\n static decodeAccountId(value) {\n if ((0, _util.isU8a)(value) || Array.isArray(value)) {\n return (0, _util.u8aToU8a)(value);\n } else if ((0, _util.isHex)(value)) {\n return (0, _util.hexToU8a)(value.toString());\n } else if ((0, _util.isString)(value)) {\n return (0, _keyring.decodeAddress)(value.toString());\n }\n\n return value;\n }\n /**\n * @description Compares the value of the input to see if there is a match\n */\n\n\n eq(other) {\n return super.eq(AccountId.decodeAccountId(other));\n }\n /**\n * @description Converts the Object to JSON, typically used for RPC transfers\n */\n\n\n toJSON() {\n return this.toString();\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n return AccountId.encode(this);\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return 'AccountId';\n }\n\n}\n/**\n * @name AccountIdOf\n * @description\n * The Substrate AccountIdOf representation as a [[AccountId]].\n */\n\n\nexports.default = AccountId;\n\nclass AccountIdOf extends AccountId {}\n\nexports.AccountIdOf = AccountIdOf;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _U8a = _interopRequireDefault(require(\"./U8a\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name U8aFixed\n * @description\n * A U8a that manages a a sequence of bytes up to the specified bitLength. Not meant\n * to be used directly, rather is should be subclassed with the specific lengths.\n */\nclass U8aFixed extends _U8a.default {\n constructor() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Uint8Array();\n let bitLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 256;\n super(U8aFixed.decodeU8aFixed(value, bitLength));\n }\n\n static decodeU8aFixed(value) {\n let bitLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 256;\n\n if ((0, _util.isU8a)(value)) {\n // ensure that we have an actual u8a with the full length as specified by\n // the bitLength input (padded with zeros as required)\n const byteLength = bitLength / 8;\n const sub = value.subarray(0, byteLength);\n\n if (sub.length === byteLength) {\n return sub;\n }\n\n const u8a = new Uint8Array(byteLength);\n u8a.set(sub, 0);\n return u8a;\n } else if (Array.isArray(value) || (0, _util.isString)(value)) {\n return U8aFixed.decodeU8aFixed((0, _util.u8aToU8a)(value), bitLength);\n }\n\n return value;\n }\n /**\n * @description Returns the number of bits in the value\n */\n\n\n bitLength() {\n return this.length * 8;\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n // FIEXME We don't cater for this in createType\n return \"[u8;\".concat(this.length, \"]\");\n }\n\n}\n\nexports.default = U8aFixed;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.ENUMSET_SIZE = void 0;\n\nvar _bn = _interopRequireDefault(require(\"bn.js\"));\n\nvar _keyring = require(\"@polkadot/keyring\");\n\nvar _util = require(\"@polkadot/util\");\n\nvar _U = _interopRequireDefault(require(\"./U32\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst ENUMSET_SIZE = new _bn.default(64);\nexports.ENUMSET_SIZE = ENUMSET_SIZE;\nconst PREFIX_1BYTE = 0xef;\nconst PREFIX_2BYTE = 0xfc;\nconst PREFIX_4BYTE = 0xfd;\nconst PREFIX_8BYTE = 0xfe;\nconst MAX_1BYTE = new _bn.default(PREFIX_1BYTE);\nconst MAX_2BYTE = new _bn.default(1).shln(16);\nconst MAX_4BYTE = new _bn.default(1).shln(32);\n/**\n * @name AccountIndex\n * @description\n * A wrapper around an AccountIndex, which is a shortened, variable-length encoding\n * for an Account. We extends from [[U32]] to provide the number-like properties.\n */\n\nclass AccountIndex extends _U.default {\n constructor() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new _bn.default(0);\n super(AccountIndex.decodeAccountIndex(value));\n }\n\n static decodeAccountIndex(value) {\n if (value instanceof AccountIndex) {\n // `value.toBn()` on AccountIndex returns a pure BN (i.e. not an\n // AccountIndex), which has the initial `toString()` implementation.\n return value.toBn();\n } else if ((0, _util.isBn)(value) || (0, _util.isNumber)(value) || (0, _util.isHex)(value) || (0, _util.isU8a)(value)) {\n return value;\n }\n\n return AccountIndex.decodeAccountIndex((0, _keyring.decodeAddress)(value));\n }\n\n static calcLength(_value) {\n const value = (0, _util.bnToBn)(_value);\n\n if (value.lte(MAX_1BYTE)) {\n return 1;\n } else if (value.lt(MAX_2BYTE)) {\n return 2;\n } else if (value.lt(MAX_4BYTE)) {\n return 4;\n }\n\n return 8;\n }\n\n static readLength(input) {\n const first = input[0];\n\n if (first === PREFIX_2BYTE) {\n return [1, 2];\n } else if (first === PREFIX_4BYTE) {\n return [1, 4];\n } else if (first === PREFIX_8BYTE) {\n return [1, 8];\n }\n\n return [0, 1];\n }\n\n static writeLength(input) {\n switch (input.length) {\n case 2:\n return new Uint8Array([PREFIX_2BYTE]);\n\n case 4:\n return new Uint8Array([PREFIX_4BYTE]);\n\n case 8:\n return new Uint8Array([PREFIX_8BYTE]);\n\n default:\n return new Uint8Array([]);\n }\n }\n /**\n * @description Compares the value of the input to see if there is a match\n */\n\n\n eq(other) {\n // shortcut for BN or Number, don't create an object\n if ((0, _util.isBn)(other) || (0, _util.isNumber)(other)) {\n return super.eq(other);\n } // convert and compare\n\n\n return super.eq(new AccountIndex(other));\n }\n /**\n * @description Converts the Object to JSON, typically used for RPC transfers\n */\n\n\n toJSON() {\n return this.toString();\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n const length = AccountIndex.calcLength(this);\n return (0, _keyring.encodeAddress)(this.toU8a().subarray(0, length));\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return 'AccountIndex';\n }\n\n}\n\nexports.default = AccountIndex;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Bytes = _interopRequireDefault(require(\"./Bytes\"));\n\nvar _U = _interopRequireDefault(require(\"./U64\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name AccountInfo\n * @description\n * An Account information structure for contracts\n */\nclass AccountInfo extends _Struct.default {\n constructor(value) {\n super({\n trieId: _Bytes.default,\n currentMemStored: _U.default\n }, value);\n }\n /**\n * @description The size of stored value in octet\n */\n\n\n get currentMemStored() {\n return this.get('currentMemStored');\n }\n /**\n * @description Unique ID for the subtree encoded as a byte\n */\n\n\n get trieId() {\n return this.get('trieId');\n }\n\n}\n\nexports.default = AccountInfo;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _UInt = _interopRequireDefault(require(\"../codec/UInt\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name U64\n * @description\n * A 64-bit unsigned integer\n */\nclass U64 extends _UInt.default {\n constructor(value) {\n super(value, 64);\n }\n\n}\n\nexports.default = U64;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.ACCOUNT_ID_PREFIX = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _keyring = require(\"@polkadot/keyring\");\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Base = _interopRequireDefault(require(\"../codec/Base\"));\n\nvar _AccountId = _interopRequireDefault(require(\"./AccountId\"));\n\nvar _AccountIndex = _interopRequireDefault(require(\"./AccountIndex\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst ACCOUNT_ID_PREFIX = new Uint8Array([0xff]);\n/**\n * @name Address\n * @description\n * A wrapper around an AccountId and/or AccountIndex that is encoded with a prefix.\n * Since we are dealing with underlying publicKeys (or shorter encoded addresses),\n * we extend from Base with an AccountId/AccountIndex wrapper. Basically the Address\n * is encoded as `[ , ...publicKey/...bytes ]` as per spec\n */\n\nexports.ACCOUNT_ID_PREFIX = ACCOUNT_ID_PREFIX;\n\nclass Address extends _Base.default {\n constructor() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Uint8Array();\n super(Address.decodeAddress(value));\n }\n\n static decodeAddress(value) {\n if (value instanceof _AccountId.default || value instanceof _AccountIndex.default) {\n return value;\n } else if ((0, _util.isBn)(value) || (0, _util.isNumber)(value)) {\n return new _AccountIndex.default(value);\n } else if (value instanceof Address) {\n return value.raw;\n } else if (Array.isArray(value)) {\n return Address.decodeAddress((0, _util.u8aToU8a)(value));\n } else if ((0, _util.isU8a)(value)) {\n // This allows us to instantiate an address with a raw publicKey. Do this first before\n // we checking the first byte, otherwise we may split an already-existent valid address\n if (value.length === 32) {\n return new _AccountId.default(value);\n } else if (value[0] === 0xff) {\n return new _AccountId.default(value.subarray(1));\n }\n\n const _AccountIndex$readLen = _AccountIndex.default.readLength(value),\n _AccountIndex$readLen2 = (0, _slicedToArray2.default)(_AccountIndex$readLen, 2),\n offset = _AccountIndex$readLen2[0],\n length = _AccountIndex$readLen2[1];\n\n return new _AccountIndex.default((0, _util.u8aToBn)(value.subarray(offset, offset + length), true));\n } else if ((0, _util.isHex)(value)) {\n return Address.decodeAddress((0, _util.hexToU8a)(value));\n }\n\n const decoded = (0, _keyring.decodeAddress)(value);\n return decoded.length === 32 ? new _AccountId.default(decoded) : new _AccountIndex.default((0, _util.u8aToBn)(decoded, true));\n }\n /**\n * @description The length of the value when encoded as a Uint8Array\n */\n\n\n get encodedLength() {\n const rawLength = this.rawLength;\n return rawLength + ( // for 1 byte AccountIndexes, we are not adding a specific prefix\n rawLength > 1 ? 1 : 0);\n }\n /**\n * @description Checks if the value is an empty value\n */\n\n\n get isEmpty() {\n return this.raw.isEmpty;\n }\n /**\n * @description The length of the raw value, either AccountIndex or AccountId\n */\n\n\n get rawLength() {\n return this.raw instanceof _AccountIndex.default ? _AccountIndex.default.calcLength(this.raw) : this.raw.encodedLength;\n }\n /**\n * @description Compares the value of the input to see if there is a match\n */\n\n\n eq(other) {\n return this.raw.eq(other);\n }\n /**\n * @description Returns a hex string representation of the value\n */\n\n\n toHex() {\n return (0, _util.u8aToHex)(this.toU8a());\n }\n /**\n * @description Converts the Object to JSON, typically used for RPC transfers\n */\n\n\n toJSON() {\n return this.raw.toJSON();\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n return this.raw.toString();\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return 'Address';\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n const encoded = this.raw.toU8a().subarray(0, this.rawLength);\n return isBare ? encoded : (0, _util.u8aConcat)(this.raw instanceof _AccountIndex.default ? _AccountIndex.default.writeLength(encoded) : ACCOUNT_ID_PREFIX, encoded);\n }\n\n}\n\nexports.default = Address;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.EventId = exports.EventData = exports.EventIndex = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Tuple = _interopRequireDefault(require(\"../codec/Tuple\"));\n\nvar _U8aFixed = _interopRequireDefault(require(\"../codec/U8aFixed\"));\n\nvar _createType = require(\"../codec/createType\");\n\nvar _Null = _interopRequireDefault(require(\"./Null\"));\n\nvar _U = _interopRequireDefault(require(\"./U32\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst EventTypes = {};\n/**\n * @name EventIndex\n * @description\n * The Substrate EventIndex representation as a [[U32]].\n */\n\nclass EventIndex extends _U.default {}\n/**\n * @name EventData\n * @description\n * Wrapper for the actual data that forms part of an [[Event]]\n */\n\n\nexports.EventIndex = EventIndex;\n\nclass EventData extends _Tuple.default {\n constructor(Types, value, typeDef, meta, section, method) {\n super(Types, value);\n this._meta = void 0;\n this._method = void 0;\n this._section = void 0;\n this._typeDef = void 0;\n this._meta = meta;\n this._method = method;\n this._section = section;\n this._typeDef = typeDef;\n }\n /**\n * @description The wrapped [[EventMetadata]]\n */\n\n\n get meta() {\n return this._meta;\n }\n /**\n * @description The method as a string\n */\n\n\n get method() {\n return this._method;\n }\n /**\n * @description The section as a string\n */\n\n\n get section() {\n return this._section;\n }\n /**\n * @description The [[TypeDef]] for this event\n */\n\n\n get typeDef() {\n return this._typeDef;\n }\n\n}\n/**\n * @name EventId\n * @description\n * This follows the same approach as in [[Method]], we have the `[sectionIndex, methodIndex]` pairing\n * that indicates the actual event fired\n */\n\n\nexports.EventData = EventData;\n\nclass EventId extends _U8aFixed.default {\n constructor(value) {\n super(value, 16);\n }\n\n}\n/**\n * @name Event\n * @description\n * A representation of a system event. These are generated via the [[Metadata]] interfaces and\n * specific to a specific Substrate runtime\n */\n\n\nexports.EventId = EventId;\n\nclass Event extends _Struct.default {\n // Currently we _only_ decode from Uint8Array, since we expect it to\n // be used via EventRecord\n constructor(_value) {\n const _Event$decodeEvent = Event.decodeEvent(_value),\n DataType = _Event$decodeEvent.DataType,\n value = _Event$decodeEvent.value;\n\n super({\n index: EventId,\n data: DataType\n }, value);\n }\n\n static decodeEvent() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Uint8Array();\n\n if (!value.length) {\n return {\n DataType: _Null.default\n };\n }\n\n const index = value.subarray(0, 2);\n const DataType = EventTypes[index.toString()];\n (0, _util.assert)(!(0, _util.isUndefined)(DataType), \"Unable to decode event for index \".concat((0, _util.u8aToHex)(index)));\n return {\n DataType,\n value: {\n index,\n data: value.subarray(2)\n }\n };\n } // This is called/injected by the API on init, allowing a snapshot of\n // the available system events to be used in lookups\n\n\n static injectMetadata(metadata) {\n metadata.asV4.modules.filter(section => section.events.isSome).forEach((section, sectionIndex) => {\n const sectionName = (0, _util.stringCamelCase)(section.name.toString());\n section.events.unwrap().forEach((meta, methodIndex) => {\n const methodName = meta.name.toString();\n const eventIndex = new Uint8Array([sectionIndex, methodIndex]);\n const typeDef = meta.args.map(arg => (0, _createType.getTypeDef)(arg));\n const Types = typeDef.map(_createType.getTypeClass);\n EventTypes[eventIndex.toString()] = class extends EventData {\n constructor(value) {\n super(Types, value, typeDef, meta, sectionName, methodName);\n }\n\n };\n });\n });\n }\n /**\n * @description The wrapped [[EventData]]\n */\n\n\n get data() {\n return this.get('data');\n }\n /**\n * @description The [[EventId]], identifying the raw event\n */\n\n\n get index() {\n return this.get('index');\n }\n /**\n * @description The [[EventMetadata]] with the documentation\n */\n\n\n get meta() {\n return this.data.meta;\n }\n /**\n * @description The method string identifying the event\n */\n\n\n get method() {\n return this.data.method;\n }\n /**\n * @description The section string identifying the event\n */\n\n\n get section() {\n return this.data.section;\n }\n /**\n * @description The [[TypeDef]] for the event\n */\n\n\n get typeDef() {\n return this.data.typeDef;\n }\n\n}\n\nexports.default = Event;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.EventRecord_0_76 = exports.Phase = exports.Finalization = exports.ApplyExtrinsic = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Enum = _interopRequireDefault(require(\"../codec/Enum\"));\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Vector = _interopRequireDefault(require(\"../codec/Vector\"));\n\nvar _Hash = _interopRequireDefault(require(\"./Hash\"));\n\nvar _Event = _interopRequireDefault(require(\"./Event\"));\n\nvar _Null = _interopRequireDefault(require(\"./Null\"));\n\nvar _U = _interopRequireDefault(require(\"./U32\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name ApplyExtrinsic\n * @description\n * The [[Phase]] where the extrinsic is applied\n */\nclass ApplyExtrinsic extends _U.default {}\n/**\n * @name Finalization\n * @description\n * The [[Phase]] where the extrinsic is being Finalized\n */\n\n\nexports.ApplyExtrinsic = ApplyExtrinsic;\n\nclass Finalization extends _Null.default {}\n/**\n * @name Phase\n * @description\n * An [[Enum]] that indicates the specific phase where the [[EventRecord]] was generated\n */\n\n\nexports.Finalization = Finalization;\n\nclass Phase extends _Enum.default {\n constructor(value, index) {\n super({\n ApplyExtrinsic,\n Finalization\n }, value, index);\n }\n /**\n * @description Returns the item as a [[ApplyExtrinsic]]\n */\n\n\n get asApplyExtrinsic() {\n (0, _util.assert)(this.isApplyExtrinsic, \"Cannot convert '\".concat(this.type, \"' via asApplyExtrinsic\"));\n return this.value;\n }\n /**\n * @description Returns the item as a [[Finalization]]\n */\n\n\n get asFinalization() {\n (0, _util.assert)(this.isFinalization, \"Cannot convert '\".concat(this.type, \"' via asFinalization\"));\n return this.value;\n }\n /**\n * @description true when this is a ApplyExtrinsic\n */\n\n\n get isApplyExtrinsic() {\n return this.type === 'ApplyExtrinsic';\n }\n /**\n * @description true when this is a ApplyExtrinsic\n */\n\n\n get isFinalization() {\n return this.type === 'Finalization';\n }\n\n}\n/**\n * @name EventRecord_0_76\n * @description\n * A record for an [[Event]] (as specified by [[Metadata]]) with the specific [[Phase]] of\n * application.\n */\n// tslint:disable-next-line\n\n\nexports.Phase = Phase;\n\nclass EventRecord_0_76 extends _Struct.default {\n constructor(value) {\n super({\n phase: Phase,\n event: _Event.default\n }, value);\n }\n /**\n * @description The [[Event]] this record refers to\n */\n\n\n get event() {\n return this.get('event');\n }\n /**\n * @description The [[Phase]] where the event was generated\n */\n\n\n get phase() {\n return this.get('phase');\n }\n /**\n * @description The [[Hash]] topics for this event (empty, compat)\n */\n\n\n get topics() {\n return new (_Vector.default.with(_Hash.default))();\n }\n\n}\n/**\n * @name EventRecord\n * @description\n * A record for an [[Event]] (as specified by [[Metadata]]) with the specific [[Phase]] of\n * application.\n */\n\n\nexports.EventRecord_0_76 = EventRecord_0_76;\n\nclass EventRecord extends _Struct.default {\n constructor(value) {\n super({\n phase: Phase,\n event: _Event.default,\n topics: _Vector.default.with(_Hash.default)\n }, value);\n }\n\n /**\n * @description The [[Event]] this record refers to\n */\n get event() {\n return this.get('event');\n }\n /**\n * @description The [[Phase]] where the event was generated\n */\n\n\n get phase() {\n return this.get('phase');\n }\n /**\n * @description The [[Hash]] topics for this event\n */\n\n\n get topics() {\n return this.get('topics');\n }\n\n}\n\nexports.default = EventRecord;\nEventRecord.Fallback = EventRecord_0_76;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _H = _interopRequireDefault(require(\"./H256\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Hash\n * @description\n * The default hash that is used accross the system. It is basically just a thin\n * wrapper around [[H256]], representing a 32-byte blake2b (Substrate) value\n */\nclass Hash extends _H.default {}\n\nexports.default = Hash;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _U8aFixed = _interopRequireDefault(require(\"../codec/U8aFixed\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name H256\n * @description\n * Hash containing 256 bits (32 bytes), typically used in blocks, extrinsics and\n * as a sane default for fixed-length hash representations.\n */\nclass H256 extends _U8aFixed.default {\n constructor(value) {\n super(value, 256);\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return 'H256';\n }\n\n}\n\nexports.default = H256;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _U8a = _interopRequireDefault(require(\"../codec/U8a\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Data\n * @description\n * A raw data structure. It is just an encoding of a U8a, without any length encoding\n */\nclass Data extends _U8a.default {\n /**\n * @description Returns the base runtime type name for this instance\n */\n toRawType() {\n return 'Data';\n }\n\n}\n\nexports.default = Data;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _U8aFixed = _interopRequireDefault(require(\"../codec/U8aFixed\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name H160\n * @description\n * Hash containing 160 bits (20 bytes), typically used in blocks, extrinsics and\n * as a sane default for fixed-length hash representations.\n */\nclass H160 extends _U8aFixed.default {\n constructor(value) {\n super(value, 160);\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return 'H160';\n }\n\n}\n\nexports.default = H160;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _U8aFixed = _interopRequireDefault(require(\"../codec/U8aFixed\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name H512\n * @description\n * Hash containing 512 bits (64 bytes), typically used for signatures\n */\nclass H512 extends _U8aFixed.default {\n constructor(value) {\n super(value, 512);\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return 'H512';\n }\n\n}\n\nexports.default = H512;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Int = _interopRequireDefault(require(\"../codec/Int\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name I8\n * @description\n * An 8-bit signed integer\n */\nclass I8 extends _Int.default {\n constructor(value) {\n super(value, 8);\n }\n\n}\n\nexports.default = I8;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _AbstractInt = _interopRequireWildcard(require(\"./AbstractInt\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Int\n * @description\n * A generic signed integer codec. For Substrate all numbers are Little Endian encoded,\n * this handles the encoding and decoding of those numbers. Upon construction\n * the bitLength is provided and any additional use keeps the number to this\n * length. This extends `BN`, so all methods available on a normal `BN` object\n * is available here.\n * @noInheritDoc\n */\nclass Int extends _AbstractInt.default {\n constructor() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let bitLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _AbstractInt.DEFAULT_UINT_BITS;\n let isHexJson = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n super(true, value, bitLength, isHexJson);\n }\n /**\n * @description Returns a hex string representation of the value\n */\n\n\n toHex() {\n let isLe = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return (0, _util.bnToHex)(this, {\n bitLength: this._bitLength,\n isLe,\n isNegative: true\n });\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return \"i\".concat(this._bitLength);\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n return (0, _util.bnToU8a)(this, {\n bitLength: this._bitLength,\n isLe: true,\n isNegative: true\n });\n }\n\n}\n\nexports.default = Int;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Int = _interopRequireDefault(require(\"../codec/Int\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name I16\n * @description\n * A 16-bit signed integer\n */\nclass I16 extends _Int.default {\n constructor(value) {\n super(value, 16);\n }\n\n}\n\nexports.default = I16;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Int = _interopRequireDefault(require(\"../codec/Int\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name I32\n * @description\n * A 32-bit signed integer\n */\nclass I32 extends _Int.default {\n constructor(value) {\n super(value, 32);\n }\n\n}\n\nexports.default = I32;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Int = _interopRequireDefault(require(\"../codec/Int\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name I64\n * @description\n * A 64-bit signed integer\n */\nclass I64 extends _Int.default {\n constructor(value) {\n super(value, 64);\n }\n\n}\n\nexports.default = I64;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Int = _interopRequireDefault(require(\"../codec/Int\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name I128\n * @description\n * A 128-bit signed integer\n */\nclass I128 extends _Int.default {\n constructor(value) {\n super(value, 128);\n }\n\n}\n\nexports.default = I128;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Int = _interopRequireDefault(require(\"../codec/Int\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name I256\n * @description\n * A 256-bit signed integer\n */\nclass I256 extends _Int.default {\n constructor(value) {\n super(value, 256);\n }\n\n}\n\nexports.default = I256;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.MethodIndex = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _createType = require(\"../codec/createType\");\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _U8aFixed = _interopRequireDefault(require(\"../codec/U8aFixed\"));\n\n// Copyright 2017-2019 @polkadot/extrinsics authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst FN_UNKNOWN = {\n method: 'unknown',\n section: 'unknown'\n};\nconst injected = {};\n/**\n * @name MethodIndex\n * @description\n * A wrapper around the `[sectionIndex, methodIndex]` value that uniquely identifies a method\n */\n\nclass MethodIndex extends _U8aFixed.default {\n constructor(value) {\n super(value, 16);\n }\n\n}\n/**\n * @name Method\n * @description\n * Extrinsic function descriptor, as defined in\n * {@link https://github.com/paritytech/wiki/blob/master/Extrinsic.md#the-extrinsic-format-for-node}.\n */\n\n\nexports.MethodIndex = MethodIndex;\n\nclass Method extends _Struct.default {\n constructor(value, meta) {\n const decoded = Method.decodeMethod(value, meta);\n super({\n callIndex: MethodIndex,\n args: _Struct.default.with(decoded.argsDef)\n }, decoded);\n this._meta = void 0;\n this._meta = decoded.meta;\n }\n /**\n * Decode input to pass into constructor.\n *\n * @param value - Value to decode, one of:\n * - hex\n * - Uint8Array\n * - {@see DecodeMethodInput}\n * @param _meta - Metadata to use, so that `injectMethods` lookup is not\n * necessary.\n */\n\n\n static decodeMethod() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Uint8Array();\n\n let _meta = arguments.length > 1 ? arguments[1] : undefined;\n\n if ((0, _util.isHex)(value)) {\n return Method.decodeMethod((0, _util.hexToU8a)(value), _meta);\n } else if ((0, _util.isU8a)(value)) {\n // The first 2 bytes are the callIndex\n const callIndex = value.subarray(0, 2); // Find metadata with callIndex\n\n const meta = _meta || Method.findFunction(callIndex).meta;\n\n return {\n args: value.subarray(2),\n argsDef: Method.getArgsDef(meta),\n callIndex,\n meta\n };\n } else if ((0, _util.isObject)(value) && value.callIndex && value.args) {\n // destructure value, we only pass args/methodsIndex out\n const args = value.args,\n callIndex = value.callIndex; // Get the correct lookupIndex\n\n const lookupIndex = callIndex instanceof MethodIndex ? callIndex.toU8a() : callIndex; // Find metadata with callIndex\n\n const meta = _meta || Method.findFunction(lookupIndex).meta;\n\n return {\n args,\n argsDef: Method.getArgsDef(meta),\n meta,\n callIndex\n };\n }\n\n throw new Error(\"Method: Cannot decode value '\".concat(value, \"' of type \").concat(typeof value));\n } // If the extrinsic function has an argument of type `Origin`, we ignore it\n\n\n static filterOrigin(meta) {\n // FIXME should be `arg.type !== Origin`, but doesn't work...\n return meta ? meta.args.filter((_ref) => {\n let type = _ref.type;\n return type.toString() !== 'Origin';\n }) : [];\n } // We could only inject the meta (see injectMethods below) and then do a\n // meta-only lookup via\n //\n // metadata.modules[callIndex[0]].module.call.functions[callIndex[1]]\n //\n // As a convenience helper though, we return the full constructor function,\n // which includes the meta, name, section & actual interface for calling\n\n\n static findFunction(callIndex) {\n (0, _util.assert)(Object.keys(injected).length > 0, 'Calling Method.findFunction before extrinsics have been injected.');\n return injected[callIndex.toString()] || FN_UNKNOWN;\n }\n /**\n * Get a mapping of `argument name -> argument type` for the function, from\n * its metadata.\n *\n * @param meta - The function metadata used to get the definition.\n */\n\n\n static getArgsDef(meta) {\n return Method.filterOrigin(meta).reduce((result, _ref2) => {\n let name = _ref2.name,\n type = _ref2.type;\n const Type = (0, _createType.getTypeClass)((0, _createType.getTypeDef)(type));\n result[name.toString()] = Type;\n return result;\n }, {});\n } // This is called/injected by the API on init, allowing a snapshot of\n // the available system extrinsics to be used in lookups\n\n\n static injectMethods(moduleMethods) {\n Object.values(moduleMethods).forEach(methods => Object.values(methods).forEach(method => injected[method.callIndex.toString()] = method));\n }\n /**\n * @description The arguments for the function call\n */\n\n\n get args() {\n // FIXME This should return a Struct instead of an Array\n return [...this.get('args').values()];\n }\n /**\n * @description Thge argument defintions\n */\n\n\n get argsDef() {\n return Method.getArgsDef(this.meta);\n }\n /**\n * @description The encoded `[sectionIndex, methodIndex]` identifier\n */\n\n\n get callIndex() {\n return this.get('callIndex').toU8a();\n }\n /**\n * @description The encoded data\n */\n\n\n get data() {\n return this.get('args').toU8a();\n }\n /**\n * @description `true` if the `Origin` type is on the method (extrinsic method)\n */\n\n\n get hasOrigin() {\n const firstArg = this.meta.args[0];\n return !!firstArg && firstArg.type.toString() === 'Origin';\n }\n /**\n * @description The [[FunctionMetadata]]\n */\n\n\n get meta() {\n return this._meta;\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return 'Call';\n }\n\n}\n\nexports.default = Method;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MomentOf = exports.default = void 0;\n\nvar _bn = _interopRequireDefault(require(\"bn.js\"));\n\nvar _util = require(\"@polkadot/util\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst BITLENGTH = 64;\n/**\n * @name Moment\n * @description\n * A wrapper around seconds/timestamps. Internally the representation only has\n * second precicion (aligning with Rust), so any numbers passed an/out are always\n * per-second. For any encoding/decoding the 1000 multiplier would be applied to\n * get it in line with JavaScript formats. It extends the base JS `Date` object\n * and has all the methods available that are applicable to any `Date`\n * @noInheritDoc\n */\n\nclass Moment extends Date {\n // FIXME Remove this once we convert all types out of Base\n constructor() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n super(Moment.decodeMoment(value));\n this.raw = void 0;\n this.raw = this;\n }\n\n static decodeMoment(value) {\n if (value instanceof Date) {\n return value;\n } else if ((0, _util.isU8a)(value)) {\n value = (0, _util.u8aToBn)(value.subarray(0, BITLENGTH / 8), true);\n } else if ((0, _util.isString)(value)) {\n value = new _bn.default(value, 10, 'le');\n }\n\n return new Date((0, _util.bnToBn)(value).toNumber() * 1000);\n }\n /**\n * @description The length of the value when encoded as a Uint8Array\n */\n\n\n get encodedLength() {\n return BITLENGTH / 8;\n }\n /**\n * @description Checks if the value is an empty value\n */\n\n\n get isEmpty() {\n return this.getTime() === 0;\n }\n /**\n * @description Compares the value of the input to see if there is a match\n */\n\n\n eq(other) {\n return Moment.decodeMoment(other).getTime() === this.getTime();\n }\n /**\n * @description Returns the number of bits in the value\n */\n\n\n bitLength() {\n return BITLENGTH;\n }\n /**\n * @description Returns the BN representation of the timestamp\n */\n\n\n toBn() {\n return new _bn.default(this.toNumber());\n }\n /**\n * @description Returns a hex string representation of the value\n */\n\n\n toHex() {\n let isLe = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return (0, _util.bnToHex)(this.toBn(), {\n bitLength: BITLENGTH,\n isLe,\n isNegative: false\n });\n }\n /**\n * @description Converts the Object to JSON, typically used for RPC transfers\n */\n\n\n toJSON() {\n return this.toNumber();\n }\n /**\n * @description Returns the number representation for the timestamp\n */\n\n\n toNumber() {\n return Math.ceil(this.getTime() / 1000);\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return 'Moment';\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n // only included here since we do not inherit docs\n return super.toString();\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n return (0, _util.bnToU8a)(this.toNumber(), BITLENGTH, true);\n }\n\n}\n/**\n * @name MomentOf\n * @description\n * The Substrate MomentOf representation as a [[Moment]].\n */\n\n\nexports.default = Moment;\n\nclass MomentOf extends Moment {}\n\nexports.MomentOf = MomentOf;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Null = _interopRequireDefault(require(\"./Null\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Origin\n * @description\n * Where Origin occurs, it should be ignored as an internal-only value, so it should\n * never actually be constructed\n */\nclass Origin extends _Null.default {\n constructor() {\n super();\n throw new Error('Origin should not be constructed, it is only a placeholder for compatibility');\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return 'Origin'; // yes, we cannot instantiate, but for consistency\n }\n\n}\n\nexports.default = Origin;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _toArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toArray\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Bytes = _interopRequireDefault(require(\"./Bytes\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name StorageKey\n * @description\n * A representation of a storage key (typically hashed) in the system. It can be\n * constructed by passing in a raw key or a StorageFunction with (optional) arguments.\n */\nclass StorageKey extends _Bytes.default {\n constructor(value) {\n const _StorageKey$decodeSto = StorageKey.decodeStorageKey(value),\n key = _StorageKey$decodeSto.key,\n method = _StorageKey$decodeSto.method,\n section = _StorageKey$decodeSto.section;\n\n super(key);\n this._meta = void 0;\n this._method = void 0;\n this._outputType = void 0;\n this._section = void 0;\n this._meta = StorageKey.getMeta(value);\n this._method = method;\n this._outputType = StorageKey.getType(value);\n this._section = section;\n }\n\n static decodeStorageKey(value) {\n if (value instanceof StorageKey) {\n return {\n key: value,\n method: value.method,\n section: value.section\n };\n } else if (!value || (0, _util.isString)(value) || (0, _util.isU8a)(value)) {\n // let Bytes handle these inputs\n return {\n key: value\n };\n } else if ((0, _util.isFunction)(value)) {\n return {\n key: value(),\n method: value.method,\n section: value.section\n };\n } else if (Array.isArray(value)) {\n const _ref = value,\n _ref2 = (0, _toArray2.default)(_ref),\n fn = _ref2[0],\n arg = _ref2.slice(1);\n\n (0, _util.assert)((0, _util.isFunction)(fn), 'Expected function input for key construction');\n return {\n key: fn(...arg),\n method: fn.method,\n section: fn.section\n };\n }\n\n throw new Error(\"Unable to convert input \".concat(value, \" to StorageKey\"));\n }\n\n static getMeta(value) {\n if (value instanceof StorageKey) {\n return value.meta;\n } else if ((0, _util.isFunction)(value)) {\n return value.meta;\n } else if (Array.isArray(value)) {\n const _value = (0, _slicedToArray2.default)(value, 1),\n fn = _value[0];\n\n return fn.meta;\n }\n\n return undefined;\n }\n\n static getType(value) {\n if (value instanceof StorageKey) {\n return value.outputType;\n } else if ((0, _util.isFunction)(value)) {\n return value.meta.type.toString();\n } else if (Array.isArray(value)) {\n const _value2 = (0, _slicedToArray2.default)(value, 1),\n fn = _value2[0];\n\n return fn.meta.type.toString();\n }\n\n return undefined;\n }\n /**\n * @description The metadata or `undefined` when not available\n */\n\n\n get meta() {\n return this._meta;\n }\n /**\n * @description The key method or `undefined` when not specified\n */\n\n\n get method() {\n return this._method;\n }\n /**\n * @description The output type, `null` when not available\n */\n\n\n get outputType() {\n return this._outputType;\n }\n /**\n * @description The key section or `undefined` when not specified\n */\n\n\n get section() {\n return this._section;\n }\n\n}\n\nexports.default = StorageKey;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || nonIterableRest();\n}\n\nmodule.exports = _toArray;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _UInt = _interopRequireDefault(require(\"../codec/UInt\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name U8\n * @description\n * An 8-bit unsigned integer\n */\nclass U8 extends _UInt.default {\n constructor(value) {\n super(value, 8);\n }\n\n}\n\nexports.default = U8;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _UInt = _interopRequireDefault(require(\"../codec/UInt\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name U128\n * @description\n * A 128-bit unsigned integer\n */\nclass U128 extends _UInt.default {\n constructor(value) {\n super(value, 128);\n }\n\n}\n\nexports.default = U128;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _UInt = _interopRequireDefault(require(\"../codec/UInt\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name U256\n * @description\n * A 256-bit unsigned integer\n */\nclass U256 extends _UInt.default {\n constructor(value) {\n super(value, 256);\n }\n\n}\n\nexports.default = U256;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _U = _interopRequireDefault(require(\"./U32\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name USize\n * @description\n * A System default unsigned number, typically used in RPC to report non-consensus\n * data. It is a wrapper for [[U32]] as a WASM default (as generated by Rust bindings)\n */\nclass USize extends _U.default {\n /**\n * @description Returns the base runtime type name for this instance\n */\n toRawType() {\n return 'usize';\n }\n\n}\n\nexports.default = USize;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Block\", {\n enumerable: true,\n get: function get() {\n return _Block.default;\n }\n});\nObject.defineProperty(exports, \"ChainProperties\", {\n enumerable: true,\n get: function get() {\n return _ChainProperties.default;\n }\n});\nObject.defineProperty(exports, \"Digest\", {\n enumerable: true,\n get: function get() {\n return _Digest.default;\n }\n});\nObject.defineProperty(exports, \"DigestItem\", {\n enumerable: true,\n get: function get() {\n return _Digest.DigestItem;\n }\n});\nObject.defineProperty(exports, \"ExtrinsicStatus\", {\n enumerable: true,\n get: function get() {\n return _ExtrinsicStatus.default;\n }\n});\nObject.defineProperty(exports, \"Header\", {\n enumerable: true,\n get: function get() {\n return _Header.default;\n }\n});\nObject.defineProperty(exports, \"Health\", {\n enumerable: true,\n get: function get() {\n return _Health.default;\n }\n});\nObject.defineProperty(exports, \"Json\", {\n enumerable: true,\n get: function get() {\n return _Json.default;\n }\n});\nObject.defineProperty(exports, \"NetworkState\", {\n enumerable: true,\n get: function get() {\n return _NetworkState.default;\n }\n});\nObject.defineProperty(exports, \"PeerInfo\", {\n enumerable: true,\n get: function get() {\n return _PeerInfo.default;\n }\n});\nObject.defineProperty(exports, \"PendingExtrinsics\", {\n enumerable: true,\n get: function get() {\n return _PendingExtrinsics.default;\n }\n});\nObject.defineProperty(exports, \"RuntimeVersion\", {\n enumerable: true,\n get: function get() {\n return _RuntimeVersion.default;\n }\n});\nObject.defineProperty(exports, \"SignedBlock\", {\n enumerable: true,\n get: function get() {\n return _SignedBlock.default;\n }\n});\nObject.defineProperty(exports, \"StorageChangeSet\", {\n enumerable: true,\n get: function get() {\n return _StorageChangeSet.default;\n }\n});\n\nvar _Block = _interopRequireDefault(require(\"./Block\"));\n\nvar _ChainProperties = _interopRequireDefault(require(\"./ChainProperties\"));\n\nvar _Digest = _interopRequireWildcard(require(\"./Digest\"));\n\nvar _ExtrinsicStatus = _interopRequireDefault(require(\"./ExtrinsicStatus\"));\n\nvar _Header = _interopRequireDefault(require(\"./Header\"));\n\nvar _Health = _interopRequireDefault(require(\"./Health\"));\n\nvar _Json = _interopRequireDefault(require(\"./Json\"));\n\nvar _NetworkState = _interopRequireDefault(require(\"./NetworkState\"));\n\nvar _PeerInfo = _interopRequireDefault(require(\"./PeerInfo\"));\n\nvar _PendingExtrinsics = _interopRequireDefault(require(\"./PendingExtrinsics\"));\n\nvar _RuntimeVersion = _interopRequireDefault(require(\"./RuntimeVersion\"));\n\nvar _SignedBlock = _interopRequireDefault(require(\"./SignedBlock\"));\n\nvar _StorageChangeSet = _interopRequireDefault(require(\"./StorageChangeSet\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _utilCrypto = require(\"@polkadot/util-crypto\");\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Hash = _interopRequireDefault(require(\"../primitive/Hash\"));\n\nvar _Extrinsics = _interopRequireDefault(require(\"../type/Extrinsics\"));\n\nvar _Header = _interopRequireDefault(require(\"./Header\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Block\n * @description\n * A block encoded with header and extrinsics\n */\nclass Block extends _Struct.default {\n constructor(value) {\n super({\n header: _Header.default,\n extrinsics: _Extrinsics.default\n }, value);\n }\n /**\n * @description Encodes a content [[Hash]] for the block\n */\n\n\n get contentHash() {\n return new _Hash.default((0, _utilCrypto.blake2AsU8a)(this.toU8a(), 256));\n }\n /**\n * @description The [[Extrinsics]] contained in the block\n */\n\n\n get extrinsics() {\n return this.get('extrinsics');\n }\n /**\n * @description Block/header [[Hash]]\n */\n\n\n get hash() {\n return this.header.hash;\n }\n /**\n * @description The [[Header]] of the block\n */\n\n\n get header() {\n return this.get('header');\n }\n\n}\n\nexports.default = Block;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Vector = _interopRequireDefault(require(\"../codec/Vector\"));\n\nvar _Extrinsic = _interopRequireDefault(require(\"./Extrinsic\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Extrinsics\n * @description\n * A [[Vector]] of [[Extrinsic]]\n */\nclass Extrinsics extends _Vector.default.with(_Extrinsic.default) {}\n\nexports.default = Extrinsics;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _utilCrypto = require(\"@polkadot/util-crypto\");\n\nvar _Compact = _interopRequireDefault(require(\"../codec/Compact\"));\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Method = _interopRequireDefault(require(\"../primitive/Method\"));\n\nvar _Hash = _interopRequireDefault(require(\"../primitive/Hash\"));\n\nvar _ExtrinsicSignature = _interopRequireDefault(require(\"./ExtrinsicSignature\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Extrinsic\n * @description\n * Representation of an Extrinsic in the system. It contains the actual call,\n * (optional) signature and encodes with an actual length prefix\n *\n * {@link https://github.com/paritytech/wiki/blob/master/Extrinsic.md#the-extrinsic-format-for-node}.\n *\n * Can be:\n * - signed, to create a transaction\n * - left as is, to create an inherent\n */\nclass Extrinsic extends _Struct.default {\n constructor(value) {\n super({\n signature: _ExtrinsicSignature.default,\n method: _Method.default\n }, Extrinsic.decodeExtrinsic(value));\n }\n\n static decodeExtrinsic() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Uint8Array();\n\n if (Array.isArray(value) || (0, _util.isHex)(value)) {\n // Instead of the block below, it should simply be:\n // return Extrinsic.decodeExtrinsic(hexToU8a(value as string));\n const u8a = (0, _util.u8aToU8a)(value); // HACK 11 Jan 2019 - before https://github.com/paritytech/substrate/pull/1388\n // extrinsics didn't have the length, cater for both approaches\n\n const _Compact$decodeU8a = _Compact.default.decodeU8a(u8a),\n _Compact$decodeU8a2 = (0, _slicedToArray2.default)(_Compact$decodeU8a, 2),\n offset = _Compact$decodeU8a2[0],\n length = _Compact$decodeU8a2[1];\n\n const withPrefix = u8a.length === offset + length.toNumber();\n return Extrinsic.decodeExtrinsic(withPrefix ? u8a : _Compact.default.addLengthPrefix(u8a));\n } else if ((0, _util.isU8a)(value)) {\n if (!value.length) {\n return new Uint8Array();\n }\n\n const _Compact$decodeU8a3 = _Compact.default.decodeU8a(value),\n _Compact$decodeU8a4 = (0, _slicedToArray2.default)(_Compact$decodeU8a3, 2),\n offset = _Compact$decodeU8a4[0],\n length = _Compact$decodeU8a4[1];\n\n const total = offset + length.toNumber();\n (0, _util.assert)(total <= value.length, \"Extrinsic: required length less than remainder, expected at least \".concat(total, \", found \").concat(value.length));\n return value.subarray(offset, total);\n } else if (value instanceof _Method.default) {\n return {\n method: value\n };\n }\n\n return value;\n }\n /**\n * @description The arguments passed to for the call, exposes args so it is compatible with [[Method]]\n */\n\n\n get args() {\n return this.method.args;\n }\n /**\n * @description Thge argument defintions, compatible with [[Method]]\n */\n\n\n get argsDef() {\n return this.method.argsDef;\n }\n /**\n * @description The actual `[sectionIndex, methodIndex]` as used in the Method\n */\n\n\n get callIndex() {\n return this.method.callIndex;\n }\n /**\n * @description The actual data for the Method\n */\n\n\n get data() {\n return this.method.data;\n }\n /**\n * @description The length of the value when encoded as a Uint8Array\n */\n\n\n get encodedLength() {\n const length = this.length;\n return length + _Compact.default.encodeU8a(length).length;\n }\n /**\n * @description Convernience function, encodes the extrinsic and returns the actual hash\n */\n\n\n get hash() {\n return new _Hash.default((0, _utilCrypto.blake2AsU8a)(this.toU8a(), 256));\n }\n /**\n * @description `true` is method has `Origin` argument (compatibility with [[Method]])\n */\n\n\n get hasOrigin() {\n return this.method.hasOrigin;\n }\n /**\n * @description `true` id the extrinsic is signed\n */\n\n\n get isSigned() {\n return this.signature.isSigned;\n }\n /**\n * @description The length of the encoded value\n */\n\n\n get length() {\n return this.toU8a(true).length;\n }\n /**\n * @description The [[FunctionMetadata]] that describes the extrinsic\n */\n\n\n get meta() {\n return this.method.meta;\n }\n /**\n * @description The [[Method]] this extrinsic wraps\n */\n\n\n get method() {\n return this.get('method');\n }\n /**\n * @description The [[ExtrinsicSignature]]\n */\n\n\n get signature() {\n return this.get('signature');\n }\n /**\n * @description Add an [[ExtrinsicSignature]] to the extrinsic (already generated)\n */\n\n\n addSignature(signer, signature, nonce, era) {\n this.signature.addSignature(signer, signature, nonce, era);\n return this;\n }\n /**\n * @description Sign the extrinsic with a specific keypair\n */\n\n\n sign(account, options) {\n this.signature.sign(this.method, account, options);\n return this;\n }\n /**\n * @description Returns a hex string representation of the value\n */\n\n\n toHex() {\n return (0, _util.u8aToHex)(this.toU8a());\n }\n /**\n * @description Converts the Object to JSON, typically used for RPC transfers\n */\n\n\n toJSON() {\n return this.toHex();\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n const encoded = super.toU8a();\n return isBare ? encoded : _Compact.default.addLengthPrefix(encoded);\n }\n\n}\n\nexports.default = Extrinsic;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.IMMORTAL_ERA = void 0;\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Address = _interopRequireDefault(require(\"../primitive/Address\"));\n\nvar _U = _interopRequireDefault(require(\"../primitive/U8\"));\n\nvar _ExtrinsicEra = _interopRequireDefault(require(\"./ExtrinsicEra\"));\n\nvar _NonceCompact = _interopRequireDefault(require(\"./NonceCompact\"));\n\nvar _Signature = _interopRequireDefault(require(\"./Signature\"));\n\nvar _SignaturePayload = _interopRequireDefault(require(\"./SignaturePayload\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst IMMORTAL_ERA = new Uint8Array([0]);\nexports.IMMORTAL_ERA = IMMORTAL_ERA;\nconst BIT_SIGNED = 0b10000000;\nconst BIT_UNSIGNED = 0;\nconst BIT_VERSION = 0b0000001;\n/**\n * @name ExtrinsicSignature\n * @description\n * A container for the [[Signature]] associated with a specific [[Extrinsic]]\n */\n\nclass ExtrinsicSignature extends _Struct.default {\n // Signature Information.\n // 1 byte version: BIT_VERSION | (isSigned ? BIT_SIGNED : BIT_UNSIGNED)\n // 1/3/5/9/33 bytes: The signing account identity, in Address format\n // 64 bytes: The sr25519/ed25519 signature of the Signing Payload\n // 1-8 bytes: The Compact of the signing account\n // 1/2 bytes: The Transaction Era\n constructor(value) {\n super({\n version: _U.default,\n signer: _Address.default,\n signature: _Signature.default,\n nonce: _NonceCompact.default,\n era: _ExtrinsicEra.default\n }, ExtrinsicSignature.decodeExtrinsicSignature(value));\n }\n\n static decodeExtrinsicSignature(value) {\n if (!value) {\n return {\n // we always explicitly set the unsigned version\n version: BIT_VERSION | BIT_UNSIGNED\n };\n }\n\n const version = value[0]; // only decode the full Uint8Array if we have the signed indicator,\n // alternatively only return the version (default for others)\n\n return (version & BIT_SIGNED) === BIT_SIGNED ? value : {\n version\n };\n }\n /**\n * @description The length of the value when encoded as a Uint8Array\n */\n\n\n get encodedLength() {\n return this.isSigned ? super.encodedLength : 1;\n }\n /**\n * @description `true` if the signature is valid\n */\n\n\n get isSigned() {\n return (this.version & BIT_SIGNED) === BIT_SIGNED;\n }\n /**\n * @description The [[ExtrinsicEra]] (mortal or immortal) this signature applies to\n */\n\n\n get era() {\n return this.get('era');\n }\n /**\n * @description The [[Nonce]] for the signature\n */\n\n\n get nonce() {\n return this.get('nonce');\n }\n /**\n * @description The actuall [[Signature]] hash\n */\n\n\n get signature() {\n return this.get('signature');\n }\n /**\n * @description The [[Address]] that signed\n */\n\n\n get signer() {\n return this.get('signer');\n }\n /**\n * @description The encoded version for the signature\n */\n\n\n get version() {\n // Version Information.\n // 1 byte: version information:\n // - 7 low bits: version identifier (should be 0b0000001).\n return this.get('version').toNumber();\n }\n\n injectSignature(signature, signer, nonce, era) {\n this.set('era', era);\n this.set('nonce', nonce);\n this.set('signer', signer);\n this.set('signature', signature);\n this.set('version', new _U.default(BIT_VERSION | BIT_SIGNED));\n return this;\n }\n /**\n * @description Adds a raw signature\n */\n\n\n addSignature(_signer, _signature, _nonce) {\n let _era = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : IMMORTAL_ERA;\n\n const signer = new _Address.default(_signer);\n const nonce = new _NonceCompact.default(_nonce);\n const era = new _ExtrinsicEra.default(_era);\n const signature = new _Signature.default(_signature);\n return this.injectSignature(signature, signer, nonce, era);\n }\n /**\n * @description Generate a payload and pplies the signature from a keypair\n */\n\n\n sign(method, account, _ref) {\n let blockHash = _ref.blockHash,\n era = _ref.era,\n nonce = _ref.nonce,\n version = _ref.version;\n const signer = new _Address.default(account.publicKey());\n const signingPayload = new _SignaturePayload.default({\n nonce,\n method,\n era: era || IMMORTAL_ERA,\n blockHash\n });\n const signature = new _Signature.default(signingPayload.sign(account, version));\n return this.injectSignature(signature, signer, signingPayload.nonce, signingPayload.era);\n }\n /**\n * @description Encodes the value as a Uint8Array as per the SCALE specifications\n * @param isBare true when the value has none of the type-specific prefixes (internal)\n */\n\n\n toU8a(isBare) {\n return this.isSigned ? super.toU8a(isBare) : new Uint8Array([this.version]);\n }\n\n}\n\nexports.default = ExtrinsicSignature;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _U8a = _interopRequireDefault(require(\"../codec/U8a\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name ExtrinsicEra\n * @description\n * The era for an extrinsic, indicating either a mortal or immortal extrinsic\n */\nclass ExtrinsicEra extends _U8a.default {\n constructor(value) {\n super(ExtrinsicEra.decodeExtrinsicEra(value));\n }\n\n static decodeExtrinsicEra(value) {\n if (value) {\n const u8a = (0, _util.u8aToU8a)(value); // If we have a zero byte, it is immortal (1 byte in length), otherwise we have\n // the era details following as another byte\n\n return u8a.subarray(0, u8a[0] === 0 ? 1 : 2);\n }\n\n return new Uint8Array([0]);\n }\n\n}\n\nexports.default = ExtrinsicEra;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Compact = _interopRequireDefault(require(\"../codec/Compact\"));\n\nvar _Nonce = _interopRequireDefault(require(\"./Nonce\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Nonce\n * @description\n * The Compact or number of transactions sent by a specific account. Generally used\n * with extrinsics to determine the order of execution.\n */\nclass NonceCompact extends _Compact.default.with(_Nonce.default) {}\n\nexports.default = NonceCompact;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _U = _interopRequireDefault(require(\"../primitive/U64\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Nonce\n * @description\n * The Nonce or number of transactions sent by a specific account. Generally used\n * with extrinsics to determine the order of execution. implemented as a Substrate\n * [[U64]]\n */\nclass Nonce extends _U.default {}\n\nexports.default = Nonce;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Sr25519Signature = exports.Ed25519Signature = exports.default = void 0;\n\nvar _H = _interopRequireDefault(require(\"../primitive/H512\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Signature\n * @description\n * The default signature that is used accross the system. It is currectly defined\n * as a 512-bit value, represented by a [[H512]].\n */\nclass Signature extends _H.default {}\n/**\n * @name Ed25519Signature\n * @description\n * The default Ed25519 that is used accross the system. It is currectly defined\n * as a 512-bit value, represented by a [[H512]].\n */\n\n\nexports.default = Signature;\n\nclass Ed25519Signature extends Signature {}\n/**\n * @name Sr25519Signature\n * @description\n * The default Sr25519 signature that is used accross the system. It is currectly defined\n * as a 512-bit value, represented by a [[H512]].\n */\n\n\nexports.Ed25519Signature = Ed25519Signature;\n\nclass Sr25519Signature extends Signature {}\n\nexports.Sr25519Signature = Sr25519Signature;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _utilCrypto = require(\"@polkadot/util-crypto\");\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Hash = _interopRequireDefault(require(\"../primitive/Hash\"));\n\nvar _Method = _interopRequireDefault(require(\"../primitive/Method\"));\n\nvar _ExtrinsicEra = _interopRequireDefault(require(\"./ExtrinsicEra\"));\n\nvar _NonceCompact = _interopRequireDefault(require(\"./NonceCompact\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name SignaturePayload\n * @description\n * A signing payload for an [[Extrinsic]]. For the final encoding, it is variable length based\n * on the contents included\n *\n * 8 bytes: The Transaction Index/Nonce as provided in the transaction itself.\n * 2+ bytes: The Function Descriptor as provided in the transaction itself.\n * 2 bytes: The Transaction Era as provided in the transaction itself.\n * 32 bytes: The hash of the authoring block implied by the Transaction Era and the current block.\n */\nclass SignaturePayload extends _Struct.default {\n constructor(value) {\n super({\n nonce: _NonceCompact.default,\n method: _Method.default,\n era: _ExtrinsicEra.default,\n blockHash: _Hash.default\n }, value);\n this._signature = void 0;\n }\n /**\n * @description `true` if the payload refers to a valid signature\n */\n\n\n get isSigned() {\n return !!(this._signature && this._signature.length === 64);\n }\n /**\n * @description The block [[Hash]] the signature applies to (mortal/immortal)\n */\n\n\n get blockHash() {\n return this.get('blockHash');\n }\n /**\n * @description The [[Method]] contained in the payload\n */\n\n\n get method() {\n return this.get('method');\n }\n /**\n * @description The [[ExtrinsicEra]]\n */\n\n\n get era() {\n return this.get('era');\n }\n /**\n * @description The [[Nonce]]\n */\n\n\n get nonce() {\n return this.get('nonce');\n }\n /**\n * @description The raw signature as a `Uint8Array`\n */\n\n\n get signature() {\n if (!this.isSigned) {\n throw new Error('Transaction is not signed');\n }\n\n return this._signature;\n }\n /**\n * @description Sign the payload with the keypair\n */\n\n\n sign(signerPair, version) {\n const u8a = this.toU8a();\n const encoded = u8a.length > 256 ? (0, _utilCrypto.blake2AsU8a)(u8a) : u8a;\n this._signature = signerPair.sign(encoded);\n return this._signature;\n }\n\n}\n\nexports.default = SignaturePayload;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _utilCrypto = require(\"@polkadot/util-crypto\");\n\nvar _Compact = _interopRequireDefault(require(\"../codec/Compact\"));\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Hash = _interopRequireDefault(require(\"../primitive/Hash\"));\n\nvar _BlockNumber = _interopRequireDefault(require(\"../type/BlockNumber\"));\n\nvar _Digest = _interopRequireDefault(require(\"./Digest\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Header\n * @description\n * A [[Block]] header\n */\nclass Header extends _Struct.default {\n constructor(value) {\n super({\n parentHash: _Hash.default,\n number: _Compact.default.with(_BlockNumber.default),\n stateRoot: _Hash.default,\n extrinsicsRoot: _Hash.default,\n digest: _Digest.default\n }, value || {});\n }\n /**\n * @description The wrapped [[BlockNumber]]\n */\n\n\n get blockNumber() {\n return this.get('number').toBn();\n }\n /**\n * @description The wrapped [[Digest]]\n */\n\n\n get digest() {\n return this.get('digest');\n }\n /**\n * @description The wrapped extrisics root as a [[Hash]]\n */\n\n\n get extrinsicsRoot() {\n return this.get('extrinsicsRoot');\n }\n /**\n * @description Convenience method, encodes the header and calculates the [[Hash]]\n */\n\n\n get hash() {\n return new _Hash.default((0, _utilCrypto.blake2AsU8a)(this.toU8a(), 256));\n }\n /**\n * @description Alias for `blockNumber` (this is displayed in JSON)\n */\n\n\n get number() {\n return this.blockNumber;\n }\n /**\n * @description The wrapped parent as a [[Hash]]\n */\n\n\n get parentHash() {\n return this.get('parentHash');\n }\n /**\n * @description The wrapped state root as a [[Hash]]\n */\n\n\n get stateRoot() {\n return this.get('stateRoot');\n }\n\n}\n\nexports.default = Header;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _U = _interopRequireDefault(require(\"../primitive/U64\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name BlockNumber\n * @description\n * A representation of a Substrate BlockNumber, implemented as a [[U64]]\n */\nclass BlockNumber extends _U.default {}\n\nexports.default = BlockNumber;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.DigestItem = exports.Consensus = exports.Seal = exports.Other = exports.ChangesTrieRoot = exports.AuthoritiesChange = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Enum = _interopRequireDefault(require(\"../codec/Enum\"));\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Tuple = _interopRequireDefault(require(\"../codec/Tuple\"));\n\nvar _Vector = _interopRequireDefault(require(\"../codec/Vector\"));\n\nvar _Bytes = _interopRequireDefault(require(\"../primitive/Bytes\"));\n\nvar _Hash = _interopRequireDefault(require(\"../primitive/Hash\"));\n\nvar _U = _interopRequireDefault(require(\"../primitive/U32\"));\n\nvar _U2 = _interopRequireDefault(require(\"../primitive/U64\"));\n\nvar _AuthorityId = _interopRequireDefault(require(\"../type/AuthorityId\"));\n\nvar _Signature = _interopRequireDefault(require(\"../type/Signature\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name AuthoritiesChange\n * @description\n * Log for Authories changed\n */\nclass AuthoritiesChange extends _Vector.default.with(_AuthorityId.default) {}\n/**\n * @name ChangesTrieRoot\n * @description\n * Log for changes to the Trie root\n */\n\n\nexports.AuthoritiesChange = AuthoritiesChange;\n\nclass ChangesTrieRoot extends _Hash.default {}\n/**\n * @name Other\n * @description\n * Log item that is just a stream of [[Bytes]]\n */\n\n\nexports.ChangesTrieRoot = ChangesTrieRoot;\n\nclass Other extends _Bytes.default {}\n/**\n * @name Seal\n * @description\n * Log item indicating a sealing event\n */\n\n\nexports.Other = Other;\n\nclass Seal extends _Tuple.default {\n constructor(value) {\n super({\n U64: _U2.default,\n Signature: _Signature.default\n }, value);\n }\n /**\n * @description The wrapped [[Signature]]\n */\n\n\n get signature() {\n return this[1];\n }\n /**\n * @description The wrapped [[U64]] slot\n */\n\n\n get slot() {\n return this[0];\n }\n\n}\n/**\n * @name Consensus\n * @description\n * Log item indicating consensus\n */\n\n\nexports.Seal = Seal;\n\nclass Consensus extends _Tuple.default {\n constructor(value) {\n super({\n U32: _U.default,\n // actually a [u8; 4]\n Bytes: _Bytes.default\n }, value);\n }\n /**\n * @description `true` if the engine matches aura\n */\n\n\n get isAura() {\n return this.engine.eq(0x61727561); // ['a', 'u', 'r', 'a']\n }\n /**\n * @description The wrapped engine [[U32]]\n */\n\n\n get engine() {\n return this[0];\n }\n /**\n * @description The wrapped [[Bytes]]\n */\n\n\n get data() {\n return this[1];\n }\n /**\n * @description The slot and signature extracted from the raw data (assuming Aura)\n */\n\n\n get asAura() {\n (0, _util.assert)(this.isAura, 'Invalid engine for asAura conversion');\n const raw = this.data.toU8a(true);\n return [new _U2.default(raw.subarray(0, 4)), new _Signature.default(raw.subarray(64))];\n }\n\n}\n/**\n * @name DigestItem\n * @description\n * A [[Enum]] the specifies the specific item in the logs of a [[Digest]]\n */\n\n\nexports.Consensus = Consensus;\n\nclass DigestItem extends _Enum.default {\n constructor(value) {\n super({\n Other,\n // Position 0, as per Rust (encoding control)\n AuthoritiesChange,\n ChangesTrieRoot,\n Seal,\n Consensus\n }, value);\n }\n /**\n * @description Returns the item as a [[AuthoritiesChange]]\n */\n\n\n get asAuthoritiesChange() {\n (0, _util.assert)(this.isAuthoritiesChange, \"Cannot convert '\".concat(this.type, \"' via asAuthoritiesChange\"));\n return this.value;\n }\n /**\n * @description Returns the item as a [[ChangesTrieRoot]]\n */\n\n\n get asChangesTrieRoot() {\n (0, _util.assert)(this.isChangesTrieRoot, \"Cannot convert '\".concat(this.type, \"' via asChangesTrieRoot\"));\n return this.value;\n }\n /**\n * @desciption Retuns the item as a [[Consensus]]\n */\n\n\n get asConsensus() {\n (0, _util.assert)(this.isConsensus, \"Cannot convert '\".concat(this.type, \"' via asConsensus\"));\n return this.value;\n }\n /**\n * @description Returns the item as a [[Other]]\n */\n\n\n get asOther() {\n (0, _util.assert)(this.isOther, \"Cannot convert '\".concat(this.type, \"' via asOther\"));\n return this.value;\n }\n /**\n * @description Returns the item as a [[Seal]]\n */\n\n\n get asSeal() {\n (0, _util.assert)(this.isSeal, \"Cannot convert '\".concat(this.type, \"' via asSeal\"));\n return this.value;\n }\n /**\n * @description Returns true on [[AuthoritiesChange]]\n */\n\n\n get isAuthoritiesChange() {\n return this.type === 'AuthoritiesChange';\n }\n /**\n * @description Returns true on [[ChangesTrieRoot]]\n */\n\n\n get isChangesTrieRoot() {\n return this.type === 'ChangesTrieRoot';\n }\n /**\n * @description Returns true on [[Consensus]]\n */\n\n\n get isConsensus() {\n return this.type === 'Consensus';\n }\n /**\n * @description Returns true on [[Other]]\n */\n\n\n get isOther() {\n return this.type === 'Other';\n }\n /**\n * @description Returns true on [[Seal]]\n */\n\n\n get isSeal() {\n return this.type === 'Seal';\n }\n\n}\n/**\n * @name Digest\n * @description\n * A [[Header]] Digest\n */\n\n\nexports.DigestItem = DigestItem;\n\nclass Digest extends _Struct.default {\n constructor(value) {\n super({\n logs: _Vector.default.with(DigestItem)\n }, value);\n }\n /**\n * @description The [[DigestItem]] logs\n */\n\n\n get logs() {\n return this.get('logs');\n }\n\n}\n\nexports.default = Digest;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _AccountId = _interopRequireDefault(require(\"../primitive/AccountId\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// Wrapper for a AuthorityId. Same as an normal AccountId, i.e. a wrapper\n// around publicKey, however specialized since it specifically points to\n// an authority.\nclass AuthorityId extends _AccountId.default {}\n\nexports.default = AuthorityId;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Json = _interopRequireDefault(require(\"./Json\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name ChainProperties\n * @description\n * Wraps the properties retrieved from the chain via the `system.properties` RPC call.\n */\nclass ChainProperties extends _Json.default {\n /**\n * @description The token decimals, if defined (de-facto standard only)\n */\n get tokenDecimals() {\n return this.get('tokenDecimals');\n }\n /**\n * @description The token system, if defined (de-facto standard only)\n */\n\n\n get tokenSymbol() {\n return this.get('tokenSymbol');\n }\n\n}\n\nexports.default = ChainProperties;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _utils = require(\"../codec/utils\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Json\n * @description\n * Wraps the a JSON structure retrieve via RPC. It extends the standard JS Map with. While it\n * implements a Codec, it is limited in that it can only be used with input objects via RPC,\n * i.e. no hex decoding. Unlike a struct, this waps a JSON object with unknown keys\n * @noInheritDoc\n */\nclass Json extends Map {\n constructor(value) {\n super(Json.decodeJson(value));\n }\n\n static decodeJson(value) {\n return Object.entries(value || {});\n }\n /**\n * @description Always 0, never encodes as a Uint8Array\n */\n\n\n get encodedLength() {\n return 0;\n }\n /**\n * @description Checks if the value is an empty value\n */\n\n\n get isEmpty() {\n return [...this.keys()].length === 0;\n }\n /**\n * @description Compares the value of the input to see if there is a match\n */\n\n\n eq(other) {\n return (0, _utils.compareMap)(this, other);\n }\n /**\n * @description Unimplemented, will throw\n */\n\n\n toHex() {\n throw new Error('Unimplemented');\n }\n /**\n * @description Converts the Object to JSON, typically used for RPC transfers\n */\n\n\n toJSON() {\n return [...this.entries()].reduce((json, _ref) => {\n let _ref2 = (0, _slicedToArray2.default)(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n\n json[key] = value;\n return json;\n }, {});\n }\n /**\n * @description Returns the base runtime type name for this instance\n */\n\n\n toRawType() {\n return 'Json';\n }\n /**\n * @description Returns the string representation of the value\n */\n\n\n toString() {\n return JSON.stringify(this.toJSON());\n }\n /**\n * @description Unimplemented, will throw\n */\n\n\n toU8a(isBare) {\n throw new Error('Unimplemented');\n }\n\n}\n\nexports.default = Json;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Usurped = exports.Invalid = exports.Ready = exports.Future = exports.Finalized = exports.Dropped = exports.Broadcast = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Enum = _interopRequireDefault(require(\"../codec/Enum\"));\n\nvar _Vector = _interopRequireDefault(require(\"../codec/Vector\"));\n\nvar _Hash = _interopRequireDefault(require(\"../primitive/Hash\"));\n\nvar _Null = _interopRequireDefault(require(\"../primitive/Null\"));\n\nvar _Text = _interopRequireDefault(require(\"../primitive/Text\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Broadcast\n * @description\n * An [[ExtrinsicStatus]] indicating that the [[Extrinsic]] has been boradcast to peers\n */\nclass Broadcast extends _Vector.default.with(_Text.default) {}\n/**\n * @name Dropped\n * @description\n * An [[ExtrinsicStatus]] indicating that the [[Extrinsic]] has been dropped\n */\n\n\nexports.Broadcast = Broadcast;\n\nclass Dropped extends _Null.default {}\n/**\n * @name Finalized\n * @description\n * An [[ExtrinsicStatus] indicating that the [[Extrinsic]]] has been finalized and included\n */\n\n\nexports.Dropped = Dropped;\n\nclass Finalized extends _Hash.default {}\n/**\n * @name Future\n * @description\n * An [[ExtrinsicStatus]] indicating that the [[Extrinsic]] has been added to the future queue\n */\n\n\nexports.Finalized = Finalized;\n\nclass Future extends _Null.default {}\n/**\n * @name Ready\n * @description\n * An [[ExtrinsicStatus]] indicating that the [[Extrinsic]] has been added to the ready queue\n */\n\n\nexports.Future = Future;\n\nclass Ready extends _Null.default {}\n/**\n * @name Invalid\n * @description\n * An [[ExtrinsicStatus]] indicating that the [[Extrinsic]] is invalid\n */\n\n\nexports.Ready = Ready;\n\nclass Invalid extends _Null.default {}\n/**\n * @name Usurped\n * @description\n * An [[ExtrinsicStatus]] indicating that the [[Extrinsic]] has been usurped\n */\n\n\nexports.Invalid = Invalid;\n\nclass Usurped extends _Hash.default {}\n/**\n * @name ExtrinsicStatus\n * @description\n * An [[Enum]] that indicates the status of the [[Extrinsic]] as been submitted\n */\n\n\nexports.Usurped = Usurped;\n\nclass ExtrinsicStatus extends _Enum.default {\n constructor(value, index) {\n super({\n Future,\n Ready,\n Finalized,\n Usurped,\n Broadcast,\n Dropped,\n Invalid\n }, value, index);\n }\n /**\n * @description Returns the item as a [[Broadcast]]\n */\n\n\n get asBroadcast() {\n (0, _util.assert)(this.isBroadcast, \"Cannot convert '\".concat(this.type, \"' via asBroadcast\"));\n return this.value;\n }\n /**\n * @description Returns the item as a [[Dropped]]\n */\n\n\n get asDropped() {\n (0, _util.assert)(this.isDropped, \"Cannot convert '\".concat(this.type, \"' via asDropped\"));\n return this.value;\n }\n /**\n * @description Returns the item as a [[Finalized]]\n */\n\n\n get asFinalized() {\n (0, _util.assert)(this.isFinalized, \"Cannot convert '\".concat(this.type, \"' via asFinalized\"));\n return this.value;\n }\n /**\n * @description Returns the item as a [[Future]]\n */\n\n\n get asFuture() {\n (0, _util.assert)(this.isFuture, \"Cannot convert '\".concat(this.type, \"' via asFuture\"));\n return this.value;\n }\n /**\n * @description Returns the item as a [[Invalid]]\n */\n\n\n get asInvalid() {\n (0, _util.assert)(this.isInvalid, \"Cannot convert '\".concat(this.type, \"' via asInvalid\"));\n return this.value;\n }\n /**\n * @description Returns the item as a [[Ready]]\n */\n\n\n get asReady() {\n (0, _util.assert)(this.isReady, \"Cannot convert '\".concat(this.type, \"' via asReady\"));\n return this.value;\n }\n /**\n * @description Returns the item as a [[Usurped]]\n */\n\n\n get asUsurped() {\n (0, _util.assert)(this.isUsurped, \"Cannot convert '\".concat(this.type, \"' via asUsurped\"));\n return this.value;\n }\n /**\n * @description Returns true if the status is boadcast\n */\n\n\n get isBroadcast() {\n return this.type === 'Broadcast';\n }\n /**\n * @description Returns true if the status is dropped\n */\n\n\n get isDropped() {\n return this.type === 'Dropped';\n }\n /**\n * @description Returns true if the status is finalized\n */\n\n\n get isFinalized() {\n return this.type === 'Finalized';\n }\n /**\n * @description Returns true if the status is future\n */\n\n\n get isFuture() {\n return this.type === 'Future';\n }\n /**\n * @description Returns true if the status is invalid\n */\n\n\n get isInvalid() {\n return this.type === 'Invalid';\n }\n /**\n * @description Returns true if the status is eady\n */\n\n\n get isReady() {\n return this.type === 'Ready';\n }\n /**\n * @description Returns true if the status is usurped\n */\n\n\n get isUsurped() {\n return this.type === 'Usurped';\n }\n\n}\n\nexports.default = ExtrinsicStatus;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Bool = _interopRequireDefault(require(\"../primitive/Bool\"));\n\nvar _USize = _interopRequireDefault(require(\"../primitive/USize\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Health\n * @description\n * A system health indicator, reported back over RPC\n */\nclass Health extends _Struct.default {\n constructor(value) {\n super({\n peers: _USize.default,\n isSyncing: _Bool.default,\n shouldHavePeers: _Bool.default\n }, value);\n }\n /**\n * @description The sync status\n */\n\n\n get isSyncing() {\n return this.get('isSyncing');\n }\n /**\n * @description The numbers of peers as [[U32]]\n */\n\n\n get peers() {\n return this.get('peers');\n }\n /**\n * @description Should this node have peers (not active on --dev)\n */\n\n\n get shouldHavePeers() {\n return this.get('shouldHavePeers');\n }\n\n}\n\nexports.default = Health;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Json = _interopRequireDefault(require(\"./Json\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name NetworkState\n * @description\n * Wraps the properties retrieved from the chain via the `system.network_state` RPC call.\n */\nclass NetworkState extends _Json.default {}\n\nexports.default = NetworkState;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Text = _interopRequireDefault(require(\"../primitive/Text\"));\n\nvar _U = _interopRequireDefault(require(\"../primitive/U32\"));\n\nvar _Hash = _interopRequireDefault(require(\"../primitive/Hash\"));\n\nvar _BlockNumber = _interopRequireDefault(require(\"../type/BlockNumber\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name PeerInfo\n * @description\n * A system peer info indicator, reported back over RPC\n */\nclass PeerInfo extends _Struct.default {\n constructor(value) {\n super({\n peerId: _Text.default,\n roles: _Text.default,\n protocolVersion: _U.default,\n bestHash: _Hash.default,\n bestNumber: _BlockNumber.default\n }, value);\n }\n /**\n * @description The best block hash for the peer\n */\n\n\n get bestHash() {\n return this.get('bestHash');\n }\n /**\n * @description The best block hash for the peer\n */\n\n\n get bestNumber() {\n return this.get('bestNumber');\n }\n /**\n * @description The p2p network id for the peer\n */\n\n\n get peerId() {\n return this.get('peerId');\n }\n /**\n * @description The index of the peer in our list\n */\n\n\n get protocolVersion() {\n return this.get('protocolVersion');\n }\n /**\n * @description The roles of the peer on the network\n */\n\n\n get roles() {\n return this.get('roles');\n }\n\n}\n\nexports.default = PeerInfo;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Extrinsics = _interopRequireDefault(require(\"../type/Extrinsics\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name PendingExtrinsics\n * @description\n * A list of pending [[Extrinsics]]\n */\nclass PendingExtrinsics extends _Extrinsics.default {}\n\nexports.default = PendingExtrinsics;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.RuntimeVersionApi = exports.ApiId = void 0;\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Tuple = _interopRequireDefault(require(\"../codec/Tuple\"));\n\nvar _U8aFixed = _interopRequireDefault(require(\"../codec/U8aFixed\"));\n\nvar _Vector = _interopRequireDefault(require(\"../codec/Vector\"));\n\nvar _Text = _interopRequireDefault(require(\"../primitive/Text\"));\n\nvar _U = _interopRequireDefault(require(\"../primitive/U32\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name ApiId\n * @description\n * An identifier for the runtime API\n */\nclass ApiId extends _U8aFixed.default {\n constructor(value) {\n super(value, 64);\n }\n\n}\n\nexports.ApiId = ApiId;\n\n/**\n * @name RuntimeVersionApi\n * @description\n * A [[Tuple]] that conatins the [[ApiId]] and [[U32]] version\n */\nclass RuntimeVersionApi extends _Tuple.default {\n constructor(value) {\n super({\n ApiId,\n U32: _U.default\n }, value);\n }\n /**\n * @description The [[ApiId]]\n */\n\n\n get id() {\n return this[0];\n }\n /**\n * @description The specific version as [[U32]]\n */\n\n\n get version() {\n return this[1];\n }\n\n}\n\nexports.RuntimeVersionApi = RuntimeVersionApi;\n\n/**\n * @name RuntimeVersion\n * @description\n * A defintion of the runtime and the associated versions thereof\n */\nclass RuntimeVersion extends _Struct.default {\n constructor(value) {\n super({\n specName: _Text.default,\n implName: _Text.default,\n authoringVersion: _U.default,\n specVersion: _U.default,\n implVersion: _U.default,\n apis: _Vector.default.with(RuntimeVersionApi)\n }, value);\n }\n /**\n * @description The available APIs as [[RuntimeVersionApi]]\n */\n\n\n get apis() {\n return this.get('apis');\n }\n /**\n * @description The authoring version as [[U32]]\n */\n\n\n get authoringVersion() {\n return this.get('authoringVersion');\n }\n /**\n * @description The implementation name\n */\n\n\n get implName() {\n return this.get('implName');\n }\n /**\n * @description The implementation version\n */\n\n\n get implVersion() {\n return this.get('implVersion');\n }\n /**\n * @description The specification name\n */\n\n\n get specName() {\n return this.get('specName');\n }\n /**\n * @description The specification version\n */\n\n\n get specVersion() {\n return this.get('specVersion');\n }\n\n}\n\nexports.default = RuntimeVersion;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Justification = _interopRequireDefault(require(\"../type/Justification\"));\n\nvar _Block = _interopRequireDefault(require(\"./Block\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name SignedBlock\n * @description\n * A [[Block]] that has been signed and contains a [[Justification]]\n */\nclass SignedBlock extends _Struct.default {\n constructor(value) {\n super({\n block: _Block.default,\n justification: _Justification.default\n }, value);\n }\n /**\n * @description The wrapped [[Block]]\n */\n\n\n get block() {\n return this.get('block');\n }\n /**\n * @description Block/header [[Hash]]\n */\n\n\n get hash() {\n return this.block.hash;\n }\n /**\n * @description The wrapped [[Justification]]\n */\n\n\n get justification() {\n return this.get('justification');\n }\n\n}\n\nexports.default = SignedBlock;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.RhdJustification = exports.default = void 0;\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Vector = _interopRequireDefault(require(\"../codec/Vector\"));\n\nvar _Bytes = _interopRequireDefault(require(\"../primitive/Bytes\"));\n\nvar _Hash = _interopRequireDefault(require(\"../primitive/Hash\"));\n\nvar _U = _interopRequireDefault(require(\"../primitive/U32\"));\n\nvar _Bft = require(\"./Bft\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Justification\n * @description\n * A generic justification as a stream of [[Bytes]], this is specific per consensus implementation\n */\nclass Justification extends _Bytes.default {}\n/**\n * @name RhdJustification\n * @description\n * [[Justification]] for the Rhododendron consensus algorithm\n */\n\n\nexports.default = Justification;\n\nclass RhdJustification extends _Struct.default {\n constructor(value) {\n super({\n roundNumber: _U.default,\n hash: _Hash.default,\n signatures: _Vector.default.with(_Bft.BftAuthoritySignature)\n }, value);\n }\n /**\n * @description The justification [[Hash]]\n */\n\n\n get hash() {\n return this.get('hash');\n }\n /**\n * @description The round this justification wraps as a [[U32]]\n */\n\n\n get roundNumber() {\n return this.get('roundNumber');\n }\n /**\n * @description The [[BftAuthoritySignature]] array\n */\n\n\n get signatures() {\n return this.get('signatures');\n }\n\n}\n\nexports.RhdJustification = RhdJustification;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BftHashSignature = exports.BftAuthoritySignature = void 0;\n\nvar _Tuple = _interopRequireDefault(require(\"../codec/Tuple\"));\n\nvar _Hash = _interopRequireDefault(require(\"../primitive/Hash\"));\n\nvar _AuthorityId = _interopRequireDefault(require(\"./AuthorityId\"));\n\nvar _Signature = _interopRequireDefault(require(\"./Signature\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name BftAuthoritySignature\n * @description\n * Represents a Bft Hash and Signature pairing, typically used in reporting\n * network behaviour.\n */\nclass BftAuthoritySignature extends _Tuple.default {\n constructor(value) {\n super({\n AuthorityId: _AuthorityId.default,\n Signature: _Signature.default\n }, value);\n }\n /**\n * @description The wrapped [[AuthoriyId]]\n */\n\n\n get authorityId() {\n return this[0];\n }\n /**\n * @description The wrapped [[Signature]] value\n */\n\n\n get signature() {\n return this[1];\n }\n\n}\n\nexports.BftAuthoritySignature = BftAuthoritySignature;\n\n/**\n * @name BftHashSignature\n * @description\n * Represents a Bft Hash and Signature pairing, typically used in reporting\n * network behaviour.\n */\nclass BftHashSignature extends _Tuple.default {\n constructor(value) {\n super({\n Hash: _Hash.default,\n Signature: _Signature.default\n }, value);\n }\n /**\n * @description The wrapped [[Hash]]\n */\n\n\n get hash() {\n return this[0];\n }\n /**\n * @description The wrapped [[Signature]]\n */\n\n\n get signature() {\n return this[1];\n }\n\n}\n\nexports.BftHashSignature = BftHashSignature;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Vector = _interopRequireDefault(require(\"../codec/Vector\"));\n\nvar _Hash = _interopRequireDefault(require(\"../primitive/Hash\"));\n\nvar _KeyValue = require(\"../type/KeyValue\");\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name StorageChangeSet\n * @description\n * A set of storage changes. It contains the [[Block]] hash and\n * a list of the actual changes that took place as an array of\n * [[KeyValueOption]]\n */\nclass StorageChangeSet extends _Struct.default {\n constructor(value) {\n super({\n block: _Hash.default,\n changes: _Vector.default.with(_KeyValue.KeyValueOption)\n }, value);\n }\n /**\n * @description The applicable changes as [[KeyValueOption]]\n */\n\n\n get changes() {\n return this.get('changes');\n }\n /**\n * @description The block [[Hash]]\n */\n\n\n get block() {\n return this.get('block');\n }\n\n}\n\nexports.default = StorageChangeSet;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.KeyValueOption = exports.default = void 0;\n\nvar _Option = _interopRequireDefault(require(\"../codec/Option\"));\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Tuple = _interopRequireDefault(require(\"../codec/Tuple\"));\n\nvar _StorageData = _interopRequireDefault(require(\"../primitive/StorageData\"));\n\nvar _StorageKey = _interopRequireDefault(require(\"../primitive/StorageKey\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name KeyValue\n * @description\n * KeyValue structure. Since most of the keys and resultant values in Subtrate are\n * hashed and/or encoded, this does not wrap [[Text]], but rather a [[Bytes]]\n * for the keys and values. (Not to be confused with the KeyValue in [[Metadata]], that\n * is actually for Maps, whereas this is a representation of actaul storage values)\n */\nclass KeyValue extends _Struct.default {\n constructor(value) {\n super({\n key: _StorageKey.default,\n value: _StorageData.default\n }, value);\n }\n /**\n * @description The [[StorageKey]]\n */\n\n\n get key() {\n return this.get('key');\n }\n /**\n * @description The [[StorageData]]\n */\n\n\n get value() {\n return this.get('value');\n }\n\n}\n\nexports.default = KeyValue;\n\n/**\n * @name KeyValueOption\n * @description\n * A key/value change. This is similar to the [[KeyValue]] structure,\n * however in this case the value could be optional. Here it extends\n * from a [[Tuple]], indicating the use inside areas such as [[StorageChangeSet]]\n */\nclass KeyValueOption extends _Tuple.default {\n constructor(value) {\n super({\n StorageKey: _StorageKey.default,\n 'Option': _Option.default.with(_StorageData.default)\n }, value);\n }\n /**\n * @description The [[StorageKey]]\n */\n\n\n get key() {\n return this[0];\n }\n /**\n * @description The [[Option]] [[StorageData]]\n */\n\n\n get value() {\n return this[1];\n }\n\n}\n\nexports.KeyValueOption = KeyValueOption;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Amount\", {\n enumerable: true,\n get: function get() {\n return _Amount.default;\n }\n});\nObject.defineProperty(exports, \"AssetOf\", {\n enumerable: true,\n get: function get() {\n return _AssetOf.default;\n }\n});\nObject.defineProperty(exports, \"AttestedCandidate\", {\n enumerable: true,\n get: function get() {\n return _AttestedCandidate.default;\n }\n});\nObject.defineProperty(exports, \"AuthorityId\", {\n enumerable: true,\n get: function get() {\n return _AuthorityId.default;\n }\n});\nObject.defineProperty(exports, \"Balance\", {\n enumerable: true,\n get: function get() {\n return _Balance.default;\n }\n});\nObject.defineProperty(exports, \"BalanceOf\", {\n enumerable: true,\n get: function get() {\n return _Balance.BalanceOf;\n }\n});\nObject.defineProperty(exports, \"BalanceLock\", {\n enumerable: true,\n get: function get() {\n return _BalanceLock.default;\n }\n});\nObject.defineProperty(exports, \"BlockNumber\", {\n enumerable: true,\n get: function get() {\n return _BlockNumber.default;\n }\n});\nObject.defineProperty(exports, \"CodeHash\", {\n enumerable: true,\n get: function get() {\n return _CodeHash.default;\n }\n});\nObject.defineProperty(exports, \"ContractInfo\", {\n enumerable: true,\n get: function get() {\n return _ContractInfo.default;\n }\n});\nObject.defineProperty(exports, \"Exposure\", {\n enumerable: true,\n get: function get() {\n return _Exposure.default;\n }\n});\nObject.defineProperty(exports, \"Extrinsic\", {\n enumerable: true,\n get: function get() {\n return _Extrinsic.default;\n }\n});\nObject.defineProperty(exports, \"ExtrinsicEra\", {\n enumerable: true,\n get: function get() {\n return _ExtrinsicEra.default;\n }\n});\nObject.defineProperty(exports, \"ExtrinsicSignature\", {\n enumerable: true,\n get: function get() {\n return _ExtrinsicSignature.default;\n }\n});\nObject.defineProperty(exports, \"Gas\", {\n enumerable: true,\n get: function get() {\n return _Gas.default;\n }\n});\nObject.defineProperty(exports, \"IndividualExposure\", {\n enumerable: true,\n get: function get() {\n return _IndividualExposure.default;\n }\n});\nObject.defineProperty(exports, \"InherentOfflineReport\", {\n enumerable: true,\n get: function get() {\n return _InherentOfflineReport.default;\n }\n});\nObject.defineProperty(exports, \"Key\", {\n enumerable: true,\n get: function get() {\n return _Key.default;\n }\n});\nObject.defineProperty(exports, \"KeyValue\", {\n enumerable: true,\n get: function get() {\n return _KeyValue.default;\n }\n});\nObject.defineProperty(exports, \"LockIdentifier\", {\n enumerable: true,\n get: function get() {\n return _LockIdentifier.default;\n }\n});\nObject.defineProperty(exports, \"LockPeriods\", {\n enumerable: true,\n get: function get() {\n return _LockPeriods.default;\n }\n});\nObject.defineProperty(exports, \"MisbehaviorReport\", {\n enumerable: true,\n get: function get() {\n return _MisbehaviorReport.default;\n }\n});\nObject.defineProperty(exports, \"NewAccountOutcome\", {\n enumerable: true,\n get: function get() {\n return _NewAccountOutcome.default;\n }\n});\nObject.defineProperty(exports, \"Index\", {\n enumerable: true,\n get: function get() {\n return _Nonce.default;\n }\n});\nObject.defineProperty(exports, \"IndexCompact\", {\n enumerable: true,\n get: function get() {\n return _NonceCompact.default;\n }\n});\nObject.defineProperty(exports, \"Justification\", {\n enumerable: true,\n get: function get() {\n return _Justification.default;\n }\n});\nObject.defineProperty(exports, \"ParaId\", {\n enumerable: true,\n get: function get() {\n return _ParaId.default;\n }\n});\nObject.defineProperty(exports, \"Permill\", {\n enumerable: true,\n get: function get() {\n return _Permill.default;\n }\n});\nObject.defineProperty(exports, \"Perbill\", {\n enumerable: true,\n get: function get() {\n return _Perbill.default;\n }\n});\nObject.defineProperty(exports, \"PrefabWasmModule\", {\n enumerable: true,\n get: function get() {\n return _PrefabWasmModule.default;\n }\n});\nObject.defineProperty(exports, \"PropIndex\", {\n enumerable: true,\n get: function get() {\n return _PropIndex.default;\n }\n});\nObject.defineProperty(exports, \"Proposal\", {\n enumerable: true,\n get: function get() {\n return _Proposal.default;\n }\n});\nObject.defineProperty(exports, \"ProposalIndex\", {\n enumerable: true,\n get: function get() {\n return _ProposalIndex.default;\n }\n});\nObject.defineProperty(exports, \"ReferendumIndex\", {\n enumerable: true,\n get: function get() {\n return _ReferendumIndex.default;\n }\n});\nObject.defineProperty(exports, \"ReferendumInfo\", {\n enumerable: true,\n get: function get() {\n return _ReferendumInfo.default;\n }\n});\nObject.defineProperty(exports, \"RewardDestination\", {\n enumerable: true,\n get: function get() {\n return _RewardDestination.default;\n }\n});\nObject.defineProperty(exports, \"Schedule\", {\n enumerable: true,\n get: function get() {\n return _Schedule.default;\n }\n});\nObject.defineProperty(exports, \"SeedOf\", {\n enumerable: true,\n get: function get() {\n return _SeedOf.default;\n }\n});\nObject.defineProperty(exports, \"SessionKey\", {\n enumerable: true,\n get: function get() {\n return _SessionKey.default;\n }\n});\nObject.defineProperty(exports, \"Signature\", {\n enumerable: true,\n get: function get() {\n return _Signature.default;\n }\n});\nObject.defineProperty(exports, \"Ed25519Signature\", {\n enumerable: true,\n get: function get() {\n return _Signature.Ed25519Signature;\n }\n});\nObject.defineProperty(exports, \"Sr25519Signature\", {\n enumerable: true,\n get: function get() {\n return _Signature.Sr25519Signature;\n }\n});\nObject.defineProperty(exports, \"StakingLedger\", {\n enumerable: true,\n get: function get() {\n return _StakingLedger.default;\n }\n});\nObject.defineProperty(exports, \"StoredPendingChange\", {\n enumerable: true,\n get: function get() {\n return _StoredPendingChange.default;\n }\n});\nObject.defineProperty(exports, \"TreasuryProposal\", {\n enumerable: true,\n get: function get() {\n return _TreasuryProposal.default;\n }\n});\nObject.defineProperty(exports, \"UnlockChunk\", {\n enumerable: true,\n get: function get() {\n return _UnlockChunk.default;\n }\n});\nObject.defineProperty(exports, \"ValidatorPrefs\", {\n enumerable: true,\n get: function get() {\n return _ValidatorPrefs.default;\n }\n});\nObject.defineProperty(exports, \"VestingSchedule\", {\n enumerable: true,\n get: function get() {\n return _VestingSchedule.default;\n }\n});\nObject.defineProperty(exports, \"Vote\", {\n enumerable: true,\n get: function get() {\n return _Vote.default;\n }\n});\nObject.defineProperty(exports, \"VoteThreshold\", {\n enumerable: true,\n get: function get() {\n return _VoteThreshold.default;\n }\n});\nObject.defineProperty(exports, \"VoteIndex\", {\n enumerable: true,\n get: function get() {\n return _VoteIndex.default;\n }\n});\nObject.defineProperty(exports, \"WithdrawReasons\", {\n enumerable: true,\n get: function get() {\n return _WithdrawReasons.default;\n }\n});\n\nvar _Amount = _interopRequireDefault(require(\"./Amount\"));\n\nvar _AssetOf = _interopRequireDefault(require(\"./AssetOf\"));\n\nvar _AttestedCandidate = _interopRequireDefault(require(\"./AttestedCandidate\"));\n\nvar _AuthorityId = _interopRequireDefault(require(\"./AuthorityId\"));\n\nvar _Balance = _interopRequireWildcard(require(\"./Balance\"));\n\nvar _BalanceLock = _interopRequireDefault(require(\"./BalanceLock\"));\n\nvar _BlockNumber = _interopRequireDefault(require(\"./BlockNumber\"));\n\nvar _CodeHash = _interopRequireDefault(require(\"./CodeHash\"));\n\nvar _ContractInfo = _interopRequireDefault(require(\"./ContractInfo\"));\n\nvar _Exposure = _interopRequireDefault(require(\"./Exposure\"));\n\nvar _Extrinsic = _interopRequireDefault(require(\"./Extrinsic\"));\n\nvar _ExtrinsicEra = _interopRequireDefault(require(\"./ExtrinsicEra\"));\n\nvar _ExtrinsicSignature = _interopRequireDefault(require(\"./ExtrinsicSignature\"));\n\nvar _Gas = _interopRequireDefault(require(\"./Gas\"));\n\nvar _IndividualExposure = _interopRequireDefault(require(\"./IndividualExposure\"));\n\nvar _InherentOfflineReport = _interopRequireDefault(require(\"./InherentOfflineReport\"));\n\nvar _Key = _interopRequireDefault(require(\"./Key\"));\n\nvar _KeyValue = _interopRequireDefault(require(\"./KeyValue\"));\n\nvar _LockIdentifier = _interopRequireDefault(require(\"./LockIdentifier\"));\n\nvar _LockPeriods = _interopRequireDefault(require(\"./LockPeriods\"));\n\nvar _MisbehaviorReport = _interopRequireDefault(require(\"./MisbehaviorReport\"));\n\nvar _NewAccountOutcome = _interopRequireDefault(require(\"./NewAccountOutcome\"));\n\nvar _Nonce = _interopRequireDefault(require(\"./Nonce\"));\n\nvar _NonceCompact = _interopRequireDefault(require(\"./NonceCompact\"));\n\nvar _Justification = _interopRequireDefault(require(\"./Justification\"));\n\nvar _ParaId = _interopRequireDefault(require(\"./ParaId\"));\n\nvar _Permill = _interopRequireDefault(require(\"./Permill\"));\n\nvar _Perbill = _interopRequireDefault(require(\"./Perbill\"));\n\nvar _PrefabWasmModule = _interopRequireDefault(require(\"./PrefabWasmModule\"));\n\nvar _PropIndex = _interopRequireDefault(require(\"./PropIndex\"));\n\nvar _Proposal = _interopRequireDefault(require(\"./Proposal\"));\n\nvar _ProposalIndex = _interopRequireDefault(require(\"./ProposalIndex\"));\n\nvar _ReferendumIndex = _interopRequireDefault(require(\"./ReferendumIndex\"));\n\nvar _ReferendumInfo = _interopRequireDefault(require(\"./ReferendumInfo\"));\n\nvar _RewardDestination = _interopRequireDefault(require(\"./RewardDestination\"));\n\nvar _Schedule = _interopRequireDefault(require(\"./Schedule\"));\n\nvar _SeedOf = _interopRequireDefault(require(\"./SeedOf\"));\n\nvar _SessionKey = _interopRequireDefault(require(\"./SessionKey\"));\n\nvar _Signature = _interopRequireWildcard(require(\"./Signature\"));\n\nvar _StakingLedger = _interopRequireDefault(require(\"./StakingLedger\"));\n\nvar _StoredPendingChange = _interopRequireDefault(require(\"./StoredPendingChange\"));\n\nvar _TreasuryProposal = _interopRequireDefault(require(\"./TreasuryProposal\"));\n\nvar _UnlockChunk = _interopRequireDefault(require(\"./UnlockChunk\"));\n\nvar _ValidatorPrefs = _interopRequireDefault(require(\"./ValidatorPrefs\"));\n\nvar _VestingSchedule = _interopRequireDefault(require(\"./VestingSchedule\"));\n\nvar _Vote = _interopRequireDefault(require(\"./Vote\"));\n\nvar _VoteThreshold = _interopRequireDefault(require(\"./VoteThreshold\"));\n\nvar _VoteIndex = _interopRequireDefault(require(\"./VoteIndex\"));\n\nvar _WithdrawReasons = _interopRequireDefault(require(\"./WithdrawReasons\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Balance = _interopRequireDefault(require(\"./Balance\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Amount\n * @description\n * The Substrate Amount representation as a [[Balance]].\n */\nclass Amount extends _Balance.default {}\n\nexports.default = Amount;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BalanceOf = exports.default = void 0;\n\nvar _U = _interopRequireDefault(require(\"../primitive/U128\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Balance\n * @description\n * The Substrate Balance representation as a [[U128]].\n */\nclass Balance extends _U.default {}\n/**\n * @name BalanceOf\n * @description\n * The Substrate BalanceOf representation as a [[Balance]].\n */\n\n\nexports.default = Balance;\n\nclass BalanceOf extends Balance {}\n\nexports.BalanceOf = BalanceOf;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Balance = _interopRequireDefault(require(\"./Balance\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name AssetOf\n * @description\n * The Substrate AssetOf representation as a [[Balance]].\n */\nclass AssetOf extends _Balance.default {}\n\nexports.default = AssetOf;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.ValidityVote = exports.ValidityAttestation = exports.ImplicitCandidateSignature = exports.ExplicitCandidateSignature = exports.AvailabilityVote = exports.CandidateReceipt = exports.HeadData = exports.EgressQueueRoot = exports.BalanceUpload = exports.CandidateSignature = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Enum = _interopRequireDefault(require(\"../codec/Enum\"));\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Tuple = _interopRequireDefault(require(\"../codec/Tuple\"));\n\nvar _Vector = _interopRequireDefault(require(\"../codec/Vector\"));\n\nvar _AccountId = _interopRequireDefault(require(\"../primitive/AccountId\"));\n\nvar _Bytes = _interopRequireDefault(require(\"../primitive/Bytes\"));\n\nvar _Hash = _interopRequireDefault(require(\"../primitive/Hash\"));\n\nvar _Null = _interopRequireDefault(require(\"../primitive/Null\"));\n\nvar _U = _interopRequireDefault(require(\"../primitive/U64\"));\n\nvar _ParaId = _interopRequireDefault(require(\"./ParaId\"));\n\nvar _Signature = _interopRequireDefault(require(\"./Signature\"));\n\nvar _SessionKey = _interopRequireDefault(require(\"./SessionKey\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nclass CandidateSignature extends _Signature.default {}\n\nexports.CandidateSignature = CandidateSignature;\n\nclass BalanceUpload extends _Tuple.default.with({\n AccountId: _AccountId.default,\n U64: _U.default\n}) {}\n\nexports.BalanceUpload = BalanceUpload;\n\nclass EgressQueueRoot extends _Tuple.default.with({\n ParaId: _ParaId.default,\n Hash: _Hash.default\n}) {}\n\nexports.EgressQueueRoot = EgressQueueRoot;\n\nclass HeadData extends _Bytes.default {}\n\nexports.HeadData = HeadData;\n\nclass CandidateReceipt extends _Struct.default {\n constructor(value) {\n super({\n parachainIndex: _ParaId.default,\n collator: _AccountId.default,\n signature: CandidateSignature,\n headData: HeadData,\n balanceUploads: _Vector.default.with(BalanceUpload),\n egressQueueRoots: _Vector.default.with(EgressQueueRoot),\n fees: _U.default,\n blockDataHash: _Hash.default\n }, value);\n }\n\n}\n\nexports.CandidateReceipt = CandidateReceipt;\n\nclass AvailabilityVote extends _Tuple.default.with({\n SessionKey: _SessionKey.default,\n CandidateSignature\n}) {}\n\nexports.AvailabilityVote = AvailabilityVote;\n\nclass ExplicitCandidateSignature extends CandidateSignature {}\n\nexports.ExplicitCandidateSignature = ExplicitCandidateSignature;\n\nclass ImplicitCandidateSignature extends CandidateSignature {}\n\nexports.ImplicitCandidateSignature = ImplicitCandidateSignature;\n\nclass ValidityAttestation extends _Enum.default {\n constructor(value) {\n super({\n // This Null is not in the original, however indexes start at 1, so add a\n // placeholder in the first position (which is basically non-valid)\n Null: _Null.default,\n ImplicitCandidateSignature,\n // 1\n ExplicitCandidateSignature // 2\n\n }, value);\n }\n /**\n * @description Returns the item as a [[ExplicitCandidateSignature]]\n */\n\n\n get asExplicitCandidateSignature() {\n (0, _util.assert)(this.toNumber() === 2, \"Cannot convert '\".concat(this.type, \"' via asExplicitCandidateSignature\"));\n return this.value;\n }\n /**\n * @description Returns the item as a [[ImplicitCandidateSignature]]\n */\n\n\n get asImplicitCandidateSignature() {\n (0, _util.assert)(this.toNumber() === 1, \"Cannot convert '\".concat(this.type, \"' via asImplicitCandidateSignature\"));\n return this.value;\n }\n\n}\n\nexports.ValidityAttestation = ValidityAttestation;\n\nclass ValidityVote extends _Tuple.default.with({\n SessionKey: _SessionKey.default,\n ValidityAttestation\n}) {}\n/**\n * @name AttestedCandidate\n * @description\n * An attested candidate\n */\n\n\nexports.ValidityVote = ValidityVote;\n\nclass AttestedCandidate extends _Struct.default {\n constructor(value) {\n super({\n candidate: CandidateReceipt,\n validityVotes: _Vector.default.with(ValidityVote),\n availabilityVotes: _Vector.default.with(AvailabilityVote)\n }, value);\n }\n\n}\n\nexports.default = AttestedCandidate;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _U = _interopRequireDefault(require(\"../primitive/U32\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name ParaId\n * @description\n * Identifier for a deployed parachain implemented as a [[U32]]\n */\nclass ParaId extends _U.default {}\n\nexports.default = ParaId;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _AuthorityId = _interopRequireDefault(require(\"./AuthorityId\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name SessionKey\n * @description\n * Wrapper for a SessionKey. Same as an normal [[AuthorityId]], i.e. a wrapper\n * around publicKey.\n */\nclass SessionKey extends _AuthorityId.default {}\n\nexports.default = SessionKey;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Balance = _interopRequireDefault(require(\"./Balance\"));\n\nvar _BlockNumber = _interopRequireDefault(require(\"./BlockNumber\"));\n\nvar _LockIdentifier = _interopRequireDefault(require(\"./LockIdentifier\"));\n\nvar _WithdrawReasons = _interopRequireDefault(require(\"./WithdrawReasons\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name BalanceLock\n * @description\n * The Substrate BalanceLock for staking\n */\nclass BalanceLock extends _Struct.default {\n constructor(value) {\n super({\n id: _LockIdentifier.default,\n amount: _Balance.default,\n until: _BlockNumber.default,\n reasons: _WithdrawReasons.default\n }, value);\n }\n /**\n * @description The amount\n */\n\n\n get amount() {\n return this.get('amount');\n }\n /**\n * @description The lock id\n */\n\n\n get id() {\n return this.get('id');\n }\n /**\n * @description The reasons\n */\n\n\n get reasons() {\n return this.get('reasons');\n }\n /**\n * @description Until when this is available\n */\n\n\n get until() {\n return this.get('until');\n }\n\n}\n\nexports.default = BalanceLock;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _U8aFixed = _interopRequireDefault(require(\"../codec/U8aFixed\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name LockIdentifier\n * @description\n * The Substrate LockIdentifier for staking\n */\nclass LockIdentifier extends _U8aFixed.default {\n constructor(value) {\n super(value, 64); // [u8; 8]\n }\n\n}\n\nexports.default = LockIdentifier;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Set = _interopRequireDefault(require(\"../codec/Set\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name WithdrawReasons\n * @description\n * The Substrate WithdrawReasons for staking\n */\nclass WithdrawReasons extends _Set.default {\n constructor() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n super({\n TransactionPayment: 0b00000001,\n Transfer: 0b00000010,\n Reserve: 0b00000100,\n Fee: 0b00001000\n }, value);\n }\n /**\n * @description In order to reserve some funds for a later return or repatriation\n */\n\n\n get isReserve() {\n return this.strings.includes('Reserve');\n }\n /**\n * @description In order to pay for (system) transaction costs\n */\n\n\n get isTransactionPayment() {\n return this.strings.includes('TransactionPayment');\n }\n /**\n * @description In order to transfer ownership\n */\n\n\n get isTransfer() {\n return this.strings.includes('Transfer');\n }\n /**\n * @description /// In order to pay some other (higher-level) fees.\n */\n\n\n get isFee() {\n return this.strings.includes('Fee');\n }\n\n}\n\nexports.default = WithdrawReasons;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Hash = _interopRequireDefault(require(\"../primitive/Hash\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name CodeHash\n * @description\n * The default contract code hash that is used accross the system. It is a\n * wrapper around [[Hash]], representing a 32-byte blake2b (Substrate) value\n */\nclass CodeHash extends _Hash.default {}\n\nexports.default = CodeHash;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Tombstone = exports.TombstoneContractInfo = exports.Alive = exports.AliveContractInfo = exports.TrieId = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Bytes = _interopRequireDefault(require(\"../primitive/Bytes\"));\n\nvar _Enum = _interopRequireDefault(require(\"../codec/Enum\"));\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Hash = _interopRequireDefault(require(\"../primitive/Hash\"));\n\nvar _U = _interopRequireDefault(require(\"../primitive/U64\"));\n\nvar _Balance = _interopRequireDefault(require(\"./Balance\"));\n\nvar _BlockNumber = _interopRequireDefault(require(\"./BlockNumber\"));\n\nvar _CodeHash = _interopRequireDefault(require(\"./CodeHash\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nclass TrieId extends _Bytes.default {}\n\nexports.TrieId = TrieId;\n\nclass AliveContractInfo extends _Struct.default {\n constructor(value) {\n super({\n trieId: TrieId,\n storageSize: _U.default,\n codeHash: _CodeHash.default,\n rentAllowance: _Balance.default,\n deductBlock: _BlockNumber.default\n }, value);\n }\n\n get codeHash() {\n return this.get('codeHash');\n }\n\n get deductBlock() {\n return this.get('deductBlock');\n }\n\n get rentAllowance() {\n return this.get('rentAllowance');\n }\n\n get storageSize() {\n return this.get('storageSize');\n }\n\n get trieId() {\n return this.get('trieId');\n }\n\n}\n\nexports.AliveContractInfo = AliveContractInfo;\n\nclass Alive extends AliveContractInfo {}\n\nexports.Alive = Alive;\n\nclass TombstoneContractInfo extends _Hash.default {}\n\nexports.TombstoneContractInfo = TombstoneContractInfo;\n\nclass Tombstone extends TombstoneContractInfo {}\n/**\n * @name ContractInfo\n * @description\n * The contract information for a given contract\n */\n\n\nexports.Tombstone = Tombstone;\n\nclass ContractInfo extends _Enum.default {\n constructor(value) {\n super({\n Alive,\n Tombstone\n }, value);\n }\n /**\n * @description Returns the item as an [[Alive]]\n */\n\n\n get asAlive() {\n (0, _util.assert)(this.isAlive, \"Cannot convert '\".concat(this.type, \"' via asAlive\"));\n return this.value;\n }\n /**\n * @description Returns the item as an [[Tombstone]]\n */\n\n\n get asTombstone() {\n (0, _util.assert)(this.isTombstone, \"Cannot convert '\".concat(this.type, \"' via asTombstone\"));\n return this.value;\n }\n /**\n * @description value is an [[Alive]]\n */\n\n\n get isAlive() {\n return this.toNumber() === 0;\n }\n /**\n * @description value is an [[Tombstone]]\n */\n\n\n get isTombstone() {\n return this.toNumber() === 1;\n }\n\n}\n\nexports.default = ContractInfo;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Compact = _interopRequireDefault(require(\"../codec/Compact\"));\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Vector = _interopRequireDefault(require(\"../codec/Vector\"));\n\nvar _Balance = _interopRequireDefault(require(\"./Balance\"));\n\nvar _IndividualExposure = _interopRequireDefault(require(\"./IndividualExposure\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Exposure\n * @description\n * A snapshot of the stake backing a single validator in the system\n */\nclass Exposure extends _Struct.default {\n constructor(value) {\n super({\n total: _Compact.default.with(_Balance.default),\n own: _Compact.default.with(_Balance.default),\n others: _Vector.default.with(_IndividualExposure.default)\n }, value);\n }\n /**\n * @description The validator's own stash that is exposed\n */\n\n\n get own() {\n return this.get('own').toBn();\n }\n /**\n * @description The total balance backing this validator\n */\n\n\n get total() {\n return this.get('total').toBn();\n }\n /**\n * @description The portions of nominators stashes that are exposed\n */\n\n\n get others() {\n return this.get('others');\n }\n\n}\n\nexports.default = Exposure;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Compact = _interopRequireDefault(require(\"../codec/Compact\"));\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _AccountId = _interopRequireDefault(require(\"../primitive/AccountId\"));\n\nvar _Balance = _interopRequireDefault(require(\"./Balance\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name IndividualExposure\n * @description\n * The Substrate IndividualExposure for staking\n */\nclass IndividualExposure extends _Struct.default {\n constructor(value) {\n super({\n who: _AccountId.default,\n value: _Compact.default.with(_Balance.default)\n }, value);\n }\n /**\n * @description The value\n */\n\n\n get value() {\n return this.get('value').toBn();\n }\n /**\n * @description The AccountId\n */\n\n\n get who() {\n return this.get('who');\n }\n\n}\n\nexports.default = IndividualExposure;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _U = _interopRequireDefault(require(\"../primitive/U64\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Gas\n * @description\n * A gas number type for Substrate, extending [[U64]]\n */\nclass Gas extends _U.default {}\n\nexports.default = Gas;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Tuple = _interopRequireDefault(require(\"../codec/Tuple\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name InherentOfflineReport\n * @description\n * Describes the offline-reporting extrinsic\n */\nclass InherentOfflineReport extends _Tuple.default.with({}) {}\n\nexports.default = InherentOfflineReport;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Bytes = _interopRequireDefault(require(\"../primitive/Bytes\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Key\n * @description\n * The Substrate Key representation as a [[Bytes]] (`vec`).\n */\nclass Key extends _Bytes.default {}\n\nexports.default = Key;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _I = _interopRequireDefault(require(\"../primitive/I8\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name LockPeriods\n * @description\n * A number of lock periods.\n */\nclass LockPeriods extends _I.default {}\n\nexports.default = LockPeriods;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.MisbehaviorKind = exports.BftDoubleCommit = exports.BftDoublePrepare = exports.BftDoublePropose = exports.BftProposeOutOfTurn = exports.BftAtReport = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Enum = _interopRequireDefault(require(\"../codec/Enum\"));\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Hash = _interopRequireDefault(require(\"../primitive/Hash\"));\n\nvar _U = _interopRequireDefault(require(\"../primitive/U32\"));\n\nvar _AuthorityId = _interopRequireDefault(require(\"./AuthorityId\"));\n\nvar _Bft = require(\"./Bft\");\n\nvar _BlockNumber = _interopRequireDefault(require(\"./BlockNumber\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name BftAtReport\n * @description\n * A report of a/b hash-signature pairs for a specific index. This is the same\n * structure as is used in BftDoublePrepare & BftDoubleCommit\n */\n// FIXME It is not entirely obvious from the actual Rust code what the specific\n// items in the structure is called, except a & b (one should be expected, the\n// other actual)\nclass BftAtReport extends _Struct.default {\n constructor(value) {\n super({\n round: _U.default,\n a: _Bft.BftHashSignature,\n b: _Bft.BftHashSignature\n }, value);\n }\n /**\n * @description The first report [[BftHashSignature]]\n */\n\n\n get a() {\n return this.get('a');\n }\n /**\n * @description The second report [[BftHashSignature]]\n */\n\n\n get b() {\n return this.get('b');\n }\n /**\n * @description The round this report applies to as [[U32]]\n */\n\n\n get round() {\n return this.get('round');\n }\n\n}\n/**\n * @name BftProposeOutOfTurn\n * @description\n * A report for out-of-turn proposals\n */\n\n\nexports.BftAtReport = BftAtReport;\n\nclass BftProposeOutOfTurn extends _Struct.default {\n constructor(value) {\n super({\n round: _U.default,\n a: _Bft.BftHashSignature\n }, value);\n }\n /**\n * @description The [[BftHashSignature]] the report applies to\n */\n\n\n get a() {\n return this.get('a');\n }\n /**\n * @description The round as [[u32]]\n */\n\n\n get round() {\n return this.get('round');\n }\n\n}\n/**\n * @name BftDoublePropose\n * @description\n * Report of a double-propose\n */\n\n\nexports.BftProposeOutOfTurn = BftProposeOutOfTurn;\n\nclass BftDoublePropose extends BftAtReport {}\n/**\n * @name BftDoublePrepare\n * @description\n * Report of a double-prepare\n */\n\n\nexports.BftDoublePropose = BftDoublePropose;\n\nclass BftDoublePrepare extends BftAtReport {}\n/**\n * @name BftDoubleCommit\n * @description\n * Report of a double-commit\n */\n\n\nexports.BftDoublePrepare = BftDoublePrepare;\n\nclass BftDoubleCommit extends BftAtReport {}\n/**\n * @name MisbehaviorKind\n * @description\n * An [[Enum]] containing a Bft misbehaviour\n */\n\n\nexports.BftDoubleCommit = BftDoubleCommit;\n\nclass MisbehaviorKind extends _Enum.default {\n constructor(value, index) {\n super({\n BftProposeOutOfTurn,\n BftDoublePropose,\n BftDoublePrepare,\n BftDoubleCommit\n }, value, index);\n }\n /**\n * @description Returns the item as a [[BftDoubleCommit]]\n */\n\n\n get asBftDoubleCommit() {\n (0, _util.assert)(this.isBftDoubleCommit, \"Cannot convert '\".concat(this.type, \"' via asBftDoubleCommit\"));\n return this.value;\n }\n /**\n * @description Returns the item as a [[BftDoublePrepare]]\n */\n\n\n get asBftDoublePrepare() {\n (0, _util.assert)(this.isBftDoublePrepare, \"Cannot convert '\".concat(this.type, \"' via asBftDoublePrepare\"));\n return this.value;\n }\n /**\n * @description Returns the item as a [[BftDoublePropose]]\n */\n\n\n get asBftDoublePropose() {\n (0, _util.assert)(this.isBftDoublePropose, \"Cannot convert '\".concat(this.type, \"' via asBftDoublePropose\"));\n return this.value;\n }\n /**\n * @description Returns the item as a [[BftProposeOutOfTurn]]\n */\n\n\n get asBftProposeOutOfTurn() {\n (0, _util.assert)(this.isBftProposeOutOfTurn, \"Cannot convert '\".concat(this.type, \"' via asBftProposeOutOfTurn\"));\n return this.value;\n }\n /**\n * @description true when this is a BftDoubleCommit\n */\n\n\n get isBftDoubleCommit() {\n return this.type === 'BftDoubleCommit';\n }\n /**\n * @description true when this is a BftDoublePrepare\n */\n\n\n get isBftDoublePrepare() {\n return this.type === 'BftDoublePrepare';\n }\n /**\n * @description true when this is a BftDoublePropose\n */\n\n\n get isBftDoublePropose() {\n return this.type === 'BftDoublePropose';\n }\n /**\n * @description true when this is a BftProposeOutOfTurn\n */\n\n\n get isBftProposeOutOfTurn() {\n return this.type === 'BftProposeOutOfTurn';\n }\n\n}\n\nexports.MisbehaviorKind = MisbehaviorKind;\n\n/**\n * @name MisbehaviorReport\n * @description\n * A Misbehaviour report of [[MisbehavioirKind]] against a specific [[AuthorityId]]\n */\nclass MisbehaviorReport extends _Struct.default {\n constructor(value) {\n super({\n parentHash: _Hash.default,\n parentNumber: _BlockNumber.default,\n target: _AuthorityId.default,\n misbehavior: MisbehaviorKind\n }, value);\n }\n /**\n * @description The [[MisbehaviorKind]]\n */\n\n\n get misbehavior() {\n return this.get('misbehavior');\n }\n /**\n * @description The [[Hash]] of the parent block\n */\n\n\n get parentHash() {\n return this.get('parentHash');\n }\n /**\n * @description The [[BlockNumber]] of the parent\n */\n\n\n get parentNumber() {\n return this.get('parentNumber');\n }\n /**\n * @description The [[authorityId]] the report applies to\n */\n\n\n get target() {\n return this.get('target');\n }\n\n}\n\nexports.default = MisbehaviorReport;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Enum = _interopRequireDefault(require(\"../codec/Enum\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name NewAccountOutcome\n * @description\n * Enum to track the outcome for creation of an [[AccountId]]\n */\nclass NewAccountOutcome extends _Enum.default {\n constructor(index) {\n super(['NoHint', 'GoodHint', 'BadHint'], index);\n }\n\n}\n\nexports.default = NewAccountOutcome;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _U = _interopRequireDefault(require(\"../primitive/U32\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Permill\n * @description\n * Parts per million (See also [[Perbill]])\n */\n// TODO We need to think about the toNumber() and toString() here, so we\n// want to multiply by 1_000_000 for those purposes?\nclass Permill extends _U.default {}\n\nexports.default = Permill;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _U = _interopRequireDefault(require(\"../primitive/U32\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Perbill\n * @description\n * Parts per billion (see also [[Permill]])\n */\n// TODO We need to think about the toNumber() and toString() here, so we\n// want to multiply by 1_000_000_000 for those purposes?\nclass Perbill extends _U.default {}\n\nexports.default = Perbill;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Compact = _interopRequireDefault(require(\"../codec/Compact\"));\n\nvar _Option = _interopRequireDefault(require(\"../codec/Option\"));\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Bytes = _interopRequireDefault(require(\"../primitive/Bytes\"));\n\nvar _U = _interopRequireDefault(require(\"../primitive/U32\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nclass PrefabWasmModuleReserved extends _Option.default {}\n/**\n * @name PrefabWasmModule\n * @description Struct to encode the vesting schedule of an individual account\n */\n\n\nclass PrefabWasmModule extends _Struct.default {\n constructor(value) {\n super({\n scheduleVersion: _Compact.default.with(_U.default),\n initial: _Compact.default.with(_U.default),\n maximum: _Compact.default.with(_U.default),\n _reserved: PrefabWasmModuleReserved,\n code: _Bytes.default\n }, value);\n }\n /**\n * @description The code as [[Bytes]]\n */\n\n\n get code() {\n return this.get('code');\n }\n /**\n * @description The initial as [[Compact]]\n */\n\n\n get initial() {\n return this.get('initial');\n }\n /**\n * @description The maximum as [[Compact]]\n */\n\n\n get maximum() {\n return this.get('maximum');\n }\n /**\n * @description The scheduleVersion value as [[Compact]]\n */\n\n\n get scheduleVersion() {\n return this.get('scheduleVersion');\n }\n\n}\n\nexports.default = PrefabWasmModule;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _U = _interopRequireDefault(require(\"../primitive/U32\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name PropIndex\n * @description\n * An increasing number that represents a specific public proposal index in the\n * system, implemented as a [[U32]]\n */\nclass PropIndex extends _U.default {}\n\nexports.default = PropIndex;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Method = _interopRequireDefault(require(\"../primitive/Method\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Proposal\n * @description\n * A proposal in the system. It just extends [[Method]] (Proposal = Call in Rust)\n */\nclass Proposal extends _Method.default {}\n\nexports.default = Proposal;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _U = _interopRequireDefault(require(\"../primitive/U32\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name ProposalIndex\n * @description\n * An increasing number that represents a specific council proposal index in\n * the system, implemented as [[U32]]\n */\nclass ProposalIndex extends _U.default {}\n\nexports.default = ProposalIndex;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _U = _interopRequireDefault(require(\"../primitive/U32\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name ReferendumIndex\n * @description\n * An increasing number that represents a specific referendum in the system. It\n * is unique per chain. Implemented as [[U32]]\n */\nclass ReferendumIndex extends _U.default {}\n\nexports.default = ReferendumIndex;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _BlockNumber = _interopRequireDefault(require(\"./BlockNumber\"));\n\nvar _Proposal = _interopRequireDefault(require(\"./Proposal\"));\n\nvar _VoteThreshold = _interopRequireDefault(require(\"./VoteThreshold\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name ReferendumInfo\n * @description\n * Info regarding an ongoing referendum\n */\nclass ReferendumInfo extends _Struct.default {\n constructor(value) {\n super({\n end: _BlockNumber.default,\n proposal: _Proposal.default,\n threshold: _VoteThreshold.default,\n delay: _BlockNumber.default\n }, value);\n }\n /**\n * @description When voting on this referendum will end\n */\n\n\n get end() {\n return this.get('end');\n }\n /**\n * @description The proposal being voted on\n */\n\n\n get proposal() {\n return this.get('proposal');\n }\n /**\n * @description The thresholding mechanism to determine whether it passed\n */\n\n\n get threshold() {\n return this.get('threshold');\n }\n /**\n * @description The delay (in blocks) to wait after a successful referendum before deploying\n */\n\n\n get delay() {\n return this.get('delay');\n }\n\n}\n\nexports.default = ReferendumInfo;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Enum = _interopRequireDefault(require(\"../codec/Enum\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name VoteThreshold\n * @description\n * Voting threshold, used inside proposals to set change the voting tally\n */\nclass VoteThreshold extends _Enum.default {\n constructor(index) {\n super(['Super majority approval', 'Super majority rejection', 'Simple majority'], index);\n }\n\n}\n\nexports.default = VoteThreshold;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Enum = _interopRequireDefault(require(\"../codec/Enum\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name RewardDestination\n * @description\n * A destination account for payment\n */\nclass RewardDestination extends _Enum.default {\n constructor(value) {\n super([// Pay into the stash account, increasing the amount at stake accordingly.\n 'Staked', // Pay into the stash account, not increasing the amount at stake.\n 'Stash', // Pay into the controller account.\n 'Controller'], value);\n }\n\n}\n\nexports.default = RewardDestination;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _U = _interopRequireDefault(require(\"../primitive/U32\"));\n\nvar _Gas = _interopRequireDefault(require(\"./Gas\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Schedule\n * @description\n * Definition of the cost schedule and other parameterizations for wasm vm\n */\nclass Schedule extends _Struct.default {\n constructor(value) {\n super({\n version: _U.default,\n putCodePerByteCost: _Gas.default,\n growMemCost: _Gas.default,\n regularOpCost: _Gas.default,\n returnDataPerByteCost: _Gas.default,\n sandboxDataReadCost: _Gas.default,\n sandboxDataWriteCost: _Gas.default,\n maxStackHeight: _U.default,\n maxMemoryPages: _U.default\n }, value);\n }\n /**\n * @description Gas cost of a growing memory by single page.\n */\n\n\n get growMemCost() {\n return this.get('growMemCost');\n }\n /**\n * @description What is the maximal memory pages amount is allowed to have for a contract.\n */\n\n\n get maxMemoryPages() {\n return this.get('maxMemoryPages');\n }\n /**\n * @description How tall the stack is allowed to grow?\n */\n\n\n get maxStackHeight() {\n return this.get('maxStackHeight');\n }\n /**\n * @description Cost of putting a byte of code into the storage.\n */\n\n\n get putCodePerByteCost() {\n return this.get('putCodePerByteCost');\n }\n /**\n * @description Gas cost of a regular operation.\n */\n\n\n get regularOpCost() {\n return this.get('regularOpCost');\n }\n /**\n * @description Gas cost per one byte returned.\n */\n\n\n get returnDataPerByteCost() {\n return this.get('returnDataPerByteCost');\n }\n /**\n * @description Gas cost per one byte read from the sandbox memory.\n */\n\n\n get sandboxDataReadCost() {\n return this.get('sandboxDataReadCost');\n }\n /**\n * @description Gas cost per one byte written to the sandbox memory.\n */\n\n\n get sandboxDataWriteCost() {\n return this.get('sandboxDataWriteCost');\n }\n /**\n * @description Version of the schedule.\n */\n\n\n get version() {\n return this.get('version');\n }\n\n}\n\nexports.default = Schedule;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Hash = _interopRequireDefault(require(\"../primitive/Hash\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name SeedOf\n * @description\n * The Substrate SeedOf representation as a [[Hash]].\n */\nclass SeedOf extends _Hash.default {}\n\nexports.default = SeedOf;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Compact = _interopRequireDefault(require(\"../codec/Compact\"));\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Vector = _interopRequireDefault(require(\"../codec/Vector\"));\n\nvar _AccountId = _interopRequireDefault(require(\"../primitive/AccountId\"));\n\nvar _Balance = _interopRequireDefault(require(\"./Balance\"));\n\nvar _UnlockChunk = _interopRequireDefault(require(\"./UnlockChunk\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name StakingLedger\n * @description\n * The ledger of a (bonded) stash\n */\nclass StakingLedger extends _Struct.default {\n constructor(value) {\n super({\n stash: _AccountId.default,\n total: _Compact.default.with(_Balance.default),\n active: _Compact.default.with(_Balance.default),\n unlocking: _Vector.default.with(_UnlockChunk.default)\n }, value);\n }\n /**\n * @description The total amount of the stash's balance that will be at stake in any forthcoming rounds\n */\n\n\n get active() {\n return this.get('active').toBn();\n }\n /**\n * @description The stash account whose balance is actually locked and at stake\n */\n\n\n get stash() {\n return this.get('stash');\n }\n /**\n * @description The total amount of the stash's balance that we are currently accounting for. It's just `active` plus all the `unlocking` balances\n */\n\n\n get total() {\n return this.get('total').toBn();\n }\n /**\n * @description Any balance that is becoming free, which may eventually be transferred out of the stash (assuming it doesn't get slashed first)\n */\n\n\n get unlocking() {\n return this.get('unlocking');\n }\n\n}\n\nexports.default = StakingLedger;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Compact = _interopRequireDefault(require(\"../codec/Compact\"));\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Balance = _interopRequireDefault(require(\"./Balance\"));\n\nvar _BlockNumber = _interopRequireDefault(require(\"./BlockNumber\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name UnlockChunk\n * @description\n * Just a Balance/BlockNumber tuple to encode when a chunk of funds will be unlocked\n */\nclass UnlockChunk extends _Struct.default {\n constructor(value) {\n super({\n value: _Compact.default.with(_Balance.default),\n era: _Compact.default.with(_BlockNumber.default)\n }, value);\n }\n /**\n * @description Era number at which point it'll be unlocked\n */\n\n\n get era() {\n return this.get('era').toBn();\n }\n /**\n * @description Amount of funds to be unlocked\n */\n\n\n get value() {\n return this.get('value').toBn();\n }\n\n}\n\nexports.default = UnlockChunk;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.NextAuthority = void 0;\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Tuple = _interopRequireDefault(require(\"../codec/Tuple\"));\n\nvar _Vector = _interopRequireDefault(require(\"../codec/Vector\"));\n\nvar _U = _interopRequireDefault(require(\"../primitive/U64\"));\n\nvar _BlockNumber = _interopRequireDefault(require(\"./BlockNumber\"));\n\nvar _SessionKey = _interopRequireDefault(require(\"./SessionKey\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name NextAuthority\n * @description\n * The next authority available as [[SessionKey]]\n */\nclass NextAuthority extends _Tuple.default {\n constructor(value) {\n super({\n SessionKey: _SessionKey.default,\n U64: _U.default\n }, value);\n }\n\n get index() {\n return this[1];\n }\n\n get sessionKey() {\n return this[0];\n }\n\n}\n/**\n * @name StoredPendingChange\n * @description\n * Stored pending change for a Grandpa events\n */\n\n\nexports.NextAuthority = NextAuthority;\n\nclass StoredPendingChange extends _Struct.default {\n constructor(value) {\n super({\n scheduledAt: _BlockNumber.default,\n delay: _BlockNumber.default,\n nextAuthorities: _Vector.default.with(NextAuthority)\n }, value);\n }\n\n get delay() {\n return this.get('delay');\n }\n\n get nextAuthorities() {\n return this.get('nextAuthorities');\n }\n\n get scheduledAt() {\n return this.get('scheduledAt');\n }\n\n}\n\nexports.default = StoredPendingChange;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _AccountId = _interopRequireDefault(require(\"../primitive/AccountId\"));\n\nvar _Balance = _interopRequireDefault(require(\"./Balance\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name TreasuryProposal\n * @description\n * A Proposal made for Treasury\n */\nclass TreasuryProposal extends _Struct.default {\n constructor(value) {\n super({\n proposer: _AccountId.default,\n value: _Balance.default,\n beneficiary: _AccountId.default,\n bond: _Balance.default\n }, value);\n }\n /**\n * @description The beneficiary\n */\n\n\n get beneficiary() {\n return this.get('beneficiary');\n }\n /**\n * @description The bond\n */\n\n\n get bond() {\n return this.get('bond');\n }\n /**\n * @description The proposer\n */\n\n\n get proposer() {\n return this.get('proposer');\n }\n /**\n * @description The bond\n */\n\n\n get value() {\n return this.get('value');\n }\n\n}\n\nexports.default = TreasuryProposal;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Compact = _interopRequireDefault(require(\"../codec/Compact\"));\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _U = _interopRequireDefault(require(\"../primitive/U32\"));\n\nvar _Balance = _interopRequireDefault(require(\"./Balance\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name ValidatorPrefs\n * @description\n * Validator preferences\n */\nclass ValidatorPrefs extends _Struct.default {\n constructor(value) {\n super({\n unstakeThreshold: _Compact.default.with(_U.default),\n validatorPayment: _Compact.default.with(_Balance.default)\n }, value);\n }\n /**\n * @description The unstake threshold as [[U32]]\n */\n\n\n get unstakeThreshold() {\n return this.get('unstakeThreshold');\n }\n /**\n * @description The payment config for the validator as a [[Compact]] [[Balance]]\n */\n\n\n get validatorPayment() {\n return this.get('validatorPayment');\n }\n\n}\n\nexports.default = ValidatorPrefs;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Struct = _interopRequireDefault(require(\"../codec/Struct\"));\n\nvar _Balance = _interopRequireDefault(require(\"./Balance\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name VestingSchedule\n * @description Struct to encode the vesting schedule of an individual account\n */\nclass VestingSchedule extends _Struct.default {\n constructor(value) {\n super({\n offset: _Balance.default,\n perBlock: _Balance.default\n }, value);\n }\n /**\n * @description The offset as [[Balance]]\n */\n\n\n get offset() {\n return this.get('offset');\n }\n /**\n * @description The perBlock value as [[Balance]]\n */\n\n\n get perBlock() {\n return this.get('perBlock');\n }\n\n}\n\nexports.default = VestingSchedule;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\nvar _I = _interopRequireDefault(require(\"../primitive/I8\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name Vote\n * @description\n * A number of lock periods, plus a vote, one way or the other.\n */\nclass Vote extends _I.default {\n constructor(value) {\n super(Vote.decodeVote(value));\n }\n\n static decodeVote(value) {\n if ((0, _util.isBoolean)(value)) {\n return value ? -1 : 0;\n } else if (value instanceof Boolean) {\n return Vote.decodeVote(value.valueOf());\n }\n\n return value;\n }\n /**\n * @description true is the wrapped value is a positive vote\n */\n\n\n get isAye() {\n return this.ltn(0);\n }\n /**\n * @description true is the wrapped value is a negative vote\n */\n\n\n get isNay() {\n return !this.isAye;\n }\n\n}\n\nexports.default = Vote;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _U = _interopRequireDefault(require(\"../primitive/U32\"));\n\n// Copyright 2017-2019 @polkadot/types authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name VoteIndex\n * @description\n * Voting index, implemented as a [[U32]]\n */\nclass VoteIndex extends _U.default {}\n\nexports.default = VoteIndex;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.idToIndex = idToIndex;\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _indexes = require(\"./indexes\");\n\nvar _drr = require(\"../util/drr\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name idToIndex\n * @param {( AccountId | string )} accountId - An accounts Id in different formats.\n * @returns Returns the corresponding AccountIndex.\n * @example\n *
\n *\n * ```javascript\n * const ALICE = '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY';\n * api.derive.accounts.idToIndex(ALICE, (accountIndex) => {\n * console.log(`The AccountIndex of ${ALICE} is ${accountIndex}`);\n * });\n * ```\n */\nfunction idToIndex(api) {\n return accountId => (0, _indexes.indexes)(api)().pipe((0, _operators.startWith)({}), (0, _operators.map)(indexes => (indexes || {})[accountId.toString()]), (0, _drr.drr)());\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.indexes = indexes;\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _AccountIndex = require(\"@polkadot/types/primitive/AccountIndex\");\n\nvar _types = require(\"@polkadot/types\");\n\nvar _drr = require(\"../util/drr\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst enumsetSize = _AccountIndex.ENUMSET_SIZE.toNumber();\n/**\n * @name indexes\n * @returns Returns all the indexes on the system.\n * @description This is an unwieldly query since it loops through\n * all of the enumsets and returns all of the values found. This could be up to 32k depending\n * on the number of active accounts in the system\n * @example\n *
\n *\n * ```javascript\n * api.derive.accounts.indexes((indexes) => {\n * console.log('All existing AccountIndexes', indexes);\n * });\n * ```\n */\n\n\nfunction indexes(api) {\n return () => {\n return api.query.indices.nextEnumSet().pipe( // use the nextEnumSet (which is a counter of the number of sets) to construct\n // a range of values to query [0, 1, 2, ...]. Retrieve the full enum set for the\n // specific index - each query can return up to ENUMSET_SIZE (64) records, each\n (0, _operators.switchMap)(next => api.query.indices.enumSet.multi([...Array(next.toNumber() + 1).keys()])), (0, _operators.map)(all => (all || []).reduce((result, list, outerIndex) => {\n (list || []).forEach((accountId, innerIndex) => {\n // re-create the index based on position 0 is [0][0] and likewise\n // 64 (0..63 in first) is [1][0] (the first index value in set 2)\n const index = outerIndex * enumsetSize + innerIndex;\n result[accountId.toString()] = new _types.AccountIndex(index);\n });\n return result;\n }, {})), (0, _drr.drr)());\n };\n}","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.drr = void 0;\n\nvar _operators = require(\"rxjs/operators\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * Shorthand for distinctUntilChanged(), publishReplay(1) and refCount().\n *\n * @ignore\n */\nconst drr = () => source$ => source$.pipe((0, _operators.distinctUntilChanged)(), (0, _operators.publishReplay)(1), (0, _operators.refCount)());\n\nexports.drr = drr;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.indexToId = indexToId;\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _AccountIndex = require(\"@polkadot/types/primitive/AccountIndex\");\n\nvar _types = require(\"@polkadot/types\");\n\nvar _drr = require(\"../util/drr\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name indexToId\n * @param {( AccountIndex | string )} accountIndex - An accounts index in different formats.\n * @returns Returns the corresponding AccountId.\n * @example\n *
\n *\n * ```javascript\n * api.derive.accounts.indexToId('F7Hs', (accountId) => {\n * console.log(`The AccountId of F7Hs is ${accountId}`);\n * });\n * ```\n */\nfunction indexToId(api) {\n return _accountIndex => {\n const querySection = api.query.indices || api.query.balances;\n const accountIndex = _accountIndex instanceof _types.AccountIndex ? _accountIndex : new _types.AccountIndex(_accountIndex);\n return querySection.enumSet(accountIndex.div(_AccountIndex.ENUMSET_SIZE)).pipe((0, _operators.startWith)([]), (0, _operators.map)(accounts => (accounts || [])[accountIndex.mod(_AccountIndex.ENUMSET_SIZE).toNumber()]), (0, _drr.drr)());\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _all = require(\"./all\");\n\nObject.keys(_all).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _all[key];\n }\n });\n});\n\nvar _fees = require(\"./fees\");\n\nObject.keys(_fees).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _fees[key];\n }\n });\n});\n\nvar _validatingBalance = require(\"./validatingBalance\");\n\nObject.keys(_validatingBalance).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _validatingBalance[key];\n }\n });\n});\n\nvar _validatingBalances = require(\"./validatingBalances\");\n\nObject.keys(_validatingBalances).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _validatingBalances[key];\n }\n });\n});\n\nvar _votingBalance = require(\"./votingBalance\");\n\nObject.keys(_votingBalance).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _votingBalance[key];\n }\n });\n});\n\nvar _votingBalances = require(\"./votingBalances\");\n\nObject.keys(_votingBalances).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _votingBalances[key];\n }\n });\n});\n\nvar _votingBalancesNominatorsFor = require(\"./votingBalancesNominatorsFor\");\n\nObject.keys(_votingBalancesNominatorsFor).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _votingBalancesNominatorsFor[key];\n }\n });\n});","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.all = all;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _rxjs = require(\"rxjs\");\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _types = require(\"@polkadot/types\");\n\nvar _util = require(\"@polkadot/util\");\n\nvar _idAndIndex = require(\"../accounts/idAndIndex\");\n\nvar _drr = require(\"../util/drr\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst EMPTY_ACCOUNT = new _types.AccountId();\n\nfunction calcBalances(_ref) {\n let _ref2 = (0, _slicedToArray2.default)(_ref, 3),\n _ref2$ = _ref2[0],\n accountId = _ref2$ === void 0 ? EMPTY_ACCOUNT : _ref2$,\n _ref2$2 = _ref2[1],\n bestNumber = _ref2$2 === void 0 ? new _types.BlockNumber(0) : _ref2$2,\n _ref2$3 = (0, _slicedToArray2.default)(_ref2[2], 4),\n _ref2$3$ = _ref2$3[0],\n freeBalance = _ref2$3$ === void 0 ? new _types.Balance(0) : _ref2$3$,\n _ref2$3$2 = _ref2$3[1],\n reservedBalance = _ref2$3$2 === void 0 ? new _types.Balance(0) : _ref2$3$2,\n _ref2$3$3 = _ref2$3[2],\n locks = _ref2$3$3 === void 0 ? [] : _ref2$3$3,\n _ref2$3$4 = _ref2$3[3],\n vesting = _ref2$3$4 === void 0 ? new _types.Option(_types.VestingSchedule, null) : _ref2$3$4;\n\n let lockedBalance = new _types.Balance(0);\n\n if (Array.isArray(locks)) {\n // only get the locks that are valid until passed the current block\n const totals = locks.filter(value => bestNumber && value.until.gt(bestNumber)); // get the maximum of the locks according to https://github.com/paritytech/substrate/blob/master/srml/balances/src/lib.rs#L699\n\n lockedBalance = totals[0] ? (0, _util.bnMax)(...totals.map((_ref3) => {\n let amount = _ref3.amount;\n return amount;\n })) : new _types.Balance(0);\n }\n\n const _vesting$unwrapOr = vesting.unwrapOr({\n offset: new _types.Balance(0),\n perBlock: new _types.Balance(0)\n }),\n offset = _vesting$unwrapOr.offset,\n perBlock = _vesting$unwrapOr.perBlock;\n\n const vestedBalance = new _types.Balance(perBlock.mul(bestNumber).add(freeBalance.sub(offset)));\n const availableBalance = new _types.Balance(vestedBalance.sub(lockedBalance));\n return {\n accountId,\n freeBalance,\n reservedBalance,\n votingBalance: new _types.Balance(freeBalance.add(reservedBalance)),\n availableBalance,\n lockedBalance,\n vestedBalance: vestedBalance.lt(new _types.Balance(0)) ? new _types.Balance(0) : vestedBalance\n };\n}\n/**\n * @name all\n * @param {( ccountIndex | AccountId | Address | string )} address - An accounts Id in different formats.\n * @returns An object containing the combined results of the storage queries for\n * all relevant fees as declared in the substrate chain spec.\n * @example\n *
\n *\n * ```javascript\n * const ALICE = 'F7Hs';\n *\n * api.derive.balances.all(ALICE, ([accountId, lockedBalance]) => {\n * console.log(`The account ${accountId} has a locked balance ${lockedBalance} units.`);\n * });\n * ```\n */\n\n\nfunction all(api) {\n return address => {\n return (0, _idAndIndex.idAndIndex)(api)(address).pipe((0, _operators.switchMap)((_ref4) => {\n let _ref5 = (0, _slicedToArray2.default)(_ref4, 1),\n accountId = _ref5[0];\n\n return accountId ? (0, _rxjs.combineLatest)([(0, _rxjs.of)(accountId), api.derive.chain.bestNumber(), api.queryMulti([[api.query.balances.freeBalance, accountId], [api.query.balances.reservedBalance, accountId], [api.query.balances.locks, accountId], [api.query.balances.vesting, accountId]])]) : (0, _rxjs.of)([undefined, undefined, [undefined, undefined, undefined, undefined]]);\n }), (0, _operators.map)(calcBalances), (0, _drr.drr)());\n };\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fees = fees;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _drr = require(\"../util/drr\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name fees\n * @returns An object containing the combined results of the storage queries for\n * all relevant fees as declared in the substrate chain spec.\n * @example\n *
\n *\n * ```javascript\n * api.derive.balances.fees(([creationFee, transferFee]) => {\n * console.log(`The fee for creating a new account on this chain is ${transferFee} units. The fee required for making a transfer is ${transferFee} units.`);\n * });\n * ```\n */\nfunction fees(api) {\n return () => {\n return api.queryMulti([api.query.balances.creationFee, api.query.balances.existentialDeposit, api.query.balances.transactionBaseFee, api.query.balances.transactionByteFee, api.query.balances.transferFee]).pipe((0, _operators.map)((_ref) => {\n let _ref2 = (0, _slicedToArray2.default)(_ref, 5),\n creationFee = _ref2[0],\n existentialDeposit = _ref2[1],\n transactionBaseFee = _ref2[2],\n transactionByteFee = _ref2[3],\n transferFee = _ref2[4];\n\n return {\n creationFee,\n existentialDeposit,\n transactionBaseFee,\n transactionByteFee,\n transferFee\n };\n }), (0, _drr.drr)());\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.validatingBalance = validatingBalance;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _bn = _interopRequireDefault(require(\"bn.js\"));\n\nvar _rxjs = require(\"rxjs\");\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _types = require(\"@polkadot/types\");\n\nvar _drr = require(\"../util/drr\");\n\nvar _votingBalance = require(\"./votingBalance\");\n\nvar _votingBalancesNominatorsFor = require(\"./votingBalancesNominatorsFor\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction validatingBalance(api) {\n return address => {\n return (0, _rxjs.combineLatest)([(0, _votingBalance.votingBalance)(api)(address), (0, _votingBalancesNominatorsFor.votingBalancesNominatorsFor)(api)(address)]).pipe((0, _operators.map)((_ref) => {\n let _ref2 = (0, _slicedToArray2.default)(_ref, 2),\n balance = _ref2[0],\n nominators = _ref2[1];\n\n const nominatedBalance = nominators.reduce((total, nominatorBalance) => total.add(nominatorBalance.votingBalance), new _bn.default(0));\n return (0, _objectSpread2.default)({}, balance, {\n nominators,\n nominatedBalance: new _types.Balance(nominatedBalance),\n stakingBalance: new _types.Balance(nominatedBalance.add(balance.votingBalance))\n });\n }), (0, _drr.drr)());\n };\n}","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.votingBalance = votingBalance;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _rxjs = require(\"rxjs\");\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _types = require(\"@polkadot/types\");\n\nvar _idAndIndex = require(\"../accounts/idAndIndex\");\n\nvar _drr = require(\"../util/drr\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst EMPTY_ACCOUNT = new _types.AccountId(new Uint8Array(32));\n\nfunction votingBalance(api) {\n return address => {\n return (0, _idAndIndex.idAndIndex)(api)(address).pipe((0, _operators.switchMap)((_ref) => {\n let _ref2 = (0, _slicedToArray2.default)(_ref, 1),\n accountId = _ref2[0];\n\n return accountId ? (0, _rxjs.combineLatest)([(0, _rxjs.of)(accountId), api.query.balances.freeBalance(accountId), api.query.balances.reservedBalance(accountId)]) : (0, _rxjs.of)([undefined, undefined, undefined]);\n }), (0, _operators.map)((_ref3) => {\n let _ref4 = (0, _slicedToArray2.default)(_ref3, 3),\n _ref4$ = _ref4[0],\n accountId = _ref4$ === void 0 ? EMPTY_ACCOUNT : _ref4$,\n _ref4$2 = _ref4[1],\n freeBalance = _ref4$2 === void 0 ? new _types.Balance(0) : _ref4$2,\n _ref4$3 = _ref4[2],\n reservedBalance = _ref4$3 === void 0 ? new _types.Balance(0) : _ref4$3;\n\n return {\n accountId,\n freeBalance,\n nominatedBalance: new _types.Balance(0),\n reservedBalance,\n stakingBalance: new _types.Balance(0),\n votingBalance: new _types.Balance(freeBalance.add(reservedBalance)),\n availableBalance: new _types.Balance(0),\n lockedBalance: new _types.Balance(0),\n vestedBalance: new _types.Balance(0)\n };\n }), (0, _drr.drr)());\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.votingBalancesNominatorsFor = votingBalancesNominatorsFor;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _rxjs = require(\"rxjs\");\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _idAndIndex = require(\"../accounts/idAndIndex\");\n\nvar _drr = require(\"../util/drr\");\n\nvar _votingBalances = require(\"./votingBalances\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction votingBalancesNominatorsFor(api) {\n return address => {\n return (0, _idAndIndex.idAndIndex)(api)(address).pipe((0, _operators.switchMap)((_ref) => {\n let _ref2 = (0, _slicedToArray2.default)(_ref, 1),\n accountId = _ref2[0];\n\n return accountId ? api.query.staking.nominatorsFor(accountId) : (0, _rxjs.of)([]);\n }), (0, _operators.switchMap)((0, _votingBalances.votingBalances)(api)), (0, _drr.drr)());\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.votingBalances = votingBalances;\n\nvar _rxjs = require(\"rxjs\");\n\nvar _drr = require(\"../util/drr\");\n\nvar _votingBalance = require(\"./votingBalance\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction votingBalances(api) {\n return addresses => {\n return !addresses || !addresses.length ? (0, _rxjs.of)([]).pipe((0, _drr.drr)()) : (0, _rxjs.combineLatest)(addresses.map((0, _votingBalance.votingBalance)(api))).pipe((0, _drr.drr)());\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.validatingBalances = validatingBalances;\n\nvar _rxjs = require(\"rxjs\");\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _drr = require(\"../util/drr\");\n\nvar _validatingBalance = require(\"./validatingBalance\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction validatingBalances(api) {\n return accountIds => {\n return !accountIds || !accountIds.length ? (0, _rxjs.of)({}).pipe((0, _drr.drr)()) : (0, _rxjs.combineLatest)(accountIds.map((0, _validatingBalance.validatingBalance)(api))).pipe((0, _operators.map)(result => {\n return result.reduce((balances, balance) => {\n balances[balance.accountId.toString()] = balance;\n return balances;\n }, {});\n }), (0, _drr.drr)());\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bestNumber = require(\"./bestNumber\");\n\nObject.keys(_bestNumber).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _bestNumber[key];\n }\n });\n});\n\nvar _bestNumberFinalized = require(\"./bestNumberFinalized\");\n\nObject.keys(_bestNumberFinalized).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _bestNumberFinalized[key];\n }\n });\n});\n\nvar _bestNumberLag = require(\"./bestNumberLag\");\n\nObject.keys(_bestNumberLag).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _bestNumberLag[key];\n }\n });\n});\n\nvar _getHeader = require(\"./getHeader\");\n\nObject.keys(_getHeader).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _getHeader[key];\n }\n });\n});\n\nvar _subscribeNewHead = require(\"./subscribeNewHead\");\n\nObject.keys(_subscribeNewHead).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _subscribeNewHead[key];\n }\n });\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bestNumber = bestNumber;\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _drr = require(\"../util/drr\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name bestNumber\n * @returns The latest block number.\n * @example\n *
\n *\n * ```javascript\n * api.derive.chain.bestNumber((blockNumber) => {\n * console.log(`the current best block is #${blockNumber}`);\n * });\n * ```\n */\nfunction bestNumber(api) {\n return () => api.rpc.chain.subscribeNewHead().pipe((0, _operators.filter)(header => header && !!header.blockNumber), (0, _operators.map)((_ref) => {\n let blockNumber = _ref.blockNumber;\n return blockNumber;\n }), (0, _drr.drr)());\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bestNumberFinalized = bestNumberFinalized;\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _drr = require(\"../util/drr\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name bestNumberFinalized\n * @returns A BlockNumber\n * @description Get the latest finalized block number.\n * @example\n *
\n *\n * ```javascript\n * api.derive.chain.bestNumberFinalized((blockNumber) => {\n * console.log(`the current finalized block is #${blockNumber}`);\n * });\n * ```\n */\nfunction bestNumberFinalized(api) {\n return () => api.rpc.chain.subscribeFinalizedHeads().pipe((0, _operators.filter)(header => header && !!header.blockNumber), (0, _operators.map)((_ref) => {\n let blockNumber = _ref.blockNumber;\n return blockNumber;\n }), (0, _drr.drr)());\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bestNumberLag = bestNumberLag;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _rxjs = require(\"rxjs\");\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _types = require(\"@polkadot/types\");\n\nvar _drr = require(\"../util/drr\");\n\nvar _bestNumber = require(\"./bestNumber\");\n\nvar _bestNumberFinalized = require(\"./bestNumberFinalized\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name bestNumberLag\n * @returns A number of blocks\n * @description Calculates the lag between finalized head and best head\n * @example\n *
\n *\n * ```javascript\n * api.derive.chain.bestNumberLag((lag) => {\n * console.log(`finalized is ${lag} blocks behind head`);\n * });\n * ```\n */\nfunction bestNumberLag(api) {\n return () => (0, _rxjs.combineLatest)([(0, _bestNumber.bestNumber)(api)(), (0, _bestNumberFinalized.bestNumberFinalized)(api)()]).pipe((0, _operators.map)((_ref) => {\n let _ref2 = (0, _slicedToArray2.default)(_ref, 2),\n bestNumber = _ref2[0],\n bestNumberFinalized = _ref2[1];\n\n return new _types.BlockNumber(bestNumber.sub(bestNumberFinalized));\n }), (0, _drr.drr)());\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getHeader = getHeader;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _rxjs = require(\"rxjs\");\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _type = require(\"../type\");\n\nvar _drr = require(\"../util/drr\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name bestNumberFinalized\n * @param {( Uint8Array | string )} hash - A block hash as U8 array or string.\n * @returns An array containing the block header and the block author\n * @description Get a specific block header and extend it with the author\n * @example\n *
\n *\n * ```javascript\n * const { author, blockNumber } = await api.derive.chain.getHeader('0x123...456');\n *\n * console.log(`block #${blockNumber} was authored by ${author}`);\n * ```\n */\nfunction getHeader(api) {\n return (hash // tslint:disable-next-line\n ) => (0, _rxjs.combineLatest)([api.rpc.chain.getHeader(hash), api.query.session ? api.query.session.validators.at(hash) : (0, _rxjs.of)([])]).pipe((0, _operators.map)((_ref) => {\n let _ref2 = (0, _slicedToArray2.default)(_ref, 2),\n header = _ref2[0],\n validators = _ref2[1];\n\n return new _type.HeaderExtended(header, validators);\n }), (0, _operators.catchError)(() => // where rpc.chain.getHeader throws, we will land here - it can happen that\n // we supplied an invalid hash. (Due to defaults, storeage will have an\n // empty value, so only the RPC is affected). So return undefined\n // tslint:disable-next-line\n (0, _rxjs.of)()), (0, _drr.drr)());\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"HeaderExtended\", {\n enumerable: true,\n get: function get() {\n return _HeaderExtended.default;\n }\n});\n\nvar _HeaderExtended = _interopRequireDefault(require(\"./HeaderExtended\"));","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _types = require(\"@polkadot/types\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name HeaderExtended\n * @description\n * A [[Block]] header with an additional `author` field that indicates the block author\n */\nclass HeaderExtended extends _types.Header {\n constructor() {\n let header = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n let sessionValidators = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n super(header);\n this._author = void 0;\n\n if (!header || !header.digest || !sessionValidators.length) {\n return;\n }\n\n let item = header.digest.logs.find(log => log.isConsensus);\n let slot; // extract author from the consensus (substrate 1.0, digest)\n\n if (item) {\n const consensus = item.asConsensus;\n\n if (consensus.isAura) {\n slot = consensus.asAura[0];\n }\n } else {\n item = header.digest.logs.find(log => log.isSeal); // extract author from the seal (pre substrate 1.0, backwards compat)\n\n if (item) {\n slot = item.asSeal.slot;\n }\n } // found a slot? Great, extract the validator\n\n\n if (slot) {\n this._author = sessionValidators[slot.toNumber() % sessionValidators.length];\n }\n }\n /**\n * @description Convenience method, returns the author for the block\n */\n\n\n get author() {\n return this._author;\n }\n /**\n * @description Creates the JSON representation\n */\n\n\n toJSON() {\n return (0, _objectSpread2.default)({}, super.toJSON(), {\n author: this.author ? this.author.toJSON() : undefined\n });\n }\n\n}\n\nexports.default = HeaderExtended;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar superPropBase = require(\"./superPropBase\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.subscribeNewHead = subscribeNewHead;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _rxjs = require(\"rxjs\");\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _type = require(\"../type\");\n\nvar _drr = require(\"../util/drr\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name subscribeNewHead\n * @returns An array containing the block header and the block author\n * @description An observable of the current block header and it's author\n * @example\n *
\n *\n * ```javascript\n * api.derive.chain.subscribeNewHead(({ author, blockNumber }) => {\n * console.log(`block #${blockNumber} was authored by ${author}`);\n * });\n * ```\n */\nfunction subscribeNewHead(api) {\n return () => api.rpc.chain.subscribeNewHead().pipe((0, _operators.filter)(header => header && !!header.blockNumber), (0, _operators.switchMap)(header => (0, _rxjs.combineLatest)([(0, _rxjs.of)(header), // theoretically we could combine at the first call with session.validators(), however\n // we make 100% sure we actually get the validators at a specific block so when these\n api.query.session ? api.query.session.validators.at(header.hash) : (0, _rxjs.of)([])])), (0, _operators.map)((_ref) => {\n let _ref2 = (0, _slicedToArray2.default)(_ref, 2),\n header = _ref2[0],\n validators = _ref2[1];\n\n return new _type.HeaderExtended(header, validators);\n }), (0, _drr.drr)());\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _referendumInfos = require(\"./referendumInfos\");\n\nObject.keys(_referendumInfos).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _referendumInfos[key];\n }\n });\n});\n\nvar _referendums = require(\"./referendums\");\n\nObject.keys(_referendums).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _referendums[key];\n }\n });\n});\n\nvar _referendumVotesFor = require(\"./referendumVotesFor\");\n\nObject.keys(_referendumVotesFor).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _referendumVotesFor[key];\n }\n });\n});\n\nvar _votes = require(\"./votes\");\n\nObject.keys(_votes).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _votes[key];\n }\n });\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.referendumInfos = referendumInfos;\n\nvar _rxjs = require(\"rxjs\");\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _drr = require(\"../util/drr\");\n\nvar _referendumInfo = require(\"./referendumInfo\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction referendumInfos(api) {\n return function () {\n let ids = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return (!ids || !ids.length ? (0, _rxjs.of)([]) : api.query.democracy.referendumInfoOf.multi(ids)).pipe((0, _operators.map)(infos => ids.map((id, index) => (0, _referendumInfo.constructInfo)(id, infos[index]))), (0, _drr.drr)());\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.constructInfo = constructInfo;\nexports.referendumInfo = referendumInfo;\nexports.ReferendumInfoExtended = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _types = require(\"@polkadot/types\");\n\nvar _util = require(\"@polkadot/util\");\n\nvar _drr = require(\"../util/drr\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name ReferendumInfoExtended\n * @description\n * A [[ReferendumInfo]] with an additional `index` field\n */\nclass ReferendumInfoExtended extends _types.ReferendumInfo {\n constructor(value, index) {\n super(value);\n this._index = void 0;\n this._index = value instanceof ReferendumInfoExtended ? value.index : new _types.ReferendumIndex(index);\n }\n /**\n * @description Convenience getter, returns the referendumIndex\n */\n\n\n get index() {\n return this._index;\n }\n /**\n * @description Creates the JSON representation\n */\n\n\n toJSON() {\n return (0, _objectSpread2.default)({}, super.toJSON(), {\n index: this.index.toJSON()\n });\n }\n\n}\n\nexports.ReferendumInfoExtended = ReferendumInfoExtended;\n\nfunction constructInfo(index, optionInfo) {\n const info = optionInfo ? optionInfo.unwrapOr(null) : null;\n return new _types.Option(ReferendumInfoExtended, (0, _util.isNull)(info) ? null : new ReferendumInfoExtended(info, index));\n}\n\nfunction referendumInfo(api) {\n return index => {\n return api.query.democracy.referendumInfoOf(index).pipe((0, _operators.map)(optionInfo => constructInfo(index, optionInfo)), (0, _drr.drr)());\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.referendums = referendums;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _rxjs = require(\"rxjs\");\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _drr = require(\"../util/drr\");\n\nvar _referendumInfos = require(\"./referendumInfos\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction referendums(api) {\n return () => api.queryMulti([api.query.democracy.nextTally, api.query.democracy.referendumCount]).pipe((0, _operators.switchMap)((_ref) => {\n let _ref2 = (0, _slicedToArray2.default)(_ref, 2),\n nextTally = _ref2[0],\n referendumCount = _ref2[1];\n\n return referendumCount && nextTally && referendumCount.gt(nextTally) && referendumCount.gtn(0) ? (0, _referendumInfos.referendumInfos)(api)([...Array(referendumCount.sub(nextTally).toNumber())].map((_, i) => nextTally.addn(i))) : (0, _rxjs.of)([]);\n }), (0, _drr.drr)());\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.referendumVotesFor = referendumVotesFor;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _rxjs = require(\"rxjs\");\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _types = require(\"@polkadot/types\");\n\nvar _drr = require(\"../util/drr\");\n\nvar _votes = require(\"./votes\");\n\nvar _votingBalances = require(\"../balances/votingBalances\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction referendumVotesFor(api) {\n return referendumId => api.query.democracy.votersFor(referendumId).pipe((0, _operators.switchMap)(votersFor => (0, _rxjs.combineLatest)([(0, _rxjs.of)(votersFor), (0, _votes.votes)(api)(referendumId, votersFor), (0, _votingBalances.votingBalances)(api)(votersFor)])), (0, _operators.map)((_ref) => {\n let _ref2 = (0, _slicedToArray2.default)(_ref, 3),\n votersFor = _ref2[0],\n votes = _ref2[1],\n balances = _ref2[2];\n\n return votersFor.map((accountId, index) => ({\n accountId,\n balance: balances[index].votingBalance || new _types.Balance(0),\n vote: votes[index] || new _types.Vote(0)\n }));\n }), (0, _drr.drr)());\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.votes = votes;\n\nvar _rxjs = require(\"rxjs\");\n\nvar _drr = require(\"../util/drr\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction votes(api) {\n return function (referendumId) {\n let accountIds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return (!accountIds || !accountIds.length ? (0, _rxjs.of)([]) : api.query.democracy.voteOf.multi(accountIds.map(accountId => [referendumId, accountId]))).pipe((0, _drr.drr)());\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _eraLength = require(\"./eraLength\");\n\nObject.keys(_eraLength).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _eraLength[key];\n }\n });\n});\n\nvar _eraProgress = require(\"./eraProgress\");\n\nObject.keys(_eraProgress).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _eraProgress[key];\n }\n });\n});\n\nvar _info = require(\"./info\");\n\nObject.keys(_info).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _info[key];\n }\n });\n});\n\nvar _sessionProgress = require(\"./sessionProgress\");\n\nObject.keys(_sessionProgress).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _sessionProgress[key];\n }\n });\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.eraLength = eraLength;\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _drr = require(\"../util/drr\");\n\nvar _info = require(\"./info\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction eraLength(api) {\n return () => (0, _info.info)(api)().pipe((0, _operators.map)((_ref) => {\n let eraLength = _ref.eraLength;\n return eraLength;\n }), (0, _drr.drr)());\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.info = info;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _bn = _interopRequireDefault(require(\"bn.js\"));\n\nvar _rxjs = require(\"rxjs\");\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _drr = require(\"../util/drr\");\n\nvar _chain = require(\"../chain\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst ZERO = new _bn.default(0); // internal helper to just split the logic - take all inputs, do the calculations and combine\n\nfunction createDerived(_ref) {\n let _ref2 = (0, _slicedToArray2.default)(_ref, 2),\n bestNumber = _ref2[0],\n _ref2$ = (0, _slicedToArray2.default)(_ref2[1], 5),\n currentIndex = _ref2$[0],\n _lastLengthChange = _ref2$[1],\n sessionLength = _ref2$[2],\n lastEraLengthChange = _ref2$[3],\n sessionsPerEra = _ref2$[4];\n\n const eraLength = sessionLength.mul(sessionsPerEra);\n const lastLengthChange = _lastLengthChange ? _lastLengthChange.unwrapOr(ZERO) : ZERO;\n const sessionProgress = bestNumber.sub(lastLengthChange).add(sessionLength).mod(sessionLength);\n const eraProgress = currentIndex.sub(lastEraLengthChange).mod(sessionsPerEra).mul(sessionLength).add(sessionProgress);\n return {\n currentIndex,\n eraLength,\n eraProgress,\n lastEraLengthChange,\n lastLengthChange,\n sessionLength,\n sessionsPerEra,\n sessionProgress\n };\n}\n/**\n * @description Retrieves all the session and era info and calculates specific valus on it sunh as the length of the session and eras\n */\n\n\nfunction info(api) {\n return () => // This is a much more optimal way to calculate since we only make a single call to the RPC backend\n (0, _rxjs.combineLatest)([(0, _chain.bestNumber)(api)(), api.queryMulti([api.query.session.currentIndex, api.query.session.lastLengthChange, api.query.session.sessionLength, api.query.staking.lastEraLengthChange, api.query.staking.sessionsPerEra])]).pipe((0, _operators.map)(createDerived), (0, _drr.drr)());\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.eraProgress = eraProgress;\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _drr = require(\"../util/drr\");\n\nvar _info = require(\"./info\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction eraProgress(api) {\n return () => (0, _info.info)(api)().pipe((0, _operators.map)((_ref) => {\n let eraProgress = _ref.eraProgress;\n return eraProgress;\n }), (0, _drr.drr)());\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sessionProgress = sessionProgress;\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _drr = require(\"../util/drr\");\n\nvar _info = require(\"./info\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction sessionProgress(api) {\n return () => (0, _info.info)(api)().pipe((0, _operators.map)((_ref) => {\n let sessionProgress = _ref.sessionProgress;\n return sessionProgress;\n }), (0, _drr.drr)());\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _controllers = require(\"./controllers\");\n\nObject.keys(_controllers).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _controllers[key];\n }\n });\n});\n\nvar _info = require(\"./info\");\n\nObject.keys(_info).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _info[key];\n }\n });\n});\n\nvar _intentionsBalances = require(\"./intentionsBalances\");\n\nObject.keys(_intentionsBalances).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _intentionsBalances[key];\n }\n });\n});","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.controllers = controllers;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _rxjs = require(\"rxjs\");\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _drr = require(\"../util/drr\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @description From the list of stash accounts, retrieve the list of controllers\n */\nfunction controllers(api) {\n return () => api.query.staking.validators().pipe((0, _operators.switchMap)((_ref) => {\n let _ref2 = (0, _slicedToArray2.default)(_ref, 1),\n stashIds = _ref2[0];\n\n return (0, _rxjs.combineLatest)([(0, _rxjs.of)(stashIds), api.query.staking.bonded.multi(stashIds)]);\n }), (0, _drr.drr)());\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.info = info;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _rxjs = require(\"rxjs\");\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _types = require(\"@polkadot/types\");\n\nvar _drr = require(\"../util/drr\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction withStashController(api, accountId, controllerId) {\n const stashId = accountId;\n return api.queryMulti([[api.query.session.nextKeyFor, controllerId], [api.query.staking.ledger, controllerId], [api.query.staking.nominators, stashId], [api.query.staking.stakers, stashId], [api.query.staking.validators, stashId]]).pipe((0, _operators.map)((_ref) => {\n let _ref2 = (0, _slicedToArray2.default)(_ref, 5),\n nextKeyFor = _ref2[0],\n stakingLedger = _ref2[1],\n _ref2$ = (0, _slicedToArray2.default)(_ref2[2], 1),\n nominators = _ref2$[0],\n stakers = _ref2[3],\n _ref2$2 = (0, _slicedToArray2.default)(_ref2[4], 1),\n validatorPrefs = _ref2$2[0];\n\n return {\n accountId,\n controllerId,\n nextSessionId: nextKeyFor.isSome ? nextKeyFor.unwrap() : undefined,\n nominators,\n stakers,\n stakingLedger: stakingLedger.isSome ? stakingLedger.unwrap() : undefined,\n stashId,\n validatorPrefs\n };\n }), (0, _drr.drr)());\n}\n\nfunction withControllerLedger(api, accountId, stakingLedger) {\n const controllerId = accountId;\n const stashId = stakingLedger.stash;\n return api.queryMulti([[api.query.session.nextKeyFor, controllerId], [api.query.staking.nominators, stashId], [api.query.staking.stakers, stashId], [api.query.staking.validators, stashId]]).pipe((0, _operators.map)((_ref3) => {\n let _ref4 = (0, _slicedToArray2.default)(_ref3, 4),\n nextKeyFor = _ref4[0],\n _ref4$ = (0, _slicedToArray2.default)(_ref4[1], 1),\n nominators = _ref4$[0],\n stakers = _ref4[2],\n _ref4$2 = (0, _slicedToArray2.default)(_ref4[3], 1),\n validatorPrefs = _ref4$2[0];\n\n return {\n accountId,\n controllerId,\n nextSessionId: nextKeyFor.isSome ? nextKeyFor.unwrap() : undefined,\n nominators,\n stakers,\n stakingLedger,\n stashId,\n validatorPrefs\n };\n }), (0, _drr.drr)());\n}\n/**\n * @description From either a stash or controller id, retrieve the controllerId, stashId, nextSessionId, stakingLedger and preferences\n */\n\n\nfunction info(api) {\n return _accountId => {\n const accountId = new _types.AccountId(_accountId);\n return api.queryMulti([[api.query.staking.bonded, accountId], // try to map to controller\n [api.query.staking.ledger, accountId] // try to map to stash\n ]).pipe((0, _operators.switchMap)((_ref5) => {\n let _ref6 = (0, _slicedToArray2.default)(_ref5, 2),\n controllerId = _ref6[0],\n stakingLedger = _ref6[1];\n\n return controllerId.isSome // we have a controller, so input was a stash, great\n ? withStashController(api, accountId, controllerId.unwrap()) : stakingLedger.isSome ? withControllerLedger(api, accountId, stakingLedger.unwrap()) // dangit, this is something else, ok, we are done\n : (0, _rxjs.of)({\n accountId\n });\n }), (0, _drr.drr)());\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.intentionsBalances = intentionsBalances;\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _balances = require(\"../balances\");\n\nvar _drr = require(\"../util/drr\");\n\n// Copyright 2017-2019 @polkadot/api-derive authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * Get the balances for all intentions and their nominators\n */\nfunction intentionsBalances(api) {\n return () => // tslint:disable-next-line\n api.query.staking.intentions().pipe((0, _operators.switchMap)((0, _balances.validatingBalances)(api)), (0, _drr.drr)());\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = fromMetadata;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _ = _interopRequireDefault(require(\"../\"));\n\nvar _createUnchecked = _interopRequireDefault(require(\"./createUnchecked\"));\n\n// Copyright 2017-2019 @polkadot/extrinsics authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * Extend a storage object with the storage modules & module functions present\n * in the metadata.\n *\n * @param extrinsics - An extrinsics object to be extended.\n * @param metadata - The metadata to extend the storage object against.\n */\nfunction fromMetadata(metadata) {\n return metadata.asV4.modules.filter(modul => modul.calls.isSome).reduce((result, modul, sectionIndex) => {\n const prefix = (0, _util.stringCamelCase)(modul.prefix.toString());\n result[prefix] = modul.calls.unwrap().reduce((newModule, callMetadata, methodIndex) => {\n const funcName = (0, _util.stringCamelCase)(callMetadata.name.toString());\n newModule[funcName] = (0, _createUnchecked.default)(prefix, sectionIndex, methodIndex, callMetadata);\n return newModule;\n }, {});\n return result;\n }, (0, _objectSpread2.default)({}, _.default));\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n// Copyright 2017-2019 @polkadot/extrinsics authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst extrinsics = {};\nvar _default = extrinsics;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createDescriptor;\n\nvar _types = require(\"@polkadot/types\");\n\nvar _util = require(\"@polkadot/util\");\n\n// Copyright 2017-2019 @polkadot/extrinsics authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * From the metadata of a function in the module's storage, generate the function\n * that will return the an [[MethodFunction]].\n *\n * @param section - Name of the module section.\n * @param sectionIndex - Index of the module section in the modules array.\n * @param methodIndex - Index of the method inside the section.\n * @param callMetadata - Metadata of the call function.\n */\nfunction createDescriptor(section, sectionIndex, methodIndex, callMetadata) {\n const callIndex = new Uint8Array([sectionIndex, methodIndex]);\n const expectedArgs = callMetadata.args;\n const funcName = (0, _util.stringCamelCase)(callMetadata.name.toString());\n\n const extrinsicFn = function extrinsicFn() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n (0, _util.assert)(expectedArgs.length.valueOf() === args.length, \"Extrinsic \".concat(section, \".\").concat(funcName, \" expects \").concat(expectedArgs.length.valueOf(), \" arguments, got \").concat(args.length, \".\"));\n return new _types.Method({\n args,\n callIndex\n }, callMetadata);\n };\n\n extrinsicFn.callIndex = callIndex;\n extrinsicFn.meta = callMetadata;\n extrinsicFn.method = funcName;\n extrinsicFn.section = section;\n\n extrinsicFn.toJSON = () => callMetadata.toJSON();\n\n return extrinsicFn;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _jsonrpc = _interopRequireDefault(require(\"@polkadot/jsonrpc\"));\n\nvar _rpcProvider = require(\"@polkadot/rpc-provider\");\n\nvar _types = require(\"@polkadot/types\");\n\nvar _util = require(\"@polkadot/util\");\n\n// Copyright 2017-2019 @polkadot/rpc-core authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst l = (0, _util.logger)('rpc-core');\nconst EMPTY_META = {\n fallback: undefined,\n modifier: {\n isOptional: true\n },\n type: {\n asMap: {\n isLinked: false\n },\n isMap: false\n }\n};\n/**\n * @name Rpc\n * @summary The API may use a HTTP or WebSockets provider.\n * @description It allows for querying a Polkadot Client Node.\n * WebSockets provider is recommended since HTTP provider only supports basic querying.\n *\n * ```mermaid\n * graph LR;\n * A[Api] --> |WebSockets| B[WsProvider];\n * B --> |endpoint| C[ws://127.0.0.1:9944]\n * ```\n *\n * @example\n *
\n *\n * ```javascript\n * import Api from '@polkadot/rpc-core';\n * import WsProvider from '@polkadot/rpc-provider/ws';\n *\n * const provider = new WsProvider('ws://127.0.0.1:9944');\n * const api = new Api(provider);\n * ```\n */\n\nclass Rpc {\n /**\n * @constructor\n * Default constructor for the Api Object\n * @param {ProviderInterface} provider An API provider using HTTP or WebSocket\n */\n constructor() {\n let provider = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new _rpcProvider.WsProvider();\n this._provider = void 0;\n this.author = void 0;\n this.chain = void 0;\n this.state = void 0;\n this.system = void 0;\n (0, _util.assert)(provider && (0, _util.isFunction)(provider.send), 'Expected Provider to API create');\n this._provider = provider;\n this.author = this.createInterface(_jsonrpc.default.author);\n this.chain = this.createInterface(_jsonrpc.default.chain);\n this.state = this.createInterface(_jsonrpc.default.state);\n this.system = this.createInterface(_jsonrpc.default.system);\n }\n /**\n * @name signature\n * @summary Returns a string representation of the method with inputs and outputs.\n * @description\n * Formats the name, inputs and outputs into a human-readable string. This contains the input parameter names input types and output type.\n *\n * @example\n *
\n *\n * ```javascript\n * import Api from '@polkadot/rpc-core';\n *\n * Api.signature({ name: 'test_method', params: [ { name: 'dest', type: 'Address' } ], type: 'Address' }); // => test_method (dest: Address): Address\n * ```\n */\n\n\n static signature(_ref) {\n let method = _ref.method,\n params = _ref.params,\n type = _ref.type;\n const inputs = params.map((_ref2) => {\n let name = _ref2.name,\n type = _ref2.type;\n return \"\".concat(name, \": \").concat(type);\n }).join(', ');\n return \"\".concat(method, \" (\").concat(inputs, \"): \").concat(type);\n }\n /**\n * @description Manually disconnect from the attached provider\n */\n\n\n disconnect() {\n this._provider.disconnect();\n }\n\n createInterface(_ref3) {\n let methods = _ref3.methods;\n return Object.keys(methods).reduce((exposed, method) => {\n const def = methods[method];\n exposed[method] = def.isSubscription ? this.createMethodSubscribe(def) : this.createMethodSend(def);\n return exposed;\n }, {});\n }\n\n createMethodSend(method) {\n var _this = this;\n\n const rpcName = \"\".concat(method.section, \"_\").concat(method.method);\n\n const call = async function call() {\n // TODO Warn on deprecated methods\n try {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n const params = _this.formatInputs(method, values);\n\n const paramsJson = params.map(param => param.toJSON());\n const result = await _this._provider.send(rpcName, paramsJson);\n return _this.formatOutput(method, params, result);\n } catch (error) {\n const message = \"\".concat(Rpc.signature(method), \":: \").concat(error.message);\n l.error(message);\n throw new _util.ExtError(message, error.code, undefined);\n }\n };\n\n return call;\n }\n\n createMethodSubscribe(method) {\n var _this2 = this;\n\n const _method$pubsub = (0, _slicedToArray2.default)(method.pubsub, 3),\n updateType = _method$pubsub[0],\n subMethod = _method$pubsub[1],\n unsubMethod = _method$pubsub[2];\n\n const subName = \"\".concat(method.section, \"_\").concat(subMethod);\n const unsubName = \"\".concat(method.section, \"_\").concat(unsubMethod);\n const subType = \"\".concat(method.section, \"_\").concat(updateType);\n\n const unsubscribe = subscriptionId => this._provider.unsubscribe(subType, unsubName, subscriptionId);\n\n const _call = async function _call() {\n try {\n for (var _len2 = arguments.length, values = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n values[_key2] = arguments[_key2];\n }\n\n const cb = values.pop();\n (0, _util.assert)((0, _util.isFunction)(cb), \"Expected callback in last position of params\");\n\n const params = _this2.formatInputs(method, values);\n\n const paramsJson = params.map(param => param.toJSON());\n\n const update = (error, result) => {\n if (error) {\n l.error(\"\".concat(Rpc.signature(method), \":: \").concat(error.message));\n return;\n }\n\n cb(_this2.formatOutput(method, params, result));\n };\n\n return _this2._provider.subscribe(subType, subName, paramsJson, update);\n } catch (error) {\n const message = \"\".concat(Rpc.signature(method), \":: \").concat(error.message);\n l.error(message);\n throw new _util.ExtError(message, error.code, undefined);\n }\n };\n\n const call = _call;\n call.unsubscribe = unsubscribe;\n return call;\n }\n\n formatInputs(method, inputs) {\n const reqArgCount = method.params.filter((_ref4) => {\n let isOptional = _ref4.isOptional;\n return !isOptional;\n }).length;\n const optText = reqArgCount === method.params.length ? '' : \" (\".concat(method.params.length - reqArgCount, \" optional)\");\n (0, _util.assert)(inputs.length >= reqArgCount && inputs.length <= method.params.length, \"Expected \".concat(method.params.length, \" parameters\").concat(optText, \", \").concat(inputs.length, \" found instead\"));\n return inputs.map((input, index) => (0, _types.createType)(method.params[index].type, input));\n }\n\n formatOutput(method, params, result) {\n const base = (0, _types.createType)(method.type, result);\n\n if (method.type === 'StorageData') {\n const key = params[0];\n\n try {\n return this.formatStorageData(key, base, (0, _util.isNull)(result));\n } catch (error) {\n console.error(\"Unable to decode storage \".concat(key.section, \".\").concat(key.method, \":\"), error.message);\n throw error;\n }\n } else if (method.type === 'StorageChangeSet') {\n // multiple return values (via state.storage subscription), decode the values\n // one at a time, all based on the query types. Three values can be returned -\n // - Base - There is a valid value, non-empty\n // - null - The storage key is empty (but in the resultset)\n return params[0].reduce((results, key) => {\n try {\n results.push(this.formatStorageSet(key, base));\n } catch (error) {\n console.error(\"Unable to decode storage \".concat(key.section, \".\").concat(key.method, \":\"), error.message);\n throw error;\n }\n\n return results;\n }, []);\n }\n\n return base;\n }\n\n formatStorageData(key, base, isNull) {\n // single return value (via state.getStorage), decode the value based on the\n // outputType that we have specified. Fallback to Data on nothing\n const type = key.outputType || 'Data';\n const meta = key.meta || EMPTY_META;\n\n if (meta.type.isMap && meta.type.asMap.isLinked) {\n return (0, _types.createType)(type, base, true);\n } else if (meta.modifier.isOptional) {\n return new _types.Option((0, _types.createClass)(type), isNull ? null : (0, _types.createType)(type, base, true));\n }\n\n return (0, _types.createType)(type, base, true);\n }\n\n formatStorageSet(key, base) {\n // Fallback to Data (i.e. just the encoding) if we don't have a specific type\n const type = key.outputType || 'Data'; // see if we have a result value for this specific key\n\n const hexKey = key.toHex();\n\n const _ref5 = base.changes.find(item => item.key.toHex() === hexKey) || {\n value: null\n },\n value = _ref5.value;\n\n const meta = key.meta || EMPTY_META;\n\n if (!value) {\n return;\n } else if (meta.type.isMap && meta.type.asMap.isLinked) {\n return (0, _types.createType)(type, value.unwrapOr(null), true);\n } else if (meta.modifier.isOptional) {\n return new _types.Option((0, _types.createClass)(type), value.isNone ? null : (0, _types.createType)(type, value.unwrap(), true));\n }\n\n return (0, _types.createType)(type, value.unwrapOr(meta.fallback), true);\n }\n\n}\n\nexports.default = Rpc;","module.exports = require(\"regenerator-runtime\");\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 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 GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\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 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 if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\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) {\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 Promise.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 Promise.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 Promise(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) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\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 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","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _author = _interopRequireDefault(require(\"./author\"));\n\nvar _chain = _interopRequireDefault(require(\"./chain\"));\n\nvar _state = _interopRequireDefault(require(\"./state\"));\n\nvar _system = _interopRequireDefault(require(\"./system\"));\n\n// Copyright 2017-2019 @polkadot/jsonrpc authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst interfaces = {\n author: _author.default,\n chain: _chain.default,\n state: _state.default,\n system: _system.default\n};\nvar _default = interfaces;\nexports.default = _default;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _method = _interopRequireDefault(require(\"./create/method\"));\n\nvar _param = _interopRequireDefault(require(\"./create/param\"));\n\n// Copyright 2017-2019 @polkadot/jsonrpc authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst pendingExtrinsics = {\n description: 'Returns all pending extrinsics, potentially grouped by sender',\n params: [],\n type: 'PendingExtrinsics'\n};\nconst submitExtrinsic = {\n isSigned: true,\n description: 'Submit a fully formatted extrinsic for block inclusion',\n params: [(0, _param.default)('extrinsic', 'Extrinsic')],\n type: 'Hash'\n};\nconst submitAndWatchExtrinsic = {\n description: 'Subscribe and watch an extrinsic until unsubscribed',\n isSigned: true,\n params: [(0, _param.default)('extrinsic', 'Extrinsic')],\n pubsub: ['extrinsicUpdate', 'submitAndWatchExtrinsic', 'unwatchExtrinsic'],\n type: 'ExtrinsicStatus'\n};\nconst section = 'author';\n/**\n * @summary Methods to work with authors & contributors.\n */\n\nvar _default = {\n isDeprecated: false,\n isHidden: false,\n description: 'Authoring of network items',\n section,\n methods: {\n pendingExtrinsics: (0, _method.default)(section, 'pendingExtrinsics', pendingExtrinsics),\n submitExtrinsic: (0, _method.default)(section, 'submitExtrinsic', submitExtrinsic),\n submitAndWatchExtrinsic: (0, _method.default)(section, 'submitAndWatchExtrinsic', submitAndWatchExtrinsic)\n }\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createMethod;\n\nvar _util = require(\"@polkadot/util\");\n\n// Copyright 2017-2019 @polkadot/jsonrpc authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction createMethod(section, method, _ref) {\n let description = _ref.description,\n _ref$isDeprecated = _ref.isDeprecated,\n isDeprecated = _ref$isDeprecated === void 0 ? false : _ref$isDeprecated,\n _ref$isHidden = _ref.isHidden,\n isHidden = _ref$isHidden === void 0 ? false : _ref$isHidden,\n _ref$isSigned = _ref.isSigned,\n isSigned = _ref$isSigned === void 0 ? false : _ref$isSigned,\n params = _ref.params,\n pubsub = _ref.pubsub,\n type = _ref.type;\n return {\n description,\n isDeprecated,\n isHidden,\n isSigned,\n isSubscription: !(0, _util.isUndefined)(pubsub),\n method,\n params,\n pubsub: pubsub || ['', '', ''],\n section,\n type\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createParam;\n\n// Copyright 2017-2019 @polkadot/jsonrpc authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction createParam(name, type) {\n let _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n isOptional: false\n },\n _ref$isOptional = _ref.isOptional,\n isOptional = _ref$isOptional === void 0 ? false : _ref$isOptional;\n\n return {\n isOptional,\n name,\n type\n };\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _method = _interopRequireDefault(require(\"./create/method\"));\n\nvar _param = _interopRequireDefault(require(\"./create/param\"));\n\n// Copyright 2017-2019 @polkadot/jsonrpc authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// NOTE Order is the same as in Rust\nconst getHeader = {\n description: 'Retrieves the header for a specific block',\n params: [(0, _param.default)('hash', 'Hash', {\n isOptional: true\n })],\n type: 'Header'\n};\nconst getBlock = {\n description: 'Get header and body of a relay chain block',\n params: [(0, _param.default)('hash', 'Hash', {\n isOptional: true\n })],\n type: 'SignedBlock'\n};\nconst getBlockHash = {\n description: 'Get the block hash for a specific block',\n params: [(0, _param.default)('blockNumber', 'BlockNumber', {\n isOptional: true\n })],\n type: 'Hash'\n};\nconst getFinalizedHead = {\n description: 'Get hash of the last finalized block in the canon chain',\n params: [],\n type: 'Hash'\n};\nconst getRuntimeVersion = {\n description: 'Get the runtime version (alias of state_getRuntimeVersion)',\n params: [(0, _param.default)('hash', 'Hash', {\n isOptional: true\n })],\n type: 'RuntimeVersion'\n};\nconst subscribeNewHead = {\n description: 'Retrieves the best header via subscription',\n params: [],\n pubsub: ['newHead', 'subscribeNewHead', 'unsubscribeNewHead'],\n type: 'Header'\n};\nconst subscribeFinalizedHeads = {\n description: 'Retrieves the best finalized header via subscription',\n params: [],\n pubsub: ['finalizedHead', 'subscribeFinalizedHeads', 'unsubscribeFinalizedHeads'],\n type: 'Header'\n};\nconst subscribeRuntimeVersion = {\n description: 'Retrieves the runtime version via subscription',\n params: [],\n pubsub: ['runtimeVersion', 'subscribeRuntimeVersion', 'unsubscribeRuntimeVersion'],\n type: 'RuntimeVersion'\n};\nconst section = 'chain';\n/**\n * @summary Methods to retrieve chain data.\n */\n\nvar _default = {\n isDeprecated: false,\n isHidden: false,\n description: 'Retrieval of chain data',\n section,\n methods: {\n getBlock: (0, _method.default)(section, 'getBlock', getBlock),\n getBlockHash: (0, _method.default)(section, 'getBlockHash', getBlockHash),\n // TODO US spelling\n getFinalizedHead: (0, _method.default)(section, 'getFinalizedHead', getFinalizedHead),\n getHeader: (0, _method.default)(section, 'getHeader', getHeader),\n getRuntimeVersion: (0, _method.default)(section, 'getRuntimeVersion', getRuntimeVersion),\n // TODO US spelling\n subscribeFinalizedHeads: (0, _method.default)(section, 'subscribeFinalizedHeads', subscribeFinalizedHeads),\n subscribeRuntimeVersion: (0, _method.default)(section, 'subscribeRuntimeVersion', subscribeRuntimeVersion),\n subscribeNewHead: (0, _method.default)(section, 'subscribeNewHead', subscribeNewHead)\n }\n};\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _method = _interopRequireDefault(require(\"./create/method\"));\n\nvar _param = _interopRequireDefault(require(\"./create/param\"));\n\n// Copyright 2017-2019 @polkadot/jsonrpc authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// NOTE Order here is the same as in the Rust code\nconst call = {\n description: 'Perform a call to a builtin on the chain',\n params: [(0, _param.default)('method', 'Text'), (0, _param.default)('data', 'Bytes'), (0, _param.default)('block', 'Hash', {\n isOptional: true\n })],\n type: 'Bytes'\n};\nconst getStorage = {\n description: 'Retrieves the storage for a key',\n params: [(0, _param.default)('key', 'StorageKey'), (0, _param.default)('block', 'Hash', {\n isOptional: true\n })],\n type: 'StorageData'\n};\nconst getStorageHash = {\n description: 'Retrieves the storage hash',\n params: [(0, _param.default)('key', 'StorageKey'), (0, _param.default)('block', 'Hash', {\n isOptional: true\n })],\n type: 'Hash'\n};\nconst getStorageSize = {\n description: 'Retrieves the storage size',\n params: [(0, _param.default)('key', 'StorageKey'), (0, _param.default)('block', 'Hash', {\n isOptional: true\n })],\n type: 'u64'\n};\nconst getMetadata = {\n description: 'Returns the runtime metadata',\n params: [(0, _param.default)('block', 'Hash', {\n isOptional: true\n })],\n type: 'Metadata'\n};\nconst getRuntimeVersion = {\n description: 'Get the runtime version',\n params: [(0, _param.default)('hash', 'Hash', {\n isOptional: true\n })],\n type: 'RuntimeVersion'\n};\nconst queryStorage = {\n description: 'Query historical storage entries (by key) starting from a start block',\n params: [// @ts-ignore The Vec<> wrap is fine\n (0, _param.default)('keys', 'Vec'), (0, _param.default)('startBlock', 'Hash'), (0, _param.default)('block', 'Hash', {\n isOptional: true\n })],\n // @ts-ignore The Vec<> wrap is fine\n type: 'Vec'\n};\nconst subscribeStorage = {\n description: 'Subscribes to storage changes for the provided keys',\n params: [// @ts-ignore The Vec<> wrap is fine\n (0, _param.default)('keys', 'Vec')],\n pubsub: ['storage', 'subscribeStorage', 'unsubscribeStorage'],\n type: 'StorageChangeSet'\n};\nconst section = 'state';\n/**\n * @summary Query the state and state storage.\n */\n\nvar _default = {\n isDeprecated: false,\n isHidden: false,\n description: 'Query of state',\n section,\n methods: {\n call: (0, _method.default)(section, 'call', call),\n getMetadata: (0, _method.default)(section, 'getMetadata', getMetadata),\n getRuntimeVersion: (0, _method.default)(section, 'getRuntimeVersion', getRuntimeVersion),\n getStorage: (0, _method.default)(section, 'getStorage', getStorage),\n getStorageHash: (0, _method.default)(section, 'getStorageHash', getStorageHash),\n getStorageSize: (0, _method.default)(section, 'getStorageSize', getStorageSize),\n queryStorage: (0, _method.default)(section, 'queryStorage', queryStorage),\n subscribeStorage: (0, _method.default)(section, 'subscribeStorage', subscribeStorage)\n }\n};\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _method = _interopRequireDefault(require(\"./create/method\"));\n\n// Copyright 2017-2019 @polkadot/jsonrpc authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// NOTE order here is the same as in Rust, alphabetical below\nconst name = {\n description: 'Retrieves the node name',\n params: [],\n type: 'Text'\n};\nconst version = {\n description: 'Retrieves the version of the node',\n params: [],\n type: 'Text'\n};\nconst chain = {\n description: 'Retrieves the chain',\n params: [],\n type: 'Text'\n};\nconst properties = {\n description: 'Get a custom set of properties as a JSON object, defined in the chain spec',\n params: [],\n type: 'ChainProperties'\n};\nconst health = {\n description: 'Return health status of the node',\n params: [],\n type: 'Health'\n};\nconst peers = {\n description: 'Returns the currently connected peers',\n params: [],\n // @ts-ignore the Vec<> wrap is fine\n type: 'Vec'\n};\nconst networkState = {\n description: 'Returns current state of the network',\n params: [],\n type: 'NetworkState'\n};\nconst section = 'system';\n/**\n * @summary Methods to retrieve system info.\n */\n\nvar _default = {\n isDeprecated: false,\n isHidden: false,\n description: 'Methods to retrieve system info',\n section,\n methods: {\n chain: (0, _method.default)(section, 'chain', chain),\n health: (0, _method.default)(section, 'health', health),\n name: (0, _method.default)(section, 'name', name),\n networkState: (0, _method.default)(section, 'networkState', networkState),\n peers: (0, _method.default)(section, 'peers', peers),\n properties: (0, _method.default)(section, 'properties', properties),\n version: (0, _method.default)(section, 'version', version)\n }\n};\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"HttpProvider\", {\n enumerable: true,\n get: function get() {\n return _http.default;\n }\n});\nObject.defineProperty(exports, \"WsProvider\", {\n enumerable: true,\n get: function get() {\n return _ws.default;\n }\n});\n\nvar _http = _interopRequireDefault(require(\"./http\"));\n\nvar _ws = _interopRequireDefault(require(\"./ws\"));","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nrequire(\"./polyfill\");\n\nvar _util = require(\"@polkadot/util\");\n\nvar _coder = _interopRequireDefault(require(\"../coder\"));\n\nvar _defaults = _interopRequireDefault(require(\"../defaults\"));\n\n// Copyright 2017-2019 @polkadot/rpc-provider authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst ERROR_SUBSCRIBE = 'HTTP Provider does not have subscriptions, use WebSockets instead';\nconst l = (0, _util.logger)('api-http');\n/**\n * # @polkadot/rpc-provider/https\n *\n * @name HttpProvider\n *\n * @description The HTTP Provider allows sending requests using HTTP to a HTTP RPC server TCP port. It does not support subscriptions so you won't be able to listen to events such as new blocks or balance changes. It is usually preferrable using the [[WsProvider]].\n *\n * @example\n *
\n *\n * ```javascript\n * import Api from '@polkadot/api/promise';\n * import HttpProvider from '@polkadot/rpc-provider/http';\n *\n * const provider = new HttpProvider('http://127.0.0.1:9933');\n * const api = new Api(provider);\n * ```\n *\n * @see [[WsProvider]]\n */\n\nclass HttpProvider {\n /**\n * @param {string} endpoint The endpoint url starting with http://\n */\n constructor() {\n let endpoint = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _defaults.default.HTTP_URL;\n this.coder = void 0;\n this.endpoint = void 0;\n (0, _util.assert)(/^(https|http):\\/\\//.test(endpoint), \"Endpoint should start with 'http://', received '\".concat(endpoint, \"'\"));\n this.coder = new _coder.default();\n this.endpoint = endpoint;\n }\n /**\n * @summary `true` when this provider supports subscriptions\n */\n\n\n get hasSubscriptions() {\n return false;\n }\n /**\n * @description Returns a clone of the object\n */\n\n\n clone() {\n throw new Error('Unimplemented');\n }\n /**\n * @description Manually disconnect from the connection\n */\n\n\n disconnect() {} // noop\n\n /**\n * @summary Whether the node is connected or not.\n * @return {boolean} true if connected\n */\n\n\n isConnected() {\n return true;\n }\n /**\n * @summary Events are not supported with the HttpProvider, see [[WsProvider]].\n * @description HTTP Provider does not have 'on' emitters. WebSockets should be used instead.\n */\n\n\n on(type, sub) {\n l.error(\"HTTP Provider does not have 'on' emitters, use WebSockets instead\");\n }\n /**\n * @summary Send HTTP POST Request with Body to configured HTTP Endpoint.\n */\n\n\n async send(method, params) {\n const body = this.coder.encodeJson(method, params);\n const response = await fetch(this.endpoint, {\n body,\n headers: {\n 'Accept': 'application/json',\n 'Content-Length': \"\".concat(body.length),\n 'Content-Type': 'application/json'\n },\n method: 'POST'\n });\n (0, _util.assert)(response.ok, \"[\".concat(response.status, \"]: \").concat(response.statusText));\n const result = await response.json();\n return this.coder.decodeResponse(result);\n }\n /**\n * @summary Subscriptions are not supported with the HttpProvider, see [[WsProvider]].\n */\n\n\n async subscribe(types, method, params, cb) {\n l.error(ERROR_SUBSCRIBE);\n throw new Error(ERROR_SUBSCRIBE);\n }\n /**\n * @summary Subscriptions are not supported with the HttpProvider, see [[WsProvider]].\n */\n\n\n async unsubscribe(type, method, id) {\n l.error(ERROR_SUBSCRIBE);\n throw new Error(ERROR_SUBSCRIBE);\n }\n\n}\n\nexports.default = HttpProvider;","module.exports = require(\"regenerator-runtime\");\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 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 GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\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 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 if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\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) {\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 Promise.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 Promise.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 Promise(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) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\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 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","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","\"use strict\";\n\n// Copyright 2017-2019 @polkadot/rpc-provider authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// tslint:disable-next-line\nif (typeof fetch === 'undefined') {\n require('isomorphic-fetch');\n}","// the whatwg-fetch polyfill installs the fetch() function\n// on the global object (window or self)\n//\n// Return that as the export for use in Webpack, Browserify etc.\nrequire('whatwg-fetch');\nmodule.exports = self.fetch.bind(self);\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.WHATWGFetch = {})));\n}(this, (function (exports) { 'use strict';\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\n// Copyright 2017-2019 @polkadot/rpc-provider authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nclass RpcCoder {\n constructor() {\n this.id = 0;\n }\n\n decodeResponse(response) {\n (0, _util.assert)(response, 'Empty response object received');\n (0, _util.assert)(response.jsonrpc === '2.0', 'Invalid jsonrpc field in decoded object');\n const isSubscription = !(0, _util.isUndefined)(response.params) && !(0, _util.isUndefined)(response.method);\n (0, _util.assert)((0, _util.isNumber)(response.id) || isSubscription && (0, _util.isNumber)(response.params.subscription), 'Invalid id field in decoded object');\n this.checkError(response.error);\n (0, _util.assert)(!(0, _util.isUndefined)(response.result) || isSubscription, 'No result found in JsonRpc response');\n\n if (isSubscription) {\n this.checkError(response.params.error);\n return response.params.result;\n }\n\n return response.result;\n }\n\n encodeJson(method, params) {\n return JSON.stringify(this.encodeObject(method, params));\n }\n\n encodeObject(method, params) {\n return {\n id: ++this.id,\n jsonrpc: '2.0',\n method,\n params\n };\n }\n\n getId() {\n return this.id;\n }\n\n checkError(error) {\n if (error) {\n const code = error.code,\n data = error.data,\n message = error.message;\n\n const _data = (0, _util.isUndefined)(data) ? '' : ' (' + \"\".concat(data).substr(0, 10) + ')';\n\n console.error(\"\".concat(code, \": \").concat(message).concat(_data));\n throw new Error(\"\".concat(code, \": \").concat(message).concat(_data));\n }\n }\n\n}\n\nexports.default = RpcCoder;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n// Copyright 2017-2019 @polkadot/rpc-provider authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst HTTP_URL = 'http://127.0.0.1:9933';\nconst WS_URL = 'ws://127.0.0.1:9944';\nvar _default = {\n HTTP_URL,\n WS_URL\n};\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _Provider = _interopRequireDefault(require(\"./Provider\"));\n\n// Copyright 2017-2019 @polkadot/rpc-provider authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nvar _default = _Provider.default;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nrequire(\"./polyfill\");\n\nvar _eventemitter = _interopRequireDefault(require(\"eventemitter3\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _coder = _interopRequireDefault(require(\"../coder\"));\n\nvar _defaults = _interopRequireDefault(require(\"../defaults\"));\n\n// Copyright 2017-2019 @polkadot/rpc-provider authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst ALIASSES = {\n 'chain_finalisedHead': 'chain_finalizedHead',\n 'chain_subscribeFinalisedHeads': 'chain_subscribeFinalizedHeads',\n 'chain_unsubscribeFinalisedHeads': 'chain_unsubscribeFinalizedHeads'\n};\nconst l = (0, _util.logger)('api-ws');\n/**\n * # @polkadot/rpc-provider/ws\n *\n * @name WsProvider\n *\n * @description The WebSocket Provider allows sending requests using WebSocket to a WebSocket RPC server TCP port. Unlike the [[HttpProvider]], it does support subscriptions and allows listening to events such as new blocks or balance changes.\n *\n * @example\n *
\n *\n * ```javascript\n * import Api from '@polkadot/api/promise';\n * import WsProvider from '@polkadot/rpc-provider/ws';\n *\n * const provider = new WsProvider('ws://127.0.0.1:9944');\n * const api = new Api(provider);\n * ```\n *\n * @see [[HttpProvider]]\n */\n\nclass WsProvider {\n /**\n * @param {string} endpoint The endpoint url. Usually `ws://ip:9944` or `wss://ip:9944`\n * @param {boolean} autoConnect Whether to connect automatically or not.\n */\n constructor() {\n let endpoint = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _defaults.default.WS_URL;\n let autoConnect = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n this._eventemitter = void 0;\n this._isConnected = false;\n this.autoConnect = void 0;\n this.coder = void 0;\n this.endpoint = void 0;\n this.handlers = void 0;\n this.queued = void 0;\n this.subscriptions = void 0;\n this.waitingForId = void 0;\n this.websocket = void 0;\n\n this.onSocketClose = event => {\n if (this.autoConnect) {\n l.error(\"disconnected from \".concat(this.endpoint, \" code: '\").concat(event.code, \"' reason: '\").concat(event.reason, \"'\"));\n }\n\n this._isConnected = false;\n this.emit('disconnected');\n\n if (this.autoConnect) {\n setTimeout(() => {\n this.connect();\n }, 1000);\n }\n };\n\n this.onSocketError = error => {\n l.debug(() => ['socket error', error]);\n this.emit('error', error);\n };\n\n this.onSocketMessage = message => {\n l.debug(() => ['received', message.data]);\n const response = JSON.parse(message.data);\n return (0, _util.isUndefined)(response.method) ? this.onSocketMessageResult(response) : this.onSocketMessageSubscribe(response);\n };\n\n this.onSocketMessageResult = response => {\n l.debug(() => ['handling: response =', response, 'id =', response.id]);\n const handler = this.handlers[response.id];\n\n if (!handler) {\n l.debug(() => \"Unable to find handler for id=\".concat(response.id));\n return;\n }\n\n try {\n const method = handler.method,\n params = handler.params,\n subscription = handler.subscription;\n const result = this.coder.decodeResponse(response); // first send the result - in case of subs, we may have an update\n // immediately if we have some queued results already\n\n handler.callback(null, result);\n\n if (subscription) {\n const subId = \"\".concat(subscription.type, \"::\").concat(result);\n this.subscriptions[subId] = (0, _objectSpread2.default)({}, subscription, {\n method,\n params\n }); // if we have a result waiting for this subscription already\n\n if (this.waitingForId[subId]) {\n this.onSocketMessageSubscribe(this.waitingForId[subId]);\n }\n }\n } catch (error) {\n handler.callback(error, undefined);\n }\n\n delete this.handlers[response.id];\n };\n\n this.onSocketMessageSubscribe = response => {\n const method = ALIASSES[response.method] || response.method;\n const subId = \"\".concat(method, \"::\").concat(response.params.subscription);\n l.debug(() => ['handling: response =', response, 'subscription =', subId]);\n const handler = this.subscriptions[subId];\n\n if (!handler) {\n // store the JSON, we could have out-of-order subid coming in\n this.waitingForId[subId] = response;\n l.debug(() => \"Unable to find handler for subscription=\".concat(subId));\n return;\n } // housekeeping\n\n\n delete this.waitingForId[subId];\n\n try {\n const result = this.coder.decodeResponse(response);\n handler.callback(null, result);\n } catch (error) {\n handler.callback(error, undefined);\n }\n };\n\n this.onSocketOpen = () => {\n (0, _util.assert)(!(0, _util.isNull)(this.websocket), 'WebSocket cannot be null in onOpen');\n l.debug(() => ['connected to', this.endpoint]);\n this._isConnected = true;\n this.emit('connected');\n this.sendQueue();\n this.resubscribe();\n return true;\n };\n\n (0, _util.assert)(/^(wss|ws):\\/\\//.test(endpoint), \"Endpoint should start with 'ws://', received '\".concat(endpoint, \"'\"));\n this._eventemitter = new _eventemitter.default();\n this.autoConnect = autoConnect;\n this.coder = new _coder.default();\n this.endpoint = endpoint;\n this.handlers = {};\n this.queued = {};\n this.subscriptions = {};\n this.waitingForId = {};\n this.websocket = null;\n\n if (autoConnect) {\n this.connect();\n }\n }\n /**\n * @summary `true` when this provider supports subscriptions\n */\n\n\n get hasSubscriptions() {\n return true;\n }\n /**\n * @description Returns a clone of the object\n */\n\n\n clone() {\n return new WsProvider(this.endpoint);\n }\n /**\n * @summary Manually connect\n * @description The [[WsProvider]] connects automatically by default, however if you decided otherwise, you may\n * connect manually using this method.\n */\n\n\n connect() {\n try {\n this.websocket = new WebSocket(this.endpoint);\n this.websocket.onclose = this.onSocketClose;\n this.websocket.onerror = this.onSocketError;\n this.websocket.onmessage = this.onSocketMessage;\n this.websocket.onopen = this.onSocketOpen;\n } catch (error) {\n l.error(error);\n }\n }\n /**\n * @description Manually disconnect from the connection, clearing autoconnect logic\n */\n\n\n disconnect() {\n if ((0, _util.isNull)(this.websocket)) {\n throw new Error('Cannot disconnect on a non-open websocket');\n } // switch off autoConnect, we are in manual mode now\n\n\n this.autoConnect = false; // 1000 - Normal closure; the connection successfully completed\n\n this.websocket.close(1000);\n this.websocket = null;\n }\n /**\n * @summary Whether the node is connected or not.\n * @return {boolean} true if connected\n */\n\n\n isConnected() {\n return this._isConnected;\n }\n /**\n * @summary Listens on events after having subscribed using the [[subscribe]] function.\n * @param {ProviderInterface$Emitted} type Event\n * @param {ProviderInterface$EmitCb} sub Callback\n */\n\n\n on(type, sub) {\n this._eventemitter.on(type, sub);\n }\n /**\n * @summary Send JSON data using WebSockets to configured HTTP Endpoint or queue.\n * @param method The RPC methods to execute\n * @param params Encoded paramaters as appliucable for the method\n * @param subscription Subscription details (internally used)\n */\n\n\n async send(method, params, subscription) {\n return new Promise((resolve, reject) => {\n try {\n const json = this.coder.encodeJson(method, params);\n const id = this.coder.getId();\n\n const callback = (error, result) => {\n error ? reject(error) : resolve(result);\n };\n\n l.debug(() => ['calling', method, params, json, !!subscription]);\n this.handlers[id] = {\n callback,\n method,\n params,\n subscription\n };\n\n if (this.isConnected() && !(0, _util.isNull)(this.websocket)) {\n this.websocket.send(json);\n } else {\n this.queued[id] = json;\n }\n } catch (error) {\n reject(error);\n }\n });\n }\n /**\n * @name subscribe\n * @summary Allows subscribing to a specific event.\n * @param {string} type Subscription type\n * @param {string} method Subscription method\n * @param {Array} params Parameters\n * @param {ProviderInterface$Callback} callback Callback\n * @return {Promise} Promise resolving to the dd of the subscription you can use with [[unsubscribe]].\n *\n * @example\n *
\n *\n * ```javascript\n * const provider = new WsProvider('ws://127.0.0.1:9944');\n * const rpc = new Rpc(provider);\n *\n * rpc.state.subscribeStorage([[storage.balances.freeBalance,
]], (_, values) => {\n * console.log(values)\n * }).then((subscriptionId) => {\n * console.log('balance changes subscription id: ', subscriptionId)\n * })\n * ```\n */\n\n\n async subscribe(type, method, params, callback) {\n const id = await this.send(method, params, {\n callback,\n type\n });\n return id;\n }\n /**\n * @summary Allows unsubscribing to subscriptions made with [[subscribe]].\n */\n\n\n async unsubscribe(type, method, id) {\n const subscription = \"\".concat(type, \"::\").concat(id); // FIXME This now could happen with re-subscriptions. The issue is that with a re-sub\n // the assigned id now does not match what the API user originally received. It has\n // a slight complication in solving - since we cannot rely on the send id, but rather\n // need to find the actual subscription id to map it\n\n if ((0, _util.isUndefined)(this.subscriptions[subscription])) {\n l.debug(() => \"Unable to find active subscription=\".concat(subscription));\n return false;\n }\n\n delete this.subscriptions[subscription];\n const result = await this.send(method, [id]);\n return result;\n }\n\n emit(type) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n this._eventemitter.emit(type, ...args);\n }\n\n resubscribe() {\n const subscriptions = this.subscriptions;\n this.subscriptions = {};\n Object.keys(subscriptions).forEach(async id => {\n const _subscriptions$id = subscriptions[id],\n callback = _subscriptions$id.callback,\n method = _subscriptions$id.method,\n params = _subscriptions$id.params,\n type = _subscriptions$id.type; // only re-create subscriptions which are not in author (only area where\n // transactions are created, i.e. submissions such as 'author_submitAndWatchExtrinsic'\n // are not included (and will not be re-broadcast)\n\n if (type.startsWith('author_')) {\n return;\n }\n\n try {\n await this.subscribe(type, method, params, callback);\n } catch (error) {\n l.error(error);\n }\n });\n }\n\n sendQueue() {\n Object.keys(this.queued).forEach(id => {\n try {\n // @ts-ignore we have done the websocket check in onSocketOpen, if an issue, will catch it\n this.websocket.send(this.queued[id]);\n delete this.queued[id];\n } catch (error) {\n l.error(error);\n }\n });\n }\n\n}\n\nexports.default = WsProvider;","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","\"use strict\";\n\n// Copyright 2017-2019 @polkadot/rpc-provider authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// tslint:disable-next-line\nif (typeof WebSocket === 'undefined') {\n // @ts-ignore\n global.WebSocket = require('websocket').w3cwebsocket;\n}","var _global = (function() { return this; })();\nvar NativeWebSocket = _global.WebSocket || _global.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","module.exports = require('../package.json').version;\n","{\n \"_args\": [\n [\n \"websocket@1.0.28\",\n \"/Users/wushuaipeng/Documents/spwuc/polkdot\"\n ]\n ],\n \"_from\": \"websocket@1.0.28\",\n \"_id\": \"websocket@1.0.28\",\n \"_inBundle\": false,\n \"_integrity\": \"sha512-00y/20/80P7H4bCYkzuuvvfDvh+dgtXi5kzDf3UcZwN6boTYaKvsrtZ5lIYm1Gsg48siMErd9M4zjSYfYFHTrA==\",\n \"_location\": \"/websocket\",\n \"_phantomChildren\": {},\n \"_requested\": {\n \"type\": \"version\",\n \"registry\": true,\n \"raw\": \"websocket@1.0.28\",\n \"name\": \"websocket\",\n \"escapedName\": \"websocket\",\n \"rawSpec\": \"1.0.28\",\n \"saveSpec\": null,\n \"fetchSpec\": \"1.0.28\"\n },\n \"_requiredBy\": [\n \"/@polkadot/rpc-provider\"\n ],\n \"_resolved\": \"https://registry.npmjs.org/websocket/-/websocket-1.0.28.tgz\",\n \"_spec\": \"1.0.28\",\n \"_where\": \"/Users/wushuaipeng/Documents/spwuc/polkdot\",\n \"author\": {\n \"name\": \"Brian McKelvey\",\n \"email\": \"theturtle32@gmail.com\",\n \"url\": \"https://github.com/theturtle32\"\n },\n \"browser\": {\n \"index\": \"lib/browser.js\",\n \"zlib\": \"browserify-zlib\",\n \"console\": \"console-browserify\",\n \"constants\": \"constants-browserify\",\n \"crypto\": \"react-native-crypto\",\n \"dns\": \"dns.js\",\n \"net\": \"react-native-tcp\",\n \"domain\": \"domain-browser\",\n \"http\": \"@tradle/react-native-http\",\n \"https\": \"https-browserify\",\n \"os\": \"react-native-os\",\n \"path\": \"path-browserify\",\n \"querystring\": \"querystring-es3\",\n \"fs\": \"react-native-level-fs\",\n \"_stream_transform\": \"readable-stream/transform\",\n \"_stream_readable\": \"readable-stream/readable\",\n \"_stream_writable\": \"readable-stream/writable\",\n \"_stream_duplex\": \"readable-stream/duplex\",\n \"_stream_passthrough\": \"readable-stream/passthrough\",\n \"dgram\": \"react-native-udp\",\n \"stream\": \"stream-browserify\",\n \"timers\": \"timers-browserify\",\n \"tty\": \"tty-browserify\",\n \"vm\": \"vm-browserify\",\n \"tls\": false\n },\n \"bugs\": {\n \"url\": \"https://github.com/theturtle32/WebSocket-Node/issues\"\n },\n \"config\": {\n \"verbose\": false\n },\n \"contributors\": [\n {\n \"name\": \"Iñaki Baz Castillo\",\n \"email\": \"ibc@aliax.net\",\n \"url\": \"http://dev.sipdoc.net\"\n }\n ],\n \"dependencies\": {\n \"debug\": \"^2.2.0\",\n \"nan\": \"^2.11.0\",\n \"typedarray-to-buffer\": \"^3.1.5\",\n \"yaeti\": \"^0.0.6\"\n },\n \"description\": \"Websocket Client & Server Library implementing the WebSocket protocol as specified in RFC 6455.\",\n \"devDependencies\": {\n \"buffer-equal\": \"^1.0.0\",\n \"faucet\": \"^0.0.1\",\n \"gulp\": \"git+https://github.com/gulpjs/gulp.git#4.0\",\n \"gulp-jshint\": \"^2.0.4\",\n \"jshint\": \"^2.0.0\",\n \"jshint-stylish\": \"^2.2.1\",\n \"tape\": \"^4.9.1\"\n },\n \"directories\": {\n \"lib\": \"./lib\"\n },\n \"engines\": {\n \"node\": \">=0.10.0\"\n },\n \"homepage\": \"https://github.com/theturtle32/WebSocket-Node\",\n \"keywords\": [\n \"websocket\",\n \"websockets\",\n \"socket\",\n \"networking\",\n \"comet\",\n \"push\",\n \"RFC-6455\",\n \"realtime\",\n \"server\",\n \"client\"\n ],\n \"license\": \"Apache-2.0\",\n \"main\": \"index\",\n \"name\": \"websocket\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/theturtle32/WebSocket-Node.git\"\n },\n \"scripts\": {\n \"gulp\": \"gulp\",\n \"install\": \"(node-gyp rebuild 2> builderror.log) || (exit 0)\",\n \"test\": \"faucet test/unit\"\n },\n \"version\": \"1.0.28\",\n \"react-native\": {\n \"index\": \"lib/browser.js\",\n \"zlib\": \"browserify-zlib\",\n \"console\": \"console-browserify\",\n \"constants\": \"constants-browserify\",\n \"crypto\": \"react-native-crypto\",\n \"dns\": \"dns.js\",\n \"net\": \"react-native-tcp\",\n \"domain\": \"domain-browser\",\n \"http\": \"@tradle/react-native-http\",\n \"https\": \"https-browserify\",\n \"os\": \"react-native-os\",\n \"path\": \"path-browserify\",\n \"querystring\": \"querystring-es3\",\n \"fs\": \"react-native-level-fs\",\n \"_stream_transform\": \"readable-stream/transform\",\n \"_stream_readable\": \"readable-stream/readable\",\n \"_stream_writable\": \"readable-stream/writable\",\n \"_stream_duplex\": \"readable-stream/duplex\",\n \"_stream_passthrough\": \"readable-stream/passthrough\",\n \"dgram\": \"react-native-udp\",\n \"stream\": \"stream-browserify\",\n \"timers\": \"timers-browserify\",\n \"tty\": \"tty-browserify\",\n \"vm\": \"vm-browserify\",\n \"tls\": false\n }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _eventemitter = _interopRequireDefault(require(\"eventemitter3\"));\n\nvar _memoizee = _interopRequireDefault(require(\"memoizee\"));\n\nvar _rxjs = require(\"rxjs\");\n\nvar _rpcCore = _interopRequireDefault(require(\"@polkadot/rpc-core\"));\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _util = require(\"@polkadot/util\");\n\n// Copyright 2017-2019 @polkadot/rpc-rx authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * @name RpcRx\n * @summary The RxJS API is a wrapper around the API.\n * @description It allows wrapping API components with observables using RxJS.\n *\n * @example\n *
\n *\n * ```javascript\n * import RpcRx from '@polkadot/rpc-rx';\n * import WsProvider from '@polkadot/rpc-provider/ws';\n *\n * const provider = new WsProvider('http://127.0.0.1:9944');\n * const api = new RpcRx(provider);\n * ```\n */\nclass RpcRx {\n /**\n * @param {ProviderInterface} provider An API provider using HTTP or WebSocket\n */\n constructor(providerOrRpc) {\n this._api = void 0;\n this._eventemitter = void 0;\n this._isConnected = void 0;\n this.author = void 0;\n this.chain = void 0;\n this.state = void 0;\n this.system = void 0;\n this._api = providerOrRpc instanceof _rpcCore.default ? providerOrRpc : new _rpcCore.default(providerOrRpc);\n this._eventemitter = new _eventemitter.default();\n this._isConnected = new _rxjs.BehaviorSubject(this._api._provider.isConnected());\n this.initEmitters(this._api._provider);\n this.author = this.createInterface(this._api.author);\n this.chain = this.createInterface(this._api.chain);\n this.state = this.createInterface(this._api.state);\n this.system = this.createInterface(this._api.system);\n }\n\n isConnected() {\n return this._isConnected;\n }\n\n on(type, handler) {\n this._eventemitter.on(type, handler);\n }\n\n emit(type) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n this._eventemitter.emit(type, ...args);\n }\n\n initEmitters(provider) {\n provider.on('connected', () => {\n this._isConnected.next(true);\n\n this.emit('connected');\n });\n provider.on('disconnected', () => {\n this._isConnected.next(false);\n\n this.emit('disconnected');\n });\n }\n\n createInterface(section) {\n return Object.keys(section).filter(name => !['subscribe', 'unsubscribe'].includes(name)).reduce((observables, name) => {\n observables[name] = this.createObservable(name, section);\n return observables;\n }, {});\n }\n\n createObservable(name, section) {\n var _this = this;\n\n if ((0, _util.isFunction)(section[name].unsubscribe)) {\n const memoized = (0, _memoizee.default)(function () {\n for (var _len2 = arguments.length, params = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n params[_key2] = arguments[_key2];\n }\n\n return _this.createReplay(name, params, section, memoized);\n }, {\n length: false,\n // Normalize args so that different args that should be cached\n // together are cached together.\n // E.g.: `query.my.method('abc') === query.my.method(new AccountId('abc'));`\n normalizer: args => {\n // `args` is arguments object as accessible in memoized function\n return JSON.stringify(args);\n }\n });\n return memoized;\n } // We voluntarily don't cache the \"one-shot\" RPC calls. For example,\n // `getStorage('123')` returns the current value, but this value can change\n // over time, so we wouldn't want to cache the Observable.\n\n\n return function () {\n for (var _len3 = arguments.length, params = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n params[_key3] = arguments[_key3];\n }\n\n return (0, _rxjs.from)(section[name].apply(null, params).catch(error => {\n console.error(error);\n }));\n };\n }\n\n createReplay(name, params, section, memoized) {\n return new _rxjs.Observable(observer => {\n const fn = section[name];\n const callback = this.createReplayCallback(observer);\n const subscribe = fn(...params, callback).catch(error => observer.next(error));\n return this.createReplayUnsub(fn, subscribe, params, memoized);\n }).pipe((0, _operators.map)(value => {\n if (value instanceof Error) {\n throw value;\n }\n\n return value;\n }), (0, _operators.publishReplay)(1), (0, _operators.refCount)());\n }\n\n createReplayCallback(observer) {\n let cachedResult;\n return result => {\n if ((0, _util.isUndefined)(cachedResult) || !Array.isArray(cachedResult) || !Array.isArray(result) || result.length !== cachedResult.length) {\n cachedResult = result;\n } else {\n cachedResult = cachedResult.map((cachedValue, index) => (0, _util.isUndefined)(result[index]) ? cachedValue : result[index]);\n }\n\n observer.next(cachedResult);\n };\n }\n\n createReplayUnsub(fn, subscribe, params, memoized) {\n return () => {\n subscribe.then(subscriptionId => fn.unsubscribe(subscriptionId)).then(() => {\n memoized.delete(...params);\n }).catch(error => {\n console.error('Unsubscribe failed', error);\n });\n };\n }\n\n}\n\nexports.default = RpcRx;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","\"use strict\";\n\nvar normalizeOpts = require(\"es5-ext/object/normalize-options\")\n , resolveLength = require(\"./lib/resolve-length\")\n , plain = require(\"./plain\");\n\nmodule.exports = function (fn/*, options*/) {\n\tvar options = normalizeOpts(arguments[1]), length;\n\n\tif (!options.normalizer) {\n\t\tlength = options.length = resolveLength(options.length, fn.length, options.async);\n\t\tif (length !== 0) {\n\t\t\tif (options.primitive) {\n\t\t\t\tif (length === false) {\n\t\t\t\t\toptions.normalizer = require(\"./normalizers/primitive\");\n\t\t\t\t} else if (length > 1) {\n\t\t\t\t\toptions.normalizer = require(\"./normalizers/get-primitive-fixed\")(length);\n\t\t\t\t}\n\t\t\t} else if (length === false) options.normalizer = require(\"./normalizers/get\")();\n\t\t\t\telse if (length === 1) options.normalizer = require(\"./normalizers/get-1\")();\n\t\t\t\telse options.normalizer = require(\"./normalizers/get-fixed\")(length);\n\t\t}\n\t}\n\n\t// Assure extensions\n\tif (options.async) require(\"./ext/async\");\n\tif (options.promise) require(\"./ext/promise\");\n\tif (options.dispose) require(\"./ext/dispose\");\n\tif (options.maxAge) require(\"./ext/max-age\");\n\tif (options.max) require(\"./ext/max\");\n\tif (options.refCounter) require(\"./ext/ref-counter\");\n\n\treturn plain(fn, options);\n};\n","\"use strict\";\n\nvar isValue = require(\"./is-value\");\n\nvar forEach = Array.prototype.forEach, create = Object.create;\n\nvar process = function (src, obj) {\n\tvar key;\n\tfor (key in src) obj[key] = src[key];\n};\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function (opts1 /*, …options*/) {\n\tvar result = create(null);\n\tforEach.call(arguments, function (options) {\n\t\tif (!isValue(options)) return;\n\t\tprocess(Object(options), result);\n\t});\n\treturn result;\n};\n","\"use strict\";\n\nvar _undefined = require(\"../function/noop\")(); // Support ES3 engines\n\nmodule.exports = function (val) {\n return (val !== _undefined) && (val !== null);\n};\n","\"use strict\";\n\n// eslint-disable-next-line no-empty-function\nmodule.exports = function () {};\n","\"use strict\";\n\nvar toPosInt = require(\"es5-ext/number/to-pos-integer\");\n\nmodule.exports = function (optsLength, fnLength, isAsync) {\n\tvar length;\n\tif (isNaN(optsLength)) {\n\t\tlength = fnLength;\n\t\tif (!(length >= 0)) return 1;\n\t\tif (isAsync && length) return length - 1;\n\t\treturn length;\n\t}\n\tif (optsLength === false) return false;\n\treturn toPosInt(optsLength);\n};\n","\"use strict\";\n\nvar toInteger = require(\"./to-integer\")\n\n , max = Math.max;\n\nmodule.exports = function (value) {\n return max(0, toInteger(value));\n};\n","\"use strict\";\n\nvar sign = require(\"../math/sign\")\n\n , abs = Math.abs, floor = Math.floor;\n\nmodule.exports = function (value) {\n\tif (isNaN(value)) return 0;\n\tvalue = Number(value);\n\tif ((value === 0) || !isFinite(value)) return value;\n\treturn sign(value) * floor(abs(value));\n};\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")()\n\t? Math.sign\n\t: require(\"./shim\");\n","\"use strict\";\n\nmodule.exports = function () {\n\tvar sign = Math.sign;\n\tif (typeof sign !== \"function\") return false;\n\treturn (sign(10) === 1) && (sign(-20) === -1);\n};\n","\"use strict\";\n\nmodule.exports = function (value) {\n\tvalue = Number(value);\n\tif (isNaN(value) || (value === 0)) return value;\n\treturn value > 0 ? 1 : -1;\n};\n","\"use strict\";\n\nvar callable = require(\"es5-ext/object/valid-callable\")\n , forEach = require(\"es5-ext/object/for-each\")\n , extensions = require(\"./lib/registered-extensions\")\n , configure = require(\"./lib/configure-map\")\n , resolveLength = require(\"./lib/resolve-length\");\n\nmodule.exports = function self(fn /*, options */) {\n\tvar options, length, conf;\n\n\tcallable(fn);\n\toptions = Object(arguments[1]);\n\n\tif (options.async && options.promise) {\n\t\tthrow new Error(\"Options 'async' and 'promise' cannot be used together\");\n\t}\n\n\t// Do not memoize already memoized function\n\tif (hasOwnProperty.call(fn, \"__memoized__\") && !options.force) return fn;\n\n\t// Resolve length;\n\tlength = resolveLength(options.length, fn.length, options.async && extensions.async);\n\n\t// Configure cache map\n\tconf = configure(fn, length, options);\n\n\t// Bind eventual extensions\n\tforEach(extensions, function (extFn, name) {\n\t\tif (options[name]) extFn(options[name], conf, options);\n\t});\n\n\tif (self.__profiler__) self.__profiler__(conf);\n\n\tconf.updateEnv();\n\treturn conf.memoized;\n};\n","\"use strict\";\n\nmodule.exports = function (fn) {\n\tif (typeof fn !== \"function\") throw new TypeError(fn + \" is not a function\");\n\treturn fn;\n};\n","\"use strict\";\n\nmodule.exports = require(\"./_iterate\")(\"forEach\");\n","// Internal method, used by iteration functions.\n// Calls a function for each key-value pair found in object\n// Optionally takes compareFn to iterate object in specific order\n\n\"use strict\";\n\nvar callable = require(\"./valid-callable\")\n , value = require(\"./valid-value\")\n , bind = Function.prototype.bind\n , call = Function.prototype.call\n , keys = Object.keys\n , objPropertyIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nmodule.exports = function (method, defVal) {\n\treturn function (obj, cb /*, thisArg, compareFn*/) {\n\t\tvar list, thisArg = arguments[2], compareFn = arguments[3];\n\t\tobj = Object(value(obj));\n\t\tcallable(cb);\n\n\t\tlist = keys(obj);\n\t\tif (compareFn) {\n\t\t\tlist.sort(typeof compareFn === \"function\" ? bind.call(compareFn, obj) : undefined);\n\t\t}\n\t\tif (typeof method !== \"function\") method = list[method];\n\t\treturn call.call(method, list, function (key, index) {\n\t\t\tif (!objPropertyIsEnumerable.call(obj, key)) return defVal;\n\t\t\treturn call.call(cb, thisArg, obj[key], key, obj, index);\n\t\t});\n\t};\n};\n","\"use strict\";\n\nvar isValue = require(\"./is-value\");\n\nmodule.exports = function (value) {\n\tif (!isValue(value)) throw new TypeError(\"Cannot use null or undefined\");\n\treturn value;\n};\n","\"use strict\";\n","/* eslint no-eq-null: 0, eqeqeq: 0, no-unused-vars: 0 */\n\n\"use strict\";\n\nvar customError = require(\"es5-ext/error/custom\")\n , defineLength = require(\"es5-ext/function/_define-length\")\n , d = require(\"d\")\n , ee = require(\"event-emitter\").methods\n , resolveResolve = require(\"./resolve-resolve\")\n , resolveNormalize = require(\"./resolve-normalize\");\n\nvar apply = Function.prototype.apply\n , call = Function.prototype.call\n , create = Object.create\n , defineProperties = Object.defineProperties\n , on = ee.on\n , emit = ee.emit;\n\nmodule.exports = function (original, length, options) {\n\tvar cache = create(null)\n\t , conf\n\t , memLength\n\t , get\n\t , set\n\t , del\n\t , clear\n\t , extDel\n\t , extGet\n\t , extHas\n\t , normalizer\n\t , getListeners\n\t , setListeners\n\t , deleteListeners\n\t , memoized\n\t , resolve;\n\tif (length !== false) memLength = length;\n\telse if (isNaN(original.length)) memLength = 1;\n\telse memLength = original.length;\n\n\tif (options.normalizer) {\n\t\tnormalizer = resolveNormalize(options.normalizer);\n\t\tget = normalizer.get;\n\t\tset = normalizer.set;\n\t\tdel = normalizer.delete;\n\t\tclear = normalizer.clear;\n\t}\n\tif (options.resolvers != null) resolve = resolveResolve(options.resolvers);\n\n\tif (get) {\n\t\tmemoized = defineLength(function (arg) {\n\t\t\tvar id, result, args = arguments;\n\t\t\tif (resolve) args = resolve(args);\n\t\t\tid = get(args);\n\t\t\tif (id !== null) {\n\t\t\t\tif (hasOwnProperty.call(cache, id)) {\n\t\t\t\t\tif (getListeners) conf.emit(\"get\", id, args, this);\n\t\t\t\t\treturn cache[id];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (args.length === 1) result = call.call(original, this, args[0]);\n\t\t\telse result = apply.call(original, this, args);\n\t\t\tif (id === null) {\n\t\t\t\tid = get(args);\n\t\t\t\tif (id !== null) throw customError(\"Circular invocation\", \"CIRCULAR_INVOCATION\");\n\t\t\t\tid = set(args);\n\t\t\t} else if (hasOwnProperty.call(cache, id)) {\n\t\t\t\tthrow customError(\"Circular invocation\", \"CIRCULAR_INVOCATION\");\n\t\t\t}\n\t\t\tcache[id] = result;\n\t\t\tif (setListeners) conf.emit(\"set\", id, null, result);\n\t\t\treturn result;\n\t\t}, memLength);\n\t} else if (length === 0) {\n\t\tmemoized = function () {\n\t\t\tvar result;\n\t\t\tif (hasOwnProperty.call(cache, \"data\")) {\n\t\t\t\tif (getListeners) conf.emit(\"get\", \"data\", arguments, this);\n\t\t\t\treturn cache.data;\n\t\t\t}\n\t\t\tif (arguments.length) result = apply.call(original, this, arguments);\n\t\t\telse result = call.call(original, this);\n\t\t\tif (hasOwnProperty.call(cache, \"data\")) {\n\t\t\t\tthrow customError(\"Circular invocation\", \"CIRCULAR_INVOCATION\");\n\t\t\t}\n\t\t\tcache.data = result;\n\t\t\tif (setListeners) conf.emit(\"set\", \"data\", null, result);\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\tmemoized = function (arg) {\n\t\t\tvar result, args = arguments, id;\n\t\t\tif (resolve) args = resolve(arguments);\n\t\t\tid = String(args[0]);\n\t\t\tif (hasOwnProperty.call(cache, id)) {\n\t\t\t\tif (getListeners) conf.emit(\"get\", id, args, this);\n\t\t\t\treturn cache[id];\n\t\t\t}\n\t\t\tif (args.length === 1) result = call.call(original, this, args[0]);\n\t\t\telse result = apply.call(original, this, args);\n\t\t\tif (hasOwnProperty.call(cache, id)) {\n\t\t\t\tthrow customError(\"Circular invocation\", \"CIRCULAR_INVOCATION\");\n\t\t\t}\n\t\t\tcache[id] = result;\n\t\t\tif (setListeners) conf.emit(\"set\", id, null, result);\n\t\t\treturn result;\n\t\t};\n\t}\n\tconf = {\n\t\toriginal: original,\n\t\tmemoized: memoized,\n\t\tprofileName: options.profileName,\n\t\tget: function (args) {\n\t\t\tif (resolve) args = resolve(args);\n\t\t\tif (get) return get(args);\n\t\t\treturn String(args[0]);\n\t\t},\n\t\thas: function (id) { return hasOwnProperty.call(cache, id); },\n\t\tdelete: function (id) {\n\t\t\tvar result;\n\t\t\tif (!hasOwnProperty.call(cache, id)) return;\n\t\t\tif (del) del(id);\n\t\t\tresult = cache[id];\n\t\t\tdelete cache[id];\n\t\t\tif (deleteListeners) conf.emit(\"delete\", id, result);\n\t\t},\n\t\tclear: function () {\n\t\t\tvar oldCache = cache;\n\t\t\tif (clear) clear();\n\t\t\tcache = create(null);\n\t\t\tconf.emit(\"clear\", oldCache);\n\t\t},\n\t\ton: function (type, listener) {\n\t\t\tif (type === \"get\") getListeners = true;\n\t\t\telse if (type === \"set\") setListeners = true;\n\t\t\telse if (type === \"delete\") deleteListeners = true;\n\t\t\treturn on.call(this, type, listener);\n\t\t},\n\t\temit: emit,\n\t\tupdateEnv: function () { original = conf.original; }\n\t};\n\tif (get) {\n\t\textDel = defineLength(function (arg) {\n\t\t\tvar id, args = arguments;\n\t\t\tif (resolve) args = resolve(args);\n\t\t\tid = get(args);\n\t\t\tif (id === null) return;\n\t\t\tconf.delete(id);\n\t\t}, memLength);\n\t} else if (length === 0) {\n\t\textDel = function () { return conf.delete(\"data\"); };\n\t} else {\n\t\textDel = function (arg) {\n\t\t\tif (resolve) arg = resolve(arguments)[0];\n\t\t\treturn conf.delete(arg);\n\t\t};\n\t}\n\textGet = defineLength(function () {\n\t\tvar id, args = arguments;\n\t\tif (length === 0) return cache.data;\n\t\tif (resolve) args = resolve(args);\n\t\tif (get) id = get(args);\n\t\telse id = String(args[0]);\n\t\treturn cache[id];\n\t});\n\textHas = defineLength(function () {\n\t\tvar id, args = arguments;\n\t\tif (length === 0) return conf.has(\"data\");\n\t\tif (resolve) args = resolve(args);\n\t\tif (get) id = get(args);\n\t\telse id = String(args[0]);\n\t\tif (id === null) return false;\n\t\treturn conf.has(id);\n\t});\n\tdefineProperties(memoized, {\n\t\t__memoized__: d(true),\n\t\tdelete: d(extDel),\n\t\tclear: d(conf.clear),\n\t\t_get: d(extGet),\n\t\t_has: d(extHas)\n\t});\n\treturn conf;\n};\n","\"use strict\";\n\nvar assign = require(\"../object/assign\")\n , isObject = require(\"../object/is-object\")\n , isValue = require(\"../object/is-value\")\n , captureStackTrace = Error.captureStackTrace;\n\nexports = module.exports = function (message /*, code, ext*/) {\n\tvar err = new Error(message), code = arguments[1], ext = arguments[2];\n\tif (!isValue(ext)) {\n\t\tif (isObject(code)) {\n\t\t\text = code;\n\t\t\tcode = null;\n\t\t}\n\t}\n\tif (isValue(ext)) assign(err, ext);\n\tif (isValue(code)) err.code = code;\n\tif (captureStackTrace) captureStackTrace(err, exports);\n\treturn err;\n};\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")()\n\t? Object.assign\n\t: require(\"./shim\");\n","\"use strict\";\n\nmodule.exports = function () {\n\tvar assign = Object.assign, obj;\n\tif (typeof assign !== \"function\") return false;\n\tobj = { foo: \"raz\" };\n\tassign(obj, { bar: \"dwa\" }, { trzy: \"trzy\" });\n\treturn (obj.foo + obj.bar + obj.trzy) === \"razdwatrzy\";\n};\n","\"use strict\";\n\nvar keys = require(\"../keys\")\n , value = require(\"../valid-value\")\n , max = Math.max;\n\nmodule.exports = function (dest, src /*, …srcn*/) {\n\tvar error, i, length = max(arguments.length, 2), assign;\n\tdest = Object(value(dest));\n\tassign = function (key) {\n\t\ttry {\n\t\t\tdest[key] = src[key];\n\t\t} catch (e) {\n\t\t\tif (!error) error = e;\n\t\t}\n\t};\n\tfor (i = 1; i < length; ++i) {\n\t\tsrc = arguments[i];\n\t\tkeys(src).forEach(assign);\n\t}\n\tif (error !== undefined) throw error;\n\treturn dest;\n};\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")() ? Object.keys : require(\"./shim\");\n","\"use strict\";\n\nmodule.exports = function () {\n\ttry {\n\t\tObject.keys(\"primitive\");\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n","\"use strict\";\n\nvar isValue = require(\"../is-value\");\n\nvar keys = Object.keys;\n\nmodule.exports = function (object) { return keys(isValue(object) ? Object(object) : object); };\n","\"use strict\";\n\nvar isValue = require(\"./is-value\");\n\nvar map = { function: true, object: true };\n\nmodule.exports = function (value) {\n\treturn (isValue(value) && map[typeof value]) || false;\n};\n","\"use strict\";\n\nvar toPosInt = require(\"../number/to-pos-integer\");\n\nvar test = function (arg1, arg2) {\n\treturn arg2;\n};\n\nvar desc, defineProperty, generate, mixin;\n\ntry {\n\tObject.defineProperty(test, \"length\", {\n\t\tconfigurable: true,\n\t\twritable: false,\n\t\tenumerable: false,\n\t\tvalue: 1\n\t});\n} catch (ignore) {}\n\nif (test.length === 1) {\n\t// ES6\n\tdesc = { configurable: true, writable: false, enumerable: false };\n\tdefineProperty = Object.defineProperty;\n\tmodule.exports = function (fn, length) {\n\t\tlength = toPosInt(length);\n\t\tif (fn.length === length) return fn;\n\t\tdesc.value = length;\n\t\treturn defineProperty(fn, \"length\", desc);\n\t};\n} else {\n\tmixin = require(\"../object/mixin\");\n\tgenerate = (function () {\n\t\tvar cache = [];\n\t\treturn function (length) {\n\t\t\tvar args, i = 0;\n\t\t\tif (cache[length]) return cache[length];\n\t\t\targs = [];\n\t\t\twhile (length--) args.push(\"a\" + (++i).toString(36));\n\t\t\t// eslint-disable-next-line no-new-func\n\t\t\treturn new Function(\n\t\t\t\t\"fn\",\n\t\t\t\t\"return function (\" + args.join(\", \") + \") { return fn.apply(this, arguments); };\"\n\t\t\t);\n\t\t};\n\t}());\n\tmodule.exports = function (src, length) {\n\t\tvar target;\n\t\tlength = toPosInt(length);\n\t\tif (src.length === length) return src;\n\t\ttarget = generate(length)(src);\n\t\ttry {\n\t\t\tmixin(target, src);\n\t\t} catch (ignore) {}\n\t\treturn target;\n\t};\n}\n","\"use strict\";\n\nvar value = require(\"./valid-value\")\n\n , defineProperty = Object.defineProperty\n , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor\n , getOwnPropertyNames = Object.getOwnPropertyNames\n , getOwnPropertySymbols = Object.getOwnPropertySymbols;\n\nmodule.exports = function (target, source) {\n\tvar error, sourceObject = Object(value(source));\n\ttarget = Object(value(target));\n\tgetOwnPropertyNames(sourceObject).forEach(function (name) {\n\t\ttry {\n\t\t\tdefineProperty(target, name, getOwnPropertyDescriptor(source, name));\n\t\t} catch (e) {\n error = e;\n}\n\t});\n\tif (typeof getOwnPropertySymbols === \"function\") {\n\t\tgetOwnPropertySymbols(sourceObject).forEach(function (symbol) {\n\t\t\ttry {\n\t\t\t\tdefineProperty(target, symbol, getOwnPropertyDescriptor(source, symbol));\n\t\t\t} catch (e) {\n error = e;\n}\n\t\t});\n\t}\n\tif (error !== undefined) throw error;\n\treturn target;\n};\n","'use strict';\n\nvar assign = require('es5-ext/object/assign')\n , normalizeOpts = require('es5-ext/object/normalize-options')\n , isCallable = require('es5-ext/object/is-callable')\n , contains = require('es5-ext/string/#/contains')\n\n , d;\n\nd = module.exports = function (dscr, value/*, options*/) {\n\tvar c, e, w, options, desc;\n\tif ((arguments.length < 2) || (typeof dscr !== 'string')) {\n\t\toptions = value;\n\t\tvalue = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[2];\n\t}\n\tif (dscr == null) {\n\t\tc = w = true;\n\t\te = false;\n\t} else {\n\t\tc = contains.call(dscr, 'c');\n\t\te = contains.call(dscr, 'e');\n\t\tw = contains.call(dscr, 'w');\n\t}\n\n\tdesc = { value: value, configurable: c, enumerable: e, writable: w };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n\nd.gs = function (dscr, get, set/*, options*/) {\n\tvar c, e, options, desc;\n\tif (typeof dscr !== 'string') {\n\t\toptions = set;\n\t\tset = get;\n\t\tget = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[3];\n\t}\n\tif (get == null) {\n\t\tget = undefined;\n\t} else if (!isCallable(get)) {\n\t\toptions = get;\n\t\tget = set = undefined;\n\t} else if (set == null) {\n\t\tset = undefined;\n\t} else if (!isCallable(set)) {\n\t\toptions = set;\n\t\tset = undefined;\n\t}\n\tif (dscr == null) {\n\t\tc = true;\n\t\te = false;\n\t} else {\n\t\tc = contains.call(dscr, 'c');\n\t\te = contains.call(dscr, 'e');\n\t}\n\n\tdesc = { get: get, set: set, configurable: c, enumerable: e };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n","// Deprecated\n\n\"use strict\";\n\nmodule.exports = function (obj) {\n return typeof obj === \"function\";\n};\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")()\n\t? String.prototype.contains\n\t: require(\"./shim\");\n","\"use strict\";\n\nvar str = \"razdwatrzy\";\n\nmodule.exports = function () {\n\tif (typeof str.contains !== \"function\") return false;\n\treturn (str.contains(\"dwa\") === true) && (str.contains(\"foo\") === false);\n};\n","\"use strict\";\n\nvar indexOf = String.prototype.indexOf;\n\nmodule.exports = function (searchString/*, position*/) {\n\treturn indexOf.call(this, searchString, arguments[1]) > -1;\n};\n","'use strict';\n\nvar d = require('d')\n , callable = require('es5-ext/object/valid-callable')\n\n , apply = Function.prototype.apply, call = Function.prototype.call\n , create = Object.create, defineProperty = Object.defineProperty\n , defineProperties = Object.defineProperties\n , hasOwnProperty = Object.prototype.hasOwnProperty\n , descriptor = { configurable: true, enumerable: false, writable: true }\n\n , on, once, off, emit, methods, descriptors, base;\n\non = function (type, listener) {\n\tvar data;\n\n\tcallable(listener);\n\n\tif (!hasOwnProperty.call(this, '__ee__')) {\n\t\tdata = descriptor.value = create(null);\n\t\tdefineProperty(this, '__ee__', descriptor);\n\t\tdescriptor.value = null;\n\t} else {\n\t\tdata = this.__ee__;\n\t}\n\tif (!data[type]) data[type] = listener;\n\telse if (typeof data[type] === 'object') data[type].push(listener);\n\telse data[type] = [data[type], listener];\n\n\treturn this;\n};\n\nonce = function (type, listener) {\n\tvar once, self;\n\n\tcallable(listener);\n\tself = this;\n\ton.call(this, type, once = function () {\n\t\toff.call(self, type, once);\n\t\tapply.call(listener, this, arguments);\n\t});\n\n\tonce.__eeOnceListener__ = listener;\n\treturn this;\n};\n\noff = function (type, listener) {\n\tvar data, listeners, candidate, i;\n\n\tcallable(listener);\n\n\tif (!hasOwnProperty.call(this, '__ee__')) return this;\n\tdata = this.__ee__;\n\tif (!data[type]) return this;\n\tlisteners = data[type];\n\n\tif (typeof listeners === 'object') {\n\t\tfor (i = 0; (candidate = listeners[i]); ++i) {\n\t\t\tif ((candidate === listener) ||\n\t\t\t\t\t(candidate.__eeOnceListener__ === listener)) {\n\t\t\t\tif (listeners.length === 2) data[type] = listeners[i ? 0 : 1];\n\t\t\t\telse listeners.splice(i, 1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif ((listeners === listener) ||\n\t\t\t\t(listeners.__eeOnceListener__ === listener)) {\n\t\t\tdelete data[type];\n\t\t}\n\t}\n\n\treturn this;\n};\n\nemit = function (type) {\n\tvar i, l, listener, listeners, args;\n\n\tif (!hasOwnProperty.call(this, '__ee__')) return;\n\tlisteners = this.__ee__[type];\n\tif (!listeners) return;\n\n\tif (typeof listeners === 'object') {\n\t\tl = arguments.length;\n\t\targs = new Array(l - 1);\n\t\tfor (i = 1; i < l; ++i) args[i - 1] = arguments[i];\n\n\t\tlisteners = listeners.slice();\n\t\tfor (i = 0; (listener = listeners[i]); ++i) {\n\t\t\tapply.call(listener, this, args);\n\t\t}\n\t} else {\n\t\tswitch (arguments.length) {\n\t\tcase 1:\n\t\t\tcall.call(listeners, this);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tcall.call(listeners, this, arguments[1]);\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tcall.call(listeners, this, arguments[1], arguments[2]);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tl = arguments.length;\n\t\t\targs = new Array(l - 1);\n\t\t\tfor (i = 1; i < l; ++i) {\n\t\t\t\targs[i - 1] = arguments[i];\n\t\t\t}\n\t\t\tapply.call(listeners, this, args);\n\t\t}\n\t}\n};\n\nmethods = {\n\ton: on,\n\tonce: once,\n\toff: off,\n\temit: emit\n};\n\ndescriptors = {\n\ton: d(on),\n\tonce: d(once),\n\toff: d(off),\n\temit: d(emit)\n};\n\nbase = defineProperties({}, descriptors);\n\nmodule.exports = exports = function (o) {\n\treturn (o == null) ? create(base) : defineProperties(Object(o), descriptors);\n};\nexports.methods = methods;\n","\"use strict\";\n\nvar toArray = require(\"es5-ext/array/to-array\")\n , isValue = require(\"es5-ext/object/is-value\")\n , callable = require(\"es5-ext/object/valid-callable\");\n\nvar slice = Array.prototype.slice, resolveArgs;\n\nresolveArgs = function (args) {\n\treturn this.map(function (resolve, i) {\n\t\treturn resolve ? resolve(args[i]) : args[i];\n\t}).concat(slice.call(args, this.length));\n};\n\nmodule.exports = function (resolvers) {\n\tresolvers = toArray(resolvers);\n\tresolvers.forEach(function (resolve) {\n\t\tif (isValue(resolve)) callable(resolve);\n\t});\n\treturn resolveArgs.bind(resolvers);\n};\n","\"use strict\";\n\nvar from = require(\"./from\")\n\n , isArray = Array.isArray;\n\nmodule.exports = function (arrayLike) {\n\treturn isArray(arrayLike) ? arrayLike : from(arrayLike);\n};\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")()\n\t? Array.from\n\t: require(\"./shim\");\n","\"use strict\";\n\nmodule.exports = function () {\n\tvar from = Array.from, arr, result;\n\tif (typeof from !== \"function\") return false;\n\tarr = [\"raz\", \"dwa\"];\n\tresult = from(arr);\n\treturn Boolean(result && (result !== arr) && (result[1] === \"dwa\"));\n};\n","\"use strict\";\n\nvar iteratorSymbol = require(\"es6-symbol\").iterator\n , isArguments = require(\"../../function/is-arguments\")\n , isFunction = require(\"../../function/is-function\")\n , toPosInt = require(\"../../number/to-pos-integer\")\n , callable = require(\"../../object/valid-callable\")\n , validValue = require(\"../../object/valid-value\")\n , isValue = require(\"../../object/is-value\")\n , isString = require(\"../../string/is-string\")\n , isArray = Array.isArray\n , call = Function.prototype.call\n , desc = { configurable: true, enumerable: true, writable: true, value: null }\n , defineProperty = Object.defineProperty;\n\n// eslint-disable-next-line complexity, max-lines-per-function\nmodule.exports = function (arrayLike /*, mapFn, thisArg*/) {\n\tvar mapFn = arguments[1]\n\t , thisArg = arguments[2]\n\t , Context\n\t , i\n\t , j\n\t , arr\n\t , length\n\t , code\n\t , iterator\n\t , result\n\t , getIterator\n\t , value;\n\n\tarrayLike = Object(validValue(arrayLike));\n\n\tif (isValue(mapFn)) callable(mapFn);\n\tif (!this || this === Array || !isFunction(this)) {\n\t\t// Result: Plain array\n\t\tif (!mapFn) {\n\t\t\tif (isArguments(arrayLike)) {\n\t\t\t\t// Source: Arguments\n\t\t\t\tlength = arrayLike.length;\n\t\t\t\tif (length !== 1) return Array.apply(null, arrayLike);\n\t\t\t\tarr = new Array(1);\n\t\t\t\tarr[0] = arrayLike[0];\n\t\t\t\treturn arr;\n\t\t\t}\n\t\t\tif (isArray(arrayLike)) {\n\t\t\t\t// Source: Array\n\t\t\t\tarr = new Array(length = arrayLike.length);\n\t\t\t\tfor (i = 0; i < length; ++i) arr[i] = arrayLike[i];\n\t\t\t\treturn arr;\n\t\t\t}\n\t\t}\n\t\tarr = [];\n\t} else {\n\t\t// Result: Non plain array\n\t\tContext = this;\n\t}\n\n\tif (!isArray(arrayLike)) {\n\t\tif ((getIterator = arrayLike[iteratorSymbol]) !== undefined) {\n\t\t\t// Source: Iterator\n\t\t\titerator = callable(getIterator).call(arrayLike);\n\t\t\tif (Context) arr = new Context();\n\t\t\tresult = iterator.next();\n\t\t\ti = 0;\n\t\t\twhile (!result.done) {\n\t\t\t\tvalue = mapFn ? call.call(mapFn, thisArg, result.value, i) : result.value;\n\t\t\t\tif (Context) {\n\t\t\t\t\tdesc.value = value;\n\t\t\t\t\tdefineProperty(arr, i, desc);\n\t\t\t\t} else {\n\t\t\t\t\tarr[i] = value;\n\t\t\t\t}\n\t\t\t\tresult = iterator.next();\n\t\t\t\t++i;\n\t\t\t}\n\t\t\tlength = i;\n\t\t} else if (isString(arrayLike)) {\n\t\t\t// Source: String\n\t\t\tlength = arrayLike.length;\n\t\t\tif (Context) arr = new Context();\n\t\t\tfor (i = 0, j = 0; i < length; ++i) {\n\t\t\t\tvalue = arrayLike[i];\n\t\t\t\tif (i + 1 < length) {\n\t\t\t\t\tcode = value.charCodeAt(0);\n\t\t\t\t\t// eslint-disable-next-line max-depth\n\t\t\t\t\tif (code >= 0xd800 && code <= 0xdbff) value += arrayLike[++i];\n\t\t\t\t}\n\t\t\t\tvalue = mapFn ? call.call(mapFn, thisArg, value, j) : value;\n\t\t\t\tif (Context) {\n\t\t\t\t\tdesc.value = value;\n\t\t\t\t\tdefineProperty(arr, j, desc);\n\t\t\t\t} else {\n\t\t\t\t\tarr[j] = value;\n\t\t\t\t}\n\t\t\t\t++j;\n\t\t\t}\n\t\t\tlength = j;\n\t\t}\n\t}\n\tif (length === undefined) {\n\t\t// Source: array or array-like\n\t\tlength = toPosInt(arrayLike.length);\n\t\tif (Context) arr = new Context(length);\n\t\tfor (i = 0; i < length; ++i) {\n\t\t\tvalue = mapFn ? call.call(mapFn, thisArg, arrayLike[i], i) : arrayLike[i];\n\t\t\tif (Context) {\n\t\t\t\tdesc.value = value;\n\t\t\t\tdefineProperty(arr, i, desc);\n\t\t\t} else {\n\t\t\t\tarr[i] = value;\n\t\t\t}\n\t\t}\n\t}\n\tif (Context) {\n\t\tdesc.value = null;\n\t\tarr.length = length;\n\t}\n\treturn arr;\n};\n","'use strict';\n\nmodule.exports = require('./is-implemented')() ? Symbol : require('./polyfill');\n","'use strict';\n\nvar validTypes = { object: true, symbol: true };\n\nmodule.exports = function () {\n\tvar symbol;\n\tif (typeof Symbol !== 'function') return false;\n\tsymbol = Symbol('test symbol');\n\ttry { String(symbol); } catch (e) { return false; }\n\n\t// Return 'true' also for polyfills\n\tif (!validTypes[typeof Symbol.iterator]) return false;\n\tif (!validTypes[typeof Symbol.toPrimitive]) return false;\n\tif (!validTypes[typeof Symbol.toStringTag]) return false;\n\n\treturn true;\n};\n","// ES2015 Symbol polyfill for environments that do not (or partially) support it\n\n'use strict';\n\nvar d = require('d')\n , validateSymbol = require('./validate-symbol')\n\n , create = Object.create, defineProperties = Object.defineProperties\n , defineProperty = Object.defineProperty, objPrototype = Object.prototype\n , NativeSymbol, SymbolPolyfill, HiddenSymbol, globalSymbols = create(null)\n , isNativeSafe;\n\nif (typeof Symbol === 'function') {\n\tNativeSymbol = Symbol;\n\ttry {\n\t\tString(NativeSymbol());\n\t\tisNativeSafe = true;\n\t} catch (ignore) {}\n}\n\nvar generateName = (function () {\n\tvar created = create(null);\n\treturn function (desc) {\n\t\tvar postfix = 0, name, ie11BugWorkaround;\n\t\twhile (created[desc + (postfix || '')]) ++postfix;\n\t\tdesc += (postfix || '');\n\t\tcreated[desc] = true;\n\t\tname = '@@' + desc;\n\t\tdefineProperty(objPrototype, name, d.gs(null, function (value) {\n\t\t\t// For IE11 issue see:\n\t\t\t// https://connect.microsoft.com/IE/feedbackdetail/view/1928508/\n\t\t\t// ie11-broken-getters-on-dom-objects\n\t\t\t// https://github.com/medikoo/es6-symbol/issues/12\n\t\t\tif (ie11BugWorkaround) return;\n\t\t\tie11BugWorkaround = true;\n\t\t\tdefineProperty(this, name, d(value));\n\t\t\tie11BugWorkaround = false;\n\t\t}));\n\t\treturn name;\n\t};\n}());\n\n// Internal constructor (not one exposed) for creating Symbol instances.\n// This one is used to ensure that `someSymbol instanceof Symbol` always return false\nHiddenSymbol = function Symbol(description) {\n\tif (this instanceof HiddenSymbol) throw new TypeError('Symbol is not a constructor');\n\treturn SymbolPolyfill(description);\n};\n\n// Exposed `Symbol` constructor\n// (returns instances of HiddenSymbol)\nmodule.exports = SymbolPolyfill = function Symbol(description) {\n\tvar symbol;\n\tif (this instanceof Symbol) throw new TypeError('Symbol is not a constructor');\n\tif (isNativeSafe) return NativeSymbol(description);\n\tsymbol = create(HiddenSymbol.prototype);\n\tdescription = (description === undefined ? '' : String(description));\n\treturn defineProperties(symbol, {\n\t\t__description__: d('', description),\n\t\t__name__: d('', generateName(description))\n\t});\n};\ndefineProperties(SymbolPolyfill, {\n\tfor: d(function (key) {\n\t\tif (globalSymbols[key]) return globalSymbols[key];\n\t\treturn (globalSymbols[key] = SymbolPolyfill(String(key)));\n\t}),\n\tkeyFor: d(function (s) {\n\t\tvar key;\n\t\tvalidateSymbol(s);\n\t\tfor (key in globalSymbols) if (globalSymbols[key] === s) return key;\n\t}),\n\n\t// To ensure proper interoperability with other native functions (e.g. Array.from)\n\t// fallback to eventual native implementation of given symbol\n\thasInstance: d('', (NativeSymbol && NativeSymbol.hasInstance) || SymbolPolyfill('hasInstance')),\n\tisConcatSpreadable: d('', (NativeSymbol && NativeSymbol.isConcatSpreadable) ||\n\t\tSymbolPolyfill('isConcatSpreadable')),\n\titerator: d('', (NativeSymbol && NativeSymbol.iterator) || SymbolPolyfill('iterator')),\n\tmatch: d('', (NativeSymbol && NativeSymbol.match) || SymbolPolyfill('match')),\n\treplace: d('', (NativeSymbol && NativeSymbol.replace) || SymbolPolyfill('replace')),\n\tsearch: d('', (NativeSymbol && NativeSymbol.search) || SymbolPolyfill('search')),\n\tspecies: d('', (NativeSymbol && NativeSymbol.species) || SymbolPolyfill('species')),\n\tsplit: d('', (NativeSymbol && NativeSymbol.split) || SymbolPolyfill('split')),\n\ttoPrimitive: d('', (NativeSymbol && NativeSymbol.toPrimitive) || SymbolPolyfill('toPrimitive')),\n\ttoStringTag: d('', (NativeSymbol && NativeSymbol.toStringTag) || SymbolPolyfill('toStringTag')),\n\tunscopables: d('', (NativeSymbol && NativeSymbol.unscopables) || SymbolPolyfill('unscopables'))\n});\n\n// Internal tweaks for real symbol producer\ndefineProperties(HiddenSymbol.prototype, {\n\tconstructor: d(SymbolPolyfill),\n\ttoString: d('', function () { return this.__name__; })\n});\n\n// Proper implementation of methods exposed on Symbol.prototype\n// They won't be accessible on produced symbol instances as they derive from HiddenSymbol.prototype\ndefineProperties(SymbolPolyfill.prototype, {\n\ttoString: d(function () { return 'Symbol (' + validateSymbol(this).__description__ + ')'; }),\n\tvalueOf: d(function () { return validateSymbol(this); })\n});\ndefineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toPrimitive, d('', function () {\n\tvar symbol = validateSymbol(this);\n\tif (typeof symbol === 'symbol') return symbol;\n\treturn symbol.toString();\n}));\ndefineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toStringTag, d('c', 'Symbol'));\n\n// Proper implementaton of toPrimitive and toStringTag for returned symbol instances\ndefineProperty(HiddenSymbol.prototype, SymbolPolyfill.toStringTag,\n\td('c', SymbolPolyfill.prototype[SymbolPolyfill.toStringTag]));\n\n// Note: It's important to define `toPrimitive` as last one, as some implementations\n// implement `toPrimitive` natively without implementing `toStringTag` (or other specified symbols)\n// And that may invoke error in definition flow:\n// See: https://github.com/medikoo/es6-symbol/issues/13#issuecomment-164146149\ndefineProperty(HiddenSymbol.prototype, SymbolPolyfill.toPrimitive,\n\td('c', SymbolPolyfill.prototype[SymbolPolyfill.toPrimitive]));\n","'use strict';\n\nvar isSymbol = require('./is-symbol');\n\nmodule.exports = function (value) {\n\tif (!isSymbol(value)) throw new TypeError(value + \" is not a symbol\");\n\treturn value;\n};\n","'use strict';\n\nmodule.exports = function (x) {\n\tif (!x) return false;\n\tif (typeof x === 'symbol') return true;\n\tif (!x.constructor) return false;\n\tif (x.constructor.name !== 'Symbol') return false;\n\treturn (x[x.constructor.toStringTag] === 'Symbol');\n};\n","\"use strict\";\n\nvar objToString = Object.prototype.toString\n , id = objToString.call(\n\t(function () {\n\t\treturn arguments;\n\t})()\n);\n\nmodule.exports = function (value) {\n\treturn objToString.call(value) === id;\n};\n","\"use strict\";\n\nvar objToString = Object.prototype.toString, id = objToString.call(require(\"./noop\"));\n\nmodule.exports = function (value) {\n\treturn typeof value === \"function\" && objToString.call(value) === id;\n};\n","\"use strict\";\n\nvar objToString = Object.prototype.toString, id = objToString.call(\"\");\n\nmodule.exports = function (value) {\n\treturn (\n\t\ttypeof value === \"string\" ||\n\t\t(value &&\n\t\t\ttypeof value === \"object\" &&\n\t\t\t(value instanceof String || objToString.call(value) === id)) ||\n\t\tfalse\n\t);\n};\n","\"use strict\";\n\nvar callable = require(\"es5-ext/object/valid-callable\");\n\nmodule.exports = function (userNormalizer) {\n\tvar normalizer;\n\tif (typeof userNormalizer === \"function\") return { set: userNormalizer, get: userNormalizer };\n\tnormalizer = { get: callable(userNormalizer.get) };\n\tif (userNormalizer.set !== undefined) {\n\t\tnormalizer.set = callable(userNormalizer.set);\n\t\tif (userNormalizer.delete) normalizer.delete = callable(userNormalizer.delete);\n\t\tif (userNormalizer.clear) normalizer.clear = callable(userNormalizer.clear);\n\t\treturn normalizer;\n\t}\n\tnormalizer.set = normalizer.get;\n\treturn normalizer;\n};\n","\"use strict\";\n\nmodule.exports = function (args) {\n\tvar id, i, length = args.length;\n\tif (!length) return \"\\u0002\";\n\tid = String(args[i = 0]);\n\twhile (--length) id += \"\\u0001\" + args[++i];\n\treturn id;\n};\n","\"use strict\";\n\nmodule.exports = function (length) {\n\tif (!length) {\n\t\treturn function () {\n\t\t\treturn \"\";\n\t\t};\n\t}\n\treturn function (args) {\n\t\tvar id = String(args[0]), i = 0, currentLength = length;\n\t\twhile (--currentLength) {\n\t\t\tid += \"\\u0001\" + args[++i];\n\t\t}\n\t\treturn id;\n\t};\n};\n","/* eslint max-statements: 0 */\n\n\"use strict\";\n\nvar indexOf = require(\"es5-ext/array/#/e-index-of\");\n\nvar create = Object.create;\n\nmodule.exports = function () {\n\tvar lastId = 0, map = [], cache = create(null);\n\treturn {\n\t\tget: function (args) {\n\t\t\tvar index = 0, set = map, i, length = args.length;\n\t\t\tif (length === 0) return set[length] || null;\n\t\t\tif ((set = set[length])) {\n\t\t\t\twhile (index < length - 1) {\n\t\t\t\t\ti = indexOf.call(set[0], args[index]);\n\t\t\t\t\tif (i === -1) return null;\n\t\t\t\t\tset = set[1][i];\n\t\t\t\t\t++index;\n\t\t\t\t}\n\t\t\t\ti = indexOf.call(set[0], args[index]);\n\t\t\t\tif (i === -1) return null;\n\t\t\t\treturn set[1][i] || null;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function (args) {\n\t\t\tvar index = 0, set = map, i, length = args.length;\n\t\t\tif (length === 0) {\n\t\t\t\tset[length] = ++lastId;\n\t\t\t} else {\n\t\t\t\tif (!set[length]) {\n\t\t\t\t\tset[length] = [[], []];\n\t\t\t\t}\n\t\t\t\tset = set[length];\n\t\t\t\twhile (index < length - 1) {\n\t\t\t\t\ti = indexOf.call(set[0], args[index]);\n\t\t\t\t\tif (i === -1) {\n\t\t\t\t\t\ti = set[0].push(args[index]) - 1;\n\t\t\t\t\t\tset[1].push([[], []]);\n\t\t\t\t\t}\n\t\t\t\t\tset = set[1][i];\n\t\t\t\t\t++index;\n\t\t\t\t}\n\t\t\t\ti = indexOf.call(set[0], args[index]);\n\t\t\t\tif (i === -1) {\n\t\t\t\t\ti = set[0].push(args[index]) - 1;\n\t\t\t\t}\n\t\t\t\tset[1][i] = ++lastId;\n\t\t\t}\n\t\t\tcache[lastId] = args;\n\t\t\treturn lastId;\n\t\t},\n\t\tdelete: function (id) {\n\t\t\tvar index = 0, set = map, i, args = cache[id], length = args.length, path = [];\n\t\t\tif (length === 0) {\n\t\t\t\tdelete set[length];\n\t\t\t} else if ((set = set[length])) {\n\t\t\t\twhile (index < length - 1) {\n\t\t\t\t\ti = indexOf.call(set[0], args[index]);\n\t\t\t\t\tif (i === -1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tpath.push(set, i);\n\t\t\t\t\tset = set[1][i];\n\t\t\t\t\t++index;\n\t\t\t\t}\n\t\t\t\ti = indexOf.call(set[0], args[index]);\n\t\t\t\tif (i === -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tid = set[1][i];\n\t\t\t\tset[0].splice(i, 1);\n\t\t\t\tset[1].splice(i, 1);\n\t\t\t\twhile (!set[0].length && path.length) {\n\t\t\t\t\ti = path.pop();\n\t\t\t\t\tset = path.pop();\n\t\t\t\t\tset[0].splice(i, 1);\n\t\t\t\t\tset[1].splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tdelete cache[id];\n\t\t},\n\t\tclear: function () {\n\t\t\tmap = [];\n\t\t\tcache = create(null);\n\t\t}\n\t};\n};\n","\"use strict\";\n\nvar numberIsNaN = require(\"../../number/is-nan\")\n , toPosInt = require(\"../../number/to-pos-integer\")\n , value = require(\"../../object/valid-value\")\n , indexOf = Array.prototype.indexOf\n , objHasOwnProperty = Object.prototype.hasOwnProperty\n , abs = Math.abs\n , floor = Math.floor;\n\nmodule.exports = function (searchElement /*, fromIndex*/) {\n\tvar i, length, fromIndex, val;\n\tif (!numberIsNaN(searchElement)) return indexOf.apply(this, arguments);\n\n\tlength = toPosInt(value(this).length);\n\tfromIndex = arguments[1];\n\tif (isNaN(fromIndex)) fromIndex = 0;\n\telse if (fromIndex >= 0) fromIndex = floor(fromIndex);\n\telse fromIndex = toPosInt(this.length) - floor(abs(fromIndex));\n\n\tfor (i = fromIndex; i < length; ++i) {\n\t\tif (objHasOwnProperty.call(this, i)) {\n\t\t\tval = this[i];\n\t\t\tif (numberIsNaN(val)) return i; // Jslint: ignore\n\t\t}\n\t}\n\treturn -1;\n};\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")()\n\t? Number.isNaN\n\t: require(\"./shim\");\n","\"use strict\";\n\nmodule.exports = function () {\n\tvar numberIsNaN = Number.isNaN;\n\tif (typeof numberIsNaN !== \"function\") return false;\n\treturn !numberIsNaN({}) && numberIsNaN(NaN) && !numberIsNaN(34);\n};\n","\"use strict\";\n\nmodule.exports = function (value) {\n\t// eslint-disable-next-line no-self-compare\n\treturn value !== value;\n};\n","\"use strict\";\n\nvar indexOf = require(\"es5-ext/array/#/e-index-of\");\n\nmodule.exports = function () {\n\tvar lastId = 0, argsMap = [], cache = [];\n\treturn {\n\t\tget: function (args) {\n\t\t\tvar index = indexOf.call(argsMap, args[0]);\n\t\t\treturn index === -1 ? null : cache[index];\n\t\t},\n\t\tset: function (args) {\n\t\t\targsMap.push(args[0]);\n\t\t\tcache.push(++lastId);\n\t\t\treturn lastId;\n\t\t},\n\t\tdelete: function (id) {\n\t\t\tvar index = indexOf.call(cache, id);\n\t\t\tif (index !== -1) {\n\t\t\t\targsMap.splice(index, 1);\n\t\t\t\tcache.splice(index, 1);\n\t\t\t}\n\t\t},\n\t\tclear: function () {\n\t\t\targsMap = [];\n\t\t\tcache = [];\n\t\t}\n\t};\n};\n","\"use strict\";\n\nvar indexOf = require(\"es5-ext/array/#/e-index-of\")\n , create = Object.create;\n\nmodule.exports = function (length) {\n\tvar lastId = 0, map = [[], []], cache = create(null);\n\treturn {\n\t\tget: function (args) {\n\t\t\tvar index = 0, set = map, i;\n\t\t\twhile (index < length - 1) {\n\t\t\t\ti = indexOf.call(set[0], args[index]);\n\t\t\t\tif (i === -1) return null;\n\t\t\t\tset = set[1][i];\n\t\t\t\t++index;\n\t\t\t}\n\t\t\ti = indexOf.call(set[0], args[index]);\n\t\t\tif (i === -1) return null;\n\t\t\treturn set[1][i] || null;\n\t\t},\n\t\tset: function (args) {\n\t\t\tvar index = 0, set = map, i;\n\t\t\twhile (index < length - 1) {\n\t\t\t\ti = indexOf.call(set[0], args[index]);\n\t\t\t\tif (i === -1) {\n\t\t\t\t\ti = set[0].push(args[index]) - 1;\n\t\t\t\t\tset[1].push([[], []]);\n\t\t\t\t}\n\t\t\t\tset = set[1][i];\n\t\t\t\t++index;\n\t\t\t}\n\t\t\ti = indexOf.call(set[0], args[index]);\n\t\t\tif (i === -1) {\n\t\t\t\ti = set[0].push(args[index]) - 1;\n\t\t\t}\n\t\t\tset[1][i] = ++lastId;\n\t\t\tcache[lastId] = args;\n\t\t\treturn lastId;\n\t\t},\n\t\tdelete: function (id) {\n\t\t\tvar index = 0, set = map, i, path = [], args = cache[id];\n\t\t\twhile (index < length - 1) {\n\t\t\t\ti = indexOf.call(set[0], args[index]);\n\t\t\t\tif (i === -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tpath.push(set, i);\n\t\t\t\tset = set[1][i];\n\t\t\t\t++index;\n\t\t\t}\n\t\t\ti = indexOf.call(set[0], args[index]);\n\t\t\tif (i === -1) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tid = set[1][i];\n\t\t\tset[0].splice(i, 1);\n\t\t\tset[1].splice(i, 1);\n\t\t\twhile (!set[0].length && path.length) {\n\t\t\t\ti = path.pop();\n\t\t\t\tset = path.pop();\n\t\t\t\tset[0].splice(i, 1);\n\t\t\t\tset[1].splice(i, 1);\n\t\t\t}\n\t\t\tdelete cache[id];\n\t\t},\n\t\tclear: function () {\n\t\t\tmap = [[], []];\n\t\t\tcache = create(null);\n\t\t}\n\t};\n};\n","/* eslint consistent-this: 0, no-shadow:0, no-eq-null: 0, eqeqeq: 0, no-unused-vars: 0 */\n\n// Support for asynchronous functions\n\n\"use strict\";\n\nvar aFrom = require(\"es5-ext/array/from\")\n , objectMap = require(\"es5-ext/object/map\")\n , mixin = require(\"es5-ext/object/mixin\")\n , defineLength = require(\"es5-ext/function/_define-length\")\n , nextTick = require(\"next-tick\");\n\nvar slice = Array.prototype.slice, apply = Function.prototype.apply, create = Object.create;\n\nrequire(\"../lib/registered-extensions\").async = function (tbi, conf) {\n\tvar waiting = create(null)\n\t , cache = create(null)\n\t , base = conf.memoized\n\t , original = conf.original\n\t , currentCallback\n\t , currentContext\n\t , currentArgs;\n\n\t// Initial\n\tconf.memoized = defineLength(function (arg) {\n\t\tvar args = arguments, last = args[args.length - 1];\n\t\tif (typeof last === \"function\") {\n\t\t\tcurrentCallback = last;\n\t\t\targs = slice.call(args, 0, -1);\n\t\t}\n\t\treturn base.apply(currentContext = this, currentArgs = args);\n\t}, base);\n\ttry { mixin(conf.memoized, base); }\n\tcatch (ignore) {}\n\n\t// From cache (sync)\n\tconf.on(\"get\", function (id) {\n\t\tvar cb, context, args;\n\t\tif (!currentCallback) return;\n\n\t\t// Unresolved\n\t\tif (waiting[id]) {\n\t\t\tif (typeof waiting[id] === \"function\") waiting[id] = [waiting[id], currentCallback];\n\t\t\telse waiting[id].push(currentCallback);\n\t\t\tcurrentCallback = null;\n\t\t\treturn;\n\t\t}\n\n\t\t// Resolved, assure next tick invocation\n\t\tcb = currentCallback;\n\t\tcontext = currentContext;\n\t\targs = currentArgs;\n\t\tcurrentCallback = currentContext = currentArgs = null;\n\t\tnextTick(function () {\n\t\t\tvar data;\n\t\t\tif (hasOwnProperty.call(cache, id)) {\n\t\t\t\tdata = cache[id];\n\t\t\t\tconf.emit(\"getasync\", id, args, context);\n\t\t\t\tapply.call(cb, data.context, data.args);\n\t\t\t} else {\n\t\t\t\t// Purged in a meantime, we shouldn't rely on cached value, recall\n\t\t\t\tcurrentCallback = cb;\n\t\t\t\tcurrentContext = context;\n\t\t\t\tcurrentArgs = args;\n\t\t\t\tbase.apply(context, args);\n\t\t\t}\n\t\t});\n\t});\n\n\t// Not from cache\n\tconf.original = function () {\n\t\tvar args, cb, origCb, result;\n\t\tif (!currentCallback) return apply.call(original, this, arguments);\n\t\targs = aFrom(arguments);\n\t\tcb = function self(err) {\n\t\t\tvar cb, args, id = self.id;\n\t\t\tif (id == null) {\n\t\t\t\t// Shouldn't happen, means async callback was called sync way\n\t\t\t\tnextTick(apply.bind(self, this, arguments));\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tdelete self.id;\n\t\t\tcb = waiting[id];\n\t\t\tdelete waiting[id];\n\t\t\tif (!cb) {\n\t\t\t\t// Already processed,\n\t\t\t\t// outcome of race condition: asyncFn(1, cb), asyncFn.clear(), asyncFn(1, cb)\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\targs = aFrom(arguments);\n\t\t\tif (conf.has(id)) {\n\t\t\t\tif (err) {\n\t\t\t\t\tconf.delete(id);\n\t\t\t\t} else {\n\t\t\t\t\tcache[id] = { context: this, args: args };\n\t\t\t\t\tconf.emit(\"setasync\", id, typeof cb === \"function\" ? 1 : cb.length);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeof cb === \"function\") {\n\t\t\t\tresult = apply.call(cb, this, args);\n\t\t\t} else {\n\t\t\t\tcb.forEach(function (cb) { result = apply.call(cb, this, args); }, this);\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t\torigCb = currentCallback;\n\t\tcurrentCallback = currentContext = currentArgs = null;\n\t\targs.push(cb);\n\t\tresult = apply.call(original, this, args);\n\t\tcb.cb = origCb;\n\t\tcurrentCallback = cb;\n\t\treturn result;\n\t};\n\n\t// After not from cache call\n\tconf.on(\"set\", function (id) {\n\t\tif (!currentCallback) {\n\t\t\tconf.delete(id);\n\t\t\treturn;\n\t\t}\n\t\tif (waiting[id]) {\n\t\t\t// Race condition: asyncFn(1, cb), asyncFn.clear(), asyncFn(1, cb)\n\t\t\tif (typeof waiting[id] === \"function\") waiting[id] = [waiting[id], currentCallback.cb];\n\t\t\telse waiting[id].push(currentCallback.cb);\n\t\t} else {\n\t\t\twaiting[id] = currentCallback.cb;\n\t\t}\n\t\tdelete currentCallback.cb;\n\t\tcurrentCallback.id = id;\n\t\tcurrentCallback = null;\n\t});\n\n\t// On delete\n\tconf.on(\"delete\", function (id) {\n\t\tvar result;\n\t\t// If false, we don't have value yet, so we assume that intention is not\n\t\t// to memoize this call. After value is obtained we don't cache it but\n\t\t// gracefully pass to callback\n\t\tif (hasOwnProperty.call(waiting, id)) return;\n\t\tif (!cache[id]) return;\n\t\tresult = cache[id];\n\t\tdelete cache[id];\n\t\tconf.emit(\"deleteasync\", id, slice.call(result.args, 1));\n\t});\n\n\t// On clear\n\tconf.on(\"clear\", function () {\n\t\tvar oldCache = cache;\n\t\tcache = create(null);\n\t\tconf.emit(\n\t\t\t\"clearasync\", objectMap(oldCache, function (data) { return slice.call(data.args, 1); })\n\t\t);\n\t});\n};\n","\"use strict\";\n\nvar callable = require(\"./valid-callable\")\n , forEach = require(\"./for-each\")\n , call = Function.prototype.call;\n\nmodule.exports = function (obj, cb /*, thisArg*/) {\n\tvar result = {}, thisArg = arguments[2];\n\tcallable(cb);\n\tforEach(obj, function (value, key, targetObj, index) {\n\t\tresult[key] = call.call(cb, thisArg, value, key, targetObj, index);\n\t});\n\treturn result;\n};\n","'use strict';\n\nvar callable, byObserver;\n\ncallable = function (fn) {\n\tif (typeof fn !== 'function') throw new TypeError(fn + \" is not a function\");\n\treturn fn;\n};\n\nbyObserver = function (Observer) {\n\tvar node = document.createTextNode(''), queue, currentQueue, i = 0;\n\tnew Observer(function () {\n\t\tvar callback;\n\t\tif (!queue) {\n\t\t\tif (!currentQueue) return;\n\t\t\tqueue = currentQueue;\n\t\t} else if (currentQueue) {\n\t\t\tqueue = currentQueue.concat(queue);\n\t\t}\n\t\tcurrentQueue = queue;\n\t\tqueue = null;\n\t\tif (typeof currentQueue === 'function') {\n\t\t\tcallback = currentQueue;\n\t\t\tcurrentQueue = null;\n\t\t\tcallback();\n\t\t\treturn;\n\t\t}\n\t\tnode.data = (i = ++i % 2); // Invoke other batch, to handle leftover callbacks in case of crash\n\t\twhile (currentQueue) {\n\t\t\tcallback = currentQueue.shift();\n\t\t\tif (!currentQueue.length) currentQueue = null;\n\t\t\tcallback();\n\t\t}\n\t}).observe(node, { characterData: true });\n\treturn function (fn) {\n\t\tcallable(fn);\n\t\tif (queue) {\n\t\t\tif (typeof queue === 'function') queue = [queue, fn];\n\t\t\telse queue.push(fn);\n\t\t\treturn;\n\t\t}\n\t\tqueue = fn;\n\t\tnode.data = (i = ++i % 2);\n\t};\n};\n\nmodule.exports = (function () {\n\t// Node.js\n\tif ((typeof process === 'object') && process && (typeof process.nextTick === 'function')) {\n\t\treturn process.nextTick;\n\t}\n\n\t// MutationObserver\n\tif ((typeof document === 'object') && document) {\n\t\tif (typeof MutationObserver === 'function') return byObserver(MutationObserver);\n\t\tif (typeof WebKitMutationObserver === 'function') return byObserver(WebKitMutationObserver);\n\t}\n\n\t// W3C Draft\n\t// http://dvcs.w3.org/hg/webperf/raw-file/tip/specs/setImmediate/Overview.html\n\tif (typeof setImmediate === 'function') {\n\t\treturn function (cb) { setImmediate(callable(cb)); };\n\t}\n\n\t// Wide available standard\n\tif ((typeof setTimeout === 'function') || (typeof setTimeout === 'object')) {\n\t\treturn function (cb) { setTimeout(callable(cb), 0); };\n\t}\n\n\treturn null;\n}());\n","/* eslint max-statements: 0 */\n\n// Support for functions returning promise\n\n\"use strict\";\n\nvar objectMap = require(\"es5-ext/object/map\")\n , primitiveSet = require(\"es5-ext/object/primitive-set\")\n , ensureString = require(\"es5-ext/object/validate-stringifiable-value\")\n , toShortString = require(\"es5-ext/to-short-string-representation\")\n , isPromise = require(\"is-promise\")\n , nextTick = require(\"next-tick\");\n\nvar create = Object.create\n , supportedModes = primitiveSet(\"then\", \"then:finally\", \"done\", \"done:finally\");\n\nrequire(\"../lib/registered-extensions\").promise = function (mode, conf) {\n\tvar waiting = create(null), cache = create(null), promises = create(null);\n\n\tif (mode === true) {\n\t\tmode = null;\n\t} else {\n\t\tmode = ensureString(mode);\n\t\tif (!supportedModes[mode]) {\n\t\t\tthrow new TypeError(\"'\" + toShortString(mode) + \"' is not valid promise mode\");\n\t\t}\n\t}\n\n\t// After not from cache call\n\tconf.on(\"set\", function (id, ignore, promise) {\n\t\tvar isFailed = false;\n\n\t\tif (!isPromise(promise)) {\n\t\t\t// Non promise result\n\t\t\tcache[id] = promise;\n\t\t\tconf.emit(\"setasync\", id, 1);\n\t\t\treturn;\n\t\t}\n\t\twaiting[id] = 1;\n\t\tpromises[id] = promise;\n\t\tvar onSuccess = function (result) {\n\t\t\tvar count = waiting[id];\n\t\t\tif (isFailed) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Memoizee error: Detected unordered then|done & finally resolution, which \" +\n\t\t\t\t\t\t\"in turn makes proper detection of success/failure impossible (when in \" +\n\t\t\t\t\t\t\"'done:finally' mode)\\n\" +\n\t\t\t\t\t\t\"Consider to rely on 'then' or 'done' mode instead.\"\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (!count) return; // Deleted from cache before resolved\n\t\t\tdelete waiting[id];\n\t\t\tcache[id] = result;\n\t\t\tconf.emit(\"setasync\", id, count);\n\t\t};\n\t\tvar onFailure = function () {\n\t\t\tisFailed = true;\n\t\t\tif (!waiting[id]) return; // Deleted from cache (or succeed in case of finally)\n\t\t\tdelete waiting[id];\n\t\t\tdelete promises[id];\n\t\t\tconf.delete(id);\n\t\t};\n\n\t\tvar resolvedMode = mode;\n\t\tif (!resolvedMode) resolvedMode = \"then\";\n\n\t\tif (resolvedMode === \"then\") {\n\t\t\tvar nextTickFailure = function () { nextTick(onFailure); };\n\t\t\t// Eventual finally needs to be attached to non rejected promise\n\t\t\t// (so we not force propagation of unhandled rejection)\n\t\t\tpromise = promise.then(function (result) {\n\t\t\t\tnextTick(onSuccess.bind(this, result));\n\t\t\t}, nextTickFailure);\n\t\t\t// If `finally` is a function we attach to it to remove cancelled promises.\n\t\t\tif (typeof promise.finally === \"function\") {\n\t\t\t\tpromise.finally(nextTickFailure);\n\t\t\t}\n\t\t} else if (resolvedMode === \"done\") {\n\t\t\t// Not recommended, as it may mute any eventual \"Unhandled error\" events\n\t\t\tif (typeof promise.done !== \"function\") {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Memoizee error: Retrieved promise does not implement 'done' \" +\n\t\t\t\t\t\t\"in 'done' mode\"\n\t\t\t\t);\n\t\t\t}\n\t\t\tpromise.done(onSuccess, onFailure);\n\t\t} else if (resolvedMode === \"done:finally\") {\n\t\t\t// The only mode with no side effects assuming library does not throw unconditionally\n\t\t\t// for rejected promises.\n\t\t\tif (typeof promise.done !== \"function\") {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Memoizee error: Retrieved promise does not implement 'done' \" +\n\t\t\t\t\t\t\"in 'done:finally' mode\"\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (typeof promise.finally !== \"function\") {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Memoizee error: Retrieved promise does not implement 'finally' \" +\n\t\t\t\t\t\t\"in 'done:finally' mode\"\n\t\t\t\t);\n\t\t\t}\n\t\t\tpromise.done(onSuccess);\n\t\t\tpromise.finally(onFailure);\n\t\t}\n\t});\n\n\t// From cache (sync)\n\tconf.on(\"get\", function (id, args, context) {\n\t\tvar promise;\n\t\tif (waiting[id]) {\n\t\t\t++waiting[id]; // Still waiting\n\t\t\treturn;\n\t\t}\n\t\tpromise = promises[id];\n\t\tvar emit = function () { conf.emit(\"getasync\", id, args, context); };\n\t\tif (isPromise(promise)) {\n\t\t\tif (typeof promise.done === \"function\") promise.done(emit);\n\t\t\telse {\n\t\t\t\tpromise.then(function () { nextTick(emit); });\n\t\t\t}\n\t\t} else {\n\t\t\temit();\n\t\t}\n\t});\n\n\t// On delete\n\tconf.on(\"delete\", function (id) {\n\t\tdelete promises[id];\n\t\tif (waiting[id]) {\n\t\t\tdelete waiting[id];\n\t\t\treturn; // Not yet resolved\n\t\t}\n\t\tif (!hasOwnProperty.call(cache, id)) return;\n\t\tvar result = cache[id];\n\t\tdelete cache[id];\n\t\tconf.emit(\"deleteasync\", id, [result]);\n\t});\n\n\t// On clear\n\tconf.on(\"clear\", function () {\n\t\tvar oldCache = cache;\n\t\tcache = create(null);\n\t\twaiting = create(null);\n\t\tpromises = create(null);\n\t\tconf.emit(\"clearasync\", objectMap(oldCache, function (data) { return [data]; }));\n\t});\n};\n","\"use strict\";\n\nvar forEach = Array.prototype.forEach, create = Object.create;\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function (arg /*, …args*/) {\n\tvar set = create(null);\n\tforEach.call(arguments, function (name) {\n\t\tset[name] = true;\n\t});\n\treturn set;\n};\n","\"use strict\";\n\nvar ensureValue = require(\"./valid-value\")\n , stringifiable = require(\"./validate-stringifiable\");\n\nmodule.exports = function (value) {\n\treturn stringifiable(ensureValue(value));\n};\n","\"use strict\";\n\nvar isCallable = require(\"./is-callable\");\n\nmodule.exports = function (stringifiable) {\n\ttry {\n\t\tif (stringifiable && isCallable(stringifiable.toString)) return stringifiable.toString();\n\t\treturn String(stringifiable);\n\t} catch (e) {\n\t\tthrow new TypeError(\"Passed argument cannot be stringifed\");\n\t}\n};\n","\"use strict\";\n\nvar safeToString = require(\"./safe-to-string\");\n\nvar reNewLine = /[\\n\\r\\u2028\\u2029]/g;\n\nmodule.exports = function (value) {\n\tvar string = safeToString(value);\n\t// Trim if too long\n\tif (string.length > 100) string = string.slice(0, 99) + \"…\";\n\t// Replace eventual new lines\n\tstring = string.replace(reNewLine, function (char) {\n\t\treturn JSON.stringify(char).slice(1, -1);\n\t});\n\treturn string;\n};\n","\"use strict\";\n\nvar isCallable = require(\"./object/is-callable\");\n\nmodule.exports = function (value) {\n\ttry {\n\t\tif (value && isCallable(value.toString)) return value.toString();\n\t\treturn String(value);\n\t} catch (e) {\n\t\treturn \"\";\n\t}\n};\n","module.exports = isPromise;\n\nfunction isPromise(obj) {\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n}\n","// Call dispose callback on each cache purge\n\n\"use strict\";\n\nvar callable = require(\"es5-ext/object/valid-callable\")\n , forEach = require(\"es5-ext/object/for-each\")\n , extensions = require(\"../lib/registered-extensions\")\n\n , apply = Function.prototype.apply;\n\nextensions.dispose = function (dispose, conf, options) {\n\tvar del;\n\tcallable(dispose);\n\tif ((options.async && extensions.async) || (options.promise && extensions.promise)) {\n\t\tconf.on(\"deleteasync\", del = function (id, resultArray) {\n\t\t\tapply.call(dispose, null, resultArray);\n\t\t});\n\t\tconf.on(\"clearasync\", function (cache) {\n\t\t\tforEach(cache, function (result, id) {\n del(id, result);\n});\n\t\t});\n\t\treturn;\n\t}\n\tconf.on(\"delete\", del = function (id, result) {\n dispose(result);\n});\n\tconf.on(\"clear\", function (cache) {\n\t\tforEach(cache, function (result, id) {\n del(id, result);\n});\n\t});\n};\n","/* eslint consistent-this: 0 */\n\n// Timeout cached values\n\n\"use strict\";\n\nvar aFrom = require(\"es5-ext/array/from\")\n , forEach = require(\"es5-ext/object/for-each\")\n , nextTick = require(\"next-tick\")\n , isPromise = require(\"is-promise\")\n , timeout = require(\"timers-ext/valid-timeout\")\n , extensions = require(\"../lib/registered-extensions\");\n\nvar noop = Function.prototype, max = Math.max, min = Math.min, create = Object.create;\n\nextensions.maxAge = function (maxAge, conf, options) {\n\tvar timeouts, postfix, preFetchAge, preFetchTimeouts;\n\n\tmaxAge = timeout(maxAge);\n\tif (!maxAge) return;\n\n\ttimeouts = create(null);\n\tpostfix =\n\t\t(options.async && extensions.async) || (options.promise && extensions.promise)\n\t\t\t? \"async\"\n\t\t\t: \"\";\n\tconf.on(\"set\" + postfix, function (id) {\n\t\ttimeouts[id] = setTimeout(function () { conf.delete(id); }, maxAge);\n\t\tif (typeof timeouts[id].unref === \"function\") timeouts[id].unref();\n\t\tif (!preFetchTimeouts) return;\n\t\tif (preFetchTimeouts[id]) {\n\t\t\tif (preFetchTimeouts[id] !== \"nextTick\") clearTimeout(preFetchTimeouts[id]);\n\t\t}\n\t\tpreFetchTimeouts[id] = setTimeout(function () {\n\t\t\tdelete preFetchTimeouts[id];\n\t\t}, preFetchAge);\n\t\tif (typeof preFetchTimeouts[id].unref === \"function\") preFetchTimeouts[id].unref();\n\t});\n\tconf.on(\"delete\" + postfix, function (id) {\n\t\tclearTimeout(timeouts[id]);\n\t\tdelete timeouts[id];\n\t\tif (!preFetchTimeouts) return;\n\t\tif (preFetchTimeouts[id] !== \"nextTick\") clearTimeout(preFetchTimeouts[id]);\n\t\tdelete preFetchTimeouts[id];\n\t});\n\n\tif (options.preFetch) {\n\t\tif (options.preFetch === true || isNaN(options.preFetch)) {\n\t\t\tpreFetchAge = 0.333;\n\t\t} else {\n\t\t\tpreFetchAge = max(min(Number(options.preFetch), 1), 0);\n\t\t}\n\t\tif (preFetchAge) {\n\t\t\tpreFetchTimeouts = {};\n\t\t\tpreFetchAge = (1 - preFetchAge) * maxAge;\n\t\t\tconf.on(\"get\" + postfix, function (id, args, context) {\n\t\t\t\tif (!preFetchTimeouts[id]) {\n\t\t\t\t\tpreFetchTimeouts[id] = \"nextTick\";\n\t\t\t\t\tnextTick(function () {\n\t\t\t\t\t\tvar result;\n\t\t\t\t\t\tif (preFetchTimeouts[id] !== \"nextTick\") return;\n\t\t\t\t\t\tdelete preFetchTimeouts[id];\n\t\t\t\t\t\tconf.delete(id);\n\t\t\t\t\t\tif (options.async) {\n\t\t\t\t\t\t\targs = aFrom(args);\n\t\t\t\t\t\t\targs.push(noop);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult = conf.memoized.apply(context, args);\n\t\t\t\t\t\tif (options.promise) {\n\t\t\t\t\t\t\t// Supress eventual error warnings\n\t\t\t\t\t\t\tif (isPromise(result)) {\n\t\t\t\t\t\t\t\tif (typeof result.done === \"function\") result.done(noop, noop);\n\t\t\t\t\t\t\t\telse result.then(noop, noop);\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});\n\t\t}\n\t}\n\n\tconf.on(\"clear\" + postfix, function () {\n\t\tforEach(timeouts, function (id) { clearTimeout(id); });\n\t\ttimeouts = {};\n\t\tif (preFetchTimeouts) {\n\t\t\tforEach(preFetchTimeouts, function (id) { if (id !== \"nextTick\") clearTimeout(id); });\n\t\t\tpreFetchTimeouts = {};\n\t\t}\n\t});\n};\n","\"use strict\";\n\nvar toPosInt = require(\"es5-ext/number/to-pos-integer\")\n , maxTimeout = require(\"./max-timeout\");\n\nmodule.exports = function (value) {\n\tvalue = toPosInt(value);\n\tif (value > maxTimeout) throw new TypeError(value + \" exceeds maximum possible timeout\");\n\treturn value;\n};\n","\"use strict\";\n\nmodule.exports = 2147483647;\n","// Limit cache size, LRU (least recently used) algorithm.\n\n\"use strict\";\n\nvar toPosInteger = require(\"es5-ext/number/to-pos-integer\")\n , lruQueue = require(\"lru-queue\")\n , extensions = require(\"../lib/registered-extensions\");\n\nextensions.max = function (max, conf, options) {\n\tvar postfix, queue, hit;\n\n\tmax = toPosInteger(max);\n\tif (!max) return;\n\n\tqueue = lruQueue(max);\n\tpostfix = (options.async && extensions.async) || (options.promise && extensions.promise)\n\t\t? \"async\" : \"\";\n\n\tconf.on(\"set\" + postfix, hit = function (id) {\n\t\tid = queue.hit(id);\n\t\tif (id === undefined) return;\n\t\tconf.delete(id);\n\t});\n\tconf.on(\"get\" + postfix, hit);\n\tconf.on(\"delete\" + postfix, queue.delete);\n\tconf.on(\"clear\" + postfix, queue.clear);\n};\n","'use strict';\n\nvar toPosInt = require('es5-ext/number/to-pos-integer')\n\n , create = Object.create, hasOwnProperty = Object.prototype.hasOwnProperty;\n\nmodule.exports = function (limit) {\n\tvar size = 0, base = 1, queue = create(null), map = create(null), index = 0, del;\n\tlimit = toPosInt(limit);\n\treturn {\n\t\thit: function (id) {\n\t\t\tvar oldIndex = map[id], nuIndex = ++index;\n\t\t\tqueue[nuIndex] = id;\n\t\t\tmap[id] = nuIndex;\n\t\t\tif (!oldIndex) {\n\t\t\t\t++size;\n\t\t\t\tif (size <= limit) return;\n\t\t\t\tid = queue[base];\n\t\t\t\tdel(id);\n\t\t\t\treturn id;\n\t\t\t}\n\t\t\tdelete queue[oldIndex];\n\t\t\tif (base !== oldIndex) return;\n\t\t\twhile (!hasOwnProperty.call(queue, ++base)) continue; //jslint: skip\n\t\t},\n\t\tdelete: del = function (id) {\n\t\t\tvar oldIndex = map[id];\n\t\t\tif (!oldIndex) return;\n\t\t\tdelete queue[oldIndex];\n\t\t\tdelete map[id];\n\t\t\t--size;\n\t\t\tif (base !== oldIndex) return;\n\t\t\tif (!size) {\n\t\t\t\tindex = 0;\n\t\t\t\tbase = 1;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\twhile (!hasOwnProperty.call(queue, ++base)) continue; //jslint: skip\n\t\t},\n\t\tclear: function () {\n\t\t\tsize = 0;\n\t\t\tbase = 1;\n\t\t\tqueue = create(null);\n\t\t\tmap = create(null);\n\t\t\tindex = 0;\n\t\t}\n\t};\n};\n","// Reference counter, useful for garbage collector like functionality\n\n\"use strict\";\n\nvar d = require(\"d\")\n , extensions = require(\"../lib/registered-extensions\")\n\n , create = Object.create, defineProperties = Object.defineProperties;\n\nextensions.refCounter = function (ignore, conf, options) {\n\tvar cache, postfix;\n\n\tcache = create(null);\n\tpostfix = (options.async && extensions.async) || (options.promise && extensions.promise)\n\t\t? \"async\" : \"\";\n\n\tconf.on(\"set\" + postfix, function (id, length) {\n cache[id] = length || 1;\n});\n\tconf.on(\"get\" + postfix, function (id) {\n ++cache[id];\n});\n\tconf.on(\"delete\" + postfix, function (id) {\n delete cache[id];\n});\n\tconf.on(\"clear\" + postfix, function () {\n cache = {};\n});\n\n\tdefineProperties(conf.memoized, {\n\t\tdeleteRef: d(function () {\n\t\t\tvar id = conf.get(arguments);\n\t\t\tif (id === null) return null;\n\t\t\tif (!cache[id]) return null;\n\t\t\tif (!--cache[id]) {\n\t\t\t\tconf.delete(id);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}),\n\t\tgetRefCount: d(function () {\n\t\t\tvar id = conf.get(arguments);\n\t\t\tif (id === null) return 0;\n\t\t\tif (!cache[id]) return 0;\n\t\t\treturn cache[id];\n\t\t})\n\t});\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = fromMetadata;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _createFunction = _interopRequireDefault(require(\"./createFunction\"));\n\nvar _storage = require(\"./storage\");\n\n// Copyright 2017-2019 @polkadot/storage authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * Extend a storage object with the storage modules & module functions present\n * in the metadata.\n *\n * @param storage - A storage object to be extended.\n * @param metadata - The metadata to extend the storage object against.\n */\nfunction fromMetadata(metadata) {\n return metadata.asV4.modules.reduce((result, moduleMetadata) => {\n if (moduleMetadata.storage.isNone) {\n return result;\n }\n\n const prefix = moduleMetadata.prefix; // For access, we change the index names, i.e. Balances.FreeBalance -> balances.freeBalance\n\n result[(0, _util.stringLowerFirst)(prefix.toString())] = moduleMetadata.storage.unwrap().reduce((newModule, storageFnMeta) => {\n newModule[(0, _util.stringLowerFirst)(storageFnMeta.name.toString())] = (0, _createFunction.default)(prefix, storageFnMeta.name, storageFnMeta);\n return newModule;\n }, {});\n return result;\n }, (0, _objectSpread2.default)({}, _storage.storage));\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createFunction;\n\nvar _types = require(\"@polkadot/types\");\n\nvar _Storage = require(\"@polkadot/types/Metadata/v4/Storage\");\n\nvar _util = require(\"@polkadot/util\");\n\nvar _getHasher = _interopRequireDefault(require(\"./getHasher\"));\n\n// Copyright 2017-2019 @polkadot/storage authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n\n/**\n * From the schema of a function in the module's storage, generate the function\n * that will return the correct storage key.\n *\n * @param schema - The function's definition schema to create the function from.\n * The schema is taken from state_getMetadata.\n * @param options - Additional options when creating the function. These options\n * are not known at runtime (from state_getMetadata), they need to be supplied\n * by us manually at compile time.\n */\nfunction createFunction(section, method, meta) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const stringKey = options.key ? options.key : \"\".concat(section.toString(), \" \").concat(method.toString());\n const rawKey = (0, _util.stringToU8a)(stringKey); // Get the hashing function\n // FIXME Hash correctly for double map too\n\n const hasher = meta.type.isMap ? (0, _getHasher.default)(meta.type.asMap.hasher) : (0, _getHasher.default)(); // Can only have zero or one argument:\n // - storage.balances.freeBalance(address)\n // - storage.timestamp.blockPeriod()\n\n const storageFn = arg => {\n let key = rawKey;\n\n if (meta.type.isMap) {\n (0, _util.assert)(!(0, _util.isUndefined)(arg) && !(0, _util.isNull)(arg), \"\".concat(meta.name, \" expects one argument\"));\n const type = meta.type.asMap.key.toString();\n const param = (0, _types.createType)(type, arg).toU8a();\n key = (0, _util.u8aConcat)(key, param);\n } // StorageKey is a Bytes, so is length-prefixed\n\n\n return _types.Compact.addLengthPrefix(options.skipHashing ? key : hasher(key));\n };\n\n if (meta.type.isMap && meta.type.asMap.isLinked) {\n const keyHash = new _types.U8a(hasher(\"head of \".concat(stringKey)));\n\n const keyFn = () => keyHash;\n\n keyFn.meta = new _Storage.StorageFunctionMetadata({\n name: meta.name,\n modifier: new _Storage.StorageFunctionModifier('Required'),\n type: new _Storage.StorageFunctionType(new _Storage.PlainType(meta.type.asMap.key), 0),\n fallback: new _types.Bytes(),\n documentation: meta.documentation\n });\n storageFn.headKey = new _types.StorageKey(keyFn);\n }\n\n storageFn.meta = meta;\n storageFn.method = (0, _util.stringLowerFirst)(method.toString());\n storageFn.section = (0, _util.stringLowerFirst)(section.toString());\n\n storageFn.toJSON = () => meta.toJSON();\n\n return storageFn;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getHasher;\n\nvar _utilCrypto = require(\"@polkadot/util-crypto\");\n\n// Copyright 2017-2019 @polkadot/storage authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction getHasher(hasher) {\n // This one is the default for PlainType storage keys\n if (!hasher) {\n return data => (0, _utilCrypto.xxhashAsU8a)(data, 128);\n }\n\n if (hasher.isBlake2128) {\n return data => (0, _utilCrypto.blake2AsU8a)(data, 128);\n }\n\n if (hasher.isBlake2256) {\n return data => (0, _utilCrypto.blake2AsU8a)(data, 256);\n }\n\n if (hasher.isTwox128) {\n return data => (0, _utilCrypto.xxhashAsU8a)(data, 128);\n }\n\n if (hasher.isTwox256) {\n return data => (0, _utilCrypto.xxhashAsU8a)(data, 256);\n } // FIXME Add Twox128Concat\n // All cases should be handled above, but if not, return Twox128 for\n // backwards-compatbility\n\n\n return data => (0, _utilCrypto.xxhashAsU8a)(data, 128);\n}","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.storage = void 0;\n\nvar substrate = _interopRequireWildcard(require(\"./substrate\"));\n\n// Copyright 2017-2019 @polkadot/storage authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst storage = {\n substrate // Prefill storage with well known keys, as not returned by state_getMetadata\n\n};\nexports.storage = storage;","function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n\n newObj[\"default\"] = obj;\n return newObj;\n }\n}\n\nmodule.exports = _interopRequireWildcard;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.changesTrieConfig = exports.extrinsicIndex = exports.authorityPrefix = exports.authorityCount = exports.heapPages = exports.code = void 0;\n\nvar _Storage = require(\"@polkadot/types/Metadata/v4/Storage\");\n\nvar _types = require(\"@polkadot/types\");\n\nvar _createFunction = _interopRequireDefault(require(\"./createFunction\"));\n\n// Copyright 2017-2019 @polkadot/storage authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\n// Small helper function to factorize code on this page.\nconst createRuntimeFunction = (method, key, _ref) => {\n let documentation = _ref.documentation,\n type = _ref.type;\n return (0, _createFunction.default)(new _types.Text('Substrate'), new _types.Text(method), {\n documentation: new _types.Vector(_types.Text, [documentation]),\n modifier: new _Storage.StorageFunctionModifier(1),\n // default\n type: new _Storage.StorageFunctionType(type, 0),\n toJSON: () => key\n }, {\n key,\n skipHashing: true\n });\n};\n\nconst code = createRuntimeFunction('code', ':code', {\n documentation: 'Wasm code of the runtime.',\n type: 'Bytes'\n});\nexports.code = code;\nconst heapPages = createRuntimeFunction('heapPages', ':heappages', {\n documentation: 'Number of wasm linear memory pages required for execution of the runtime.',\n type: 'u64'\n});\nexports.heapPages = heapPages;\nconst authorityCount = createRuntimeFunction('authorityCount', ':auth:len', {\n documentation: 'Number of authorities.',\n type: 'u32'\n});\nexports.authorityCount = authorityCount;\nconst authorityPrefix = createRuntimeFunction('authorityPrefix', ':auth:', {\n documentation: 'Prefix under which authorities are stored.',\n type: 'u32'\n});\nexports.authorityPrefix = authorityPrefix;\nconst extrinsicIndex = createRuntimeFunction('extrinsicIndex', ':extrinsic_index', {\n documentation: 'Current extrinsic index (u32) is stored under this key.',\n type: 'u32'\n});\nexports.extrinsicIndex = extrinsicIndex;\nconst changesTrieConfig = createRuntimeFunction('changesTrieConfig', ':changes_trie', {\n documentation: 'Changes trie configuration is stored under this key.',\n type: 'u32'\n});\nexports.changesTrieConfig = changesTrieConfig;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = injectNodeCompat;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _types = require(\"@polkadot/types\");\n\n// Copyright 2017-2019 @polkadot/api authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst ANY_VERSION = 0xffffff;\nconst types = [{\n nodeSpecs: [['node', 77], ['polkadot', 1000], ['node-template', ANY_VERSION], ['edgeware', ANY_VERSION]],\n types: {\n 'EventRecord': _types.EventRecord_0_76\n }\n}];\n\nfunction injectNodeCompat(_ref) {\n let specName = _ref.specName,\n specVersion = _ref.specVersion;\n types.filter((_ref2) => {\n let nodeSpecs = _ref2.nodeSpecs;\n return nodeSpecs.some((_ref3) => {\n let _ref4 = (0, _slicedToArray2.default)(_ref3, 2),\n name = _ref4[0],\n version = _ref4[1];\n\n return specName.eq(name) && specVersion.ltn(version);\n });\n }).forEach((_ref5) => {\n let types = _ref5.types;\n (0, _types.getTypeRegistry)().register(types);\n });\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createSubmittableExtrinsic;\nexports.SubmittableResult = void 0;\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _types = require(\"@polkadot/types\");\n\nvar _rxjs = require(\"rxjs\");\n\nvar _operators = require(\"rxjs/operators\");\n\nvar _util = require(\"@polkadot/util\");\n\nvar _filterEvents = _interopRequireDefault(require(\"./util/filterEvents\"));\n\n// Copyright 2017-2019 @polkadot/api authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nclass SubmittableResult extends _types.Struct {\n constructor(value) {\n super({\n events: _types.Vector.with(_types.EventRecord),\n status: _types.ExtrinsicStatus\n }, value);\n }\n /**\n * @description the contained events\n */\n\n\n get events() {\n return this.get('events');\n }\n /**\n * @description the status\n */\n\n\n get status() {\n return this.get('status');\n }\n /**\n * @description Finds an EventRecord for the specified method & section\n */\n\n\n findRecord(section, method) {\n return this.events.find((_ref) => {\n let event = _ref.event;\n return event.section === section && event.method === method;\n });\n }\n\n}\n\nexports.SubmittableResult = SubmittableResult;\n\nfunction createSubmittableExtrinsic(type, api, onCall, extrinsic, trackingCb) {\n const _extrinsic = new ((0, _types.getTypeRegistry)().getOrThrow('Extrinsic'))(extrinsic);\n\n const _noStatusCb = type === 'rxjs';\n\n function updateSigner(updateId, status) {\n if (updateId !== -1 && api.signer && api.signer.update) {\n api.signer.update(updateId, status);\n }\n }\n\n function statusObservable(status) {\n if (!status.isFinalized) {\n const result = new SubmittableResult({\n status\n });\n trackingCb && trackingCb(result);\n return (0, _rxjs.of)(result);\n }\n\n const blockHash = status.asFinalized;\n return (0, _rxjs.combineLatest)([api.rpc.chain.getBlock(blockHash), api.query.system.events.at(blockHash)]).pipe((0, _operators.map)((_ref2) => {\n let _ref3 = (0, _slicedToArray2.default)(_ref2, 2),\n signedBlock = _ref3[0],\n allEvents = _ref3[1];\n\n const result = new SubmittableResult({\n events: (0, _filterEvents.default)(_extrinsic.hash, signedBlock, allEvents),\n status\n });\n trackingCb && trackingCb(result);\n return result;\n }));\n }\n\n function sendObservable() {\n let updateId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;\n return api.rpc.author.submitExtrinsic(_extrinsic).pipe((0, _operators.tap)(hash => {\n updateSigner(updateId, hash);\n }));\n }\n\n function subscribeObservable() {\n let updateId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;\n return api.rpc.author.submitAndWatchExtrinsic(_extrinsic).pipe((0, _operators.switchMap)(status => statusObservable(status)), (0, _operators.tap)(status => {\n updateSigner(updateId, status);\n }));\n }\n\n function expandOptions(options) {\n return (0, _objectSpread2.default)({\n blockHash: api.genesisHash,\n version: api.runtimeVersion\n }, options);\n }\n\n const signOrigin = _extrinsic.sign;\n Object.defineProperties(_extrinsic, {\n send: {\n value: function value(statusCb) {\n const isSubscription = _noStatusCb || !!statusCb;\n return onCall(() => isSubscription ? subscribeObservable() : sendObservable(), [], statusCb, isSubscription);\n }\n },\n sign: {\n value: function value(account, _options) {\n // HACK here we actually override nonce if it was specified (backwards compat for\n const options = (0, _util.isBn)(_options) || (0, _util.isNumber)(_options) ? {\n nonce: _options\n } : _options;\n signOrigin.apply(_extrinsic, [account, expandOptions(options)]);\n return this;\n }\n },\n signAndSend: {\n value: function value(account, _options, statusCb) {\n let options = {};\n\n if ((0, _util.isFunction)(_options)) {\n statusCb = _options;\n } else {\n options = _options || {};\n }\n\n const isSubscription = _noStatusCb || !!statusCb;\n const isKeyringPair = (0, _util.isFunction)(account.address) && (0, _util.isFunction)(account.sign);\n const address = isKeyringPair ? account.address() : account.toString();\n let updateId;\n return onCall(() => ((0, _util.isUndefined)(options.nonce) ? api.query.system.accountNonce(address) : (0, _rxjs.of)(new _types.Index(options.nonce))).pipe((0, _operators.first)(), (0, _operators.mergeMap)(async nonce => {\n if (isKeyringPair) {\n this.sign(account, (0, _objectSpread2.default)({}, options, {\n nonce\n }));\n } else {\n (0, _util.assert)(api.signer, 'no signer exists');\n updateId = await api.signer.sign(_extrinsic, address, expandOptions((0, _objectSpread2.default)({}, options, {\n nonce\n })));\n }\n }), (0, _operators.switchMap)(() => {\n return isSubscription ? subscribeObservable(updateId) : sendObservable(updateId); // ???\n })), [], statusCb, isSubscription);\n }\n }\n });\n return _extrinsic;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = filterEvents;\n\nvar _logging = _interopRequireDefault(require(\"./logging\"));\n\n// Copyright 2017-2019 @polkadot/api authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nfunction filterEvents(extHash, _ref, allEvents) {\n let _ref$block = _ref.block,\n extrinsics = _ref$block.extrinsics,\n header = _ref$block.header;\n // extrinsics to hashes\n const myHash = extHash.toHex();\n const allHashes = extrinsics.map(ext => ext.hash.toHex()); // find the index of our extrinsic in the block\n\n const index = allHashes.indexOf(myHash); // if we do get the block after finalized, it _should_ be there\n\n if (index === -1) {\n _logging.default.warn(\"block \".concat(header.hash, \": Unable to find extrinsic \").concat(myHash, \" inside \").concat(allHashes));\n\n return;\n }\n\n return allEvents.filter((_ref2) => {\n let phase = _ref2.phase;\n return (// only ApplyExtrinsic has the extrinsic index\n phase.isApplyExtrinsic && phase.asApplyExtrinsic.eqn(index)\n );\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _util = require(\"@polkadot/util\");\n\n// Copyright 2017-2019 @polkadot/api authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst l = (0, _util.logger)('api/util');\nvar _default = l;\nexports.default = _default;","{\n \"_args\": [\n [\n \"@polkadot/api@0.79.0-beta.32\",\n \"/Users/wushuaipeng/Documents/spwuc/polkdot\"\n ]\n ],\n \"_from\": \"@polkadot/api@0.79.0-beta.32\",\n \"_id\": \"@polkadot/api@0.79.0-beta.32\",\n \"_inBundle\": false,\n \"_integrity\": \"sha512-dthbjjABw1y/T/gnJ6CPz8/BEf9W21WFW2x2o4htTCJtUVR+R0ZiN/4qJf/zrvEy7GOhNx11vc9UHRzcr/F9lg==\",\n \"_location\": \"/@polkadot/api\",\n \"_phantomChildren\": {},\n \"_requested\": {\n \"type\": \"version\",\n \"registry\": true,\n \"raw\": \"@polkadot/api@0.79.0-beta.32\",\n \"name\": \"@polkadot/api\",\n \"escapedName\": \"@polkadot%2fapi\",\n \"scope\": \"@polkadot\",\n \"rawSpec\": \"0.79.0-beta.32\",\n \"saveSpec\": null,\n \"fetchSpec\": \"0.79.0-beta.32\"\n },\n \"_requiredBy\": [\n \"/\",\n \"/@polkadot/api-derive\"\n ],\n \"_resolved\": \"https://registry.npmjs.org/@polkadot/api/-/api-0.79.0-beta.32.tgz\",\n \"_spec\": \"0.79.0-beta.32\",\n \"_where\": \"/Users/wushuaipeng/Documents/spwuc/polkdot\",\n \"author\": {\n \"name\": \"Jaco Greeff\",\n \"email\": \"jacogr@gmail.com\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/polkadot-js/api/issues\"\n },\n \"contributors\": [],\n \"dependencies\": {\n \"@babel/runtime\": \"^7.4.4\",\n \"@polkadot/api-derive\": \"^0.79.0-beta.32\",\n \"@polkadot/extrinsics\": \"^0.79.0-beta.32\",\n \"@polkadot/rpc-provider\": \"^0.79.0-beta.32\",\n \"@polkadot/rpc-rx\": \"^0.79.0-beta.32\",\n \"@polkadot/storage\": \"^0.79.0-beta.32\",\n \"@polkadot/types\": \"^0.79.0-beta.32\",\n \"@polkadot/util-crypto\": \"^0.91.0-beta.1\"\n },\n \"description\": \"Promise and RxJS wrappers around the Polkadot JS RPC\",\n \"engines\": {\n \"node\": \">=8.0\"\n },\n \"homepage\": \"https://github.com/polkadot-js/api/tree/master/packages/api#readme\",\n \"keywords\": [\n \"Polkadot\",\n \"RxJs\"\n ],\n \"license\": \"Apache-2.0\",\n \"main\": \"index.js\",\n \"maintainers\": [\n {\n \"name\": \"Jaco Greeff\",\n \"email\": \"jacogr@gmail.com\"\n }\n ],\n \"name\": \"@polkadot/api\",\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/polkadot-js/api.git\"\n },\n \"version\": \"0.79.0-beta.32\",\n \"react-native\": {\n \"zlib\": \"browserify-zlib\",\n \"console\": \"console-browserify\",\n \"constants\": \"constants-browserify\",\n \"crypto\": \"react-native-crypto\",\n \"dns\": \"dns.js\",\n \"net\": \"react-native-tcp\",\n \"domain\": \"domain-browser\",\n \"http\": \"@tradle/react-native-http\",\n \"https\": \"https-browserify\",\n \"os\": \"react-native-os\",\n \"path\": \"path-browserify\",\n \"querystring\": \"querystring-es3\",\n \"fs\": \"react-native-level-fs\",\n \"_stream_transform\": \"readable-stream/transform\",\n \"_stream_readable\": \"readable-stream/readable\",\n \"_stream_writable\": \"readable-stream/writable\",\n \"_stream_duplex\": \"readable-stream/duplex\",\n \"_stream_passthrough\": \"readable-stream/passthrough\",\n \"dgram\": \"react-native-udp\",\n \"stream\": \"stream-browserify\",\n \"timers\": \"timers-browserify\",\n \"tty\": \"tty-browserify\",\n \"vm\": \"vm-browserify\",\n \"tls\": false\n },\n \"browser\": {\n \"zlib\": \"browserify-zlib\",\n \"console\": \"console-browserify\",\n \"constants\": \"constants-browserify\",\n \"crypto\": \"react-native-crypto\",\n \"dns\": \"dns.js\",\n \"net\": \"react-native-tcp\",\n \"domain\": \"domain-browser\",\n \"http\": \"@tradle/react-native-http\",\n \"https\": \"https-browserify\",\n \"os\": \"react-native-os\",\n \"path\": \"path-browserify\",\n \"querystring\": \"querystring-es3\",\n \"fs\": \"react-native-level-fs\",\n \"_stream_transform\": \"readable-stream/transform\",\n \"_stream_readable\": \"readable-stream/readable\",\n \"_stream_writable\": \"readable-stream/writable\",\n \"_stream_duplex\": \"readable-stream/duplex\",\n \"_stream_passthrough\": \"readable-stream/passthrough\",\n \"dgram\": \"react-native-udp\",\n \"stream\": \"stream-browserify\",\n \"timers\": \"timers-browserify\",\n \"tty\": \"tty-browserify\",\n \"vm\": \"vm-browserify\",\n \"tls\": false\n }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _toArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toArray\"));\n\nvar _util = require(\"@polkadot/util\");\n\n// Copyright 2017-2019 @polkadot/api authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nclass Combinator {\n constructor(fns, callback) {\n this._allHasFired = false;\n this._callback = void 0;\n this._fired = [];\n this._fns = [];\n this._isActive = true;\n this._results = [];\n this._subscriptions = [];\n this._callback = callback;\n this._subscriptions = fns.map(async (input, index) => {\n const _ref = Array.isArray(input) ? input : [input],\n _ref2 = (0, _toArray2.default)(_ref),\n fn = _ref2[0],\n args = _ref2.slice(1);\n\n this._fired.push(false);\n\n this._fns.push(fn); // @ts-ignore Not quite 100% how to have a variable number at the front here\n\n\n return fn(...args, this.createCallback(index));\n });\n }\n\n allHasFired() {\n if (!this._allHasFired) {\n this._allHasFired = this._fired.filter(hasFired => !hasFired).length === 0;\n }\n\n return this._allHasFired;\n }\n\n createCallback(index) {\n return value => {\n this._fired[index] = true;\n this._results[index] = value;\n this.triggerUpdate();\n };\n }\n\n triggerUpdate() {\n if (!this._isActive || !(0, _util.isFunction)(this._callback) || !this.allHasFired()) {\n return;\n }\n\n try {\n this._callback(this._results);\n } catch (error) {// swallow, we don't want the handler to trip us up\n }\n }\n\n unsubscribe() {\n if (!this._isActive) {\n return;\n }\n\n this._isActive = false;\n\n this._subscriptions.forEach(async subscription => {\n try {\n const unsubscribe = await subscription;\n\n if ((0, _util.isFunction)(unsubscribe)) {\n unsubscribe();\n }\n } catch (error) {// ignore\n }\n });\n }\n\n}\n\nexports.default = Combinator;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || nonIterableRest();\n}\n\nmodule.exports = _toArray;","{\n \"ios\": {\n \"appId\": 19191,\n \"appKey\": \"xm9-Q1ax8j0x7i1puC1ngyh0bJtT3gv_\"\n },\n \"android\": {\n \"appId\": 19192,\n \"appKey\": \"RUjWD3bWUbubRS0bsCVOs-fLQgsJtpte\"\n }\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactCopyToClipboard = _interopRequireDefault(require(\"react-copy-to-clipboard\"));\n\nvar _styledComponents = _interopRequireDefault(require(\"styled-components\"));\n\nvar _keyring = require(\"@polkadot/keyring\");\n\nvar _index = _interopRequireDefault(require(\"@polkadot/ui-settings/index\"));\n\nvar _util = require(\"@polkadot/util\");\n\nvar _Empty = _interopRequireDefault(require(\"./Empty\"));\n\nvar _Polkadot = _interopRequireDefault(require(\"./Polkadot\"));\n\nvar _Substrate = _interopRequireDefault(require(\"./Substrate\"));\n\n// Copyright 2017-2019 @polkadot/ui-identicon authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst DEFAULT_SIZE = 64;\nconst Components = {\n 'polkadot': _Polkadot.default,\n 'substrate': _Substrate.default\n};\n\nconst Wrapper = _styledComponents.default.View.withConfig({\n displayName: \"src__Wrapper\",\n componentId: \"lybtcb-0\"\n})([\"svg{position:relative;}&:before{position:absolute;top:0;left:0;right:0;bottom:0;border-radius:50%;box-shadow:0 0 5px 2px #e0e0e0;content:'';}&.highlight:before{box-shadow:0 0 5px 2px red;}}\"]);\n\nclass IdentityIcon extends _react.default.PureComponent {\n constructor() {\n super(...arguments);\n this.state = {\n address: null\n };\n\n this.onCopy = () => {\n const onCopy = this.props.onCopy;\n const address = this.state.address;\n\n if (address && onCopy) {\n onCopy(address);\n }\n };\n }\n\n static setDefaultPrefix(prefix) {\n IdentityIcon.prefix = prefix;\n }\n\n static getDerivedStateFromProps(_ref, prevState) {\n let _ref$prefix = _ref.prefix,\n prefix = _ref$prefix === void 0 ? IdentityIcon.prefix : _ref$prefix,\n value = _ref.value;\n\n try {\n const address = (0, _util.isU8a)(value) || (0, _util.isHex)(value) ? (0, _keyring.encodeAddress)(value, prefix) : value;\n (0, _keyring.decodeAddress)(address, prefix);\n return address === prevState.address ? null : {\n address\n };\n } catch (error) {// swallow,invalid address or input\n }\n\n return {\n address: null\n };\n }\n\n render() {\n const address = this.state.address;\n const wrapped = this.getWrapped(address);\n return !address ? wrapped : _react.default.createElement(_reactCopyToClipboard.default, {\n onCopy: this.onCopy,\n text: address\n }, wrapped);\n }\n\n getWrapped(address) {\n const _this$props = this.props,\n className = _this$props.className,\n _this$props$isHighlig = _this$props.isHighlight,\n isHighlight = _this$props$isHighlig === void 0 ? false : _this$props$isHighlig,\n _this$props$size = _this$props.size,\n size = _this$props$size === void 0 ? DEFAULT_SIZE : _this$props$size,\n style = _this$props.style,\n _this$props$theme = _this$props.theme,\n theme = _this$props$theme === void 0 ? _index.default.uiTheme : _this$props$theme;\n const Component = !address ? _Empty.default : Components[theme] || _Substrate.default;\n return _react.default.createElement(Wrapper, {\n className: ['ui--IdentityIcon', className].join(' '),\n key: address || '',\n style: style\n }, _react.default.createElement(Component, {\n className: isHighlight ? 'highlight' : '',\n size: size,\n value: address || ''\n }));\n }\n\n}\n\nexports.default = IdentityIcon;\nIdentityIcon.prefix = undefined;","'use strict';\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _copyToClipboard = require('copy-to-clipboard');\n\nvar _copyToClipboard2 = _interopRequireDefault(_copyToClipboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CopyToClipboard = exports.CopyToClipboard = function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n function CopyToClipboard() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = CopyToClipboard.__proto__ || Object.getPrototypeOf(CopyToClipboard)).call.apply(_ref, [this].concat(args))), _this), _this.onClick = function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n\n var elem = _react2.default.Children.only(children);\n\n var result = (0, _copyToClipboard2.default)(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n }\n\n // Bypass onClick if it was present\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(CopyToClipboard, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n _text = _props.text,\n _onCopy = _props.onCopy,\n _options = _props.options,\n children = _props.children,\n props = _objectWithoutProperties(_props, ['text', 'onCopy', 'options', 'children']);\n\n var elem = _react2.default.Children.only(children);\n\n return _react2.default.cloneElement(elem, _extends({}, props, { onClick: this.onClick }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react2.default.PureComponent);\n\nCopyToClipboard.defaultProps = {\n onCopy: undefined,\n options: undefined\n};","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(\"text\", text);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Stylis = _interopDefault(require('stylis/stylis.min'));\nvar _insertRulePlugin = _interopDefault(require('stylis-rule-sheet'));\nvar React = require('react');\nvar React__default = _interopDefault(React);\nvar unitless = _interopDefault(require('@emotion/unitless'));\nvar reactIs = require('react-is');\nvar supportsColor = _interopDefault(require('supports-color'));\nvar transformDeclPairs = _interopDefault(require('css-to-react-native'));\nvar memoize = _interopDefault(require('memoize-one'));\nvar reactNative = _interopDefault(require('react-native'));\n\n// \n// Source: https://github.com/garycourt/murmurhash-js/blob/master/murmurhash2_gc.js\nfunction murmurhash(c) {\n for (var e = c.length | 0, a = e | 0, d = 0, b; e >= 4;) {\n b = c.charCodeAt(d) & 255 | (c.charCodeAt(++d) & 255) << 8 | (c.charCodeAt(++d) & 255) << 16 | (c.charCodeAt(++d) & 255) << 24, b = 1540483477 * (b & 65535) + ((1540483477 * (b >>> 16) & 65535) << 16), b ^= b >>> 24, b = 1540483477 * (b & 65535) + ((1540483477 * (b >>> 16) & 65535) << 16), a = 1540483477 * (a & 65535) + ((1540483477 * (a >>> 16) & 65535) << 16) ^ b, e -= 4, ++d;\n }\n switch (e) {\n case 3:\n a ^= (c.charCodeAt(d + 2) & 255) << 16;\n case 2:\n a ^= (c.charCodeAt(d + 1) & 255) << 8;\n case 1:\n a ^= c.charCodeAt(d) & 255, a = 1540483477 * (a & 65535) + ((1540483477 * (a >>> 16) & 65535) << 16);\n }\n a ^= a >>> 13;\n a = 1540483477 * (a & 65535) + ((1540483477 * (a >>> 16) & 65535) << 16);\n return (a ^ a >>> 15) >>> 0;\n}\n\n// \n\nfunction getComponentName(target) {\n return (process.env.NODE_ENV !== 'production' ? typeof target === 'string' && target : false) || target.displayName || target.name || 'Component';\n}\n\n// \nfunction isFunction(test) {\n return typeof test === 'function';\n}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n// \nvar isPlainObject = (function (x) {\n return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x.constructor === Object;\n});\n\n// \nfunction isStyledComponent(target) {\n return target && typeof target.styledComponentId === 'string';\n}\n\n// \n\nvar SC_ATTR = typeof process !== 'undefined' && process.env.SC_ATTR || 'data-styled';\n\nvar SC_VERSION_ATTR = 'data-styled-version';\n\nvar SC_STREAM_ATTR = 'data-styled-streamed';\n\nvar IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\n\nvar DISABLE_SPEEDY = typeof SC_DISABLE_SPEEDY === 'boolean' && SC_DISABLE_SPEEDY || process.env.NODE_ENV !== 'production';\n\n// \n\n\n/**\n * Parse errors.md and turn it into a simple hash of code: message\n */\nvar ERRORS = process.env.NODE_ENV !== 'production' ? {\n \"1\": \"Cannot create styled-component for component: %s.\\n\\n\",\n \"2\": \"Can't collect styles once you've consumed a `ServerStyleSheet`'s styles! `ServerStyleSheet` is a one off instance for each server-side render cycle.\\n\\n- Are you trying to reuse it across renders?\\n- Are you accidentally calling collectStyles twice?\\n\\n\",\n \"3\": \"Streaming SSR is only supported in a Node.js environment; Please do not try to call this method in the browser.\\n\\n\",\n \"4\": \"The `StyleSheetManager` expects a valid target or sheet prop!\\n\\n- Does this error occur on the client and is your target falsy?\\n- Does this error occur on the server and is the sheet falsy?\\n\\n\",\n \"5\": \"The clone method cannot be used on the client!\\n\\n- Are you running in a client-like environment on the server?\\n- Are you trying to run SSR on the client?\\n\\n\",\n \"6\": \"Trying to insert a new style tag, but the given Node is unmounted!\\n\\n- Are you using a custom target that isn't mounted?\\n- Does your document not have a valid head element?\\n- Have you accidentally removed a style tag manually?\\n\\n\",\n \"7\": \"ThemeProvider: Please return an object from your \\\"theme\\\" prop function, e.g.\\n\\n```js\\ntheme={() => ({})}\\n```\\n\\n\",\n \"8\": \"ThemeProvider: Please make your \\\"theme\\\" prop an object.\\n\\n\",\n \"9\": \"Missing document ``\\n\\n\",\n \"10\": \"Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\\n\\n\",\n \"11\": \"_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\\n\\n\",\n \"12\": \"It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\\\`\\\\` helper (see https://www.styled-components.com/docs/api#css), which ensures the styles are injected correctly.\\n\\n\",\n \"13\": \"%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\\n\"\n} : {};\n\n/**\n * super basic version of sprintf\n */\nfunction format() {\n var a = arguments.length <= 0 ? undefined : arguments[0];\n var b = [];\n\n for (var c = 1, len = arguments.length; c < len; c += 1) {\n b.push(arguments.length <= c ? undefined : arguments[c]);\n }\n\n b.forEach(function (d) {\n a = a.replace(/%[a-z]/, d);\n });\n\n return a;\n}\n\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n */\n\nvar StyledComponentsError = function (_Error) {\n inherits(StyledComponentsError, _Error);\n\n function StyledComponentsError(code) {\n classCallCheck(this, StyledComponentsError);\n\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n if (process.env.NODE_ENV === 'production') {\n var _this = possibleConstructorReturn(this, _Error.call(this, 'An error occurred. See https://github.com/styled-components/styled-components/blob/master/src/utils/errors.md#' + code + ' for more information. ' + (interpolations ? 'Additional arguments: ' + interpolations.join(', ') : '')));\n } else {\n var _this = possibleConstructorReturn(this, _Error.call(this, format.apply(undefined, [ERRORS[code]].concat(interpolations)).trim()));\n }\n return possibleConstructorReturn(_this);\n }\n\n return StyledComponentsError;\n}(Error);\n\n// \nvar SC_COMPONENT_ID = /^[^\\S\\n]*?\\/\\* sc-component-id:\\s*(\\S+)\\s+\\*\\//gm;\n\nvar extractComps = (function (maybeCSS) {\n var css = '' + (maybeCSS || ''); // Definitely a string, and a clone\n var existingComponents = [];\n css.replace(SC_COMPONENT_ID, function (match, componentId, matchIndex) {\n existingComponents.push({ componentId: componentId, matchIndex: matchIndex });\n return match;\n });\n return existingComponents.map(function (_ref, i) {\n var componentId = _ref.componentId,\n matchIndex = _ref.matchIndex;\n\n var nextComp = existingComponents[i + 1];\n var cssFromDOM = nextComp ? css.slice(matchIndex, nextComp.matchIndex) : css.slice(matchIndex);\n return { componentId: componentId, cssFromDOM: cssFromDOM };\n });\n});\n\n// \n\n// NOTE: This stylis instance is only used to split rules from SSR'd style tags\nvar stylisSplitter = new Stylis({\n global: false,\n cascade: true,\n keyframe: false,\n prefix: false,\n compress: false,\n semicolon: true\n});\n\nvar stylis = new Stylis({\n global: false,\n cascade: true,\n keyframe: false,\n prefix: true,\n compress: false,\n semicolon: false // NOTE: This means \"autocomplete missing semicolons\"\n});\n\n// Wrap `insertRulePlugin to build a list of rules,\n// and then make our own plugin to return the rules. This\n// makes it easier to hook into the existing SSR architecture\n\nvar parsingRules = [];\n\n// eslint-disable-next-line consistent-return\nvar returnRulesPlugin = function returnRulesPlugin(context) {\n if (context === -2) {\n var parsedRules = parsingRules;\n parsingRules = [];\n return parsedRules;\n }\n};\n\nvar parseRulesPlugin = _insertRulePlugin(function (rule) {\n parsingRules.push(rule);\n});\n\nvar _componentId = void 0;\nvar _selector = void 0;\nvar _selectorRegexp = void 0;\n\nvar selfReferenceReplacer = function selfReferenceReplacer(match, offset, string) {\n if (\n // the first self-ref is always untouched\n offset > 0 &&\n // there should be at least two self-refs to do a replacement (.b > .b)\n string.slice(0, offset).indexOf(_selector) !== -1 &&\n // no consecutive self refs (.b.b); that is a precedence boost and treated differently\n string.slice(offset - _selector.length, offset) !== _selector) {\n return '.' + _componentId;\n }\n\n return match;\n};\n\n/**\n * When writing a style like\n *\n * & + & {\n * color: red;\n * }\n *\n * The second ampersand should be a reference to the static component class. stylis\n * has no knowledge of static class so we have to intelligently replace the base selector.\n */\nvar selfReferenceReplacementPlugin = function selfReferenceReplacementPlugin(context, _, selectors) {\n if (context === 2 && selectors.length && selectors[0].lastIndexOf(_selector) > 0) {\n // eslint-disable-next-line no-param-reassign\n selectors[0] = selectors[0].replace(_selectorRegexp, selfReferenceReplacer);\n }\n};\n\nstylis.use([selfReferenceReplacementPlugin, parseRulesPlugin, returnRulesPlugin]);\nstylisSplitter.use([parseRulesPlugin, returnRulesPlugin]);\n\nvar splitByRules = function splitByRules(css) {\n return stylisSplitter('', css);\n};\n\n// \n/* eslint-disable camelcase, no-undef */\n\nvar getNonce = (function () {\n return typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n});\n\n// \n/* These are helpers for the StyleTags to keep track of the injected\n * rule names for each (component) ID that they're keeping track of.\n * They're crucial for detecting whether a name has already been\n * injected.\n * (This excludes rehydrated names) */\n\n/* adds a new ID:name pairing to a names dictionary */\nvar addNameForId = function addNameForId(names, id, name) {\n if (name) {\n // eslint-disable-next-line no-param-reassign\n var namesForId = names[id] || (names[id] = Object.create(null));\n namesForId[name] = true;\n }\n};\n\n/* resets an ID entirely by overwriting it in the dictionary */\nvar resetIdNames = function resetIdNames(names, id) {\n // eslint-disable-next-line no-param-reassign\n names[id] = Object.create(null);\n};\n\n/* factory for a names dictionary checking the existance of an ID:name pairing */\nvar hasNameForId = function hasNameForId(names) {\n return function (id, name) {\n return names[id] !== undefined && names[id][name];\n };\n};\n\n/* stringifies names for the html/element output */\nvar stringifyNames = function stringifyNames(names) {\n var str = '';\n // eslint-disable-next-line guard-for-in\n for (var id in names) {\n str += Object.keys(names[id]).join(' ') + ' ';\n }\n return str.trim();\n};\n\n/* clones the nested names dictionary */\nvar cloneNames = function cloneNames(names) {\n var clone = Object.create(null);\n // eslint-disable-next-line guard-for-in\n for (var id in names) {\n clone[id] = _extends({}, names[id]);\n }\n return clone;\n};\n\n// \n\n/* These are helpers that deal with the insertRule (aka speedy) API\n * They are used in the StyleTags and specifically the speedy tag\n */\n\n/* retrieve a sheet for a given style tag */\nvar sheetForTag = function sheetForTag(tag) {\n // $FlowFixMe\n if (tag.sheet) return tag.sheet;\n\n /* Firefox quirk requires us to step through all stylesheets to find one owned by the given tag */\n var size = document.styleSheets.length;\n for (var i = 0; i < size; i += 1) {\n var sheet = document.styleSheets[i];\n // $FlowFixMe\n if (sheet.ownerNode === tag) return sheet;\n }\n\n /* we should always be able to find a tag */\n throw new StyledComponentsError(10);\n};\n\n/* insert a rule safely and return whether it was actually injected */\nvar safeInsertRule = function safeInsertRule(sheet, cssRule, index) {\n /* abort early if cssRule string is falsy */\n if (!cssRule) return false;\n\n var maxIndex = sheet.cssRules.length;\n\n try {\n /* use insertRule and cap passed index with maxIndex (no of cssRules) */\n sheet.insertRule(cssRule, index <= maxIndex ? index : maxIndex);\n } catch (err) {\n /* any error indicates an invalid rule */\n return false;\n }\n\n return true;\n};\n\n/* deletes `size` rules starting from `removalIndex` */\nvar deleteRules = function deleteRules(sheet, removalIndex, size) {\n var lowerBound = removalIndex - size;\n for (var i = removalIndex; i > lowerBound; i -= 1) {\n sheet.deleteRule(i);\n }\n};\n\n// \n\n/* this marker separates component styles and is important for rehydration */\nvar makeTextMarker = function makeTextMarker(id) {\n return '\\n/* sc-component-id: ' + id + ' */\\n';\n};\n\n/* add up all numbers in array up until and including the index */\nvar addUpUntilIndex = function addUpUntilIndex(sizes, index) {\n var totalUpToIndex = 0;\n for (var i = 0; i <= index; i += 1) {\n totalUpToIndex += sizes[i];\n }\n\n return totalUpToIndex;\n};\n\n/* create a new style tag after lastEl */\nvar makeStyleTag = function makeStyleTag(target, tagEl, insertBefore) {\n var el = document.createElement('style');\n el.setAttribute(SC_ATTR, '');\n el.setAttribute(SC_VERSION_ATTR, \"4.1.3\");\n\n var nonce = getNonce();\n if (nonce) {\n el.setAttribute('nonce', nonce);\n }\n\n /* Work around insertRule quirk in EdgeHTML */\n el.appendChild(document.createTextNode(''));\n\n if (target && !tagEl) {\n /* Append to target when no previous element was passed */\n target.appendChild(el);\n } else {\n if (!tagEl || !target || !tagEl.parentNode) {\n throw new StyledComponentsError(6);\n }\n\n /* Insert new style tag after the previous one */\n tagEl.parentNode.insertBefore(el, insertBefore ? tagEl : tagEl.nextSibling);\n }\n\n return el;\n};\n\n/* takes a css factory function and outputs an html styled tag factory */\nvar wrapAsHtmlTag = function wrapAsHtmlTag(css, names) {\n return function (additionalAttrs) {\n var nonce = getNonce();\n var attrs = [nonce && 'nonce=\"' + nonce + '\"', SC_ATTR + '=\"' + stringifyNames(names) + '\"', SC_VERSION_ATTR + '=\"' + \"4.1.3\" + '\"', additionalAttrs];\n\n var htmlAttr = attrs.filter(Boolean).join(' ');\n return '';\n };\n};\n\n/* takes a css factory function and outputs an element factory */\nvar wrapAsElement = function wrapAsElement(css, names) {\n return function () {\n var _props;\n\n var props = (_props = {}, _props[SC_ATTR] = stringifyNames(names), _props[SC_VERSION_ATTR] = \"4.1.3\", _props);\n\n var nonce = getNonce();\n if (nonce) {\n // $FlowFixMe\n props.nonce = nonce;\n }\n\n // eslint-disable-next-line react/no-danger\n return React__default.createElement('style', _extends({}, props, { dangerouslySetInnerHTML: { __html: css() } }));\n };\n};\n\nvar getIdsFromMarkersFactory = function getIdsFromMarkersFactory(markers) {\n return function () {\n return Object.keys(markers);\n };\n};\n\n/* speedy tags utilise insertRule */\nvar makeSpeedyTag = function makeSpeedyTag(el, getImportRuleTag) {\n var names = Object.create(null);\n var markers = Object.create(null);\n var sizes = [];\n\n var extractImport = getImportRuleTag !== undefined;\n /* indicates whether getImportRuleTag was called */\n var usedImportRuleTag = false;\n\n var insertMarker = function insertMarker(id) {\n var prev = markers[id];\n if (prev !== undefined) {\n return prev;\n }\n\n markers[id] = sizes.length;\n sizes.push(0);\n resetIdNames(names, id);\n\n return markers[id];\n };\n\n var insertRules = function insertRules(id, cssRules, name) {\n var marker = insertMarker(id);\n var sheet = sheetForTag(el);\n var insertIndex = addUpUntilIndex(sizes, marker);\n\n var injectedRules = 0;\n var importRules = [];\n var cssRulesSize = cssRules.length;\n\n for (var i = 0; i < cssRulesSize; i += 1) {\n var cssRule = cssRules[i];\n var mayHaveImport = extractImport; /* @import rules are reordered to appear first */\n if (mayHaveImport && cssRule.indexOf('@import') !== -1) {\n importRules.push(cssRule);\n } else if (safeInsertRule(sheet, cssRule, insertIndex + injectedRules)) {\n mayHaveImport = false;\n injectedRules += 1;\n }\n }\n\n if (extractImport && importRules.length > 0) {\n usedImportRuleTag = true;\n // $FlowFixMe\n getImportRuleTag().insertRules(id + '-import', importRules);\n }\n\n sizes[marker] += injectedRules; /* add up no of injected rules */\n addNameForId(names, id, name);\n };\n\n var removeRules = function removeRules(id) {\n var marker = markers[id];\n if (marker === undefined) return;\n\n var size = sizes[marker];\n var sheet = sheetForTag(el);\n var removalIndex = addUpUntilIndex(sizes, marker) - 1;\n deleteRules(sheet, removalIndex, size);\n sizes[marker] = 0;\n resetIdNames(names, id);\n\n if (extractImport && usedImportRuleTag) {\n // $FlowFixMe\n getImportRuleTag().removeRules(id + '-import');\n }\n };\n\n var css = function css() {\n var _sheetForTag = sheetForTag(el),\n cssRules = _sheetForTag.cssRules;\n\n var str = '';\n\n // eslint-disable-next-line guard-for-in\n for (var id in markers) {\n str += makeTextMarker(id);\n var marker = markers[id];\n var end = addUpUntilIndex(sizes, marker);\n var size = sizes[marker];\n for (var i = end - size; i < end; i += 1) {\n var rule = cssRules[i];\n if (rule !== undefined) {\n str += rule.cssText;\n }\n }\n }\n\n return str;\n };\n\n return {\n clone: function clone() {\n throw new StyledComponentsError(5);\n },\n\n css: css,\n getIds: getIdsFromMarkersFactory(markers),\n hasNameForId: hasNameForId(names),\n insertMarker: insertMarker,\n insertRules: insertRules,\n removeRules: removeRules,\n sealed: false,\n styleTag: el,\n toElement: wrapAsElement(css, names),\n toHTML: wrapAsHtmlTag(css, names)\n };\n};\n\nvar makeTextNode = function makeTextNode(id) {\n return document.createTextNode(makeTextMarker(id));\n};\n\nvar makeBrowserTag = function makeBrowserTag(el, getImportRuleTag) {\n var names = Object.create(null);\n var markers = Object.create(null);\n\n var extractImport = getImportRuleTag !== undefined;\n\n /* indicates whether getImportRuleTag was called */\n var usedImportRuleTag = false;\n\n var insertMarker = function insertMarker(id) {\n var prev = markers[id];\n if (prev !== undefined) {\n return prev;\n }\n\n markers[id] = makeTextNode(id);\n el.appendChild(markers[id]);\n names[id] = Object.create(null);\n\n return markers[id];\n };\n\n var insertRules = function insertRules(id, cssRules, name) {\n var marker = insertMarker(id);\n var importRules = [];\n var cssRulesSize = cssRules.length;\n\n for (var i = 0; i < cssRulesSize; i += 1) {\n var rule = cssRules[i];\n var mayHaveImport = extractImport;\n if (mayHaveImport && rule.indexOf('@import') !== -1) {\n importRules.push(rule);\n } else {\n mayHaveImport = false;\n var separator = i === cssRulesSize - 1 ? '' : ' ';\n marker.appendData('' + rule + separator);\n }\n }\n\n addNameForId(names, id, name);\n\n if (extractImport && importRules.length > 0) {\n usedImportRuleTag = true;\n // $FlowFixMe\n getImportRuleTag().insertRules(id + '-import', importRules);\n }\n };\n\n var removeRules = function removeRules(id) {\n var marker = markers[id];\n if (marker === undefined) return;\n\n /* create new empty text node and replace the current one */\n var newMarker = makeTextNode(id);\n el.replaceChild(newMarker, marker);\n markers[id] = newMarker;\n resetIdNames(names, id);\n\n if (extractImport && usedImportRuleTag) {\n // $FlowFixMe\n getImportRuleTag().removeRules(id + '-import');\n }\n };\n\n var css = function css() {\n var str = '';\n\n // eslint-disable-next-line guard-for-in\n for (var id in markers) {\n str += markers[id].data;\n }\n\n return str;\n };\n\n return {\n clone: function clone() {\n throw new StyledComponentsError(5);\n },\n\n css: css,\n getIds: getIdsFromMarkersFactory(markers),\n hasNameForId: hasNameForId(names),\n insertMarker: insertMarker,\n insertRules: insertRules,\n removeRules: removeRules,\n sealed: false,\n styleTag: el,\n toElement: wrapAsElement(css, names),\n toHTML: wrapAsHtmlTag(css, names)\n };\n};\n\nvar makeServerTag = function makeServerTag(namesArg, markersArg) {\n var names = namesArg === undefined ? Object.create(null) : namesArg;\n var markers = markersArg === undefined ? Object.create(null) : markersArg;\n\n var insertMarker = function insertMarker(id) {\n var prev = markers[id];\n if (prev !== undefined) {\n return prev;\n }\n\n return markers[id] = [''];\n };\n\n var insertRules = function insertRules(id, cssRules, name) {\n var marker = insertMarker(id);\n marker[0] += cssRules.join(' ');\n addNameForId(names, id, name);\n };\n\n var removeRules = function removeRules(id) {\n var marker = markers[id];\n if (marker === undefined) return;\n marker[0] = '';\n resetIdNames(names, id);\n };\n\n var css = function css() {\n var str = '';\n // eslint-disable-next-line guard-for-in\n for (var id in markers) {\n var cssForId = markers[id][0];\n if (cssForId) {\n str += makeTextMarker(id) + cssForId;\n }\n }\n return str;\n };\n\n var clone = function clone() {\n var namesClone = cloneNames(names);\n var markersClone = Object.create(null);\n\n // eslint-disable-next-line guard-for-in\n for (var id in markers) {\n markersClone[id] = [markers[id][0]];\n }\n\n return makeServerTag(namesClone, markersClone);\n };\n\n var tag = {\n clone: clone,\n css: css,\n getIds: getIdsFromMarkersFactory(markers),\n hasNameForId: hasNameForId(names),\n insertMarker: insertMarker,\n insertRules: insertRules,\n removeRules: removeRules,\n sealed: false,\n styleTag: null,\n toElement: wrapAsElement(css, names),\n toHTML: wrapAsHtmlTag(css, names)\n };\n\n return tag;\n};\n\nvar makeTag = function makeTag(target, tagEl, forceServer, insertBefore, getImportRuleTag) {\n if (IS_BROWSER && !forceServer) {\n var el = makeStyleTag(target, tagEl, insertBefore);\n\n if (DISABLE_SPEEDY) {\n return makeBrowserTag(el, getImportRuleTag);\n } else {\n return makeSpeedyTag(el, getImportRuleTag);\n }\n }\n\n return makeServerTag();\n};\n\nvar rehydrate = function rehydrate(tag, els, extracted) {\n /* add all extracted components to the new tag */\n for (var i = 0, len = extracted.length; i < len; i += 1) {\n var _extracted$i = extracted[i],\n componentId = _extracted$i.componentId,\n cssFromDOM = _extracted$i.cssFromDOM;\n\n var cssRules = splitByRules(cssFromDOM);\n tag.insertRules(componentId, cssRules);\n }\n\n /* remove old HTMLStyleElements, since they have been rehydrated */\n for (var _i = 0, _len = els.length; _i < _len; _i += 1) {\n var el = els[_i];\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n }\n};\n\n// \n\nvar SPLIT_REGEX = /\\s+/;\n\n/* determine the maximum number of components before tags are sharded */\nvar MAX_SIZE = void 0;\nif (IS_BROWSER) {\n /* in speedy mode we can keep a lot more rules in a sheet before a slowdown can be expected */\n MAX_SIZE = DISABLE_SPEEDY ? 40 : 1000;\n} else {\n /* for servers we do not need to shard at all */\n MAX_SIZE = -1;\n}\n\nvar sheetRunningId = 0;\nvar master = void 0;\n\nvar StyleSheet = function () {\n\n /* a map from ids to tags */\n\n /* deferred rules for a given id */\n\n /* this is used for not reinjecting rules via hasNameForId() */\n\n /* when rules for an id are removed using remove() we have to ignore rehydratedNames for it */\n\n /* a list of tags belonging to this StyleSheet */\n\n /* a tag for import rules */\n\n /* current capacity until a new tag must be created */\n\n /* children (aka clones) of this StyleSheet inheriting all and future injections */\n\n function StyleSheet() {\n var _this = this;\n\n var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : IS_BROWSER ? document.head : null;\n var forceServer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n classCallCheck(this, StyleSheet);\n\n this.getImportRuleTag = function () {\n var importRuleTag = _this.importRuleTag;\n\n if (importRuleTag !== undefined) {\n return importRuleTag;\n }\n\n var firstTag = _this.tags[0];\n var insertBefore = true;\n\n return _this.importRuleTag = makeTag(_this.target, firstTag ? firstTag.styleTag : null, _this.forceServer, insertBefore);\n };\n\n sheetRunningId += 1;\n this.id = sheetRunningId;\n this.forceServer = forceServer;\n this.target = forceServer ? null : target;\n this.tagMap = {};\n this.deferred = {};\n this.rehydratedNames = {};\n this.ignoreRehydratedNames = {};\n this.tags = [];\n this.capacity = 1;\n this.clones = [];\n }\n\n /* rehydrate all SSR'd style tags */\n\n\n StyleSheet.prototype.rehydrate = function rehydrate$$1() {\n if (!IS_BROWSER || this.forceServer) return this;\n\n var els = [];\n var extracted = [];\n var isStreamed = false;\n\n /* retrieve all of our SSR style elements from the DOM */\n var nodes = document.querySelectorAll('style[' + SC_ATTR + '][' + SC_VERSION_ATTR + '=\"' + \"4.1.3\" + '\"]');\n\n var nodesSize = nodes.length;\n\n /* abort rehydration if no previous style tags were found */\n if (!nodesSize) return this;\n\n for (var i = 0; i < nodesSize; i += 1) {\n var el = nodes[i];\n\n /* check if style tag is a streamed tag */\n if (!isStreamed) isStreamed = !!el.getAttribute(SC_STREAM_ATTR);\n\n /* retrieve all component names */\n var elNames = (el.getAttribute(SC_ATTR) || '').trim().split(SPLIT_REGEX);\n var elNamesSize = elNames.length;\n for (var j = 0, name; j < elNamesSize; j += 1) {\n name = elNames[j];\n /* add rehydrated name to sheet to avoid re-adding styles */\n this.rehydratedNames[name] = true;\n }\n\n /* extract all components and their CSS */\n extracted.push.apply(extracted, extractComps(el.textContent));\n\n /* store original HTMLStyleElement */\n els.push(el);\n }\n\n /* abort rehydration if nothing was extracted */\n var extractedSize = extracted.length;\n if (!extractedSize) return this;\n\n /* create a tag to be used for rehydration */\n var tag = this.makeTag(null);\n\n rehydrate(tag, els, extracted);\n\n /* reset capacity and adjust MAX_SIZE by the initial size of the rehydration */\n this.capacity = Math.max(1, MAX_SIZE - extractedSize);\n this.tags.push(tag);\n\n /* retrieve all component ids */\n for (var _j = 0; _j < extractedSize; _j += 1) {\n this.tagMap[extracted[_j].componentId] = tag;\n }\n\n return this;\n };\n\n /* retrieve a \"master\" instance of StyleSheet which is typically used when no other is available\n * The master StyleSheet is targeted by createGlobalStyle, keyframes, and components outside of any\n * StyleSheetManager's context */\n\n\n /* reset the internal \"master\" instance */\n StyleSheet.reset = function reset() {\n var forceServer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n master = new StyleSheet(undefined, forceServer).rehydrate();\n };\n\n /* adds \"children\" to the StyleSheet that inherit all of the parents' rules\n * while their own rules do not affect the parent */\n\n\n StyleSheet.prototype.clone = function clone() {\n var sheet = new StyleSheet(this.target, this.forceServer);\n\n /* add to clone array */\n this.clones.push(sheet);\n\n /* clone all tags */\n sheet.tags = this.tags.map(function (tag) {\n var ids = tag.getIds();\n var newTag = tag.clone();\n\n /* reconstruct tagMap */\n for (var i = 0; i < ids.length; i += 1) {\n sheet.tagMap[ids[i]] = newTag;\n }\n\n return newTag;\n });\n\n /* clone other maps */\n sheet.rehydratedNames = _extends({}, this.rehydratedNames);\n sheet.deferred = _extends({}, this.deferred);\n\n return sheet;\n };\n\n /* force StyleSheet to create a new tag on the next injection */\n\n\n StyleSheet.prototype.sealAllTags = function sealAllTags() {\n this.capacity = 1;\n\n this.tags.forEach(function (tag) {\n // eslint-disable-next-line no-param-reassign\n tag.sealed = true;\n });\n };\n\n StyleSheet.prototype.makeTag = function makeTag$$1(tag) {\n var lastEl = tag ? tag.styleTag : null;\n var insertBefore = false;\n\n return makeTag(this.target, lastEl, this.forceServer, insertBefore, this.getImportRuleTag);\n };\n\n /* get a tag for a given componentId, assign the componentId to one, or shard */\n StyleSheet.prototype.getTagForId = function getTagForId(id) {\n /* simply return a tag, when the componentId was already assigned one */\n var prev = this.tagMap[id];\n if (prev !== undefined && !prev.sealed) {\n return prev;\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n /* shard (create a new tag) if the tag is exhausted (See MAX_SIZE) */\n this.capacity -= 1;\n\n if (this.capacity === 0) {\n this.capacity = MAX_SIZE;\n tag = this.makeTag(tag);\n this.tags.push(tag);\n }\n\n return this.tagMap[id] = tag;\n };\n\n /* mainly for createGlobalStyle to check for its id */\n\n\n StyleSheet.prototype.hasId = function hasId(id) {\n return this.tagMap[id] !== undefined;\n };\n\n /* caching layer checking id+name to already have a corresponding tag and injected rules */\n\n\n StyleSheet.prototype.hasNameForId = function hasNameForId(id, name) {\n /* exception for rehydrated names which are checked separately */\n if (this.ignoreRehydratedNames[id] === undefined && this.rehydratedNames[name]) {\n return true;\n }\n\n var tag = this.tagMap[id];\n return tag !== undefined && tag.hasNameForId(id, name);\n };\n\n /* registers a componentId and registers it on its tag */\n\n\n StyleSheet.prototype.deferredInject = function deferredInject(id, cssRules) {\n /* don't inject when the id is already registered */\n if (this.tagMap[id] !== undefined) return;\n\n var clones = this.clones;\n\n for (var i = 0; i < clones.length; i += 1) {\n clones[i].deferredInject(id, cssRules);\n }\n\n this.getTagForId(id).insertMarker(id);\n this.deferred[id] = cssRules;\n };\n\n /* injects rules for a given id with a name that will need to be cached */\n\n\n StyleSheet.prototype.inject = function inject(id, cssRules, name) {\n var clones = this.clones;\n\n\n for (var i = 0; i < clones.length; i += 1) {\n clones[i].inject(id, cssRules, name);\n }\n\n var tag = this.getTagForId(id);\n\n /* add deferred rules for component */\n if (this.deferred[id] !== undefined) {\n // Combine passed cssRules with previously deferred CSS rules\n // NOTE: We cannot mutate the deferred array itself as all clones\n // do the same (see clones[i].inject)\n var rules = this.deferred[id].concat(cssRules);\n tag.insertRules(id, rules, name);\n\n this.deferred[id] = undefined;\n } else {\n tag.insertRules(id, cssRules, name);\n }\n };\n\n /* removes all rules for a given id, which doesn't remove its marker but resets it */\n\n\n StyleSheet.prototype.remove = function remove(id) {\n var tag = this.tagMap[id];\n if (tag === undefined) return;\n\n var clones = this.clones;\n\n for (var i = 0; i < clones.length; i += 1) {\n clones[i].remove(id);\n }\n\n /* remove all rules from the tag */\n tag.removeRules(id);\n\n /* ignore possible rehydrated names */\n this.ignoreRehydratedNames[id] = true;\n\n /* delete possible deferred rules */\n this.deferred[id] = undefined;\n };\n\n StyleSheet.prototype.toHTML = function toHTML() {\n return this.tags.map(function (tag) {\n return tag.toHTML();\n }).join('');\n };\n\n StyleSheet.prototype.toReactElements = function toReactElements() {\n var id = this.id;\n\n\n return this.tags.map(function (tag, i) {\n var key = 'sc-' + id + '-' + i;\n return React.cloneElement(tag.toElement(), { key: key });\n });\n };\n\n createClass(StyleSheet, null, [{\n key: 'master',\n get: function get$$1() {\n return master || (master = new StyleSheet().rehydrate());\n }\n\n /* NOTE: This is just for backwards-compatibility with jest-styled-components */\n\n }, {\n key: 'instance',\n get: function get$$1() {\n return StyleSheet.master;\n }\n }]);\n return StyleSheet;\n}();\n\n// \n\nvar Keyframes = function () {\n function Keyframes(name, rules) {\n var _this = this;\n\n classCallCheck(this, Keyframes);\n\n this.inject = function (styleSheet) {\n if (!styleSheet.hasNameForId(_this.id, _this.name)) {\n styleSheet.inject(_this.id, _this.rules, _this.name);\n }\n };\n\n this.toString = function () {\n throw new StyledComponentsError(12, String(_this.name));\n };\n\n this.name = name;\n this.rules = rules;\n\n this.id = 'sc-keyframes-' + name;\n }\n\n Keyframes.prototype.getName = function getName() {\n return this.name;\n };\n\n return Keyframes;\n}();\n\n// \n\n/**\n * inlined version of\n * https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/hyphenateStyleName.js\n */\n\nvar uppercasePattern = /([A-Z])/g;\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return string.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern, '-ms-');\n}\n\n// \n\n// Taken from https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/dangerousStyleValue.js\nfunction addUnitIfNeeded(name, value) {\n // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133\n // $FlowFixMe\n if (value == null || typeof value === 'boolean' || value === '') {\n return '';\n }\n\n if (typeof value === 'number' && value !== 0 && !(name in unitless)) {\n return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers\n }\n\n return String(value).trim();\n}\n\n// \n\n/**\n * It's falsish not falsy because 0 is allowed.\n */\nvar isFalsish = function isFalsish(chunk) {\n return chunk === undefined || chunk === null || chunk === false || chunk === '';\n};\n\nvar objToCss = function objToCss(obj, prevKey) {\n var css = Object.keys(obj).filter(function (key) {\n return !isFalsish(obj[key]);\n }).map(function (key) {\n if (isPlainObject(obj[key])) return objToCss(obj[key], key);\n return hyphenateStyleName(key) + ': ' + addUnitIfNeeded(key, obj[key]) + ';';\n }).join(' ');\n return prevKey ? prevKey + ' {\\n ' + css + '\\n}' : css;\n};\n\nfunction flatten(chunk, executionContext, styleSheet) {\n if (Array.isArray(chunk)) {\n var ruleSet = [];\n\n for (var i = 0, len = chunk.length, result; i < len; i += 1) {\n result = flatten(chunk[i], executionContext, styleSheet);\n\n if (result === null) continue;else if (Array.isArray(result)) ruleSet.push.apply(ruleSet, result);else ruleSet.push(result);\n }\n\n return ruleSet;\n }\n\n if (isFalsish(chunk)) {\n return null;\n }\n\n /* Handle other components */\n if (isStyledComponent(chunk)) {\n return '.' + chunk.styledComponentId;\n }\n\n /* Either execute or defer the function */\n if (isFunction(chunk)) {\n if (executionContext) {\n var shouldThrow = false;\n\n try {\n // eslint-disable-next-line new-cap\n if (reactIs.isElement(new chunk(executionContext))) {\n shouldThrow = true;\n }\n } catch (e) {\n /* */\n }\n\n if (shouldThrow) {\n throw new StyledComponentsError(13, getComponentName(chunk));\n }\n\n return flatten(chunk(executionContext), executionContext, styleSheet);\n } else return chunk;\n }\n\n if (chunk instanceof Keyframes) {\n if (styleSheet) {\n chunk.inject(styleSheet);\n return chunk.getName();\n } else return chunk;\n }\n\n /* Handle objects */\n return isPlainObject(chunk) ? objToCss(chunk) : chunk.toString();\n}\n\n// \nvar printed = {};\n\nfunction warnOnce(message) {\n if (printed[message]) return;\n printed[message] = true;\n\n if (typeof console !== 'undefined' && console.warn) console.warn(message);\n}\n\n// \nvar SINGLE_QUOTE = \"'\".charCodeAt(0);\nvar DOUBLE_QUOTE = '\"'.charCodeAt(0);\nvar BACKSLASH = '\\\\'.charCodeAt(0);\nvar SLASH = '/'.charCodeAt(0);\nvar NEWLINE = '\\n'.charCodeAt(0);\nvar SPACE = ' '.charCodeAt(0);\nvar FEED = '\\f'.charCodeAt(0);\nvar TAB = '\\t'.charCodeAt(0);\nvar CR = '\\r'.charCodeAt(0);\nvar OPEN_SQUARE = '['.charCodeAt(0);\nvar CLOSE_SQUARE = ']'.charCodeAt(0);\nvar OPEN_PARENTHESES = '('.charCodeAt(0);\nvar CLOSE_PARENTHESES = ')'.charCodeAt(0);\nvar OPEN_CURLY = '{'.charCodeAt(0);\nvar CLOSE_CURLY = '}'.charCodeAt(0);\nvar SEMICOLON = ';'.charCodeAt(0);\nvar ASTERISK = '*'.charCodeAt(0);\nvar COLON = ':'.charCodeAt(0);\nvar AT = '@'.charCodeAt(0);\n\nvar RE_AT_END = /[ \\n\\t\\r\\f\\{\\(\\)'\"\\\\;/\\[\\]#]/g;\nvar RE_WORD_END = /[ \\n\\t\\r\\f\\(\\)\\{\\}:;@!'\"\\\\\\]\\[#]|\\/(?=\\*)/g;\nvar RE_BAD_BRACKET = /.[\\\\\\/\\(\"'\\n]/;\n\nfunction tokenize(input) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var tokens = [];\n var css = input.css.valueOf();\n\n var ignore = options.ignoreErrors;\n\n var code = void 0,\n next = void 0,\n quote = void 0,\n lines = void 0,\n last = void 0,\n content = void 0,\n escape = void 0,\n nextLine = void 0,\n nextOffset = void 0,\n escaped = void 0,\n escapePos = void 0,\n prev = void 0,\n n = void 0;\n\n var length = css.length;\n var offset = -1;\n var line = 1;\n var pos = 0;\n\n function unclosed(what) {\n throw input.error('Unclosed ' + what, line, pos - offset);\n }\n\n while (pos < length) {\n code = css.charCodeAt(pos);\n\n if (code === NEWLINE || code === FEED || code === CR && css.charCodeAt(pos + 1) !== NEWLINE) {\n offset = pos;\n line += 1;\n }\n\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED:\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n if (code === NEWLINE) {\n offset = next;\n line += 1;\n }\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n\n tokens.push(['space', css.slice(pos, next)]);\n pos = next - 1;\n break;\n\n case OPEN_SQUARE:\n tokens.push(['[', '[', line, pos - offset]);\n break;\n\n case CLOSE_SQUARE:\n tokens.push([']', ']', line, pos - offset]);\n break;\n\n case OPEN_CURLY:\n tokens.push(['{', '{', line, pos - offset]);\n break;\n\n case CLOSE_CURLY:\n tokens.push(['}', '}', line, pos - offset]);\n break;\n\n case COLON:\n tokens.push([':', ':', line, pos - offset]);\n break;\n\n case SEMICOLON:\n tokens.push([';', ';', line, pos - offset]);\n break;\n\n case OPEN_PARENTHESES:\n prev = tokens.length ? tokens[tokens.length - 1][1] : '';\n n = css.charCodeAt(pos + 1);\n if (prev === 'url' && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(')', next + 1);\n if (next === -1) {\n if (ignore) {\n next = pos;\n break;\n } else {\n unclosed('bracket');\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n\n tokens.push(['brackets', css.slice(pos, next + 1), line, pos - offset, line, next - offset]);\n pos = next;\n } else {\n next = css.indexOf(')', pos + 1);\n content = css.slice(pos, next + 1);\n\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n tokens.push(['(', '(', line, pos - offset]);\n } else {\n tokens.push(['brackets', content, line, pos - offset, line, next - offset]);\n pos = next;\n }\n }\n\n break;\n\n case CLOSE_PARENTHESES:\n tokens.push([')', ')', line, pos - offset]);\n break;\n\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE:\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore) {\n next = pos + 1;\n break;\n } else {\n unclosed('quote');\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n\n content = css.slice(pos, next + 1);\n lines = content.split('\\n');\n last = lines.length - 1;\n\n if (last > 0) {\n nextLine = line + last;\n nextOffset = next - lines[last].length;\n } else {\n nextLine = line;\n nextOffset = offset;\n }\n\n tokens.push(['string', css.slice(pos, next + 1), line, pos - offset, nextLine, next - nextOffset]);\n\n offset = nextOffset;\n line = nextLine;\n pos = next;\n break;\n\n case AT:\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n tokens.push(['at-word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]);\n pos = next;\n break;\n\n case BACKSLASH:\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n }\n tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]);\n pos = next;\n break;\n\n default:\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf('*/', pos + 2) + 1;\n if (next === 0) {\n if (ignore) {\n next = css.length;\n } else {\n unclosed('comment');\n }\n }\n\n content = css.slice(pos, next + 1);\n lines = content.split('\\n');\n last = lines.length - 1;\n\n if (last > 0) {\n nextLine = line + last;\n nextOffset = next - lines[last].length;\n } else {\n nextLine = line;\n nextOffset = offset;\n }\n\n tokens.push(['comment', content, line, pos - offset, nextLine, next - nextOffset]);\n\n offset = nextOffset;\n line = nextLine;\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n\n tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]);\n pos = next;\n }\n\n break;\n }\n\n pos++;\n }\n\n return tokens;\n}\n\n// \n\nvar HIGHLIGHT_THEME = {\n brackets: [36, 39], // cyan\n string: [31, 39], // red\n 'at-word': [31, 39], // red\n comment: [90, 39], // gray\n '{': [32, 39], // green\n '}': [32, 39], // green\n ':': [1, 22], // bold\n ';': [1, 22], // bold\n '(': [1, 22], // bold\n ')': [1, 22] // bold\n};\n\nfunction code(color) {\n return '\\x1B[' + color + 'm';\n}\n\nfunction terminalHighlight(css) {\n var tokens = tokenize(new Input(css), { ignoreErrors: true });\n var result = [];\n tokens.forEach(function (token) {\n var color = HIGHLIGHT_THEME[token[0]];\n if (color) {\n result.push(token[1].split(/\\r?\\n/).map(function (i) {\n return code(color[0]) + i + code(color[1]);\n }).join('\\n'));\n } else {\n result.push(token[1]);\n }\n });\n return result.join('');\n}\n\n// \n\n/**\n * The CSS parser throws this error for broken CSS.\n *\n * Custom parsers can throw this error for broken custom syntax using\n * the {@link Node#error} method.\n *\n * PostCSS will use the input source map to detect the original error location.\n * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS,\n * PostCSS will show the original position in the Sass file.\n *\n * If you need the position in the PostCSS input\n * (e.g., to debug the previous compiler), use `error.input.file`.\n *\n * @example\n * // Catching and checking syntax error\n * try {\n * postcss.parse('a{')\n * } catch (error) {\n * if ( error.name === 'CssSyntaxError' ) {\n * error //=> CssSyntaxError\n * }\n * }\n *\n * @example\n * // Raising error from plugin\n * throw node.error('Unknown variable', { plugin: 'postcss-vars' });\n */\n\nvar CssSyntaxError = function () {\n /**\n * @param {string} message - error message\n * @param {number} [line] - source line of the error\n * @param {number} [column] - source column of the error\n * @param {string} [source] - source code of the broken file\n * @param {string} [file] - absolute path to the broken file\n * @param {string} [plugin] - PostCSS plugin name, if error came from plugin\n */\n function CssSyntaxError(message, line, column, source, file, plugin) {\n classCallCheck(this, CssSyntaxError);\n\n /**\n * @member {string} - Always equal to `'CssSyntaxError'`. You should\n * always check error type\n * by `error.name === 'CssSyntaxError'` instead of\n * `error instanceof CssSyntaxError`, because\n * npm could have several PostCSS versions.\n *\n * @example\n * if ( error.name === 'CssSyntaxError' ) {\n * error //=> CssSyntaxError\n * }\n */\n this.name = 'CssSyntaxError';\n /**\n * @member {string} - Error message.\n *\n * @example\n * error.message //=> 'Unclosed block'\n */\n this.reason = message;\n\n if (file) {\n /**\n * @member {string} - Absolute path to the broken file.\n *\n * @example\n * error.file //=> 'a.sass'\n * error.input.file //=> 'a.css'\n */\n this.file = file;\n }\n if (source) {\n /**\n * @member {string} - Source code of the broken file.\n *\n * @example\n * error.source //=> 'a { b {} }'\n * error.input.column //=> 'a b { }'\n */\n this.source = source;\n }\n if (plugin) {\n /**\n * @member {string} - Plugin name, if error came from plugin.\n *\n * @example\n * error.plugin //=> 'postcss-vars'\n */\n this.plugin = plugin;\n }\n if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n /**\n * @member {number} - Source line of the error.\n *\n * @example\n * error.line //=> 2\n * error.input.line //=> 4\n */\n this.line = line;\n /**\n * @member {number} - Source column of the error.\n *\n * @example\n * error.column //=> 1\n * error.input.column //=> 4\n */\n this.column = column;\n }\n\n this.setMessage();\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n\n CssSyntaxError.prototype.setMessage = function setMessage() {\n /**\n * @member {string} - Full error text in the GNU error format\n * with plugin, file, line and column.\n *\n * @example\n * error.message //=> 'a.css:1:1: Unclosed block'\n */\n this.message = this.plugin ? this.plugin + ': ' : '';\n this.message += this.file ? this.file : '';\n if (typeof this.line !== 'undefined') {\n this.message += ':' + this.line + ':' + this.column;\n }\n this.message += ': ' + this.reason;\n };\n\n /**\n * Returns a few lines of CSS source that caused the error.\n *\n * If the CSS has an input source map without `sourceContent`,\n * this method will return an empty string.\n *\n * @param {boolean} [color] whether arrow will be colored red by terminal\n * color codes. By default, PostCSS will detect\n * color support by `process.stdout.isTTY`\n * and `process.env.NODE_DISABLE_COLORS`.\n *\n * @example\n * error.showSourceCode() //=> \" 4 | }\n * // 5 | a {\n * // > 6 | bad\n * // | ^\n * // 7 | }\n * // 8 | b {\"\n *\n * @return {string} few lines of CSS source that caused the error\n */\n\n\n CssSyntaxError.prototype.showSourceCode = function showSourceCode(color) {\n var _this = this;\n\n if (!this.source) return '';\n\n var css = this.source;\n if (typeof color === 'undefined') color = supportsColor;\n if (color) css = terminalHighlight(css);\n\n var lines = css.split(/\\r?\\n/);\n var start = Math.max(this.line - 3, 0);\n var end = Math.min(this.line + 2, lines.length);\n\n var maxWidth = String(end).length;\n\n return lines.slice(start, end).map(function (line, index) {\n var number = start + 1 + index;\n var padded = (' ' + number).slice(-maxWidth);\n var gutter = ' ' + padded + ' | ';\n if (number === _this.line) {\n var spacing = gutter.replace(/\\d/g, ' ') + line.slice(0, _this.column - 1).replace(/[^\\t]/g, ' ');\n return '>' + gutter + line + '\\n ' + spacing + '^';\n } else {\n return ' ' + gutter + line;\n }\n }).join('\\n');\n };\n\n /**\n * Returns error position, message and source code of the broken part.\n *\n * @example\n * error.toString() //=> \"CssSyntaxError: app.css:1:1: Unclosed block\n * // > 1 | a {\n * // | ^\"\n *\n * @return {string} error position, message and source code\n */\n\n\n CssSyntaxError.prototype.toString = function toString() {\n var code = this.showSourceCode();\n if (code) {\n code = '\\n\\n' + code + '\\n';\n }\n return this.name + ': ' + this.message + code;\n };\n\n createClass(CssSyntaxError, [{\n key: 'generated',\n get: function get$$1() {\n warnOnce('CssSyntaxError#generated is deprecated. Use input instead.');\n return this.input;\n }\n\n /**\n * @memberof CssSyntaxError#\n * @member {Input} input - Input object with PostCSS internal information\n * about input file. If input has source map\n * from previous tool, PostCSS will use origin\n * (for example, Sass) source. You can use this\n * object to get PostCSS input source.\n *\n * @example\n * error.input.file //=> 'a.css'\n * error.file //=> 'a.sass'\n */\n\n }]);\n return CssSyntaxError;\n}();\n\n// \n/* eslint-disable valid-jsdoc */\n\nvar defaultRaw = {\n colon: ': ',\n indent: ' ',\n beforeDecl: '\\n',\n beforeRule: '\\n',\n beforeOpen: ' ',\n beforeClose: '\\n',\n beforeComment: '\\n',\n after: '\\n',\n emptyBody: '',\n commentLeft: ' ',\n commentRight: ' '\n};\n\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\n\nvar Stringifier = function () {\n function Stringifier(builder) {\n classCallCheck(this, Stringifier);\n\n this.builder = builder;\n }\n\n Stringifier.prototype.stringify = function stringify(node, semicolon) {\n this[node.type](node, semicolon);\n };\n\n Stringifier.prototype.root = function root(node) {\n this.body(node);\n if (node.raws.after) this.builder(node.raws.after);\n };\n\n Stringifier.prototype.comment = function comment(node) {\n var left = this.raw(node, 'left', 'commentLeft');\n var right = this.raw(node, 'right', 'commentRight');\n this.builder('/*' + left + node.text + right + '*/', node);\n };\n\n Stringifier.prototype.decl = function decl(node, semicolon) {\n var between = this.raw(node, 'between', 'colon');\n var string = node.prop + between + this.rawValue(node, 'value');\n\n if (node.important) {\n string += node.raws.important || ' !important';\n }\n\n if (semicolon) string += ';';\n this.builder(string, node);\n };\n\n Stringifier.prototype.rule = function rule(node) {\n this.block(node, this.rawValue(node, 'selector'));\n };\n\n Stringifier.prototype.atrule = function atrule(node, semicolon) {\n var name = '@' + node.name;\n var params = node.params ? this.rawValue(node, 'params') : '';\n\n if (typeof node.raws.afterName !== 'undefined') {\n name += node.raws.afterName;\n } else if (params) {\n name += ' ';\n }\n\n if (node.nodes) {\n this.block(node, name + params);\n } else {\n var end = (node.raws.between || '') + (semicolon ? ';' : '');\n this.builder(name + params + end, node);\n }\n };\n\n Stringifier.prototype.body = function body(node) {\n var last = node.nodes.length - 1;\n while (last > 0) {\n if (node.nodes[last].type !== 'comment') break;\n last -= 1;\n }\n\n var semicolon = this.raw(node, 'semicolon');\n for (var i = 0; i < node.nodes.length; i++) {\n var child = node.nodes[i];\n var before = this.raw(child, 'before');\n if (before) this.builder(before);\n this.stringify(child, last !== i || semicolon);\n }\n };\n\n Stringifier.prototype.block = function block(node, start) {\n var between = this.raw(node, 'between', 'beforeOpen');\n this.builder(start + between + '{', node, 'start');\n\n var after = void 0;\n if (node.nodes && node.nodes.length) {\n this.body(node);\n after = this.raw(node, 'after');\n } else {\n after = this.raw(node, 'after', 'emptyBody');\n }\n\n if (after) this.builder(after);\n this.builder('}', node, 'end');\n };\n\n Stringifier.prototype.raw = function raw(node, own, detect) {\n var value = void 0;\n if (!detect) detect = own;\n\n // Already had\n if (own) {\n value = node.raws[own];\n if (typeof value !== 'undefined') return value;\n }\n\n var parent = node.parent;\n\n // Hack for first rule in CSS\n if (detect === 'before') {\n if (!parent || parent.type === 'root' && parent.first === node) {\n return '';\n }\n }\n\n // Floating child without parent\n if (!parent) return defaultRaw[detect];\n\n // Detect style by other nodes\n var root = node.root();\n if (!root.rawCache) root.rawCache = {};\n if (typeof root.rawCache[detect] !== 'undefined') {\n return root.rawCache[detect];\n }\n\n if (detect === 'before' || detect === 'after') {\n return this.beforeAfter(node, detect);\n } else {\n var method = 'raw' + capitalize(detect);\n if (this[method]) {\n value = this[method](root, node);\n } else {\n root.walk(function (i) {\n value = i.raws[own];\n if (typeof value !== 'undefined') return false;\n });\n }\n }\n\n if (typeof value === 'undefined') value = defaultRaw[detect];\n\n root.rawCache[detect] = value;\n return value;\n };\n\n Stringifier.prototype.rawSemicolon = function rawSemicolon(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n value = i.raws.semicolon;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawEmptyBody = function rawEmptyBody(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length === 0) {\n value = i.raws.after;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawIndent = function rawIndent(root) {\n if (root.raws.indent) return root.raws.indent;\n var value = void 0;\n root.walk(function (i) {\n var p = i.parent;\n if (p && p !== root && p.parent && p.parent === root) {\n if (typeof i.raws.before !== 'undefined') {\n var parts = i.raws.before.split('\\n');\n value = parts[parts.length - 1];\n value = value.replace(/[^\\s]/g, '');\n return false;\n }\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawBeforeComment = function rawBeforeComment(root, node) {\n var value = void 0;\n root.walkComments(function (i) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n });\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeDecl');\n }\n return value;\n };\n\n Stringifier.prototype.rawBeforeDecl = function rawBeforeDecl(root, node) {\n var value = void 0;\n root.walkDecls(function (i) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n });\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeRule');\n }\n return value;\n };\n\n Stringifier.prototype.rawBeforeRule = function rawBeforeRule(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && (i.parent !== root || root.first !== i)) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawBeforeClose = function rawBeforeClose(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== 'undefined') {\n value = i.raws.after;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawBeforeOpen = function rawBeforeOpen(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.type !== 'decl') {\n value = i.raws.between;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawColon = function rawColon(root) {\n var value = void 0;\n root.walkDecls(function (i) {\n if (typeof i.raws.between !== 'undefined') {\n value = i.raws.between.replace(/[^\\s:]/g, '');\n return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.beforeAfter = function beforeAfter(node, detect) {\n var value = void 0;\n if (node.type === 'decl') {\n value = this.raw(node, null, 'beforeDecl');\n } else if (node.type === 'comment') {\n value = this.raw(node, null, 'beforeComment');\n } else if (detect === 'before') {\n value = this.raw(node, null, 'beforeRule');\n } else {\n value = this.raw(node, null, 'beforeClose');\n }\n\n var buf = node.parent;\n var depth = 0;\n while (buf && buf.type !== 'root') {\n depth += 1;\n buf = buf.parent;\n }\n\n if (value.indexOf('\\n') !== -1) {\n var indent = this.raw(node, null, 'indent');\n if (indent.length) {\n for (var step = 0; step < depth; step++) {\n value += indent;\n }\n }\n }\n\n return value;\n };\n\n Stringifier.prototype.rawValue = function rawValue(node, prop) {\n var value = node[prop];\n var raw = node.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n } else {\n return value;\n }\n };\n\n return Stringifier;\n}();\n\n// \n\nfunction stringify(node, builder) {\n var str = new Stringifier(builder);\n str.stringify(node);\n}\n\n// \n\n/**\n * @typedef {object} position\n * @property {number} line - source line in file\n * @property {number} column - source column in file\n */\n\n/**\n * @typedef {object} source\n * @property {Input} input - {@link Input} with input file\n * @property {position} start - The starting position of the node’s source\n * @property {position} end - The ending position of the node’s source\n */\n\nvar cloneNode = function cloneNode(obj, parent) {\n var cloned = new obj.constructor();\n\n for (var i in obj) {\n if (!obj.hasOwnProperty(i)) continue;\n var value = obj[i];\n var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);\n\n if (i === 'parent' && type === 'object') {\n if (parent) cloned[i] = parent;\n } else if (i === 'source') {\n cloned[i] = value;\n } else if (value instanceof Array) {\n cloned[i] = value.map(function (j) {\n return cloneNode(j, cloned);\n });\n } else if (i !== 'before' && i !== 'after' && i !== 'between' && i !== 'semicolon') {\n if (type === 'object' && value !== null) value = cloneNode(value);\n cloned[i] = value;\n }\n }\n\n return cloned;\n};\n\n/**\n * All node classes inherit the following common methods.\n *\n * @abstract\n */\n\nvar Node = function () {\n /**\n * @param {object} [defaults] - value for node properties\n */\n function Node() {\n var defaults$$1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, Node);\n\n this.raws = {};\n for (var name in defaults$$1) {\n this[name] = defaults$$1[name];\n }\n }\n\n /**\n * Returns a CssSyntaxError instance containing the original position\n * of the node in the source, showing line and column numbers and also\n * a small excerpt to facilitate debugging.\n *\n * If present, an input source map will be used to get the original position\n * of the source, even from a previous compilation step\n * (e.g., from Sass compilation).\n *\n * This method produces very useful error messages.\n *\n * @param {string} message - error description\n * @param {object} [opts] - options\n * @param {string} opts.plugin - plugin name that created this error.\n * PostCSS will set it automatically.\n * @param {string} opts.word - a word inside a node’s string that should\n * be highlighted as the source of the error\n * @param {number} opts.index - an index inside a node’s string that should\n * be highlighted as the source of the error\n *\n * @return {CssSyntaxError} error object to throw it\n *\n * @example\n * if ( !variables[name] ) {\n * throw decl.error('Unknown variable ' + name, { word: name });\n * // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black\n * // color: $black\n * // a\n * // ^\n * // background: white\n * }\n */\n\n\n Node.prototype.error = function error(message) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.source) {\n var pos = this.positionBy(opts);\n return this.source.input.error(message, pos.line, pos.column, opts);\n } else {\n return new CssSyntaxError(message);\n }\n };\n\n /**\n * This method is provided as a convenience wrapper for {@link Result#warn}.\n *\n * @param {Result} result - the {@link Result} instance\n * that will receive the warning\n * @param {string} text - warning message\n * @param {object} [opts] - options\n * @param {string} opts.plugin - plugin name that created this warning.\n * PostCSS will set it automatically.\n * @param {string} opts.word - a word inside a node’s string that should\n * be highlighted as the source of the warning\n * @param {number} opts.index - an index inside a node’s string that should\n * be highlighted as the source of the warning\n *\n * @return {Warning} created warning object\n *\n * @example\n * const plugin = postcss.plugin('postcss-deprecated', () => {\n * return (root, result) => {\n * root.walkDecls('bad', decl => {\n * decl.warn(result, 'Deprecated property bad');\n * });\n * };\n * });\n */\n\n\n Node.prototype.warn = function warn(result, text, opts) {\n var data = { node: this };\n for (var i in opts) {\n data[i] = opts[i];\n }return result.warn(text, data);\n };\n\n /**\n * Removes the node from its parent and cleans the parent properties\n * from the node and its children.\n *\n * @example\n * if ( decl.prop.match(/^-webkit-/) ) {\n * decl.remove();\n * }\n *\n * @return {Node} node to make calls chain\n */\n\n\n Node.prototype.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = undefined;\n return this;\n };\n\n /**\n * Returns a CSS string representing the node.\n *\n * @param {stringifier|syntax} [stringifier] - a syntax to use\n * in string generation\n *\n * @return {string} CSS string of this node\n *\n * @example\n * postcss.rule({ selector: 'a' }).toString() //=> \"a {}\"\n */\n\n\n Node.prototype.toString = function toString() {\n var stringifier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : stringify;\n\n if (stringifier.stringify) stringifier = stringifier.stringify;\n var result = '';\n stringifier(this, function (i) {\n result += i;\n });\n return result;\n };\n\n /**\n * Returns a clone of the node.\n *\n * The resulting cloned node and its (cloned) children will have\n * a clean parent and code style properties.\n *\n * @param {object} [overrides] - new properties to override in the clone.\n *\n * @example\n * const cloned = decl.clone({ prop: '-moz-' + decl.prop });\n * cloned.raws.before //=> undefined\n * cloned.parent //=> undefined\n * cloned.toString() //=> -moz-transform: scale(0)\n *\n * @return {Node} clone of the node\n */\n\n\n Node.prototype.clone = function clone() {\n var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var cloned = cloneNode(this);\n for (var name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n };\n\n /**\n * Shortcut to clone the node and insert the resulting cloned node\n * before the current node.\n *\n * @param {object} [overrides] - new properties to override in the clone.\n *\n * @example\n * decl.cloneBefore({ prop: '-moz-' + decl.prop });\n *\n * @return {Node} - new node\n */\n\n\n Node.prototype.cloneBefore = function cloneBefore() {\n var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n };\n\n /**\n * Shortcut to clone the node and insert the resulting cloned node\n * after the current node.\n *\n * @param {object} [overrides] - new properties to override in the clone.\n *\n * @return {Node} - new node\n */\n\n\n Node.prototype.cloneAfter = function cloneAfter() {\n var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n };\n\n /**\n * Inserts node(s) before the current node and removes the current node.\n *\n * @param {...Node} nodes - node(s) to replace current one\n *\n * @example\n * if ( atrule.name == 'mixin' ) {\n * atrule.replaceWith(mixinRules[atrule.params]);\n * }\n *\n * @return {Node} current node to methods chain\n */\n\n\n Node.prototype.replaceWith = function replaceWith() {\n var _this = this;\n\n if (this.parent) {\n for (var _len = arguments.length, nodes = Array(_len), _key = 0; _key < _len; _key++) {\n nodes[_key] = arguments[_key];\n }\n\n nodes.forEach(function (node) {\n _this.parent.insertBefore(_this, node);\n });\n\n this.remove();\n }\n\n return this;\n };\n\n /**\n * Removes the node from its current parent and inserts it\n * at the end of `newParent`.\n *\n * This will clean the `before` and `after` code {@link Node#raws} data\n * from the node and replace them with the indentation style of `newParent`.\n * It will also clean the `between` property\n * if `newParent` is in another {@link Root}.\n *\n * @param {Container} newParent - container node where the current node\n * will be moved\n *\n * @example\n * atrule.moveTo(atrule.root());\n *\n * @return {Node} current node to methods chain\n */\n\n\n Node.prototype.moveTo = function moveTo(newParent) {\n this.cleanRaws(this.root() === newParent.root());\n this.remove();\n newParent.append(this);\n return this;\n };\n\n /**\n * Removes the node from its current parent and inserts it into\n * a new parent before `otherNode`.\n *\n * This will also clean the node’s code style properties just as it would\n * in {@link Node#moveTo}.\n *\n * @param {Node} otherNode - node that will be before current node\n *\n * @return {Node} current node to methods chain\n */\n\n\n Node.prototype.moveBefore = function moveBefore(otherNode) {\n this.cleanRaws(this.root() === otherNode.root());\n this.remove();\n otherNode.parent.insertBefore(otherNode, this);\n return this;\n };\n\n /**\n * Removes the node from its current parent and inserts it into\n * a new parent after `otherNode`.\n *\n * This will also clean the node’s code style properties just as it would\n * in {@link Node#moveTo}.\n *\n * @param {Node} otherNode - node that will be after current node\n *\n * @return {Node} current node to methods chain\n */\n\n\n Node.prototype.moveAfter = function moveAfter(otherNode) {\n this.cleanRaws(this.root() === otherNode.root());\n this.remove();\n otherNode.parent.insertAfter(otherNode, this);\n return this;\n };\n\n /**\n * Returns the next child of the node’s parent.\n * Returns `undefined` if the current node is the last child.\n *\n * @return {Node|undefined} next node\n *\n * @example\n * if ( comment.text === 'delete next' ) {\n * const next = comment.next();\n * if ( next ) {\n * next.remove();\n * }\n * }\n */\n\n\n Node.prototype.next = function next() {\n var index = this.parent.index(this);\n return this.parent.nodes[index + 1];\n };\n\n /**\n * Returns the previous child of the node’s parent.\n * Returns `undefined` if the current node is the first child.\n *\n * @return {Node|undefined} previous node\n *\n * @example\n * const annotation = decl.prev();\n * if ( annotation.type == 'comment' ) {\n * readAnnotation(annotation.text);\n * }\n */\n\n\n Node.prototype.prev = function prev() {\n var index = this.parent.index(this);\n return this.parent.nodes[index - 1];\n };\n\n Node.prototype.toJSON = function toJSON() {\n var fixed = {};\n\n for (var name in this) {\n if (!this.hasOwnProperty(name)) continue;\n if (name === 'parent') continue;\n var value = this[name];\n\n if (value instanceof Array) {\n fixed[name] = value.map(function (i) {\n if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && i.toJSON) {\n return i.toJSON();\n } else {\n return i;\n }\n });\n } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.toJSON) {\n fixed[name] = value.toJSON();\n } else {\n fixed[name] = value;\n }\n }\n\n return fixed;\n };\n\n /**\n * Returns a {@link Node#raws} value. If the node is missing\n * the code style property (because the node was manually built or cloned),\n * PostCSS will try to autodetect the code style property by looking\n * at other nodes in the tree.\n *\n * @param {string} prop - name of code style property\n * @param {string} [defaultType] - name of default value, it can be missed\n * if the value is the same as prop\n *\n * @example\n * const root = postcss.parse('a { background: white }');\n * root.nodes[0].append({ prop: 'color', value: 'black' });\n * root.nodes[0].nodes[1].raws.before //=> undefined\n * root.nodes[0].nodes[1].raw('before') //=> ' '\n *\n * @return {string} code style value\n */\n\n\n Node.prototype.raw = function raw(prop, defaultType) {\n var str = new Stringifier();\n return str.raw(this, prop, defaultType);\n };\n\n /**\n * Finds the Root instance of the node’s tree.\n *\n * @example\n * root.nodes[0].nodes[0].root() === root\n *\n * @return {Root} root parent\n */\n\n\n Node.prototype.root = function root() {\n var result = this;\n while (result.parent) {\n result = result.parent;\n }return result;\n };\n\n Node.prototype.cleanRaws = function cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n };\n\n Node.prototype.positionInside = function positionInside(index) {\n var string = this.toString();\n var column = this.source.start.column;\n var line = this.source.start.line;\n\n for (var i = 0; i < index; i++) {\n if (string[i] === '\\n') {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n\n return { line: line, column: column };\n };\n\n Node.prototype.positionBy = function positionBy(opts) {\n var pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index);\n } else if (opts.word) {\n var index = this.toString().indexOf(opts.word);\n if (index !== -1) pos = this.positionInside(index);\n }\n return pos;\n };\n\n Node.prototype.removeSelf = function removeSelf() {\n warnOnce('Node#removeSelf is deprecated. Use Node#remove.');\n return this.remove();\n };\n\n Node.prototype.replace = function replace(nodes) {\n warnOnce('Node#replace is deprecated. Use Node#replaceWith');\n return this.replaceWith(nodes);\n };\n\n Node.prototype.style = function style(own, detect) {\n warnOnce('Node#style() is deprecated. Use Node#raw()');\n return this.raw(own, detect);\n };\n\n Node.prototype.cleanStyles = function cleanStyles(keepBetween) {\n warnOnce('Node#cleanStyles() is deprecated. Use Node#cleanRaws()');\n return this.cleanRaws(keepBetween);\n };\n\n createClass(Node, [{\n key: 'before',\n get: function get$$1() {\n warnOnce('Node#before is deprecated. Use Node#raws.before');\n return this.raws.before;\n },\n set: function set$$1(val) {\n warnOnce('Node#before is deprecated. Use Node#raws.before');\n this.raws.before = val;\n }\n }, {\n key: 'between',\n get: function get$$1() {\n warnOnce('Node#between is deprecated. Use Node#raws.between');\n return this.raws.between;\n },\n set: function set$$1(val) {\n warnOnce('Node#between is deprecated. Use Node#raws.between');\n this.raws.between = val;\n }\n\n /**\n * @memberof Node#\n * @member {string} type - String representing the node’s type.\n * Possible values are `root`, `atrule`, `rule`,\n * `decl`, or `comment`.\n *\n * @example\n * postcss.decl({ prop: 'color', value: 'black' }).type //=> 'decl'\n */\n\n /**\n * @memberof Node#\n * @member {Container} parent - the node’s parent node.\n *\n * @example\n * root.nodes[0].parent == root;\n */\n\n /**\n * @memberof Node#\n * @member {source} source - the input source of the node\n *\n * The property is used in source map generation.\n *\n * If you create a node manually (e.g., with `postcss.decl()`),\n * that node will not have a `source` property and will be absent\n * from the source map. For this reason, the plugin developer should\n * consider cloning nodes to create new ones (in which case the new node’s\n * source will reference the original, cloned node) or setting\n * the `source` property manually.\n *\n * ```js\n * // Bad\n * const prefixed = postcss.decl({\n * prop: '-moz-' + decl.prop,\n * value: decl.value\n * });\n *\n * // Good\n * const prefixed = decl.clone({ prop: '-moz-' + decl.prop });\n * ```\n *\n * ```js\n * if ( atrule.name == 'add-link' ) {\n * const rule = postcss.rule({ selector: 'a', source: atrule.source });\n * atrule.parent.insertBefore(atrule, rule);\n * }\n * ```\n *\n * @example\n * decl.source.input.from //=> '/home/ai/a.sass'\n * decl.source.start //=> { line: 10, column: 2 }\n * decl.source.end //=> { line: 10, column: 12 }\n */\n\n /**\n * @memberof Node#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains true if the last child has\n * an (optional) semicolon.\n * * `afterName`: the space between the at-rule name and its parameters.\n * * `left`: the space symbols between `/*` and the comment’s text.\n * * `right`: the space symbols between the comment’s text\n * and */.\n * * `important`: the content of the important statement,\n * if it is not just `!important`.\n *\n * PostCSS cleans selectors, declaration values and at-rule parameters\n * from comments and extra spaces, but it stores origin content in raws\n * properties. As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '\\n ', between: ':' }\n */\n\n }]);\n return Node;\n}();\n\n// \n\n/**\n * Represents a CSS declaration.\n *\n * @extends Node\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * const decl = root.first.first;\n * decl.type //=> 'decl'\n * decl.toString() //=> ' color: black'\n */\n\nvar Declaration = function (_Node) {\n inherits(Declaration, _Node);\n\n function Declaration(defaults$$1) {\n classCallCheck(this, Declaration);\n\n var _this = possibleConstructorReturn(this, _Node.call(this, defaults$$1));\n\n _this.type = 'decl';\n return _this;\n }\n\n createClass(Declaration, [{\n key: '_value',\n get: function get$$1() {\n warnOnce('Node#_value was deprecated. Use Node#raws.value');\n return this.raws.value;\n },\n set: function set$$1(val) {\n warnOnce('Node#_value was deprecated. Use Node#raws.value');\n this.raws.value = val;\n }\n }, {\n key: '_important',\n get: function get$$1() {\n warnOnce('Node#_important was deprecated. Use Node#raws.important');\n return this.raws.important;\n },\n set: function set$$1(val) {\n warnOnce('Node#_important was deprecated. Use Node#raws.important');\n this.raws.important = val;\n }\n\n /**\n * @memberof Declaration#\n * @member {string} prop - the declaration’s property name\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * const decl = root.first.first;\n * decl.prop //=> 'color'\n */\n\n /**\n * @memberof Declaration#\n * @member {string} value - the declaration’s value\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * const decl = root.first.first;\n * decl.value //=> 'black'\n */\n\n /**\n * @memberof Declaration#\n * @member {boolean} important - `true` if the declaration\n * has an !important annotation.\n *\n * @example\n * const root = postcss.parse('a { color: black !important; color: red }');\n * root.first.first.important //=> true\n * root.first.last.important //=> undefined\n */\n\n /**\n * @memberof Declaration#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `important`: the content of the important statement,\n * if it is not just `!important`.\n *\n * PostCSS cleans declaration from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '\\n ', between: ':' }\n */\n\n }]);\n return Declaration;\n}(Node);\n\n// \n\n/**\n * Represents a comment between declarations or statements (rule and at-rules).\n *\n * Comments inside selectors, at-rule parameters, or declaration values\n * will be stored in the `raws` properties explained above.\n *\n * @extends Node\n */\n\nvar Comment = function (_Node) {\n inherits(Comment, _Node);\n\n function Comment(defaults$$1) {\n classCallCheck(this, Comment);\n\n var _this = possibleConstructorReturn(this, _Node.call(this, defaults$$1));\n\n _this.type = 'comment';\n return _this;\n }\n\n createClass(Comment, [{\n key: 'left',\n get: function get$$1() {\n warnOnce('Comment#left was deprecated. Use Comment#raws.left');\n return this.raws.left;\n },\n set: function set$$1(val) {\n warnOnce('Comment#left was deprecated. Use Comment#raws.left');\n this.raws.left = val;\n }\n }, {\n key: 'right',\n get: function get$$1() {\n warnOnce('Comment#right was deprecated. Use Comment#raws.right');\n return this.raws.right;\n },\n set: function set$$1(val) {\n warnOnce('Comment#right was deprecated. Use Comment#raws.right');\n this.raws.right = val;\n }\n\n /**\n * @memberof Comment#\n * @member {string} text - the comment’s text\n */\n\n /**\n * @memberof Comment#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node.\n * * `left`: the space symbols between `/*` and the comment’s text.\n * * `right`: the space symbols between the comment’s text.\n */\n\n }]);\n return Comment;\n}(Node);\n\n// \n\nvar Parser = function () {\n function Parser(input) {\n classCallCheck(this, Parser);\n\n this.input = input;\n\n this.pos = 0;\n this.root = new Root();\n this.current = this.root;\n this.spaces = '';\n this.semicolon = false;\n\n this.root.source = { input: input, start: { line: 1, column: 1 } };\n }\n\n Parser.prototype.tokenize = function tokenize$$1() {\n this.tokens = tokenize(this.input);\n };\n\n Parser.prototype.loop = function loop() {\n var token = void 0;\n while (this.pos < this.tokens.length) {\n token = this.tokens[this.pos];\n\n switch (token[0]) {\n case 'space':\n case ';':\n this.spaces += token[1];\n break;\n\n case '}':\n this.end(token);\n break;\n\n case 'comment':\n this.comment(token);\n break;\n\n case 'at-word':\n this.atrule(token);\n break;\n\n case '{':\n this.emptyRule(token);\n break;\n\n default:\n this.other();\n break;\n }\n\n this.pos += 1;\n }\n this.endFile();\n };\n\n Parser.prototype.comment = function comment(token) {\n var node = new Comment();\n this.init(node, token[2], token[3]);\n node.source.end = { line: token[4], column: token[5] };\n\n var text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node.text = '';\n node.raws.left = text;\n node.raws.right = '';\n } else {\n var match = text.match(/^(\\s*)([^]*[^\\s])(\\s*)$/);\n node.text = match[2];\n node.raws.left = match[1];\n node.raws.right = match[3];\n }\n };\n\n Parser.prototype.emptyRule = function emptyRule(token) {\n var node = new Rule();\n this.init(node, token[2], token[3]);\n node.selector = '';\n node.raws.between = '';\n this.current = node;\n };\n\n Parser.prototype.other = function other() {\n var token = void 0;\n var end = false;\n var type = null;\n var colon = false;\n var bracket = null;\n var brackets = [];\n\n var start = this.pos;\n while (this.pos < this.tokens.length) {\n token = this.tokens[this.pos];\n type = token[0];\n\n if (type === '(' || type === '[') {\n if (!bracket) bracket = token;\n brackets.push(type === '(' ? ')' : ']');\n } else if (brackets.length === 0) {\n if (type === ';') {\n if (colon) {\n this.decl(this.tokens.slice(start, this.pos + 1));\n return;\n } else {\n break;\n }\n } else if (type === '{') {\n this.rule(this.tokens.slice(start, this.pos + 1));\n return;\n } else if (type === '}') {\n this.pos -= 1;\n end = true;\n break;\n } else if (type === ':') {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n\n this.pos += 1;\n }\n if (this.pos === this.tokens.length) {\n this.pos -= 1;\n end = true;\n }\n\n if (brackets.length > 0) this.unclosedBracket(bracket);\n\n if (end && colon) {\n while (this.pos > start) {\n token = this.tokens[this.pos][0];\n if (token !== 'space' && token !== 'comment') break;\n this.pos -= 1;\n }\n this.decl(this.tokens.slice(start, this.pos + 1));\n return;\n }\n\n this.unknownWord(start);\n };\n\n Parser.prototype.rule = function rule(tokens) {\n tokens.pop();\n\n var node = new Rule();\n this.init(node, tokens[0][2], tokens[0][3]);\n\n node.raws.between = this.spacesFromEnd(tokens);\n this.raw(node, 'selector', tokens);\n this.current = node;\n };\n\n Parser.prototype.decl = function decl(tokens) {\n var node = new Declaration();\n this.init(node);\n\n var last = tokens[tokens.length - 1];\n if (last[0] === ';') {\n this.semicolon = true;\n tokens.pop();\n }\n if (last[4]) {\n node.source.end = { line: last[4], column: last[5] };\n } else {\n node.source.end = { line: last[2], column: last[3] };\n }\n\n while (tokens[0][0] !== 'word') {\n node.raws.before += tokens.shift()[1];\n }\n node.source.start = { line: tokens[0][2], column: tokens[0][3] };\n\n node.prop = '';\n while (tokens.length) {\n var type = tokens[0][0];\n if (type === ':' || type === 'space' || type === 'comment') {\n break;\n }\n node.prop += tokens.shift()[1];\n }\n\n node.raws.between = '';\n\n var token = void 0;\n while (tokens.length) {\n token = tokens.shift();\n\n if (token[0] === ':') {\n node.raws.between += token[1];\n break;\n } else {\n node.raws.between += token[1];\n }\n }\n\n if (node.prop[0] === '_' || node.prop[0] === '*') {\n node.raws.before += node.prop[0];\n node.prop = node.prop.slice(1);\n }\n node.raws.between += this.spacesFromStart(tokens);\n this.precheckMissedSemicolon(tokens);\n\n for (var i = tokens.length - 1; i > 0; i--) {\n token = tokens[i];\n if (token[1] === '!important') {\n node.important = true;\n var string = this.stringFrom(tokens, i);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== ' !important') node.raws.important = string;\n break;\n } else if (token[1] === 'important') {\n var cache = tokens.slice(0);\n var str = '';\n for (var j = i; j > 0; j--) {\n var _type = cache[j][0];\n if (str.trim().indexOf('!') === 0 && _type !== 'space') {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf('!') === 0) {\n node.important = true;\n node.raws.important = str;\n tokens = cache;\n }\n }\n\n if (token[0] !== 'space' && token[0] !== 'comment') {\n break;\n }\n }\n\n this.raw(node, 'value', tokens);\n\n if (node.value.indexOf(':') !== -1) this.checkMissedSemicolon(tokens);\n };\n\n Parser.prototype.atrule = function atrule(token) {\n var node = new AtRule();\n node.name = token[1].slice(1);\n if (node.name === '') {\n this.unnamedAtrule(node, token);\n }\n this.init(node, token[2], token[3]);\n\n var last = false;\n var open = false;\n var params = [];\n\n this.pos += 1;\n while (this.pos < this.tokens.length) {\n token = this.tokens[this.pos];\n\n if (token[0] === ';') {\n node.source.end = { line: token[2], column: token[3] };\n this.semicolon = true;\n break;\n } else if (token[0] === '{') {\n open = true;\n break;\n } else if (token[0] === '}') {\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n\n this.pos += 1;\n }\n if (this.pos === this.tokens.length) {\n last = true;\n }\n\n node.raws.between = this.spacesFromEnd(params);\n if (params.length) {\n node.raws.afterName = this.spacesFromStart(params);\n this.raw(node, 'params', params);\n if (last) {\n token = params[params.length - 1];\n node.source.end = { line: token[4], column: token[5] };\n this.spaces = node.raws.between;\n node.raws.between = '';\n }\n } else {\n node.raws.afterName = '';\n node.params = '';\n }\n\n if (open) {\n node.nodes = [];\n this.current = node;\n }\n };\n\n Parser.prototype.end = function end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n\n this.current.raws.after = (this.current.raws.after || '') + this.spaces;\n this.spaces = '';\n\n if (this.current.parent) {\n this.current.source.end = { line: token[2], column: token[3] };\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n };\n\n Parser.prototype.endFile = function endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || '') + this.spaces;\n };\n\n // Helpers\n\n Parser.prototype.init = function init(node, line, column) {\n this.current.push(node);\n\n node.source = { start: { line: line, column: column }, input: this.input };\n node.raws.before = this.spaces;\n this.spaces = '';\n if (node.type !== 'comment') this.semicolon = false;\n };\n\n Parser.prototype.raw = function raw(node, prop, tokens) {\n var token = void 0,\n type = void 0;\n var length = tokens.length;\n var value = '';\n var clean = true;\n for (var i = 0; i < length; i += 1) {\n token = tokens[i];\n type = token[0];\n if (type === 'comment' || type === 'space' && i === length - 1) {\n clean = false;\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n var raw = tokens.reduce(function (all, i) {\n return all + i[1];\n }, '');\n node.raws[prop] = { value: value, raw: raw };\n }\n node[prop] = value;\n };\n\n Parser.prototype.spacesFromEnd = function spacesFromEnd(tokens) {\n var lastTokenType = void 0;\n var spaces = '';\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== 'space' && lastTokenType !== 'comment') break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n\n Parser.prototype.spacesFromStart = function spacesFromStart(tokens) {\n var next = void 0;\n var spaces = '';\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== 'space' && next !== 'comment') break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n };\n\n Parser.prototype.stringFrom = function stringFrom(tokens, from) {\n var result = '';\n for (var i = from; i < tokens.length; i++) {\n result += tokens[i][1];\n }\n tokens.splice(from, tokens.length - from);\n return result;\n };\n\n Parser.prototype.colon = function colon(tokens) {\n var brackets = 0;\n var token = void 0,\n type = void 0,\n prev = void 0;\n for (var i = 0; i < tokens.length; i++) {\n token = tokens[i];\n type = token[0];\n\n if (type === '(') {\n brackets += 1;\n } else if (type === ')') {\n brackets -= 1;\n } else if (brackets === 0 && type === ':') {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === 'word' && prev[1] === 'progid') {\n continue;\n } else {\n return i;\n }\n }\n\n prev = token;\n }\n return false;\n };\n\n // Errors\n\n Parser.prototype.unclosedBracket = function unclosedBracket(bracket) {\n throw this.input.error('Unclosed bracket', bracket[2], bracket[3]);\n };\n\n Parser.prototype.unknownWord = function unknownWord(start) {\n var token = this.tokens[start];\n throw this.input.error('Unknown word', token[2], token[3]);\n };\n\n Parser.prototype.unexpectedClose = function unexpectedClose(token) {\n throw this.input.error('Unexpected }', token[2], token[3]);\n };\n\n Parser.prototype.unclosedBlock = function unclosedBlock() {\n var pos = this.current.source.start;\n throw this.input.error('Unclosed block', pos.line, pos.column);\n };\n\n Parser.prototype.doubleColon = function doubleColon(token) {\n throw this.input.error('Double colon', token[2], token[3]);\n };\n\n Parser.prototype.unnamedAtrule = function unnamedAtrule(node, token) {\n throw this.input.error('At-rule without name', token[2], token[3]);\n };\n\n Parser.prototype.precheckMissedSemicolon = function precheckMissedSemicolon(tokens) {\n };\n\n Parser.prototype.checkMissedSemicolon = function checkMissedSemicolon(tokens) {\n var colon = this.colon(tokens);\n if (colon === false) return;\n\n var founded = 0;\n var token = void 0;\n for (var j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== 'space') {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error('Missed semicolon', token[2], token[3]);\n };\n\n return Parser;\n}();\n\n// \n\nfunction parse(css, opts) {\n if (opts && opts.safe) {\n throw new Error('Option safe was removed. ' + 'Use parser: require(\"postcss-safe-parser\")');\n }\n\n var input = new Input(css, opts);\n\n var parser = new Parser(input);\n try {\n parser.tokenize();\n parser.loop();\n } catch (e) {\n if (e.name === 'CssSyntaxError' && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message += '\\nYou tried to parse SCSS with ' + 'the standard CSS parser; ' + 'try again with the postcss-scss parser';\n } else if (/\\.less$/i.test(opts.from)) {\n e.message += '\\nYou tried to parse Less with ' + 'the standard CSS parser; ' + 'try again with the postcss-less parser';\n }\n }\n throw e;\n }\n\n return parser.root;\n}\n\n// \n\nfunction cleanSource(nodes) {\n return nodes.map(function (i) {\n if (i.nodes) i.nodes = cleanSource(i.nodes);\n delete i.source;\n return i;\n });\n}\n\n/**\n * @callback childCondition\n * @param {Node} node - container child\n * @param {number} index - child index\n * @param {Node[]} nodes - all container children\n * @return {boolean}\n */\n\n/**\n * @callback childIterator\n * @param {Node} node - container child\n * @param {number} index - child index\n * @return {false|undefined} returning `false` will break iteration\n */\n\n/**\n * The {@link Root}, {@link AtRule}, and {@link Rule} container nodes\n * inherit some common methods to help work with their children.\n *\n * Note that all containers can store any content. If you write a rule inside\n * a rule, PostCSS will parse it.\n *\n * @extends Node\n * @abstract\n */\n\nvar Container = function (_Node) {\n inherits(Container, _Node);\n\n function Container() {\n classCallCheck(this, Container);\n return possibleConstructorReturn(this, _Node.apply(this, arguments));\n }\n\n Container.prototype.push = function push(child) {\n child.parent = this;\n this.nodes.push(child);\n return this;\n };\n\n /**\n * Iterates through the container’s immediate children,\n * calling `callback` for each child.\n *\n * Returning `false` in the callback will break iteration.\n *\n * This method only iterates through the container’s immediate children.\n * If you need to recursively iterate through all the container’s descendant\n * nodes, use {@link Container#walk}.\n *\n * Unlike the for `{}`-cycle or `Array#forEach` this iterator is safe\n * if you are mutating the array of child nodes during iteration.\n * PostCSS will adjust the current index to match the mutations.\n *\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * const root = postcss.parse('a { color: black; z-index: 1 }');\n * const rule = root.first;\n *\n * for ( let decl of rule.nodes ) {\n * decl.cloneBefore({ prop: '-webkit-' + decl.prop });\n * // Cycle will be infinite, because cloneBefore moves the current node\n * // to the next index\n * }\n *\n * rule.each(decl => {\n * decl.cloneBefore({ prop: '-webkit-' + decl.prop });\n * // Will be executed only for color and z-index\n * });\n */\n\n\n Container.prototype.each = function each(callback) {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n\n this.lastEach += 1;\n var id = this.lastEach;\n this.indexes[id] = 0;\n\n if (!this.nodes) return undefined;\n\n var index = void 0,\n result = void 0;\n while (this.indexes[id] < this.nodes.length) {\n index = this.indexes[id];\n result = callback(this.nodes[index], index);\n if (result === false) break;\n\n this.indexes[id] += 1;\n }\n\n delete this.indexes[id];\n\n return result;\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each node.\n *\n * Like container.each(), this method is safe to use\n * if you are mutating arrays during iteration.\n *\n * If you only need to iterate through the container’s immediate children,\n * use {@link Container#each}.\n *\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walk(node => {\n * // Traverses all descendant nodes.\n * });\n */\n\n\n Container.prototype.walk = function walk(callback) {\n return this.each(function (child, i) {\n var result = callback(child, i);\n if (result !== false && child.walk) {\n result = child.walk(callback);\n }\n return result;\n });\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each declaration node.\n *\n * If you pass a filter, iteration will only happen over declarations\n * with matching properties.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [prop] - string or regular expression\n * to filter declarations by property name\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walkDecls(decl => {\n * checkPropertySupport(decl.prop);\n * });\n *\n * root.walkDecls('border-radius', decl => {\n * decl.remove();\n * });\n *\n * root.walkDecls(/^background/, decl => {\n * decl.value = takeFirstColorFromGradient(decl.value);\n * });\n */\n\n\n Container.prototype.walkDecls = function walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk(function (child, i) {\n if (child.type === 'decl') {\n return callback(child, i);\n }\n });\n } else if (prop instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'decl' && prop.test(child.prop)) {\n return callback(child, i);\n }\n });\n } else {\n return this.walk(function (child, i) {\n if (child.type === 'decl' && child.prop === prop) {\n return callback(child, i);\n }\n });\n }\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each rule node.\n *\n * If you pass a filter, iteration will only happen over rules\n * with matching selectors.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [selector] - string or regular expression\n * to filter rules by selector\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * const selectors = [];\n * root.walkRules(rule => {\n * selectors.push(rule.selector);\n * });\n * console.log(`Your CSS uses ${selectors.length} selectors`);\n */\n\n\n Container.prototype.walkRules = function walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n\n return this.walk(function (child, i) {\n if (child.type === 'rule') {\n return callback(child, i);\n }\n });\n } else if (selector instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'rule' && selector.test(child.selector)) {\n return callback(child, i);\n }\n });\n } else {\n return this.walk(function (child, i) {\n if (child.type === 'rule' && child.selector === selector) {\n return callback(child, i);\n }\n });\n }\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each at-rule node.\n *\n * If you pass a filter, iteration will only happen over at-rules\n * that have matching names.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [name] - string or regular expression\n * to filter at-rules by name\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walkAtRules(rule => {\n * if ( isOld(rule.name) ) rule.remove();\n * });\n *\n * let first = false;\n * root.walkAtRules('charset', rule => {\n * if ( !first ) {\n * first = true;\n * } else {\n * rule.remove();\n * }\n * });\n */\n\n\n Container.prototype.walkAtRules = function walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk(function (child, i) {\n if (child.type === 'atrule') {\n return callback(child, i);\n }\n });\n } else if (name instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'atrule' && name.test(child.name)) {\n return callback(child, i);\n }\n });\n } else {\n return this.walk(function (child, i) {\n if (child.type === 'atrule' && child.name === name) {\n return callback(child, i);\n }\n });\n }\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each comment node.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walkComments(comment => {\n * comment.remove();\n * });\n */\n\n\n Container.prototype.walkComments = function walkComments(callback) {\n return this.walk(function (child, i) {\n if (child.type === 'comment') {\n return callback(child, i);\n }\n });\n };\n\n /**\n * Inserts new nodes to the start of the container.\n *\n * @param {...(Node|object|string|Node[])} children - new nodes\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * const decl1 = postcss.decl({ prop: 'color', value: 'black' });\n * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' });\n * rule.append(decl1, decl2);\n *\n * root.append({ name: 'charset', params: '\"UTF-8\"' }); // at-rule\n * root.append({ selector: 'a' }); // rule\n * rule.append({ prop: 'color', value: 'black' }); // declaration\n * rule.append({ text: 'Comment' }) // comment\n *\n * root.append('a {}');\n * root.first.append('color: black; z-index: 1');\n */\n\n\n Container.prototype.append = function append() {\n var _this2 = this;\n\n for (var _len = arguments.length, children = Array(_len), _key = 0; _key < _len; _key++) {\n children[_key] = arguments[_key];\n }\n\n children.forEach(function (child) {\n var nodes = _this2.normalize(child, _this2.last);\n nodes.forEach(function (node) {\n return _this2.nodes.push(node);\n });\n });\n return this;\n };\n\n /**\n * Inserts new nodes to the end of the container.\n *\n * @param {...(Node|object|string|Node[])} children - new nodes\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * const decl1 = postcss.decl({ prop: 'color', value: 'black' });\n * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' });\n * rule.prepend(decl1, decl2);\n *\n * root.append({ name: 'charset', params: '\"UTF-8\"' }); // at-rule\n * root.append({ selector: 'a' }); // rule\n * rule.append({ prop: 'color', value: 'black' }); // declaration\n * rule.append({ text: 'Comment' }) // comment\n *\n * root.append('a {}');\n * root.first.append('color: black; z-index: 1');\n */\n\n\n Container.prototype.prepend = function prepend() {\n var _this3 = this;\n\n for (var _len2 = arguments.length, children = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n children[_key2] = arguments[_key2];\n }\n\n children = children.reverse();\n children.forEach(function (child) {\n var nodes = _this3.normalize(child, _this3.first, 'prepend').reverse();\n nodes.forEach(function (node) {\n return _this3.nodes.unshift(node);\n });\n for (var id in _this3.indexes) {\n _this3.indexes[id] = _this3.indexes[id] + nodes.length;\n }\n });\n return this;\n };\n\n Container.prototype.cleanRaws = function cleanRaws(keepBetween) {\n _Node.prototype.cleanRaws.call(this, keepBetween);\n if (this.nodes) {\n this.nodes.forEach(function (node) {\n return node.cleanRaws(keepBetween);\n });\n }\n };\n\n /**\n * Insert new node before old node within the container.\n *\n * @param {Node|number} exist - child or child’s index.\n * @param {Node|object|string|Node[]} add - new node\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop }));\n */\n\n\n Container.prototype.insertBefore = function insertBefore(exist, add) {\n var _this4 = this;\n\n exist = this.index(exist);\n\n var type = exist === 0 ? 'prepend' : false;\n var nodes = this.normalize(add, this.nodes[exist], type).reverse();\n nodes.forEach(function (node) {\n return _this4.nodes.splice(exist, 0, node);\n });\n\n var index = void 0;\n for (var id in this.indexes) {\n index = this.indexes[id];\n if (exist <= index) {\n this.indexes[id] = index + nodes.length;\n }\n }\n\n return this;\n };\n\n /**\n * Insert new node after old node within the container.\n *\n * @param {Node|number} exist - child or child’s index\n * @param {Node|object|string|Node[]} add - new node\n *\n * @return {Node} this node for methods chain\n */\n\n\n Container.prototype.insertAfter = function insertAfter(exist, add) {\n var _this5 = this;\n\n exist = this.index(exist);\n\n var nodes = this.normalize(add, this.nodes[exist]).reverse();\n nodes.forEach(function (node) {\n return _this5.nodes.splice(exist + 1, 0, node);\n });\n\n var index = void 0;\n for (var id in this.indexes) {\n index = this.indexes[id];\n if (exist < index) {\n this.indexes[id] = index + nodes.length;\n }\n }\n\n return this;\n };\n\n Container.prototype.remove = function remove(child) {\n if (typeof child !== 'undefined') {\n warnOnce('Container#remove is deprecated. ' + 'Use Container#removeChild');\n this.removeChild(child);\n } else {\n _Node.prototype.remove.call(this);\n }\n return this;\n };\n\n /**\n * Removes node from the container and cleans the parent properties\n * from the node and its children.\n *\n * @param {Node|number} child - child or child’s index\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * rule.nodes.length //=> 5\n * rule.removeChild(decl);\n * rule.nodes.length //=> 4\n * decl.parent //=> undefined\n */\n\n\n Container.prototype.removeChild = function removeChild(child) {\n child = this.index(child);\n this.nodes[child].parent = undefined;\n this.nodes.splice(child, 1);\n\n var index = void 0;\n for (var id in this.indexes) {\n index = this.indexes[id];\n if (index >= child) {\n this.indexes[id] = index - 1;\n }\n }\n\n return this;\n };\n\n /**\n * Removes all children from the container\n * and cleans their parent properties.\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * rule.removeAll();\n * rule.nodes.length //=> 0\n */\n\n\n Container.prototype.removeAll = function removeAll() {\n this.nodes.forEach(function (node) {\n return node.parent = undefined;\n });\n this.nodes = [];\n return this;\n };\n\n /**\n * Passes all declaration values within the container that match pattern\n * through callback, replacing those values with the returned result\n * of callback.\n *\n * This method is useful if you are using a custom unit or function\n * and need to iterate through all values.\n *\n * @param {string|RegExp} pattern - replace pattern\n * @param {object} opts - options to speed up the search\n * @param {string|string[]} opts.props - an array of property names\n * @param {string} opts.fast - string that’s used\n * to narrow down values and speed up\n the regexp search\n * @param {function|string} callback - string to replace pattern\n * or callback that returns a new\n * value.\n * The callback will receive\n * the same arguments as those\n * passed to a function parameter\n * of `String#replace`.\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * root.replaceValues(/\\d+rem/, { fast: 'rem' }, string => {\n * return 15 * parseInt(string) + 'px';\n * });\n */\n\n\n Container.prototype.replaceValues = function replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n\n this.walkDecls(function (decl) {\n if (opts.props && opts.props.indexOf(decl.prop) === -1) return;\n if (opts.fast && decl.value.indexOf(opts.fast) === -1) return;\n\n decl.value = decl.value.replace(pattern, callback);\n });\n\n return this;\n };\n\n /**\n * Returns `true` if callback returns `true`\n * for all of the container’s children.\n *\n * @param {childCondition} condition - iterator returns true or false.\n *\n * @return {boolean} is every child pass condition\n *\n * @example\n * const noPrefixes = rule.every(i => i.prop[0] !== '-');\n */\n\n\n Container.prototype.every = function every(condition) {\n return this.nodes.every(condition);\n };\n\n /**\n * Returns `true` if callback returns `true` for (at least) one\n * of the container’s children.\n *\n * @param {childCondition} condition - iterator returns true or false.\n *\n * @return {boolean} is some child pass condition\n *\n * @example\n * const hasPrefix = rule.some(i => i.prop[0] === '-');\n */\n\n\n Container.prototype.some = function some(condition) {\n return this.nodes.some(condition);\n };\n\n /**\n * Returns a `child`’s index within the {@link Container#nodes} array.\n *\n * @param {Node} child - child of the current container.\n *\n * @return {number} child index\n *\n * @example\n * rule.index( rule.nodes[2] ) //=> 2\n */\n\n\n Container.prototype.index = function index(child) {\n if (typeof child === 'number') {\n return child;\n } else {\n return this.nodes.indexOf(child);\n }\n };\n\n /**\n * The container’s first child.\n *\n * @type {Node}\n *\n * @example\n * rule.first == rules.nodes[0];\n */\n\n\n Container.prototype.normalize = function normalize(nodes, sample) {\n var _this6 = this;\n\n if (typeof nodes === 'string') {\n nodes = cleanSource(parse(nodes).nodes);\n } else if (!Array.isArray(nodes)) {\n if (nodes.type === 'root') {\n nodes = nodes.nodes;\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === 'undefined') {\n throw new Error('Value field is missed in node creation');\n } else if (typeof nodes.value !== 'string') {\n nodes.value = String(nodes.value);\n }\n nodes = [new Declaration(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment(nodes)];\n } else {\n throw new Error('Unknown node type in node creation');\n }\n }\n\n var processed = nodes.map(function (i) {\n if (typeof i.raws === 'undefined') i = _this6.rebuild(i);\n\n if (i.parent) i = i.clone();\n if (typeof i.raws.before === 'undefined') {\n if (sample && typeof sample.raws.before !== 'undefined') {\n i.raws.before = sample.raws.before.replace(/[^\\s]/g, '');\n }\n }\n i.parent = _this6;\n return i;\n });\n\n return processed;\n };\n\n Container.prototype.rebuild = function rebuild(node, parent) {\n var _this7 = this;\n\n var fix = void 0;\n if (node.type === 'root') {\n fix = new Root();\n } else if (node.type === 'atrule') {\n fix = new AtRule();\n } else if (node.type === 'rule') {\n fix = new Rule();\n } else if (node.type === 'decl') {\n fix = new Declaration();\n } else if (node.type === 'comment') {\n fix = new Comment();\n }\n\n for (var i in node) {\n if (i === 'nodes') {\n fix.nodes = node.nodes.map(function (j) {\n return _this7.rebuild(j, fix);\n });\n } else if (i === 'parent' && parent) {\n fix.parent = parent;\n } else if (node.hasOwnProperty(i)) {\n fix[i] = node[i];\n }\n }\n\n return fix;\n };\n\n Container.prototype.eachInside = function eachInside(callback) {\n warnOnce('Container#eachInside is deprecated. ' + 'Use Container#walk instead.');\n return this.walk(callback);\n };\n\n Container.prototype.eachDecl = function eachDecl(prop, callback) {\n warnOnce('Container#eachDecl is deprecated. ' + 'Use Container#walkDecls instead.');\n return this.walkDecls(prop, callback);\n };\n\n Container.prototype.eachRule = function eachRule(selector, callback) {\n warnOnce('Container#eachRule is deprecated. ' + 'Use Container#walkRules instead.');\n return this.walkRules(selector, callback);\n };\n\n Container.prototype.eachAtRule = function eachAtRule(name, callback) {\n warnOnce('Container#eachAtRule is deprecated. ' + 'Use Container#walkAtRules instead.');\n return this.walkAtRules(name, callback);\n };\n\n Container.prototype.eachComment = function eachComment(callback) {\n warnOnce('Container#eachComment is deprecated. ' + 'Use Container#walkComments instead.');\n return this.walkComments(callback);\n };\n\n createClass(Container, [{\n key: 'first',\n get: function get$$1() {\n if (!this.nodes) return undefined;\n return this.nodes[0];\n }\n\n /**\n * The container’s last child.\n *\n * @type {Node}\n *\n * @example\n * rule.last == rule.nodes[rule.nodes.length - 1];\n */\n\n }, {\n key: 'last',\n get: function get$$1() {\n if (!this.nodes) return undefined;\n return this.nodes[this.nodes.length - 1];\n }\n }, {\n key: 'semicolon',\n get: function get$$1() {\n warnOnce('Node#semicolon is deprecated. Use Node#raws.semicolon');\n return this.raws.semicolon;\n },\n set: function set$$1(val) {\n warnOnce('Node#semicolon is deprecated. Use Node#raws.semicolon');\n this.raws.semicolon = val;\n }\n }, {\n key: 'after',\n get: function get$$1() {\n warnOnce('Node#after is deprecated. Use Node#raws.after');\n return this.raws.after;\n },\n set: function set$$1(val) {\n warnOnce('Node#after is deprecated. Use Node#raws.after');\n this.raws.after = val;\n }\n\n /**\n * @memberof Container#\n * @member {Node[]} nodes - an array containing the container’s children\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * root.nodes.length //=> 1\n * root.nodes[0].selector //=> 'a'\n * root.nodes[0].nodes[0].prop //=> 'color'\n */\n\n }]);\n return Container;\n}(Node);\n\n// \n\n/**\n * Represents an at-rule.\n *\n * If it’s followed in the CSS by a {} block, this node will have\n * a nodes property representing its children.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('@charset \"UTF-8\"; @media print {}');\n *\n * const charset = root.first;\n * charset.type //=> 'atrule'\n * charset.nodes //=> undefined\n *\n * const media = root.last;\n * media.nodes //=> []\n */\n\nvar AtRule = function (_Container) {\n inherits(AtRule, _Container);\n\n function AtRule(defaults$$1) {\n classCallCheck(this, AtRule);\n\n var _this = possibleConstructorReturn(this, _Container.call(this, defaults$$1));\n\n _this.type = 'atrule';\n return _this;\n }\n\n AtRule.prototype.append = function append() {\n var _Container$prototype$;\n\n if (!this.nodes) this.nodes = [];\n\n for (var _len = arguments.length, children = Array(_len), _key = 0; _key < _len; _key++) {\n children[_key] = arguments[_key];\n }\n\n return (_Container$prototype$ = _Container.prototype.append).call.apply(_Container$prototype$, [this].concat(children));\n };\n\n AtRule.prototype.prepend = function prepend() {\n var _Container$prototype$2;\n\n if (!this.nodes) this.nodes = [];\n\n for (var _len2 = arguments.length, children = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n children[_key2] = arguments[_key2];\n }\n\n return (_Container$prototype$2 = _Container.prototype.prepend).call.apply(_Container$prototype$2, [this].concat(children));\n };\n\n createClass(AtRule, [{\n key: 'afterName',\n get: function get$$1() {\n warnOnce('AtRule#afterName was deprecated. Use AtRule#raws.afterName');\n return this.raws.afterName;\n },\n set: function set$$1(val) {\n warnOnce('AtRule#afterName was deprecated. Use AtRule#raws.afterName');\n this.raws.afterName = val;\n }\n }, {\n key: '_params',\n get: function get$$1() {\n warnOnce('AtRule#_params was deprecated. Use AtRule#raws.params');\n return this.raws.params;\n },\n set: function set$$1(val) {\n warnOnce('AtRule#_params was deprecated. Use AtRule#raws.params');\n this.raws.params = val;\n }\n\n /**\n * @memberof AtRule#\n * @member {string} name - the at-rule’s name immediately follows the `@`\n *\n * @example\n * const root = postcss.parse('@media print {}');\n * media.name //=> 'media'\n * const media = root.first;\n */\n\n /**\n * @memberof AtRule#\n * @member {string} params - the at-rule’s parameters, the values\n * that follow the at-rule’s name but precede\n * any {} block\n *\n * @example\n * const root = postcss.parse('@media print, screen {}');\n * const media = root.first;\n * media.params //=> 'print, screen'\n */\n\n /**\n * @memberof AtRule#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains true if the last child has\n * an (optional) semicolon.\n * * `afterName`: the space between the at-rule name and its parameters.\n *\n * PostCSS cleans at-rule parameters from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse(' @media\\nprint {\\n}')\n * root.first.first.raws //=> { before: ' ',\n * // between: ' ',\n * // afterName: '\\n',\n * // after: '\\n' }\n */\n\n }]);\n return AtRule;\n}(Container);\n\n// \n/**\n * Contains helpers for safely splitting lists of CSS values,\n * preserving parentheses and quotes.\n *\n * @example\n * const list = postcss.list;\n *\n * @namespace list\n */\nvar list = {\n split: function split(string, separators, last) {\n var array = [];\n var current = '';\n var split = false;\n\n var func = 0;\n var quote = false;\n var escape = false;\n\n for (var i = 0; i < string.length; i++) {\n var letter = string[i];\n\n if (quote) {\n if (escape) {\n escape = false;\n } else if (letter === '\\\\') {\n escape = true;\n } else if (letter === quote) {\n quote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n quote = letter;\n } else if (letter === '(') {\n func += 1;\n } else if (letter === ')') {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.indexOf(letter) !== -1) split = true;\n }\n\n if (split) {\n if (current !== '') array.push(current.trim());\n current = '';\n split = false;\n } else {\n current += letter;\n }\n }\n\n if (last || current !== '') array.push(current.trim());\n return array;\n },\n\n\n /**\n * Safely splits space-separated values (such as those for `background`,\n * `border-radius`, and other shorthand properties).\n *\n * @param {string} string - space-separated values\n *\n * @return {string[]} splitted values\n *\n * @example\n * postcss.list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)']\n */\n space: function space(string) {\n var spaces = [' ', '\\n', '\\t'];\n return list.split(string, spaces);\n },\n\n\n /**\n * Safely splits comma-separated values (such as those for `transition-*`\n * and `background` properties).\n *\n * @param {string} string - comma-separated values\n *\n * @return {string[]} splitted values\n *\n * @example\n * postcss.list.comma('black, linear-gradient(white, black)')\n * //=> ['black', 'linear-gradient(white, black)']\n */\n comma: function comma(string) {\n var comma = ',';\n return list.split(string, [comma], true);\n }\n};\n\n// \n\n/**\n * Represents a CSS rule: a selector followed by a declaration block.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{}');\n * const rule = root.first;\n * rule.type //=> 'rule'\n * rule.toString() //=> 'a{}'\n */\n\nvar Rule = function (_Container) {\n inherits(Rule, _Container);\n\n function Rule(defaults$$1) {\n classCallCheck(this, Rule);\n\n var _this = possibleConstructorReturn(this, _Container.call(this, defaults$$1));\n\n _this.type = 'rule';\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n\n /**\n * An array containing the rule’s individual selectors.\n * Groups of selectors are split at commas.\n *\n * @type {string[]}\n *\n * @example\n * const root = postcss.parse('a, b { }');\n * const rule = root.first;\n *\n * rule.selector //=> 'a, b'\n * rule.selectors //=> ['a', 'b']\n *\n * rule.selectors = ['a', 'strong'];\n * rule.selector //=> 'a, strong'\n */\n\n\n createClass(Rule, [{\n key: 'selectors',\n get: function get$$1() {\n return list.comma(this.selector);\n },\n set: function set$$1(values) {\n var match = this.selector ? this.selector.match(/,\\s*/) : null;\n var sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen');\n this.selector = values.join(sep);\n }\n }, {\n key: '_selector',\n get: function get$$1() {\n warnOnce('Rule#_selector is deprecated. Use Rule#raws.selector');\n return this.raws.selector;\n },\n set: function set$$1(val) {\n warnOnce('Rule#_selector is deprecated. Use Rule#raws.selector');\n this.raws.selector = val;\n }\n\n /**\n * @memberof Rule#\n * @member {string} selector - the rule’s full selector represented\n * as a string\n *\n * @example\n * const root = postcss.parse('a, b { }');\n * const rule = root.first;\n * rule.selector //=> 'a, b'\n */\n\n /**\n * @memberof Rule#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains true if the last child has\n * an (optional) semicolon.\n *\n * PostCSS cleans selectors from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '', between: ' ', after: '\\n' }\n */\n\n }]);\n return Rule;\n}(Container);\n\n// \n/**\n * Represents a plugin’s warning. It can be created using {@link Node#warn}.\n *\n * @example\n * if ( decl.important ) {\n * decl.warn(result, 'Avoid !important', { word: '!important' });\n * }\n */\nvar Warning = function () {\n /**\n * @param {string} text - warning message\n * @param {Object} [opts] - warning options\n * @param {Node} opts.node - CSS node that caused the warning\n * @param {string} opts.word - word in CSS source that caused the warning\n * @param {number} opts.index - index in CSS node string that caused\n * the warning\n * @param {string} opts.plugin - name of the plugin that created\n * this warning. {@link Result#warn} fills\n * this property automatically.\n */\n function Warning(text) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, Warning);\n\n /**\n * @member {string} - Type to filter warnings from\n * {@link Result#messages}. Always equal\n * to `\"warning\"`.\n *\n * @example\n * const nonWarning = result.messages.filter(i => i.type !== 'warning')\n */\n this.type = 'warning';\n /**\n * @member {string} - The warning message.\n *\n * @example\n * warning.text //=> 'Try to avoid !important'\n */\n this.text = text;\n\n if (opts.node && opts.node.source) {\n var pos = opts.node.positionBy(opts);\n /**\n * @member {number} - Line in the input file\n * with this warning’s source\n *\n * @example\n * warning.line //=> 5\n */\n this.line = pos.line;\n /**\n * @member {number} - Column in the input file\n * with this warning’s source.\n *\n * @example\n * warning.column //=> 6\n */\n this.column = pos.column;\n }\n\n for (var opt in opts) {\n this[opt] = opts[opt];\n }\n }\n\n /**\n * Returns a warning position and message.\n *\n * @example\n * warning.toString() //=> 'postcss-lint:a.css:10:14: Avoid !important'\n *\n * @return {string} warning position and message\n */\n\n\n Warning.prototype.toString = function toString() {\n if (this.node) {\n return this.node.error(this.text, {\n plugin: this.plugin,\n index: this.index,\n word: this.word\n }).message;\n } else if (this.plugin) {\n return this.plugin + ': ' + this.text;\n } else {\n return this.text;\n }\n };\n\n /**\n * @memberof Warning#\n * @member {string} plugin - The name of the plugin that created\n * it will fill this property automatically.\n * this warning. When you call {@link Node#warn}\n *\n * @example\n * warning.plugin //=> 'postcss-important'\n */\n\n /**\n * @memberof Warning#\n * @member {Node} node - Contains the CSS node that caused the warning.\n *\n * @example\n * warning.node.toString() //=> 'color: white !important'\n */\n\n\n return Warning;\n}();\n\n// \n\n/**\n * @typedef {object} Message\n * @property {string} type - message type\n * @property {string} plugin - source PostCSS plugin name\n */\n\n/**\n * Provides the result of the PostCSS transformations.\n *\n * A Result instance is returned by {@link LazyResult#then}\n * or {@link Root#toResult} methods.\n *\n * @example\n * postcss([cssnext]).process(css).then(function (result) {\n * console.log(result.css);\n * });\n *\n * @example\n * var result2 = postcss.parse(css).toResult();\n */\n\nvar Result = function () {\n /**\n * @param {Processor} processor - processor used for this transformation.\n * @param {Root} root - Root node after all transformations.\n * @param {processOptions} opts - options from the {@link Processor#process}\n * or {@link Root#toResult}\n */\n function Result(processor, root, opts) {\n classCallCheck(this, Result);\n\n /**\n * @member {Processor} - The Processor instance used\n * for this transformation.\n *\n * @example\n * for ( let plugin of result.processor.plugins) {\n * if ( plugin.postcssPlugin === 'postcss-bad' ) {\n * throw 'postcss-good is incompatible with postcss-bad';\n * }\n * });\n */\n this.processor = processor;\n /**\n * @member {Message[]} - Contains messages from plugins\n * (e.g., warnings or custom messages).\n * Each message should have type\n * and plugin properties.\n *\n * @example\n * postcss.plugin('postcss-min-browser', () => {\n * return (root, result) => {\n * var browsers = detectMinBrowsersByCanIUse(root);\n * result.messages.push({\n * type: 'min-browser',\n * plugin: 'postcss-min-browser',\n * browsers: browsers\n * });\n * };\n * });\n */\n this.messages = [];\n /**\n * @member {Root} - Root node after all transformations.\n *\n * @example\n * root.toResult().root == root;\n */\n this.root = root;\n /**\n * @member {processOptions} - Options from the {@link Processor#process}\n * or {@link Root#toResult} call\n * that produced this Result instance.\n *\n * @example\n * root.toResult(opts).opts == opts;\n */\n this.opts = opts;\n /**\n * @member {string} - A CSS string representing of {@link Result#root}.\n *\n * @example\n * postcss.parse('a{}').toResult().css //=> \"a{}\"\n */\n this.css = undefined;\n /**\n * @member {SourceMapGenerator} - An instance of `SourceMapGenerator`\n * class from the `source-map` library,\n * representing changes\n * to the {@link Result#root} instance.\n *\n * @example\n * result.map.toJSON() //=> { version: 3, file: 'a.css', … }\n *\n * @example\n * if ( result.map ) {\n * fs.writeFileSync(result.opts.to + '.map', result.map.toString());\n * }\n */\n this.map = undefined;\n }\n\n /**\n * Returns for @{link Result#css} content.\n *\n * @example\n * result + '' === result.css\n *\n * @return {string} string representing of {@link Result#root}\n */\n\n\n Result.prototype.toString = function toString() {\n return this.css;\n };\n\n /**\n * Creates an instance of {@link Warning} and adds it\n * to {@link Result#messages}.\n *\n * @param {string} text - warning message\n * @param {Object} [opts] - warning options\n * @param {Node} opts.node - CSS node that caused the warning\n * @param {string} opts.word - word in CSS source that caused the warning\n * @param {number} opts.index - index in CSS node string that caused\n * the warning\n * @param {string} opts.plugin - name of the plugin that created\n * this warning. {@link Result#warn} fills\n * this property automatically.\n *\n * @return {Warning} created warning\n */\n\n\n Result.prototype.warn = function warn(text) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n\n var warning = new Warning(text, opts);\n this.messages.push(warning);\n\n return warning;\n };\n\n /**\n * Returns warnings from plugins. Filters {@link Warning} instances\n * from {@link Result#messages}.\n *\n * @example\n * result.warnings().forEach(warn => {\n * console.warn(warn.toString());\n * });\n *\n * @return {Warning[]} warnings from plugins\n */\n\n\n Result.prototype.warnings = function warnings() {\n return this.messages.filter(function (i) {\n return i.type === 'warning';\n });\n };\n\n /**\n * An alias for the {@link Result#css} property.\n * Use it with syntaxes that generate non-CSS output.\n * @type {string}\n *\n * @example\n * result.css === result.content;\n */\n\n\n createClass(Result, [{\n key: 'content',\n get: function get$$1() {\n return this.css;\n }\n }]);\n return Result;\n}();\n\n// \n\nfunction isPromise(obj) {\n return (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && typeof obj.then === 'function';\n}\n\n/**\n * @callback onFulfilled\n * @param {Result} result\n */\n\n/**\n * @callback onRejected\n * @param {Error} error\n */\n\n/**\n * A Promise proxy for the result of PostCSS transformations.\n *\n * A `LazyResult` instance is returned by {@link Processor#process}.\n *\n * @example\n * const lazy = postcss([cssnext]).process(css);\n */\n\nvar LazyResult = function () {\n function LazyResult(processor, css, opts) {\n classCallCheck(this, LazyResult);\n\n this.stringified = false;\n this.processed = false;\n\n var root = void 0;\n if ((typeof css === 'undefined' ? 'undefined' : _typeof(css)) === 'object' && css.type === 'root') {\n root = css;\n } else if (css instanceof LazyResult || css instanceof Result) {\n root = css.root;\n if (css.map) {\n if (typeof opts.map === 'undefined') opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n var parser = parse;\n if (opts.syntax) parser = opts.syntax.parse;\n if (opts.parser) parser = opts.parser;\n if (parser.parse) parser = parser.parse;\n\n try {\n root = parser(css, opts);\n } catch (error) {\n this.error = error;\n }\n }\n\n this.result = new Result(processor, root, opts);\n }\n\n /**\n * Returns a {@link Processor} instance, which will be used\n * for CSS transformations.\n * @type {Processor}\n */\n\n\n /**\n * Processes input CSS through synchronous plugins\n * and calls {@link Result#warnings()}.\n *\n * @return {Warning[]} warnings from plugins\n */\n LazyResult.prototype.warnings = function warnings() {\n return this.sync().warnings();\n };\n\n /**\n * Alias for the {@link LazyResult#css} property.\n *\n * @example\n * lazy + '' === lazy.css;\n *\n * @return {string} output CSS\n */\n\n\n LazyResult.prototype.toString = function toString() {\n return this.css;\n };\n\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls `onFulfilled` with a Result instance. If a plugin throws\n * an error, the `onRejected` callback will be executed.\n *\n * It implements standard Promise API.\n *\n * @param {onFulfilled} onFulfilled - callback will be executed\n * when all plugins will finish work\n * @param {onRejected} onRejected - callback will be execited on any error\n *\n * @return {Promise} Promise API to make queue\n *\n * @example\n * postcss([cssnext]).process(css).then(result => {\n * console.log(result.css);\n * });\n */\n\n\n LazyResult.prototype.then = function then(onFulfilled, onRejected) {\n return this.async().then(onFulfilled, onRejected);\n };\n\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls onRejected for each error thrown in any plugin.\n *\n * It implements standard Promise API.\n *\n * @param {onRejected} onRejected - callback will be execited on any error\n *\n * @return {Promise} Promise API to make queue\n *\n * @example\n * postcss([cssnext]).process(css).then(result => {\n * console.log(result.css);\n * }).catch(error => {\n * console.error(error);\n * });\n */\n\n\n LazyResult.prototype.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n\n LazyResult.prototype.handleError = function handleError(error, plugin) {\n try {\n this.error = error;\n if (error.name === 'CssSyntaxError' && !error.plugin) {\n error.plugin = plugin.postcssPlugin;\n error.setMessage();\n } else if (plugin.postcssVersion) {\n var pluginName = plugin.postcssPlugin;\n var pluginVer = plugin.postcssVersion;\n var runtimeVer = this.result.processor.version;\n var a = pluginVer.split('.');\n var b = runtimeVer.split('.');\n\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n warnOnce('' + ('Your current PostCSS version ' + 'is ') + runtimeVer + ', but ' + pluginName + ' ' + ('uses ' + pluginVer + '. Perhaps this is ') + 'the source of the error below.');\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n };\n\n LazyResult.prototype.asyncTick = function asyncTick(resolve, reject) {\n var _this = this;\n\n if (this.plugin >= this.processor.plugins.length) {\n this.processed = true;\n return resolve();\n }\n\n try {\n var plugin = this.processor.plugins[this.plugin];\n var promise = this.run(plugin);\n this.plugin += 1;\n\n if (isPromise(promise)) {\n promise.then(function () {\n _this.asyncTick(resolve, reject);\n }).catch(function (error) {\n _this.handleError(error, plugin);\n _this.processed = true;\n reject(error);\n });\n } else {\n this.asyncTick(resolve, reject);\n }\n } catch (error) {\n this.processed = true;\n reject(error);\n }\n };\n\n LazyResult.prototype.async = function async() {\n var _this2 = this;\n\n if (this.processed) {\n return new Promise(function (resolve, reject) {\n if (_this2.error) {\n reject(_this2.error);\n } else {\n resolve(_this2.stringify());\n }\n });\n }\n if (this.processing) {\n return this.processing;\n }\n\n this.processing = new Promise(function (resolve, reject) {\n if (_this2.error) return reject(_this2.error);\n _this2.plugin = 0;\n _this2.asyncTick(resolve, reject);\n }).then(function () {\n _this2.processed = true;\n return _this2.stringify();\n });\n\n return this.processing;\n };\n\n LazyResult.prototype.sync = function sync() {\n var _this3 = this;\n\n if (this.processed) return this.result;\n this.processed = true;\n\n if (this.processing) {\n throw new Error('Use process(css).then(cb) to work with async plugins');\n }\n\n if (this.error) throw this.error;\n\n this.result.processor.plugins.forEach(function (plugin) {\n var promise = _this3.run(plugin);\n if (isPromise(promise)) {\n throw new Error('Use process(css).then(cb) to work with async plugins');\n }\n });\n\n return this.result;\n };\n\n LazyResult.prototype.run = function run(plugin) {\n this.result.lastPlugin = plugin;\n\n try {\n return plugin(this.result.root, this.result);\n } catch (error) {\n this.handleError(error, plugin);\n throw error;\n }\n };\n\n LazyResult.prototype.stringify = function stringify$$1() {\n if (this.stringified) return this.result;\n this.stringified = true;\n\n this.sync();\n\n var opts = this.result.opts;\n var str = stringify;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n\n var result = '';\n str(this.root, function (i) {\n result += i;\n });\n this.result.css = result;\n\n return this.result;\n };\n\n createClass(LazyResult, [{\n key: 'processor',\n get: function get$$1() {\n return this.result.processor;\n }\n\n /**\n * Options from the {@link Processor#process} call.\n * @type {processOptions}\n */\n\n }, {\n key: 'opts',\n get: function get$$1() {\n return this.result.opts;\n }\n\n /**\n * Processes input CSS through synchronous plugins, converts `Root`\n * to a CSS string and returns {@link Result#css}.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {string}\n * @see Result#css\n */\n\n }, {\n key: 'css',\n get: function get$$1() {\n return this.stringify().css;\n }\n\n /**\n * An alias for the `css` property. Use it with syntaxes\n * that generate non-CSS output.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {string}\n * @see Result#content\n */\n\n }, {\n key: 'content',\n get: function get$$1() {\n return this.stringify().content;\n }\n\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#map}.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {SourceMapGenerator}\n * @see Result#map\n */\n\n }, {\n key: 'map',\n get: function get$$1() {\n return this.stringify().map;\n }\n\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#root}.\n *\n * This property will only work with synchronous plugins. If the processor\n * contains any asynchronous plugins it will throw an error.\n *\n * This is why this method is only for debug purpose,\n * you should always use {@link LazyResult#then}.\n *\n * @type {Root}\n * @see Result#root\n */\n\n }, {\n key: 'root',\n get: function get$$1() {\n return this.sync().root;\n }\n\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#messages}.\n *\n * This property will only work with synchronous plugins. If the processor\n * contains any asynchronous plugins it will throw an error.\n *\n * This is why this method is only for debug purpose,\n * you should always use {@link LazyResult#then}.\n *\n * @type {Message[]}\n * @see Result#messages\n */\n\n }, {\n key: 'messages',\n get: function get$$1() {\n return this.sync().messages;\n }\n }]);\n return LazyResult;\n}();\n\n// \n\n/**\n * @callback builder\n * @param {string} part - part of generated CSS connected to this node\n * @param {Node} node - AST node\n * @param {\"start\"|\"end\"} [type] - node’s part type\n */\n\n/**\n * @callback parser\n *\n * @param {string|toString} css - string with input CSS or any object\n * with toString() method, like a Buffer\n * @param {processOptions} [opts] - options with only `from` and `map` keys\n *\n * @return {Root} PostCSS AST\n */\n\n/**\n * @callback stringifier\n *\n * @param {Node} node - start node for stringifing. Usually {@link Root}.\n * @param {builder} builder - function to concatenate CSS from node’s parts\n * or generate string and source map\n *\n * @return {void}\n */\n\n/**\n * @typedef {object} syntax\n * @property {parser} parse - function to generate AST by string\n * @property {stringifier} stringify - function to generate string by AST\n */\n\n/**\n * @typedef {object} toString\n * @property {function} toString\n */\n\n/**\n * @callback pluginFunction\n * @param {Root} root - parsed input CSS\n * @param {Result} result - result to set warnings or check other plugins\n */\n\n/**\n * @typedef {object} Plugin\n * @property {function} postcss - PostCSS plugin function\n */\n\n/**\n * @typedef {object} processOptions\n * @property {string} from - the path of the CSS source file.\n * You should always set `from`,\n * because it is used in source map\n * generation and syntax error messages.\n * @property {string} to - the path where you’ll put the output\n * CSS file. You should always set `to`\n * to generate correct source maps.\n * @property {parser} parser - function to generate AST by string\n * @property {stringifier} stringifier - class to generate string by AST\n * @property {syntax} syntax - object with `parse` and `stringify`\n * @property {object} map - source map options\n * @property {boolean} map.inline - does source map should\n * be embedded in the output\n * CSS as a base64-encoded\n * comment\n * @property {string|object|false|function} map.prev - source map content\n * from a previous\n * processing step\n * (for example, Sass).\n * PostCSS will try to find\n * previous map\n * automatically, so you\n * could disable it by\n * `false` value.\n * @property {boolean} map.sourcesContent - does PostCSS should set\n * the origin content to map\n * @property {string|false} map.annotation - does PostCSS should set\n * annotation comment to map\n * @property {string} map.from - override `from` in map’s\n * `sources`\n */\n\n/**\n * Contains plugins to process CSS. Create one `Processor` instance,\n * initialize its plugins, and then use that instance on numerous CSS files.\n *\n * @example\n * const processor = postcss([autoprefixer, precss]);\n * processor.process(css1).then(result => console.log(result.css));\n * processor.process(css2).then(result => console.log(result.css));\n */\n\nvar Processor = function () {\n /**\n * @param {Array.|Processor} plugins - PostCSS\n * plugins. See {@link Processor#use} for plugin format.\n */\n function Processor() {\n var plugins = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n classCallCheck(this, Processor);\n\n /**\n * @member {string} - Current PostCSS version.\n *\n * @example\n * if ( result.processor.version.split('.')[0] !== '5' ) {\n * throw new Error('This plugin works only with PostCSS 5');\n * }\n */\n this.version = '5.2.0';\n /**\n * @member {pluginFunction[]} - Plugins added to this processor.\n *\n * @example\n * const processor = postcss([autoprefixer, precss]);\n * processor.plugins.length //=> 2\n */\n this.plugins = this.normalize(plugins);\n }\n\n /**\n * Adds a plugin to be used as a CSS processor.\n *\n * PostCSS plugin can be in 4 formats:\n * * A plugin created by {@link postcss.plugin} method.\n * * A function. PostCSS will pass the function a @{link Root}\n * as the first argument and current {@link Result} instance\n * as the second.\n * * An object with a `postcss` method. PostCSS will use that method\n * as described in #2.\n * * Another {@link Processor} instance. PostCSS will copy plugins\n * from that instance into this one.\n *\n * Plugins can also be added by passing them as arguments when creating\n * a `postcss` instance (see [`postcss(plugins)`]).\n *\n * Asynchronous plugins should return a `Promise` instance.\n *\n * @param {Plugin|pluginFunction|Processor} plugin - PostCSS plugin\n * or {@link Processor}\n * with plugins\n *\n * @example\n * const processor = postcss()\n * .use(autoprefixer)\n * .use(precss);\n *\n * @return {Processes} current processor to make methods chain\n */\n\n\n Processor.prototype.use = function use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]));\n return this;\n };\n\n /**\n * Parses source CSS and returns a {@link LazyResult} Promise proxy.\n * Because some plugins can be asynchronous it doesn’t make\n * any transformations. Transformations will be applied\n * in the {@link LazyResult} methods.\n *\n * @param {string|toString|Result} css - String with input CSS or\n * any object with a `toString()`\n * method, like a Buffer.\n * Optionally, send a {@link Result}\n * instance and the processor will\n * take the {@link Root} from it.\n * @param {processOptions} [opts] - options\n *\n * @return {LazyResult} Promise proxy\n *\n * @example\n * processor.process(css, { from: 'a.css', to: 'a.out.css' })\n * .then(result => {\n * console.log(result.css);\n * });\n */\n\n\n Processor.prototype.process = function process(css) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return new LazyResult(this, css, opts);\n };\n\n Processor.prototype.normalize = function normalize(plugins) {\n var normalized = [];\n plugins.forEach(function (i) {\n if (i.postcss) i = i.postcss;\n\n if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins);\n } else if (typeof i === 'function') {\n normalized.push(i);\n } else {\n throw new Error(i + ' is not a PostCSS plugin');\n }\n });\n return normalized;\n };\n\n return Processor;\n}();\n\n// \n\n/**\n * Represents a CSS file and contains all its parsed nodes.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{color:black} b{z-index:2}');\n * root.type //=> 'root'\n * root.nodes.length //=> 2\n */\n\nvar Root = function (_Container) {\n inherits(Root, _Container);\n\n function Root(defaults$$1) {\n classCallCheck(this, Root);\n\n var _this = possibleConstructorReturn(this, _Container.call(this, defaults$$1));\n\n _this.type = 'root';\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n\n Root.prototype.removeChild = function removeChild(child) {\n child = this.index(child);\n\n if (child === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[child].raws.before;\n }\n\n return _Container.prototype.removeChild.call(this, child);\n };\n\n Root.prototype.normalize = function normalize(child, sample, type) {\n var nodes = _Container.prototype.normalize.call(this, child);\n\n if (sample) {\n if (type === 'prepend') {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n nodes.forEach(function (node) {\n node.raws.before = sample.raws.before;\n });\n }\n }\n\n return nodes;\n };\n\n /**\n * Returns a {@link Result} instance representing the root’s CSS.\n *\n * @param {processOptions} [opts] - options with only `to` and `map` keys\n *\n * @return {Result} result with current root’s CSS\n *\n * @example\n * const root1 = postcss.parse(css1, { from: 'a.css' });\n * const root2 = postcss.parse(css2, { from: 'b.css' });\n * root1.append(root2);\n * const result = root1.toResult({ to: 'all.css', map: true });\n */\n\n\n Root.prototype.toResult = function toResult() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var lazy = new LazyResult(new Processor(), this, opts);\n return lazy.stringify();\n };\n\n Root.prototype.remove = function remove(child) {\n warnOnce('Root#remove is deprecated. Use Root#removeChild');\n this.removeChild(child);\n };\n\n Root.prototype.prevMap = function prevMap() {\n warnOnce('Root#prevMap is deprecated. Use Root#source.input.map');\n return this.source.input.map;\n };\n\n /**\n * @memberof Root#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `after`: the space symbols after the last child to the end of file.\n * * `semicolon`: is the last child has an (optional) semicolon.\n *\n * @example\n * postcss.parse('a {}\\n').raws //=> { after: '\\n' }\n * postcss.parse('a {}').raws //=> { after: '' }\n */\n\n\n return Root;\n}(Container);\n\n// \n// import PreviousMap from './previous-map';\n\nvar sequence = 0;\n\n/**\n * @typedef {object} filePosition\n * @property {string} file - path to file\n * @property {number} line - source line in file\n * @property {number} column - source column in file\n */\n\n/**\n * Represents the source CSS.\n *\n * @example\n * const root = postcss.parse(css, { from: file });\n * const input = root.source.input;\n */\n\nvar Input = function () {\n /**\n * @param {string} css - input CSS source\n * @param {object} [opts] - {@link Processor#process} options\n */\n function Input(css) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, Input);\n\n /**\n * @member {string} - input CSS source\n *\n * @example\n * const input = postcss.parse('a{}', { from: file }).input;\n * input.css //=> \"a{}\";\n */\n this.css = css.toString();\n\n if (this.css[0] === '\\uFEFF' || this.css[0] === '\\uFFFE') {\n this.css = this.css.slice(1);\n }\n\n if (opts.from) {\n if (/^\\w+:\\/\\//.test(opts.from)) {\n /**\n * @member {string} - The absolute path to the CSS source file\n * defined with the `from` option.\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.css' });\n * root.source.input.file //=> '/home/ai/a.css'\n */\n this.file = opts.from;\n } else {\n this.file = path.resolve(opts.from);\n }\n }\n\n /*\n let map = new PreviousMap(this.css, opts);\n if ( map.text ) {\n /!**\n * @member {PreviousMap} - The input source map passed from\n * a compilation step before PostCSS\n * (for example, from Sass compiler).\n *\n * @example\n * root.source.input.map.consumer().sources //=> ['a.sass']\n *!/\n this.map = map;\n let file = map.consumer().file;\n if ( !this.file && file ) this.file = this.mapResolve(file);\n }\n */\n\n if (!this.file) {\n sequence += 1;\n /**\n * @member {string} - The unique ID of the CSS source. It will be\n * created if `from` option is not provided\n * (because PostCSS does not know the file path).\n *\n * @example\n * const root = postcss.parse(css);\n * root.source.input.file //=> undefined\n * root.source.input.id //=> \"\"\n */\n this.id = '';\n }\n if (this.map) this.map.file = this.from;\n }\n\n Input.prototype.error = function error(message, line, column) {\n var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var result = void 0;\n var origin = this.origin(line, column);\n if (origin) {\n result = new CssSyntaxError(message, origin.line, origin.column, origin.source, origin.file, opts.plugin);\n } else {\n result = new CssSyntaxError(message, line, column, this.css, this.file, opts.plugin);\n }\n\n result.input = { line: line, column: column, source: this.css };\n if (this.file) result.input.file = this.file;\n\n return result;\n };\n\n /**\n * Reads the input source map and returns a symbol position\n * in the input source (e.g., in a Sass file that was compiled\n * to CSS before being passed to PostCSS).\n *\n * @param {number} line - line in input CSS\n * @param {number} column - column in input CSS\n *\n * @return {filePosition} position in input source\n *\n * @example\n * root.source.input.origin(1, 1) //=> { file: 'a.css', line: 3, column: 1 }\n */\n\n\n Input.prototype.origin = function origin(line, column) {\n if (!this.map) return false;\n var consumer = this.map.consumer();\n\n var from = consumer.originalPositionFor({ line: line, column: column });\n if (!from.source) return false;\n\n var result = {\n file: this.mapResolve(from.source),\n line: from.line,\n column: from.column\n };\n\n var source = consumer.sourceContentFor(from.source);\n if (source) result.source = source;\n\n return result;\n };\n\n Input.prototype.mapResolve = function mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n } else {\n return path.resolve(this.map.consumer().sourceRoot || '.', file);\n }\n };\n\n /**\n * The CSS source identifier. Contains {@link Input#file} if the user\n * set the `from` option, or {@link Input#id} if they did not.\n * @type {string}\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.css' });\n * root.source.input.from //=> \"/home/ai/a.css\"\n *\n * const root = postcss.parse(css);\n * root.source.input.from //=> \"\"\n */\n\n\n createClass(Input, [{\n key: 'from',\n get: function get$$1() {\n return this.file || this.id;\n }\n }]);\n return Input;\n}();\n\n// \n\nvar SafeParser = function (_Parser) {\n inherits(SafeParser, _Parser);\n\n function SafeParser() {\n classCallCheck(this, SafeParser);\n return possibleConstructorReturn(this, _Parser.apply(this, arguments));\n }\n\n SafeParser.prototype.tokenize = function tokenize$$1() {\n this.tokens = tokenize(this.input, { ignoreErrors: true });\n };\n\n SafeParser.prototype.comment = function comment(token) {\n var node = new Comment();\n this.init(node, token[2], token[3]);\n node.source.end = { line: token[4], column: token[5] };\n\n var text = token[1].slice(2);\n if (text.slice(-2) === '*/') text = text.slice(0, -2);\n\n if (/^\\s*$/.test(text)) {\n node.text = '';\n node.raws.left = text;\n node.raws.right = '';\n } else {\n var match = text.match(/^(\\s*)([^]*[^\\s])(\\s*)$/);\n node.text = match[2];\n node.raws.left = match[1];\n node.raws.right = match[3];\n }\n };\n\n SafeParser.prototype.unclosedBracket = function unclosedBracket() {};\n\n SafeParser.prototype.unknownWord = function unknownWord(start) {\n var buffer = this.tokens.slice(start, this.pos + 1);\n this.spaces += buffer.map(function (i) {\n return i[1];\n }).join('');\n };\n\n SafeParser.prototype.unexpectedClose = function unexpectedClose() {\n this.current.raws.after += '}';\n };\n\n SafeParser.prototype.doubleColon = function doubleColon() {};\n\n SafeParser.prototype.unnamedAtrule = function unnamedAtrule(node) {\n node.name = '';\n };\n\n SafeParser.prototype.precheckMissedSemicolon = function precheckMissedSemicolon(tokens) {\n var colon = this.colon(tokens);\n if (colon === false) return;\n\n var split = void 0;\n for (split = colon - 1; split >= 0; split--) {\n if (tokens[split][0] === 'word') break;\n }\n for (split -= 1; split >= 0; split--) {\n if (tokens[split][0] !== 'space') {\n split += 1;\n break;\n }\n }\n var other = tokens.splice(split, tokens.length - split);\n this.decl(other);\n };\n\n SafeParser.prototype.checkMissedSemicolon = function checkMissedSemicolon() {};\n\n SafeParser.prototype.endFile = function endFile() {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || '') + this.spaces;\n\n while (this.current.parent) {\n this.current = this.current.parent;\n this.current.raws.after = '';\n }\n };\n\n return SafeParser;\n}(Parser);\n\n// \n\nfunction safeParse(css, opts) {\n var input = new Input(css, opts);\n\n var parser = new SafeParser(input);\n parser.tokenize();\n parser.loop();\n\n return parser.root;\n}\n\n// \n\nvar generated = {};\n\n/*\n InlineStyle takes arbitrary CSS and generates a flat object\n */\nvar _InlineStyle = (function (styleSheet) {\n var InlineStyle = function () {\n function InlineStyle(rules) {\n classCallCheck(this, InlineStyle);\n\n this.rules = rules;\n }\n\n InlineStyle.prototype.generateStyleObject = function generateStyleObject(executionContext) {\n var flatCSS = flatten(this.rules, executionContext).join('');\n\n var hash = murmurhash(flatCSS);\n if (!generated[hash]) {\n var root = safeParse(flatCSS);\n var declPairs = [];\n root.each(function (node) {\n if (node.type === 'decl') {\n declPairs.push([node.prop, node.value]);\n } else if (process.env.NODE_ENV !== 'production' && node.type !== 'comment') {\n /* eslint-disable no-console */\n console.warn('Node of type ' + node.type + ' not supported as an inline style');\n }\n });\n // RN currently does not support differing values for the corner radii of Image\n // components (but does for View). It is almost impossible to tell whether we'll have\n // support, so we'll just disable multiple values here.\n // https://github.com/styled-components/css-to-react-native/issues/11\n var styleObject = transformDeclPairs(declPairs, ['borderRadius', 'borderWidth', 'borderColor', 'borderStyle']);\n var styles = styleSheet.create({\n generated: styleObject\n });\n generated[hash] = styles.generated;\n }\n return generated[hash];\n };\n\n return InlineStyle;\n }();\n\n return InlineStyle;\n});\n\n// \nvar EMPTY_ARRAY = Object.freeze([]);\nvar EMPTY_OBJECT = Object.freeze({});\n\n// \n\nvar determineTheme = (function (props, fallbackTheme) {\n var defaultProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EMPTY_OBJECT;\n\n // Props should take precedence over ThemeProvider, which should take precedence over\n // defaultProps, but React automatically puts defaultProps on props.\n\n /* eslint-disable react/prop-types, flowtype-errors/show-errors */\n var isDefaultTheme = defaultProps ? props.theme === defaultProps.theme : false;\n var theme = props.theme && !isDefaultTheme ? props.theme : fallbackTheme || defaultProps.theme;\n /* eslint-enable */\n\n return theme;\n});\n\n// \n\nfunction isTag(target) {\n return typeof target === 'string' && (process.env.NODE_ENV !== 'production' ? target.charAt(0) === target.charAt(0).toLowerCase() : true);\n}\n\n// \n\nfunction generateDisplayName(target) {\n // $FlowFixMe\n return isTag(target) ? 'styled.' + target : 'Styled(' + getComponentName(target) + ')';\n}\n\nvar _TYPE_STATICS;\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDerivedStateFromProps: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar TYPE_STATICS = (_TYPE_STATICS = {}, _TYPE_STATICS[reactIs.ForwardRef] = {\n $$typeof: true,\n render: true\n}, _TYPE_STATICS);\n\nvar defineProperty$1 = Object.defineProperty,\n getOwnPropertyNames = Object.getOwnPropertyNames,\n _Object$getOwnPropert = Object.getOwnPropertySymbols,\n getOwnPropertySymbols = _Object$getOwnPropert === undefined ? function () {\n return [];\n} : _Object$getOwnPropert,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor,\n getPrototypeOf = Object.getPrototypeOf,\n objectPrototype = Object.prototype;\nvar arrayPrototype = Array.prototype;\n\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n\n var keys = arrayPrototype.concat(getOwnPropertyNames(sourceComponent),\n // $FlowFixMe\n getOwnPropertySymbols(sourceComponent));\n\n var targetStatics = TYPE_STATICS[targetComponent.$$typeof] || REACT_STATICS;\n\n var sourceStatics = TYPE_STATICS[sourceComponent.$$typeof] || REACT_STATICS;\n\n var i = keys.length;\n var descriptor = void 0;\n var key = void 0;\n\n // eslint-disable-next-line no-plusplus\n while (i--) {\n key = keys[i];\n\n if (\n // $FlowFixMe\n !KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) &&\n // $FlowFixMe\n !(targetStatics && targetStatics[key])) {\n descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n if (descriptor) {\n try {\n // Avoid failures from read-only properties\n defineProperty$1(targetComponent, key, descriptor);\n } catch (e) {\n /* fail silently */\n }\n }\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\n// \nfunction isDerivedReactComponent(fn) {\n return !!(fn && fn.prototype && fn.prototype.isReactComponent);\n}\n\n// \n// Helper to call a given function, only once\nvar once = (function (cb) {\n var called = false;\n\n return function () {\n if (!called) {\n called = true;\n cb.apply(undefined, arguments);\n }\n };\n});\n\n// \n\nvar ThemeContext = React.createContext();\n\nvar ThemeConsumer = ThemeContext.Consumer;\n\n/**\n * Provide a theme to an entire react component tree via context\n */\n\nvar ThemeProvider = function (_Component) {\n inherits(ThemeProvider, _Component);\n\n function ThemeProvider(props) {\n classCallCheck(this, ThemeProvider);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.getContext = memoize(_this.getContext.bind(_this));\n _this.renderInner = _this.renderInner.bind(_this);\n return _this;\n }\n\n ThemeProvider.prototype.render = function render() {\n if (!this.props.children) return null;\n\n return React__default.createElement(\n ThemeContext.Consumer,\n null,\n this.renderInner\n );\n };\n\n ThemeProvider.prototype.renderInner = function renderInner(outerTheme) {\n var context = this.getContext(this.props.theme, outerTheme);\n\n return React__default.createElement(\n ThemeContext.Provider,\n { value: context },\n React__default.Children.only(this.props.children)\n );\n };\n\n /**\n * Get the theme from the props, supporting both (outerTheme) => {}\n * as well as object notation\n */\n\n\n ThemeProvider.prototype.getTheme = function getTheme(theme, outerTheme) {\n if (isFunction(theme)) {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme === null || Array.isArray(mergedTheme) || (typeof mergedTheme === 'undefined' ? 'undefined' : _typeof(mergedTheme)) !== 'object')) {\n throw new StyledComponentsError(7);\n }\n\n return mergedTheme;\n }\n\n if (theme === null || Array.isArray(theme) || (typeof theme === 'undefined' ? 'undefined' : _typeof(theme)) !== 'object') {\n throw new StyledComponentsError(8);\n }\n\n return _extends({}, outerTheme, theme);\n };\n\n ThemeProvider.prototype.getContext = function getContext(theme, outerTheme) {\n return this.getTheme(theme, outerTheme);\n };\n\n return ThemeProvider;\n}(React.Component);\n\n// \n\n// $FlowFixMe\n\nvar StyledNativeComponent = function (_Component) {\n inherits(StyledNativeComponent, _Component);\n\n function StyledNativeComponent(props) {\n classCallCheck(this, StyledNativeComponent);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.attrs = {};\n\n\n if (process.env.NODE_ENV !== 'production') {\n _this.warnInnerRef = once(function (displayName) {\n return (\n // eslint-disable-next-line no-console\n console.warn('The \"innerRef\" API has been removed in styled-components v4 in favor of React 16 ref forwarding, use \"ref\" instead like a typical component. \"innerRef\" was detected on component \"' + displayName + '\".')\n );\n });\n\n _this.warnAttrsFnObjectKeyDeprecated = once(function (key, displayName) {\n return (\n // eslint-disable-next-line no-console\n console.warn('Functions as object-form attrs({}) keys are now deprecated and will be removed in a future version of styled-components. Switch to the new attrs(props => ({})) syntax instead for easier and more powerful composition. The attrs key in question is \"' + key + '\" on component \"' + displayName + '\".')\n );\n });\n\n _this.warnNonStyledComponentAttrsObjectKey = once(function (key, displayName) {\n return (\n // eslint-disable-next-line no-console\n console.warn('It looks like you\\'ve used a non styled-component as the value for the \"' + key + '\" prop in an object-form attrs constructor of \"' + displayName + '\".\\n' + 'You should use the new function-form attrs constructor which avoids this issue: attrs(props => ({ yourStuff }))\\n' + \"To continue using the deprecated object syntax, you'll need to wrap your component prop in a function to make it available inside the styled component (you'll still get the deprecation warning though.)\\n\" + ('For example, { ' + key + ': () => InnerComponent } instead of { ' + key + ': InnerComponent }'))\n );\n });\n }\n return _this;\n }\n\n StyledNativeComponent.prototype.render = function render() {\n var _this2 = this;\n\n return React__default.createElement(\n ThemeConsumer,\n null,\n function (theme) {\n var _props = _this2.props,\n renderAs = _props.as,\n forwardedComponent = _props.forwardedComponent,\n forwardedRef = _props.forwardedRef,\n innerRef = _props.innerRef,\n _props$style = _props.style,\n style = _props$style === undefined ? [] : _props$style,\n props = objectWithoutProperties(_props, ['as', 'forwardedComponent', 'forwardedRef', 'innerRef', 'style']);\n var defaultProps = forwardedComponent.defaultProps,\n displayName = forwardedComponent.displayName,\n target = forwardedComponent.target;\n\n\n var generatedStyles = void 0;\n if (theme !== undefined) {\n var themeProp = determineTheme(_this2.props, theme, defaultProps);\n generatedStyles = _this2.generateAndInjectStyles(themeProp, _this2.props);\n } else {\n generatedStyles = _this2.generateAndInjectStyles(theme || EMPTY_OBJECT, _this2.props);\n }\n\n var propsForElement = _extends({}, _this2.attrs, props, {\n style: [generatedStyles].concat(style)\n });\n\n if (forwardedRef) propsForElement.ref = forwardedRef;\n\n if (process.env.NODE_ENV !== 'production' && innerRef) {\n _this2.warnInnerRef(displayName);\n }\n\n return React.createElement(renderAs || target, propsForElement);\n }\n );\n };\n\n StyledNativeComponent.prototype.buildExecutionContext = function buildExecutionContext(theme, props, attrs) {\n var _this3 = this;\n\n var context = _extends({}, props, { theme: theme });\n\n if (!attrs.length) return context;\n\n this.attrs = {};\n\n attrs.forEach(function (attrDef) {\n var resolvedAttrDef = attrDef;\n var attrDefWasFn = false;\n var attr = void 0;\n var key = void 0;\n\n if (isFunction(resolvedAttrDef)) {\n // $FlowFixMe\n resolvedAttrDef = resolvedAttrDef(context);\n attrDefWasFn = true;\n }\n\n /* eslint-disable guard-for-in */\n // $FlowFixMe\n for (key in resolvedAttrDef) {\n attr = resolvedAttrDef[key];\n\n if (!attrDefWasFn) {\n if (isFunction(attr) && !isDerivedReactComponent(attr) && !isStyledComponent(attr)) {\n if (process.env.NODE_ENV !== 'production') {\n _this3.warnAttrsFnObjectKeyDeprecated(key, _this3.props.forwardedComponent.displayName);\n }\n\n attr = attr(context);\n\n if (process.env.NODE_ENV !== 'production' && React__default.isValidElement(attr)) {\n _this3.warnNonStyledComponentAttrsObjectKey(key, _this3.props.forwardedComponent.displayName);\n }\n }\n }\n\n _this3.attrs[key] = attr;\n context[key] = attr;\n }\n /* eslint-enable */\n });\n\n return context;\n };\n\n StyledNativeComponent.prototype.generateAndInjectStyles = function generateAndInjectStyles(theme, props) {\n var inlineStyle = props.forwardedComponent.inlineStyle;\n\n\n var executionContext = this.buildExecutionContext(theme, props, props.forwardedComponent.attrs);\n\n return inlineStyle.generateStyleObject(executionContext);\n };\n\n StyledNativeComponent.prototype.setNativeProps = function setNativeProps(nativeProps) {\n if (this.root !== undefined) {\n // $FlowFixMe\n this.root.setNativeProps(nativeProps);\n } else if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn('setNativeProps was called on a Styled Component wrapping a stateless functional component.');\n }\n };\n\n return StyledNativeComponent;\n}(React.Component);\n\nvar _StyledNativeComponent = (function (InlineStyle) {\n var createStyledNativeComponent = function createStyledNativeComponent(target, options, rules) {\n var _options$attrs = options.attrs,\n attrs = _options$attrs === undefined ? EMPTY_ARRAY : _options$attrs,\n _options$displayName = options.displayName,\n displayName = _options$displayName === undefined ? generateDisplayName(target) : _options$displayName,\n _options$ParentCompon = options.ParentComponent,\n ParentComponent = _options$ParentCompon === undefined ? StyledNativeComponent : _options$ParentCompon;\n\n\n var isClass = !isTag(target);\n var isTargetStyledComp = isStyledComponent(target);\n\n var WrappedStyledNativeComponent = React__default.forwardRef(function (props, ref) {\n return React__default.createElement(ParentComponent, _extends({}, props, {\n forwardedComponent: WrappedStyledNativeComponent,\n forwardedRef: ref\n }));\n });\n\n var finalAttrs =\n // $FlowFixMe\n isTargetStyledComp && target.attrs ? Array.prototype.concat(target.attrs, attrs).filter(Boolean) : attrs;\n\n /**\n * forwardRef creates a new interim component, which we'll take advantage of\n * instead of extending ParentComponent to create _another_ interim class\n */\n\n // $FlowFixMe\n WrappedStyledNativeComponent.attrs = finalAttrs;\n\n WrappedStyledNativeComponent.displayName = displayName;\n\n // $FlowFixMe\n WrappedStyledNativeComponent.inlineStyle = new InlineStyle(\n // $FlowFixMe\n isTargetStyledComp ? target.inlineStyle.rules.concat(rules) : rules);\n\n // $FlowFixMe\n WrappedStyledNativeComponent.styledComponentId = 'StyledNativeComponent';\n // $FlowFixMe\n WrappedStyledNativeComponent.target = isTargetStyledComp ? // $FlowFixMe\n target.target : target;\n // $FlowFixMe\n WrappedStyledNativeComponent.withComponent = function withComponent(tag) {\n var _ = options.displayName,\n __ = options.componentId,\n optionsToCopy = objectWithoutProperties(options, ['displayName', 'componentId']);\n\n var newOptions = _extends({}, optionsToCopy, {\n attrs: finalAttrs,\n ParentComponent: ParentComponent\n });\n\n return createStyledNativeComponent(tag, newOptions, rules);\n };\n\n if (isClass) {\n // $FlowFixMe\n hoistNonReactStatics(WrappedStyledNativeComponent, target, {\n // all SC-specific things should not be hoisted\n attrs: true,\n displayName: true,\n inlineStyle: true,\n styledComponentId: true,\n target: true,\n withComponent: true\n });\n }\n\n return WrappedStyledNativeComponent;\n };\n\n return createStyledNativeComponent;\n});\n\n// \n\nvar interleave = (function (strings, interpolations) {\n var result = [strings[0]];\n\n for (var i = 0, len = interpolations.length; i < len; i += 1) {\n result.push(interpolations[i], strings[i + 1]);\n }\n\n return result;\n});\n\n// \n\nfunction css(styles) {\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n if (isFunction(styles) || isPlainObject(styles)) {\n // $FlowFixMe\n return flatten(interleave(EMPTY_ARRAY, [styles].concat(interpolations)));\n }\n\n // $FlowFixMe\n return flatten(interleave(styles, interpolations));\n}\n\n// \n\nfunction constructWithOptions(componentConstructor, tag) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EMPTY_OBJECT;\n\n if (!reactIs.isValidElementType(tag)) {\n throw new StyledComponentsError(1, String(tag));\n }\n\n /* This is callable directly as a template function */\n // $FlowFixMe: Not typed to avoid destructuring arguments\n var templateFunction = function templateFunction() {\n return componentConstructor(tag, options, css.apply(undefined, arguments));\n };\n\n /* If config methods are called, wrap up a new template function and merge options */\n templateFunction.withConfig = function (config) {\n return constructWithOptions(componentConstructor, tag, _extends({}, options, config));\n };\n\n /* Modify/inject new props at runtime */\n templateFunction.attrs = function (attrs) {\n return constructWithOptions(componentConstructor, tag, _extends({}, options, {\n attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean)\n }));\n };\n\n return templateFunction;\n}\n\n// \n\nvar withTheme = (function (Component) {\n var WithTheme = React__default.forwardRef(function (props, ref) {\n return React__default.createElement(\n ThemeConsumer,\n null,\n function (theme) {\n // $FlowFixMe\n var defaultProps = Component.defaultProps;\n\n var themeProp = determineTheme(props, theme, defaultProps);\n\n if (process.env.NODE_ENV !== 'production' && themeProp === undefined) {\n // eslint-disable-next-line no-console\n console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class \"' + getComponentName(Component) + '\"');\n }\n\n return React__default.createElement(Component, _extends({}, props, { theme: themeProp, ref: ref }));\n }\n );\n });\n\n hoistNonReactStatics(WithTheme, Component);\n\n WithTheme.displayName = 'WithTheme(' + getComponentName(Component) + ')';\n\n return WithTheme;\n});\n\n// \n\nvar InlineStyle = _InlineStyle(reactNative.StyleSheet);\nvar StyledNativeComponent$1 = _StyledNativeComponent(InlineStyle);\nvar styled = function styled(tag) {\n return constructWithOptions(StyledNativeComponent$1, tag);\n};\n\n/* React native lazy-requires each of these modules for some reason, so let's\n * assume it's for a good reason and not eagerly load them all */\nvar aliases = 'ActivityIndicator ActivityIndicatorIOS ART Button DatePickerIOS DrawerLayoutAndroid\\n Image ImageBackground ImageEditor ImageStore KeyboardAvoidingView ListView MapView Modal NavigatorIOS\\n Picker PickerIOS ProgressBarAndroid ProgressViewIOS ScrollView SegmentedControlIOS Slider\\n SliderIOS SnapshotViewIOS Switch RecyclerViewBackedScrollView RefreshControl SafeAreaView StatusBar\\n SwipeableListView SwitchAndroid SwitchIOS TabBarIOS Text TextInput ToastAndroid ToolbarAndroid\\n Touchable TouchableHighlight TouchableNativeFeedback TouchableOpacity TouchableWithoutFeedback\\n View ViewPagerAndroid WebView FlatList SectionList VirtualizedList';\n\n/* Define a getter for each alias which simply gets the reactNative component\n * and passes it to styled */\naliases.split(/\\s+/m).forEach(function (alias) {\n return Object.defineProperty(styled, alias, {\n enumerable: true,\n configurable: false,\n get: function get() {\n return styled(reactNative[alias]);\n }\n });\n});\n\nexports.css = css;\nexports.isStyledComponent = isStyledComponent;\nexports.ThemeProvider = ThemeProvider;\nexports.ThemeConsumer = ThemeConsumer;\nexports.ThemeContext = ThemeContext;\nexports.withTheme = withTheme;\nexports.default = styled;\n//# sourceMappingURL=styled-components.native.cjs.js.map\n","!function(e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(null):\"function\"==typeof define&&define.amd?define(e(null)):window.stylis=e(null)}(function e(a){\"use strict\";var r=/^\\0+/g,c=/[\\0\\r\\f]/g,s=/: */g,t=/zoo|gra/,i=/([,: ])(transform)/g,f=/,+\\s*(?![^(]*[)])/g,n=/ +\\s*(?![^(]*[)])/g,l=/ *[\\0] */g,o=/,\\r+?/g,h=/([\\t\\r\\n ])*\\f?&/g,u=/:global\\(((?:[^\\(\\)\\[\\]]*|\\[.*\\]|\\([^\\(\\)]*\\))*)\\)/g,d=/\\W+/g,b=/@(k\\w+)\\s*(\\S*)\\s*/,p=/::(place)/g,k=/:(read-only)/g,g=/\\s+(?=[{\\];=:>])/g,A=/([[}=:>])\\s+/g,C=/(\\{[^{]+?);(?=\\})/g,w=/\\s{2,}/g,v=/([^\\(])(:+) */g,m=/[svh]\\w+-[tblr]{2}/,x=/\\(\\s*(.*)\\s*\\)/g,$=/([\\s\\S]*?);/g,y=/-self|flex-/g,O=/[^]*?(:[rp][el]a[\\w-]+)[^]*/,j=/stretch|:\\s*\\w+\\-(?:conte|avail)/,z=/([^-])(image-set\\()/,N=\"-webkit-\",S=\"-moz-\",F=\"-ms-\",W=59,q=125,B=123,D=40,E=41,G=91,H=93,I=10,J=13,K=9,L=64,M=32,P=38,Q=45,R=95,T=42,U=44,V=58,X=39,Y=34,Z=47,_=62,ee=43,ae=126,re=0,ce=12,se=11,te=107,ie=109,fe=115,ne=112,le=111,oe=105,he=99,ue=100,de=112,be=1,pe=1,ke=0,ge=1,Ae=1,Ce=1,we=0,ve=0,me=0,xe=[],$e=[],ye=0,Oe=null,je=-2,ze=-1,Ne=0,Se=1,Fe=2,We=3,qe=0,Be=1,De=\"\",Ee=\"\",Ge=\"\";function He(e,a,s,t,i){for(var f,n,o=0,h=0,u=0,d=0,g=0,A=0,C=0,w=0,m=0,$=0,y=0,O=0,j=0,z=0,R=0,we=0,$e=0,Oe=0,je=0,ze=s.length,Je=ze-1,Re=\"\",Te=\"\",Ue=\"\",Ve=\"\",Xe=\"\",Ye=\"\";R0)Te=Te.replace(c,\"\");if(Te.trim().length>0){switch(C){case M:case K:case W:case J:case I:break;default:Te+=s.charAt(R)}C=W}}if(1===$e)switch(C){case B:case q:case W:case Y:case X:case D:case E:case U:$e=0;case K:case J:case I:case M:break;default:for($e=0,je=R,g=C,R--,C=W;je0)++R,C=g;case B:je=ze}}switch(C){case B:for(g=(Te=Te.trim()).charCodeAt(0),y=1,je=++R;R0)Te=Te.replace(c,\"\");switch(A=Te.charCodeAt(1)){case ue:case ie:case fe:case Q:f=a;break;default:f=xe}if(je=(Ue=He(a,f,Ue,A,i+1)).length,me>0&&0===je)je=Te.length;if(ye>0)if(f=Ie(xe,Te,Oe),n=Pe(We,Ue,f,a,pe,be,je,A,i,t),Te=f.join(\"\"),void 0!==n)if(0===(je=(Ue=n.trim()).length))A=0,Ue=\"\";if(je>0)switch(A){case fe:Te=Te.replace(x,Me);case ue:case ie:case Q:Ue=Te+\"{\"+Ue+\"}\";break;case te:if(Ue=(Te=Te.replace(b,\"$1 $2\"+(Be>0?De:\"\")))+\"{\"+Ue+\"}\",1===Ae||2===Ae&&Le(\"@\"+Ue,3))Ue=\"@\"+N+Ue+\"@\"+Ue;else Ue=\"@\"+Ue;break;default:if(Ue=Te+Ue,t===de)Ve+=Ue,Ue=\"\"}else Ue=\"\";break;default:Ue=He(a,Ie(a,Te,Oe),Ue,t,i+1)}Xe+=Ue,O=0,$e=0,z=0,we=0,Oe=0,j=0,Te=\"\",Ue=\"\",C=s.charCodeAt(++R);break;case q:case W:if((je=(Te=(we>0?Te.replace(c,\"\"):Te).trim()).length)>1){if(0===z)if((g=Te.charCodeAt(0))===Q||g>96&&g<123)je=(Te=Te.replace(\" \",\":\")).length;if(ye>0)if(void 0!==(n=Pe(Se,Te,a,e,pe,be,Ve.length,t,i,t)))if(0===(je=(Te=n.trim()).length))Te=\"\\0\\0\";switch(g=Te.charCodeAt(0),A=Te.charCodeAt(1),g){case re:break;case L:if(A===oe||A===he){Ye+=Te+s.charAt(R);break}default:if(Te.charCodeAt(je-1)===V)break;Ve+=Ke(Te,g,A,Te.charCodeAt(2))}}O=0,$e=0,z=0,we=0,Oe=0,Te=\"\",C=s.charCodeAt(++R)}}switch(C){case J:case I:if(h+d+u+o+ve===0)switch($){case E:case X:case Y:case L:case ae:case _:case T:case ee:case Z:case Q:case V:case U:case W:case B:case q:break;default:if(z>0)$e=1}if(h===Z)h=0;else if(ge+O===0&&t!==te&&Te.length>0)we=1,Te+=\"\\0\";if(ye*qe>0)Pe(Ne,Te,a,e,pe,be,Ve.length,t,i,t);be=1,pe++;break;case W:case q:if(h+d+u+o===0){be++;break}default:switch(be++,Re=s.charAt(R),C){case K:case M:if(d+o+h===0)switch(w){case U:case V:case K:case M:Re=\"\";break;default:if(C!==M)Re=\" \"}break;case re:Re=\"\\\\0\";break;case ce:Re=\"\\\\f\";break;case se:Re=\"\\\\v\";break;case P:if(d+h+o===0&&ge>0)Oe=1,we=1,Re=\"\\f\"+Re;break;case 108:if(d+h+o+ke===0&&z>0)switch(R-z){case 2:if(w===ne&&s.charCodeAt(R-3)===V)ke=w;case 8:if(m===le)ke=m}break;case V:if(d+h+o===0)z=R;break;case U:if(h+u+d+o===0)we=1,Re+=\"\\r\";break;case Y:case X:if(0===h)d=d===C?0:0===d?C:d;break;case G:if(d+h+u===0)o++;break;case H:if(d+h+u===0)o--;break;case E:if(d+h+o===0)u--;break;case D:if(d+h+o===0){if(0===O)switch(2*w+3*m){case 533:break;default:y=0,O=1}u++}break;case L:if(h+u+d+o+z+j===0)j=1;break;case T:case Z:if(d+o+u>0)break;switch(h){case 0:switch(2*C+3*s.charCodeAt(R+1)){case 235:h=Z;break;case 220:je=R,h=T}break;case T:if(C===Z&&w===T&&je+2!==R){if(33===s.charCodeAt(je+2))Ve+=s.substring(je,R+1);Re=\"\",h=0}}}if(0===h){if(ge+d+o+j===0&&t!==te&&C!==W)switch(C){case U:case ae:case _:case ee:case E:case D:if(0===O){switch(w){case K:case M:case I:case J:Re+=\"\\0\";break;default:Re=\"\\0\"+Re+(C===U?\"\":\"\\0\")}we=1}else switch(C){case D:if(z+7===R&&108===w)z=0;O=++y;break;case E:if(0==(O=--y))we=1,Re+=\"\\0\"}break;case K:case M:switch(w){case re:case B:case q:case W:case U:case ce:case K:case M:case I:case J:break;default:if(0===O)we=1,Re+=\"\\0\"}}if(Te+=Re,C!==M&&C!==K)$=C}}m=w,w=C,R++}if(je=Ve.length,me>0)if(0===je&&0===Xe.length&&0===a[0].length==false)if(t!==ie||1===a.length&&(ge>0?Ee:Ge)===a[0])je=a.join(\",\").length+2;if(je>0){if(f=0===ge&&t!==te?function(e){for(var a,r,s=0,t=e.length,i=Array(t);s1)continue;if(u=n.charCodeAt(n.length-1),d=r.charCodeAt(0),a=\"\",0!==o)switch(u){case T:case ae:case _:case ee:case M:case D:break;default:a=\" \"}switch(d){case P:r=a+Ee;case ae:case _:case ee:case M:case E:case D:break;case G:r=a+r+Ee;break;case V:switch(2*r.charCodeAt(1)+3*r.charCodeAt(2)){case 530:if(Ce>0){r=a+r.substring(8,h-1);break}default:if(o<1||f[o-1].length<1)r=a+Ee+r}break;case U:a=\"\";default:if(h>1&&r.indexOf(\":\")>0)r=a+r.replace(v,\"$1\"+Ee+\"$2\");else r=a+r+Ee}n+=r}i[s]=n.replace(c,\"\").trim()}return i}(a):a,ye>0)if(void 0!==(n=Pe(Fe,Ve,f,e,pe,be,je,t,i,t))&&0===(Ve=n).length)return Ye+Ve+Xe;if(Ve=f.join(\",\")+\"{\"+Ve+\"}\",Ae*ke!=0){if(2===Ae&&!Le(Ve,2))ke=0;switch(ke){case le:Ve=Ve.replace(k,\":\"+S+\"$1\")+Ve;break;case ne:Ve=Ve.replace(p,\"::\"+N+\"input-$1\")+Ve.replace(p,\"::\"+S+\"$1\")+Ve.replace(p,\":\"+F+\"input-$1\")+Ve}ke=0}}return Ye+Ve+Xe}function Ie(e,a,r){var c=a.trim().split(o),s=c,t=c.length,i=e.length;switch(i){case 0:case 1:for(var f=0,n=0===i?\"\":e[0]+\" \";f0&&ge>0)return s.replace(u,\"$1\").replace(h,\"$1\"+Ge);break;default:return e.trim()+s.replace(h,\"$1\"+e.trim())}default:if(r*ge>0&&s.indexOf(\"\\f\")>0)return s.replace(h,(e.charCodeAt(0)===V?\"\":\"$1\")+e.trim())}return e+s}function Ke(e,a,r,c){var l,o=0,h=e+\";\",u=2*a+3*r+4*c;if(944===u)return function(e){var a=e.length,r=e.indexOf(\":\",9)+1,c=e.substring(0,r).trim(),s=e.substring(r,a-1).trim();switch(e.charCodeAt(9)*Be){case 0:break;case Q:if(110!==e.charCodeAt(10))break;default:for(var t=s.split((s=\"\",f)),i=0,r=0,a=t.length;iL&&h<90||h>96&&h<123||h===R||h===Q&&l.charCodeAt(1)!==Q))switch(isNaN(parseFloat(l))+(-1!==l.indexOf(\"(\"))){case 1:switch(l){case\"infinite\":case\"alternate\":case\"backwards\":case\"running\":case\"normal\":case\"forwards\":case\"both\":case\"none\":case\"linear\":case\"ease\":case\"ease-in\":case\"ease-out\":case\"ease-in-out\":case\"paused\":case\"reverse\":case\"alternate-reverse\":case\"inherit\":case\"initial\":case\"unset\":case\"step-start\":case\"step-end\":break;default:l+=De}}o[r++]=l}s+=(0===i?\"\":\",\")+o.join(\" \")}}if(s=c+s+\";\",1===Ae||2===Ae&&Le(s,1))return N+s+s;return s}(h);else if(0===Ae||2===Ae&&!Le(h,1))return h;switch(u){case 1015:return 97===h.charCodeAt(10)?N+h+h:h;case 951:return 116===h.charCodeAt(3)?N+h+h:h;case 963:return 110===h.charCodeAt(5)?N+h+h:h;case 1009:if(100!==h.charCodeAt(4))break;case 969:case 942:return N+h+h;case 978:return N+h+S+h+h;case 1019:case 983:return N+h+S+h+F+h+h;case 883:if(h.charCodeAt(8)===Q)return N+h+h;if(h.indexOf(\"image-set(\",11)>0)return h.replace(z,\"$1\"+N+\"$2\")+h;return h;case 932:if(h.charCodeAt(4)===Q)switch(h.charCodeAt(5)){case 103:return N+\"box-\"+h.replace(\"-grow\",\"\")+N+h+F+h.replace(\"grow\",\"positive\")+h;case 115:return N+h+F+h.replace(\"shrink\",\"negative\")+h;case 98:return N+h+F+h.replace(\"basis\",\"preferred-size\")+h}return N+h+F+h+h;case 964:return N+h+F+\"flex-\"+h+h;case 1023:if(99!==h.charCodeAt(8))break;return l=h.substring(h.indexOf(\":\",15)).replace(\"flex-\",\"\").replace(\"space-between\",\"justify\"),N+\"box-pack\"+l+N+h+F+\"flex-pack\"+l+h;case 1005:return t.test(h)?h.replace(s,\":\"+N)+h.replace(s,\":\"+S)+h:h;case 1e3:switch(o=(l=h.substring(13).trim()).indexOf(\"-\")+1,l.charCodeAt(0)+l.charCodeAt(o)){case 226:l=h.replace(m,\"tb\");break;case 232:l=h.replace(m,\"tb-rl\");break;case 220:l=h.replace(m,\"lr\");break;default:return h}return N+h+F+l+h;case 1017:if(-1===h.indexOf(\"sticky\",9))return h;case 975:switch(o=(h=e).length-10,u=(l=(33===h.charCodeAt(o)?h.substring(0,o):h).substring(e.indexOf(\":\",7)+1).trim()).charCodeAt(0)+(0|l.charCodeAt(7))){case 203:if(l.charCodeAt(8)<111)break;case 115:h=h.replace(l,N+l)+\";\"+h;break;case 207:case 102:h=h.replace(l,N+(u>102?\"inline-\":\"\")+\"box\")+\";\"+h.replace(l,N+l)+\";\"+h.replace(l,F+l+\"box\")+\";\"+h}return h+\";\";case 938:if(h.charCodeAt(5)===Q)switch(h.charCodeAt(6)){case 105:return l=h.replace(\"-items\",\"\"),N+h+N+\"box-\"+l+F+\"flex-\"+l+h;case 115:return N+h+F+\"flex-item-\"+h.replace(y,\"\")+h;default:return N+h+F+\"flex-line-pack\"+h.replace(\"align-content\",\"\").replace(y,\"\")+h}break;case 973:case 989:if(h.charCodeAt(3)!==Q||122===h.charCodeAt(4))break;case 931:case 953:if(true===j.test(e))if(115===(l=e.substring(e.indexOf(\":\")+1)).charCodeAt(0))return Ke(e.replace(\"stretch\",\"fill-available\"),a,r,c).replace(\":fill-available\",\":stretch\");else return h.replace(l,N+l)+h.replace(l,S+l.replace(\"fill-\",\"\"))+h;break;case 962:if(h=N+h+(102===h.charCodeAt(5)?F+h:\"\")+h,r+c===211&&105===h.charCodeAt(13)&&h.indexOf(\"transform\",10)>0)return h.substring(0,h.indexOf(\";\",27)+1).replace(i,\"$1\"+N+\"$2\")+h}return h}function Le(e,a){var r=e.indexOf(1===a?\":\":\"{\"),c=e.substring(0,3!==a?r:10),s=e.substring(r+1,e.length-1);return Oe(2!==a?c:c.replace(O,\"$1\"),s,a)}function Me(e,a){var r=Ke(a,a.charCodeAt(0),a.charCodeAt(1),a.charCodeAt(2));return r!==a+\";\"?r.replace($,\" or ($1)\").substring(4):\"(\"+a+\")\"}function Pe(e,a,r,c,s,t,i,f,n,l){for(var o,h=0,u=a;h0)De=s.replace(d,t===G?\"\":\"-\");if(t=1,1===ge)Ge=s;else Ee=s;var i,f=[Ge];if(ye>0)if(void 0!==(i=Pe(ze,r,f,f,pe,be,0,0,0,0))&&\"string\"==typeof i)r=i;var n=He(xe,f,r,0,0);if(ye>0)if(void 0!==(i=Pe(je,n,f,f,pe,be,n.length,0,0,0))&&\"string\"!=typeof(n=i))t=0;return De=\"\",Ge=\"\",Ee=\"\",ke=0,pe=1,be=1,we*t==0?n:n.replace(c,\"\").replace(g,\"\").replace(A,\"$1\").replace(C,\"$1\").replace(w,\" \")}if(Te.use=function e(a){switch(a){case void 0:case null:ye=$e.length=0;break;default:if(\"function\"==typeof a)$e[ye++]=a;else if(\"object\"==typeof a)for(var r=0,c=a.length;r' : null;\n };\n};\n\nvar valueForTypeToken = function valueForTypeToken(type) {\n return function (node) {\n return node.type === type ? node.value : null;\n };\n};\n\nvar regExpToken = function regExpToken(regExp) {\n var transform = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : String;\n return function (node) {\n if (node.type !== 'word') return null;\n\n var match = node.value.match(regExp);\n if (match === null) return null;\n\n var value = transform(match[1]);\n\n return value;\n };\n};\n\nvar tokens = {\n SPACE: noopToken(function (node) {\n return node.type === 'space';\n }),\n SLASH: noopToken(function (node) {\n return node.type === 'div' && node.value === '/';\n }),\n COMMA: noopToken(function (node) {\n return node.type === 'div' && node.value === ',';\n }),\n WORD: valueForTypeToken('word'),\n NONE: regExpToken(noneRe),\n AUTO: regExpToken(autoRe),\n NUMBER: regExpToken(numberRe, Number),\n LENGTH: regExpToken(lengthRe, Number),\n UNSUPPORTED_LENGTH_UNIT: regExpToken(unsupportedUnitRe),\n ANGLE: regExpToken(angleRe),\n PERCENT: regExpToken(percentRe),\n IDENT: regExpToken(identRe),\n STRING: matchString,\n COLOR: matchColor,\n LINE: regExpToken(/^(none|underline|line-through)$/i)\n};\n\nvar NONE = tokens.NONE,\n COLOR = tokens.COLOR,\n LENGTH = tokens.LENGTH,\n UNSUPPORTED_LENGTH_UNIT = tokens.UNSUPPORTED_LENGTH_UNIT,\n SPACE = tokens.SPACE;\n\n\nvar BORDER_STYLE = regExpToken(/^(solid|dashed|dotted)$/);\n\nvar defaultBorderWidth = 1;\nvar defaultBorderColor = 'black';\nvar defaultBorderStyle = 'solid';\n\nvar border = function border(tokenStream) {\n var borderWidth = void 0;\n var borderColor = void 0;\n var borderStyle = void 0;\n\n if (tokenStream.matches(NONE)) {\n tokenStream.expectEmpty();\n return { borderWidth: 0, borderColor: 'black', borderStyle: 'solid' };\n }\n\n var partsParsed = 0;\n while (partsParsed < 3 && tokenStream.hasTokens()) {\n if (partsParsed !== 0) tokenStream.expect(SPACE);\n\n if (borderWidth === undefined && tokenStream.matches(LENGTH) || tokenStream.matches(UNSUPPORTED_LENGTH_UNIT)) {\n borderWidth = tokenStream.lastValue;\n } else if (borderColor === undefined && tokenStream.matches(COLOR)) {\n borderColor = tokenStream.lastValue;\n } else if (borderStyle === undefined && tokenStream.matches(BORDER_STYLE)) {\n borderStyle = tokenStream.lastValue;\n } else {\n tokenStream.throw();\n }\n\n partsParsed += 1;\n }\n\n tokenStream.expectEmpty();\n\n if (borderWidth === undefined) borderWidth = defaultBorderWidth;\n if (borderColor === undefined) borderColor = defaultBorderColor;\n if (borderStyle === undefined) borderStyle = defaultBorderStyle;\n\n return { borderWidth: borderWidth, borderColor: borderColor, borderStyle: borderStyle };\n};\n\nvar LENGTH$1 = tokens.LENGTH,\n UNSUPPORTED_LENGTH_UNIT$1 = tokens.UNSUPPORTED_LENGTH_UNIT,\n PERCENT = tokens.PERCENT,\n COLOR$1 = tokens.COLOR,\n SPACE$1 = tokens.SPACE,\n NONE$1 = tokens.NONE;\n\n\nvar directionFactory = function directionFactory(_ref) {\n var _ref$types = _ref.types,\n types = _ref$types === undefined ? [LENGTH$1, UNSUPPORTED_LENGTH_UNIT$1, PERCENT] : _ref$types,\n _ref$directions = _ref.directions,\n directions = _ref$directions === undefined ? ['Top', 'Right', 'Bottom', 'Left'] : _ref$directions,\n _ref$prefix = _ref.prefix,\n prefix = _ref$prefix === undefined ? '' : _ref$prefix,\n _ref$suffix = _ref.suffix,\n suffix = _ref$suffix === undefined ? '' : _ref$suffix;\n return function (tokenStream) {\n var _ref2;\n\n var values = [];\n\n // borderWidth doesn't currently allow a percent value, but may do in the future\n values.push(tokenStream.expect.apply(tokenStream, _toConsumableArray(types)));\n\n while (values.length < 4 && tokenStream.hasTokens()) {\n tokenStream.expect(SPACE$1);\n values.push(tokenStream.expect.apply(tokenStream, _toConsumableArray(types)));\n }\n\n tokenStream.expectEmpty();\n\n var top = values[0],\n _values$ = values[1],\n right = _values$ === undefined ? top : _values$,\n _values$2 = values[2],\n bottom = _values$2 === undefined ? top : _values$2,\n _values$3 = values[3],\n left = _values$3 === undefined ? right : _values$3;\n\n\n var keyFor = function keyFor(n) {\n return '' + prefix + directions[n] + suffix;\n };\n\n return _ref2 = {}, _defineProperty(_ref2, keyFor(0), top), _defineProperty(_ref2, keyFor(1), right), _defineProperty(_ref2, keyFor(2), bottom), _defineProperty(_ref2, keyFor(3), left), _ref2;\n };\n};\n\nvar parseShadowOffset = function parseShadowOffset(tokenStream) {\n var width = tokenStream.expect(LENGTH$1);\n var height = tokenStream.matches(SPACE$1) ? tokenStream.expect(LENGTH$1) : width;\n tokenStream.expectEmpty();\n return { width: width, height: height };\n};\n\nvar parseShadow = function parseShadow(tokenStream) {\n var offsetX = void 0;\n var offsetY = void 0;\n var radius = void 0;\n var color = void 0;\n\n if (tokenStream.matches(NONE$1)) {\n tokenStream.expectEmpty();\n return {\n offset: { width: 0, height: 0 },\n radius: 0,\n color: 'black'\n };\n }\n\n var didParseFirst = false;\n while (tokenStream.hasTokens()) {\n if (didParseFirst) tokenStream.expect(SPACE$1);\n\n if (offsetX === undefined && tokenStream.matches(LENGTH$1, UNSUPPORTED_LENGTH_UNIT$1)) {\n offsetX = tokenStream.lastValue;\n tokenStream.expect(SPACE$1);\n offsetY = tokenStream.expect(LENGTH$1, UNSUPPORTED_LENGTH_UNIT$1);\n\n tokenStream.saveRewindPoint();\n if (tokenStream.matches(SPACE$1) && tokenStream.matches(LENGTH$1, UNSUPPORTED_LENGTH_UNIT$1)) {\n radius = tokenStream.lastValue;\n } else {\n tokenStream.rewind();\n }\n } else if (color === undefined && tokenStream.matches(COLOR$1)) {\n color = tokenStream.lastValue;\n } else {\n tokenStream.throw();\n }\n\n didParseFirst = true;\n }\n\n if (offsetX === undefined) tokenStream.throw();\n\n return {\n offset: { width: offsetX, height: offsetY },\n radius: radius !== undefined ? radius : 0,\n color: color !== undefined ? color : 'black'\n };\n};\n\nvar boxShadow = function boxShadow(tokenStream) {\n var _parseShadow = parseShadow(tokenStream),\n offset = _parseShadow.offset,\n radius = _parseShadow.radius,\n color = _parseShadow.color;\n\n return {\n shadowOffset: offset,\n shadowRadius: radius,\n shadowColor: color,\n shadowOpacity: 1\n };\n};\n\nvar NONE$2 = tokens.NONE,\n AUTO = tokens.AUTO,\n NUMBER = tokens.NUMBER,\n LENGTH$2 = tokens.LENGTH,\n SPACE$2 = tokens.SPACE;\n\n\nvar defaultFlexGrow = 1;\nvar defaultFlexShrink = 1;\nvar defaultFlexBasis = 0;\n\nvar flex = function flex(tokenStream) {\n var flexGrow = void 0;\n var flexShrink = void 0;\n var flexBasis = void 0;\n\n if (tokenStream.matches(NONE$2)) {\n tokenStream.expectEmpty();\n return { flexGrow: 0, flexShrink: 0, flexBasis: 'auto' };\n }\n\n tokenStream.saveRewindPoint();\n if (tokenStream.matches(AUTO) && !tokenStream.hasTokens()) {\n return { flexGrow: 1, flexShrink: 1, flexBasis: 'auto' };\n }\n tokenStream.rewind();\n\n var partsParsed = 0;\n while (partsParsed < 2 && tokenStream.hasTokens()) {\n if (partsParsed !== 0) tokenStream.expect(SPACE$2);\n\n if (flexGrow === undefined && tokenStream.matches(NUMBER)) {\n flexGrow = tokenStream.lastValue;\n\n tokenStream.saveRewindPoint();\n if (tokenStream.matches(SPACE$2) && tokenStream.matches(NUMBER)) {\n flexShrink = tokenStream.lastValue;\n } else {\n tokenStream.rewind();\n }\n } else if (flexBasis === undefined && tokenStream.matches(LENGTH$2)) {\n flexBasis = tokenStream.lastValue;\n } else if (flexBasis === undefined && tokenStream.matches(AUTO)) {\n flexBasis = 'auto';\n } else {\n tokenStream.throw();\n }\n\n partsParsed += 1;\n }\n\n tokenStream.expectEmpty();\n\n if (flexGrow === undefined) flexGrow = defaultFlexGrow;\n if (flexShrink === undefined) flexShrink = defaultFlexShrink;\n if (flexBasis === undefined) flexBasis = defaultFlexBasis;\n\n return { flexGrow: flexGrow, flexShrink: flexShrink, flexBasis: flexBasis };\n};\n\nvar SPACE$3 = tokens.SPACE;\n\n\nvar FLEX_WRAP = regExpToken(/(nowrap|wrap|wrap-reverse)/);\nvar FLEX_DIRECTION = regExpToken(/(row|row-reverse|column|column-reverse)/);\n\nvar defaultFlexWrap = 'nowrap';\nvar defaultFlexDirection = 'row';\n\nvar flexFlow = function flexFlow(tokenStream) {\n var flexWrap = void 0;\n var flexDirection = void 0;\n\n var partsParsed = 0;\n while (partsParsed < 2 && tokenStream.hasTokens()) {\n if (partsParsed !== 0) tokenStream.expect(SPACE$3);\n\n if (flexWrap === undefined && tokenStream.matches(FLEX_WRAP)) {\n flexWrap = tokenStream.lastValue;\n } else if (flexDirection === undefined && tokenStream.matches(FLEX_DIRECTION)) {\n flexDirection = tokenStream.lastValue;\n } else {\n tokenStream.throw();\n }\n\n partsParsed += 1;\n }\n\n tokenStream.expectEmpty();\n\n if (flexWrap === undefined) flexWrap = defaultFlexWrap;\n if (flexDirection === undefined) flexDirection = defaultFlexDirection;\n\n return { flexWrap: flexWrap, flexDirection: flexDirection };\n};\n\nvar SPACE$4 = tokens.SPACE,\n IDENT = tokens.IDENT,\n STRING = tokens.STRING;\n\n\nvar parseFontFamily = function parseFontFamily(tokenStream) {\n var fontFamily = void 0;\n\n if (tokenStream.matches(STRING)) {\n fontFamily = tokenStream.lastValue;\n } else {\n fontFamily = tokenStream.expect(IDENT);\n while (tokenStream.hasTokens()) {\n tokenStream.expect(SPACE$4);\n var nextIdent = tokenStream.expect(IDENT);\n fontFamily += ' ' + nextIdent;\n }\n }\n\n tokenStream.expectEmpty();\n\n return { fontFamily: fontFamily };\n};\n\nvar SPACE$5 = tokens.SPACE,\n LENGTH$3 = tokens.LENGTH,\n UNSUPPORTED_LENGTH_UNIT$2 = tokens.UNSUPPORTED_LENGTH_UNIT,\n NUMBER$1 = tokens.NUMBER,\n SLASH = tokens.SLASH;\n\nvar NORMAL = regExpToken(/^(normal)$/);\nvar STYLE = regExpToken(/^(italic)$/);\nvar WEIGHT = regExpToken(/^([1-9]00|bold)$/);\nvar VARIANT = regExpToken(/^(small-caps)$/);\n\nvar defaultFontStyle = 'normal';\nvar defaultFontWeight = 'normal';\nvar defaultFontVariant = [];\n\nvar font = function font(tokenStream) {\n var fontStyle = void 0;\n var fontWeight = void 0;\n var fontVariant = void 0;\n // let fontSize;\n var lineHeight = void 0;\n // let fontFamily;\n\n var numStyleWeightVariantMatched = 0;\n while (numStyleWeightVariantMatched < 3 && tokenStream.hasTokens()) {\n if (tokenStream.matches(NORMAL)) {\n /* pass */\n } else if (fontStyle === undefined && tokenStream.matches(STYLE)) {\n fontStyle = tokenStream.lastValue;\n } else if (fontWeight === undefined && tokenStream.matches(WEIGHT)) {\n fontWeight = tokenStream.lastValue;\n } else if (fontVariant === undefined && tokenStream.matches(VARIANT)) {\n fontVariant = [tokenStream.lastValue];\n } else {\n break;\n }\n\n tokenStream.expect(SPACE$5);\n numStyleWeightVariantMatched += 1;\n }\n\n var fontSize = tokenStream.expect(LENGTH$3, UNSUPPORTED_LENGTH_UNIT$2);\n\n if (tokenStream.matches(SLASH)) {\n if (tokenStream.matches(NUMBER$1)) {\n lineHeight = fontSize * tokenStream.lastValue;\n } else {\n lineHeight = tokenStream.expect(LENGTH$3, UNSUPPORTED_LENGTH_UNIT$2);\n }\n }\n\n tokenStream.expect(SPACE$5);\n\n var _parseFontFamily = parseFontFamily(tokenStream),\n fontFamily = _parseFontFamily.fontFamily;\n\n if (fontStyle === undefined) fontStyle = defaultFontStyle;\n if (fontWeight === undefined) fontWeight = defaultFontWeight;\n if (fontVariant === undefined) fontVariant = defaultFontVariant;\n\n var out = { fontStyle: fontStyle, fontWeight: fontWeight, fontVariant: fontVariant, fontSize: fontSize, fontFamily: fontFamily };\n if (lineHeight !== undefined) out.lineHeight = lineHeight;\n\n return out;\n};\n\nvar textShadow = function textShadow(tokenStream) {\n var _parseShadow2 = parseShadow(tokenStream),\n offset = _parseShadow2.offset,\n radius = _parseShadow2.radius,\n color = _parseShadow2.color;\n\n return {\n textShadowOffset: offset,\n textShadowRadius: radius,\n textShadowColor: color\n };\n};\n\nvar SPACE$6 = tokens.SPACE,\n LINE = tokens.LINE,\n COLOR$2 = tokens.COLOR;\n\n\nvar STYLE$1 = regExpToken(/^(solid|double|dotted|dashed)$/);\n\nvar defaultTextDecorationLine = 'none';\nvar defaultTextDecorationStyle = 'solid';\nvar defaultTextDecorationColor = 'black';\n\nvar textDecoration = function textDecoration(tokenStream) {\n var line = void 0;\n var style = void 0;\n var color = void 0;\n\n var didParseFirst = false;\n while (tokenStream.hasTokens()) {\n if (didParseFirst) tokenStream.expect(SPACE$6);\n\n if (line === undefined && tokenStream.matches(LINE)) {\n var lines = [tokenStream.lastValue.toLowerCase()];\n\n tokenStream.saveRewindPoint();\n if (lines[0] !== 'none' && tokenStream.matches(SPACE$6) && tokenStream.matches(LINE)) {\n lines.push(tokenStream.lastValue.toLowerCase());\n // Underline comes before line-through\n lines.sort().reverse();\n } else {\n tokenStream.rewind();\n }\n\n line = lines.join(' ');\n } else if (style === undefined && tokenStream.matches(STYLE$1)) {\n style = tokenStream.lastValue;\n } else if (color === undefined && tokenStream.matches(COLOR$2)) {\n color = tokenStream.lastValue;\n } else {\n tokenStream.throw();\n }\n\n didParseFirst = true;\n }\n\n return {\n textDecorationLine: line !== undefined ? line : defaultTextDecorationLine,\n textDecorationColor: color !== undefined ? color : defaultTextDecorationColor,\n textDecorationStyle: style !== undefined ? style : defaultTextDecorationStyle\n };\n};\n\nvar SPACE$7 = tokens.SPACE,\n LINE$1 = tokens.LINE;\n\n\nvar textDecorationLine = function textDecorationLine(tokenStream) {\n var lines = [];\n\n var didParseFirst = false;\n while (tokenStream.hasTokens()) {\n if (didParseFirst) tokenStream.expect(SPACE$7);\n\n lines.push(tokenStream.expect(LINE$1).toLowerCase());\n\n didParseFirst = true;\n }\n\n lines.sort().reverse();\n\n return { textDecorationLine: lines.join(' ') };\n};\n\nvar SPACE$8 = tokens.SPACE,\n COMMA = tokens.COMMA,\n LENGTH$4 = tokens.LENGTH,\n NUMBER$2 = tokens.NUMBER,\n ANGLE = tokens.ANGLE;\n\n\nvar oneOfType = function oneOfType(tokenType) {\n return function (functionStream) {\n var value = functionStream.expect(tokenType);\n functionStream.expectEmpty();\n return value;\n };\n};\n\nvar singleNumber = oneOfType(NUMBER$2);\nvar singleLength = oneOfType(LENGTH$4);\nvar singleAngle = oneOfType(ANGLE);\nvar xyTransformFactory = function xyTransformFactory(tokenType) {\n return function (key, valueIfOmitted) {\n return function (functionStream) {\n var x = functionStream.expect(tokenType);\n\n var y = void 0;\n if (functionStream.hasTokens()) {\n functionStream.expect(COMMA);\n y = functionStream.expect(tokenType);\n } else if (valueIfOmitted !== undefined) {\n y = valueIfOmitted;\n } else {\n // Assumption, if x === y, then we can omit XY\n // I.e. scale(5) => [{ scale: 5 }] rather than [{ scaleX: 5 }, { scaleY: 5 }]\n return x;\n }\n\n functionStream.expectEmpty();\n\n return [_defineProperty({}, key + 'Y', y), _defineProperty({}, key + 'X', x)];\n };\n };\n};\nvar xyNumber = xyTransformFactory(NUMBER$2);\nvar xyLength = xyTransformFactory(LENGTH$4);\nvar xyAngle = xyTransformFactory(ANGLE);\n\nvar partTransforms = {\n perspective: singleNumber,\n scale: xyNumber('scale'),\n scaleX: singleNumber,\n scaleY: singleNumber,\n translate: xyLength('translate', 0),\n translateX: singleLength,\n translateY: singleLength,\n rotate: singleAngle,\n rotateX: singleAngle,\n rotateY: singleAngle,\n rotateZ: singleAngle,\n skewX: singleAngle,\n skewY: singleAngle,\n skew: xyAngle('skew', '0deg')\n};\n\nvar transform = function transform(tokenStream) {\n var transforms = [];\n\n var didParseFirst = false;\n while (tokenStream.hasTokens()) {\n if (didParseFirst) tokenStream.expect(SPACE$8);\n\n var functionStream = tokenStream.expectFunction();\n var functionName = functionStream.functionName;\n\n var transformedValues = partTransforms[functionName](functionStream);\n if (!Array.isArray(transformedValues)) {\n transformedValues = [_defineProperty({}, functionName, transformedValues)];\n }\n transforms = transformedValues.concat(transforms);\n\n didParseFirst = true;\n }\n\n return { transform: transforms };\n};\n\nvar IDENT$1 = tokens.IDENT,\n WORD = tokens.WORD,\n COLOR$3 = tokens.COLOR,\n LENGTH$5 = tokens.LENGTH,\n UNSUPPORTED_LENGTH_UNIT$3 = tokens.UNSUPPORTED_LENGTH_UNIT,\n PERCENT$1 = tokens.PERCENT,\n AUTO$1 = tokens.AUTO;\n\n\nvar background = function background(tokenStream) {\n return {\n backgroundColor: tokenStream.expect(COLOR$3)\n };\n};\nvar borderColor = directionFactory({\n types: [WORD],\n prefix: 'border',\n suffix: 'Color'\n});\nvar borderRadius = directionFactory({\n directions: ['TopLeft', 'TopRight', 'BottomRight', 'BottomLeft'],\n prefix: 'border',\n suffix: 'Radius'\n});\nvar borderWidth = directionFactory({ prefix: 'border', suffix: 'Width' });\nvar margin = directionFactory({\n types: [LENGTH$5, UNSUPPORTED_LENGTH_UNIT$3, PERCENT$1, AUTO$1],\n prefix: 'margin'\n});\nvar padding = directionFactory({ prefix: 'padding' });\nvar fontVariant = function fontVariant(tokenStream) {\n return {\n fontVariant: [tokenStream.expect(IDENT$1)]\n };\n};\nvar fontWeight = function fontWeight(tokenStream) {\n return {\n fontWeight: tokenStream.expect(WORD) // Also match numbers as strings\n };\n};\nvar shadowOffset = function shadowOffset(tokenStream) {\n return {\n shadowOffset: parseShadowOffset(tokenStream)\n };\n};\nvar textShadowOffset = function textShadowOffset(tokenStream) {\n return {\n textShadowOffset: parseShadowOffset(tokenStream)\n };\n};\n\nvar transforms = {\n background: background,\n border: border,\n borderColor: borderColor,\n borderRadius: borderRadius,\n borderWidth: borderWidth,\n boxShadow: boxShadow,\n flex: flex,\n flexFlow: flexFlow,\n font: font,\n fontFamily: parseFontFamily,\n fontVariant: fontVariant,\n fontWeight: fontWeight,\n margin: margin,\n padding: padding,\n shadowOffset: shadowOffset,\n textShadow: textShadow,\n textShadowOffset: textShadowOffset,\n textDecoration: textDecoration,\n textDecorationLine: textDecorationLine,\n transform: transform\n};\n\nvar SYMBOL_MATCH = 'SYMBOL_MATCH';\n\nvar TokenStream = function () {\n function TokenStream(nodes, parent) {\n _classCallCheck(this, TokenStream);\n\n this.index = 0;\n this.nodes = nodes;\n this.functionName = parent != null ? parent.value : null;\n this.lastValue = null;\n this.rewindIndex = -1;\n }\n\n _createClass(TokenStream, [{\n key: 'hasTokens',\n value: function hasTokens() {\n return this.index <= this.nodes.length - 1;\n }\n }, {\n key: SYMBOL_MATCH,\n value: function value() {\n if (!this.hasTokens()) return null;\n\n var node = this.nodes[this.index];\n\n for (var i = 0; i < arguments.length; i += 1) {\n var tokenDescriptor = arguments.length <= i ? undefined : arguments[i];\n var value = tokenDescriptor(node);\n if (value !== null) {\n this.index += 1;\n this.lastValue = value;\n return value;\n }\n }\n\n return null;\n }\n }, {\n key: 'matches',\n value: function matches() {\n return this[SYMBOL_MATCH].apply(this, arguments) !== null;\n }\n }, {\n key: 'expect',\n value: function expect() {\n var value = this[SYMBOL_MATCH].apply(this, arguments);\n return value !== null ? value : this.throw();\n }\n }, {\n key: 'matchesFunction',\n value: function matchesFunction() {\n var node = this.nodes[this.index];\n if (node.type !== 'function') return null;\n var value = new TokenStream(node.nodes, node);\n this.index += 1;\n this.lastValue = null;\n return value;\n }\n }, {\n key: 'expectFunction',\n value: function expectFunction() {\n var value = this.matchesFunction();\n return value !== null ? value : this.throw();\n }\n }, {\n key: 'expectEmpty',\n value: function expectEmpty() {\n if (this.hasTokens()) this.throw();\n }\n }, {\n key: 'throw',\n value: function _throw() {\n throw new Error('Unexpected token type: ' + this.nodes[this.index].type);\n }\n }, {\n key: 'saveRewindPoint',\n value: function saveRewindPoint() {\n this.rewindIndex = this.index;\n }\n }, {\n key: 'rewind',\n value: function rewind() {\n if (this.rewindIndex === -1) throw new Error('Internal error');\n this.index = this.rewindIndex;\n this.lastValue = null;\n }\n }]);\n\n return TokenStream;\n}();\n\n/* eslint-disable no-param-reassign */\n// Note if this is wrong, you'll need to change tokenTypes.js too\n\n\nvar numberOrLengthRe = /^([+-]?(?:\\d*\\.)?\\d+(?:[Ee][+-]?\\d+)?)(?:px)?$/i;\nvar boolRe = /^true|false$/i;\nvar nullRe = /^null$/i;\nvar undefinedRe = /^undefined$/i;\n\n// Undocumented export\nvar transformRawValue = function transformRawValue(input) {\n var value = input.trim();\n\n var numberMatch = value.match(numberOrLengthRe);\n if (numberMatch !== null) return Number(numberMatch[1]);\n\n var boolMatch = input.match(boolRe);\n if (boolMatch !== null) return boolMatch[0].toLowerCase() === 'true';\n\n var nullMatch = input.match(nullRe);\n if (nullMatch !== null) return null;\n\n var undefinedMatch = input.match(undefinedRe);\n if (undefinedMatch !== null) return undefined;\n\n return value;\n};\n\nvar baseTransformShorthandValue = function baseTransformShorthandValue(propName, inputValue) {\n var ast = parse__default(inputValue.trim());\n var tokenStream = new TokenStream(ast.nodes);\n return transforms[propName](tokenStream);\n};\n\nvar transformShorthandValue = process.env.NODE_ENV === 'production' ? baseTransformShorthandValue : function (propName, inputValue) {\n try {\n return baseTransformShorthandValue(propName, inputValue);\n } catch (e) {\n throw new Error('Failed to parse declaration \"' + propName + ': ' + inputValue + '\"');\n }\n};\n\nvar getStylesForProperty = function getStylesForProperty(propName, inputValue, allowShorthand) {\n var isRawValue = allowShorthand === false || !(propName in transforms);\n var propValues = isRawValue ? _defineProperty({}, propName, transformRawValue(inputValue)) : transformShorthandValue(propName, inputValue.trim());\n\n return propValues;\n};\n\nvar getPropertyName = function getPropertyName(propName) {\n var isCustomProp = /^--\\w+/.test(propName);\n if (isCustomProp) {\n return propName;\n }\n return camelizeStyleName(propName);\n};\n\nvar index = function index(rules) {\n var shorthandBlacklist = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return rules.reduce(function (accum, rule) {\n var propertyName = getPropertyName(rule[0]);\n var value = rule[1];\n var allowShorthand = shorthandBlacklist.indexOf(propertyName) === -1;\n return Object.assign(accum, getStylesForProperty(propertyName, value, allowShorthand));\n }, {});\n};\n\nexports.transformRawValue = transformRawValue;\nexports.getStylesForProperty = getStylesForProperty;\nexports.getPropertyName = getPropertyName;\nexports.default = index;\n","var parse = require(\"./parse\");\nvar walk = require(\"./walk\");\nvar stringify = require(\"./stringify\");\n\nfunction ValueParser(value) {\n if (this instanceof ValueParser) {\n this.nodes = parse(value);\n return this;\n }\n return new ValueParser(value);\n}\n\nValueParser.prototype.toString = function() {\n return Array.isArray(this.nodes) ? stringify(this.nodes) : \"\";\n};\n\nValueParser.prototype.walk = function(cb, bubble) {\n walk(this.nodes, cb, bubble);\n return this;\n};\n\nValueParser.unit = require(\"./unit\");\n\nValueParser.walk = walk;\n\nValueParser.stringify = stringify;\n\nmodule.exports = ValueParser;\n","var openParentheses = \"(\".charCodeAt(0);\nvar closeParentheses = \")\".charCodeAt(0);\nvar singleQuote = \"'\".charCodeAt(0);\nvar doubleQuote = '\"'.charCodeAt(0);\nvar backslash = \"\\\\\".charCodeAt(0);\nvar slash = \"/\".charCodeAt(0);\nvar comma = \",\".charCodeAt(0);\nvar colon = \":\".charCodeAt(0);\nvar star = \"*\".charCodeAt(0);\n\nmodule.exports = function(input) {\n var tokens = [];\n var value = input;\n\n var next, quote, prev, token, escape, escapePos, whitespacePos;\n var pos = 0;\n var code = value.charCodeAt(pos);\n var max = value.length;\n var stack = [{ nodes: tokens }];\n var balanced = 0;\n var parent;\n\n var name = \"\";\n var before = \"\";\n var after = \"\";\n\n while (pos < max) {\n // Whitespaces\n if (code <= 32) {\n next = pos;\n do {\n next += 1;\n code = value.charCodeAt(next);\n } while (code <= 32);\n token = value.slice(pos, next);\n\n prev = tokens[tokens.length - 1];\n if (code === closeParentheses && balanced) {\n after = token;\n } else if (prev && prev.type === \"div\") {\n prev.after = token;\n } else if (\n code === comma ||\n code === colon ||\n (code === slash && value.charCodeAt(next + 1) !== star)\n ) {\n before = token;\n } else {\n tokens.push({\n type: \"space\",\n sourceIndex: pos,\n value: token\n });\n }\n\n pos = next;\n\n // Quotes\n } else if (code === singleQuote || code === doubleQuote) {\n next = pos;\n quote = code === singleQuote ? \"'\" : '\"';\n token = {\n type: \"string\",\n sourceIndex: pos,\n quote: quote\n };\n do {\n escape = false;\n next = value.indexOf(quote, next + 1);\n if (~next) {\n escapePos = next;\n while (value.charCodeAt(escapePos - 1) === backslash) {\n escapePos -= 1;\n escape = !escape;\n }\n } else {\n value += quote;\n next = value.length - 1;\n token.unclosed = true;\n }\n } while (escape);\n token.value = value.slice(pos + 1, next);\n\n tokens.push(token);\n pos = next + 1;\n code = value.charCodeAt(pos);\n\n // Comments\n } else if (code === slash && value.charCodeAt(pos + 1) === star) {\n token = {\n type: \"comment\",\n sourceIndex: pos\n };\n\n next = value.indexOf(\"*/\", pos);\n if (next === -1) {\n token.unclosed = true;\n next = value.length;\n }\n\n token.value = value.slice(pos + 2, next);\n tokens.push(token);\n\n pos = next + 2;\n code = value.charCodeAt(pos);\n\n // Dividers\n } else if (code === slash || code === comma || code === colon) {\n token = value[pos];\n\n tokens.push({\n type: \"div\",\n sourceIndex: pos - before.length,\n value: token,\n before: before,\n after: \"\"\n });\n before = \"\";\n\n pos += 1;\n code = value.charCodeAt(pos);\n\n // Open parentheses\n } else if (openParentheses === code) {\n // Whitespaces after open parentheses\n next = pos;\n do {\n next += 1;\n code = value.charCodeAt(next);\n } while (code <= 32);\n token = {\n type: \"function\",\n sourceIndex: pos - name.length,\n value: name,\n before: value.slice(pos + 1, next)\n };\n pos = next;\n\n if (name === \"url\" && code !== singleQuote && code !== doubleQuote) {\n next -= 1;\n do {\n escape = false;\n next = value.indexOf(\")\", next + 1);\n if (~next) {\n escapePos = next;\n while (value.charCodeAt(escapePos - 1) === backslash) {\n escapePos -= 1;\n escape = !escape;\n }\n } else {\n value += \")\";\n next = value.length - 1;\n token.unclosed = true;\n }\n } while (escape);\n // Whitespaces before closed\n whitespacePos = next;\n do {\n whitespacePos -= 1;\n code = value.charCodeAt(whitespacePos);\n } while (code <= 32);\n if (pos !== whitespacePos + 1) {\n token.nodes = [\n {\n type: \"word\",\n sourceIndex: pos,\n value: value.slice(pos, whitespacePos + 1)\n }\n ];\n } else {\n token.nodes = [];\n }\n if (token.unclosed && whitespacePos + 1 !== next) {\n token.after = \"\";\n token.nodes.push({\n type: \"space\",\n sourceIndex: whitespacePos + 1,\n value: value.slice(whitespacePos + 1, next)\n });\n } else {\n token.after = value.slice(whitespacePos + 1, next);\n }\n pos = next + 1;\n code = value.charCodeAt(pos);\n tokens.push(token);\n } else {\n balanced += 1;\n token.after = \"\";\n tokens.push(token);\n stack.push(token);\n tokens = token.nodes = [];\n parent = token;\n }\n name = \"\";\n\n // Close parentheses\n } else if (closeParentheses === code && balanced) {\n pos += 1;\n code = value.charCodeAt(pos);\n\n parent.after = after;\n after = \"\";\n balanced -= 1;\n stack.pop();\n parent = stack[balanced];\n tokens = parent.nodes;\n\n // Words\n } else {\n next = pos;\n do {\n if (code === backslash) {\n next += 1;\n }\n next += 1;\n code = value.charCodeAt(next);\n } while (\n next < max &&\n !(\n code <= 32 ||\n code === singleQuote ||\n code === doubleQuote ||\n code === comma ||\n code === colon ||\n code === slash ||\n code === openParentheses ||\n (code === closeParentheses && balanced)\n )\n );\n token = value.slice(pos, next);\n\n if (openParentheses === code) {\n name = token;\n } else {\n tokens.push({\n type: \"word\",\n sourceIndex: pos,\n value: token\n });\n }\n\n pos = next;\n }\n }\n\n for (pos = stack.length - 1; pos; pos -= 1) {\n stack[pos].unclosed = true;\n }\n\n return stack[0].nodes;\n};\n","module.exports = function walk(nodes, cb, bubble) {\n var i, max, node, result;\n\n for (i = 0, max = nodes.length; i < max; i += 1) {\n node = nodes[i];\n if (!bubble) {\n result = cb(node, i, nodes);\n }\n\n if (\n result !== false &&\n node.type === \"function\" &&\n Array.isArray(node.nodes)\n ) {\n walk(node.nodes, cb, bubble);\n }\n\n if (bubble) {\n cb(node, i, nodes);\n }\n }\n};\n","function stringifyNode(node, custom) {\n var type = node.type;\n var value = node.value;\n var buf;\n var customResult;\n\n if (custom && (customResult = custom(node)) !== undefined) {\n return customResult;\n } else if (type === \"word\" || type === \"space\") {\n return value;\n } else if (type === \"string\") {\n buf = node.quote || \"\";\n return buf + value + (node.unclosed ? \"\" : buf);\n } else if (type === \"comment\") {\n return \"/*\" + value + (node.unclosed ? \"\" : \"*/\");\n } else if (type === \"div\") {\n return (node.before || \"\") + value + (node.after || \"\");\n } else if (Array.isArray(node.nodes)) {\n buf = stringify(node.nodes);\n if (type !== \"function\") {\n return buf;\n }\n return (\n value +\n \"(\" +\n (node.before || \"\") +\n buf +\n (node.after || \"\") +\n (node.unclosed ? \"\" : \")\")\n );\n }\n return value;\n}\n\nfunction stringify(nodes, custom) {\n var result, i;\n\n if (Array.isArray(nodes)) {\n result = \"\";\n for (i = nodes.length - 1; ~i; i -= 1) {\n result = stringifyNode(nodes[i], custom) + result;\n }\n return result;\n }\n return stringifyNode(nodes, custom);\n}\n\nmodule.exports = stringify;\n","var minus = \"-\".charCodeAt(0);\nvar plus = \"+\".charCodeAt(0);\nvar dot = \".\".charCodeAt(0);\nvar exp = \"e\".charCodeAt(0);\nvar EXP = \"E\".charCodeAt(0);\n\nmodule.exports = function(value) {\n var pos = 0;\n var length = value.length;\n var dotted = false;\n var sciPos = -1;\n var containsNumber = false;\n var code;\n\n while (pos < length) {\n code = value.charCodeAt(pos);\n\n if (code >= 48 && code <= 57) {\n containsNumber = true;\n } else if (code === exp || code === EXP) {\n if (sciPos > -1) {\n break;\n }\n sciPos = pos;\n } else if (code === dot) {\n if (dotted) {\n break;\n }\n dotted = true;\n } else if (code === plus || code === minus) {\n if (pos !== 0) {\n break;\n }\n } else {\n break;\n }\n\n pos += 1;\n }\n\n if (sciPos + 1 === pos) pos--;\n\n return containsNumber\n ? {\n number: value.slice(0, pos),\n unit: value.slice(pos)\n }\n : false;\n};\n","'use strict'\n\nmodule.exports = require('./colors.json')\n","{\n \"black\": \"#000000\",\n \"silver\": \"#c0c0c0\",\n \"gray\": \"#808080\",\n \"white\": \"#ffffff\",\n \"maroon\": \"#800000\",\n \"red\": \"#ff0000\",\n \"purple\": \"#800080\",\n \"fuchsia\": \"#ff00ff\",\n \"green\": \"#008000\",\n \"lime\": \"#00ff00\",\n \"olive\": \"#808000\",\n \"yellow\": \"#ffff00\",\n \"navy\": \"#000080\",\n \"blue\": \"#0000ff\",\n \"teal\": \"#008080\",\n \"aqua\": \"#00ffff\",\n \"orange\": \"#ffa500\",\n \"aliceblue\": \"#f0f8ff\",\n \"antiquewhite\": \"#faebd7\",\n \"aquamarine\": \"#7fffd4\",\n \"azure\": \"#f0ffff\",\n \"beige\": \"#f5f5dc\",\n \"bisque\": \"#ffe4c4\",\n \"blanchedalmond\": \"#ffebcd\",\n \"blueviolet\": \"#8a2be2\",\n \"brown\": \"#a52a2a\",\n \"burlywood\": \"#deb887\",\n \"cadetblue\": \"#5f9ea0\",\n \"chartreuse\": \"#7fff00\",\n \"chocolate\": \"#d2691e\",\n \"coral\": \"#ff7f50\",\n \"cornflowerblue\": \"#6495ed\",\n \"cornsilk\": \"#fff8dc\",\n \"crimson\": \"#dc143c\",\n \"darkblue\": \"#00008b\",\n \"darkcyan\": \"#008b8b\",\n \"darkgoldenrod\": \"#b8860b\",\n \"darkgray\": \"#a9a9a9\",\n \"darkgreen\": \"#006400\",\n \"darkgrey\": \"#a9a9a9\",\n \"darkkhaki\": \"#bdb76b\",\n \"darkmagenta\": \"#8b008b\",\n \"darkolivegreen\": \"#556b2f\",\n \"darkorange\": \"#ff8c00\",\n \"darkorchid\": \"#9932cc\",\n \"darkred\": \"#8b0000\",\n \"darksalmon\": \"#e9967a\",\n \"darkseagreen\": \"#8fbc8f\",\n \"darkslateblue\": \"#483d8b\",\n \"darkslategray\": \"#2f4f4f\",\n \"darkslategrey\": \"#2f4f4f\",\n \"darkturquoise\": \"#00ced1\",\n \"darkviolet\": \"#9400d3\",\n \"deeppink\": \"#ff1493\",\n \"deepskyblue\": \"#00bfff\",\n \"dimgray\": \"#696969\",\n \"dimgrey\": \"#696969\",\n \"dodgerblue\": \"#1e90ff\",\n \"firebrick\": \"#b22222\",\n \"floralwhite\": \"#fffaf0\",\n \"forestgreen\": \"#228b22\",\n \"gainsboro\": \"#dcdcdc\",\n \"ghostwhite\": \"#f8f8ff\",\n \"gold\": \"#ffd700\",\n \"goldenrod\": \"#daa520\",\n \"greenyellow\": \"#adff2f\",\n \"grey\": \"#808080\",\n \"honeydew\": \"#f0fff0\",\n \"hotpink\": \"#ff69b4\",\n \"indianred\": \"#cd5c5c\",\n \"indigo\": \"#4b0082\",\n \"ivory\": \"#fffff0\",\n \"khaki\": \"#f0e68c\",\n \"lavender\": \"#e6e6fa\",\n \"lavenderblush\": \"#fff0f5\",\n \"lawngreen\": \"#7cfc00\",\n \"lemonchiffon\": \"#fffacd\",\n \"lightblue\": \"#add8e6\",\n \"lightcoral\": \"#f08080\",\n \"lightcyan\": \"#e0ffff\",\n \"lightgoldenrodyellow\": \"#fafad2\",\n \"lightgray\": \"#d3d3d3\",\n \"lightgreen\": \"#90ee90\",\n \"lightgrey\": \"#d3d3d3\",\n \"lightpink\": \"#ffb6c1\",\n \"lightsalmon\": \"#ffa07a\",\n \"lightseagreen\": \"#20b2aa\",\n \"lightskyblue\": \"#87cefa\",\n \"lightslategray\": \"#778899\",\n \"lightslategrey\": \"#778899\",\n \"lightsteelblue\": \"#b0c4de\",\n \"lightyellow\": \"#ffffe0\",\n \"limegreen\": \"#32cd32\",\n \"linen\": \"#faf0e6\",\n \"mediumaquamarine\": \"#66cdaa\",\n \"mediumblue\": \"#0000cd\",\n \"mediumorchid\": \"#ba55d3\",\n \"mediumpurple\": \"#9370db\",\n \"mediumseagreen\": \"#3cb371\",\n \"mediumslateblue\": \"#7b68ee\",\n \"mediumspringgreen\": \"#00fa9a\",\n \"mediumturquoise\": \"#48d1cc\",\n \"mediumvioletred\": \"#c71585\",\n \"midnightblue\": \"#191970\",\n \"mintcream\": \"#f5fffa\",\n \"mistyrose\": \"#ffe4e1\",\n \"moccasin\": \"#ffe4b5\",\n \"navajowhite\": \"#ffdead\",\n \"oldlace\": \"#fdf5e6\",\n \"olivedrab\": \"#6b8e23\",\n \"orangered\": \"#ff4500\",\n \"orchid\": \"#da70d6\",\n \"palegoldenrod\": \"#eee8aa\",\n \"palegreen\": \"#98fb98\",\n \"paleturquoise\": \"#afeeee\",\n \"palevioletred\": \"#db7093\",\n \"papayawhip\": \"#ffefd5\",\n \"peachpuff\": \"#ffdab9\",\n \"peru\": \"#cd853f\",\n \"pink\": \"#ffc0cb\",\n \"plum\": \"#dda0dd\",\n \"powderblue\": \"#b0e0e6\",\n \"rosybrown\": \"#bc8f8f\",\n \"royalblue\": \"#4169e1\",\n \"saddlebrown\": \"#8b4513\",\n \"salmon\": \"#fa8072\",\n \"sandybrown\": \"#f4a460\",\n \"seagreen\": \"#2e8b57\",\n \"seashell\": \"#fff5ee\",\n \"sienna\": \"#a0522d\",\n \"skyblue\": \"#87ceeb\",\n \"slateblue\": \"#6a5acd\",\n \"slategray\": \"#708090\",\n \"slategrey\": \"#708090\",\n \"snow\": \"#fffafa\",\n \"springgreen\": \"#00ff7f\",\n \"steelblue\": \"#4682b4\",\n \"tan\": \"#d2b48c\",\n \"thistle\": \"#d8bfd8\",\n \"tomato\": \"#ff6347\",\n \"turquoise\": \"#40e0d0\",\n \"violet\": \"#ee82ee\",\n \"wheat\": \"#f5deb3\",\n \"whitesmoke\": \"#f5f5f5\",\n \"yellowgreen\": \"#9acd32\",\n \"rebeccapurple\": \"#663399\"\n}\n","module.exports = function(obj) {\n if (typeof obj === 'string') return camelCase(obj);\n return walk(obj);\n};\n\nfunction walk (obj) {\n if (!obj || typeof obj !== 'object') return obj;\n if (isDate(obj) || isRegex(obj)) return obj;\n if (isArray(obj)) return map(obj, walk);\n return reduce(objectKeys(obj), function (acc, key) {\n var camel = camelCase(key);\n acc[camel] = walk(obj[key]);\n return acc;\n }, {});\n}\n\nfunction camelCase(str) {\n return str.replace(/[_.-](\\w|$)/g, function (_,x) {\n return x.toUpperCase();\n });\n}\n\nvar isArray = Array.isArray || function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n};\n\nvar isDate = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Date]';\n};\n\nvar isRegex = function (obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar has = Object.prototype.hasOwnProperty;\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (has.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nfunction reduce (xs, f, acc) {\n if (xs.reduce) return xs.reduce(f, acc);\n for (var i = 0; i < xs.length; i++) {\n acc = f(acc, xs[i], i);\n }\n return acc;\n}\n","'use strict';\n\nvar simpleIsEqual = function simpleIsEqual(a, b) {\n return a === b;\n};\n\nfunction index (resultFn, isEqual) {\n if (isEqual === void 0) {\n isEqual = simpleIsEqual;\n }\n\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n\n var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) {\n return isEqual(newArg, lastArgs[index]);\n };\n\n var result = function result() {\n for (var _len = arguments.length, newArgs = new Array(_len), _key = 0; _key < _len; _key++) {\n newArgs[_key] = arguments[_key];\n }\n\n if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) {\n return lastResult;\n }\n\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n };\n\n return result;\n}\n\nmodule.exports = index;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _store = _interopRequireDefault(require(\"store\"));\n\nvar _defaults = require(\"./defaults\");\n\n// Copyright 2017-2019 @polkadot/ui-settings authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nclass Settings {\n constructor() {\n this._apiUrl = void 0;\n this._i18nLang = void 0;\n this._uiMode = void 0;\n this._uiTheme = void 0;\n const settings = _store.default.get('settings') || {};\n this._apiUrl = settings.apiUrl || process.env.WS_URL || _defaults.ENDPOINTS[0].value;\n this._i18nLang = settings.i18nLang || _defaults.LANGUAGES[0].value;\n this._uiMode = settings.uiMode || process.env.UI_MODE || _defaults.UIMODES[0].value;\n this._uiTheme = settings.uiTheme || process.env.UI_THEME || _defaults.UITHEMES[0].value;\n }\n\n get apiUrl() {\n return this._apiUrl;\n }\n\n get i18nLang() {\n return this._i18nLang;\n }\n\n get uiMode() {\n return this._uiMode;\n }\n\n get uiTheme() {\n return this._uiTheme;\n }\n\n get availableChains() {\n return _defaults.CHAINS;\n }\n\n get availableNodes() {\n return _defaults.ENDPOINTS;\n }\n\n get availableLanguages() {\n return _defaults.LANGUAGES;\n }\n\n get availableUIModes() {\n return _defaults.UIMODES;\n }\n\n get availableUIThemes() {\n return _defaults.UITHEMES;\n }\n\n get() {\n return {\n apiUrl: this._apiUrl,\n i18nLang: this._i18nLang,\n uiMode: this._uiMode,\n uiTheme: this._uiTheme\n };\n }\n\n set(settings) {\n this._apiUrl = settings.apiUrl || this._apiUrl;\n this._i18nLang = settings.i18nLang || this._i18nLang;\n this._uiMode = settings.uiMode || this._uiMode;\n this._uiTheme = settings.uiTheme || this._uiTheme;\n\n _store.default.set('settings', this.get());\n }\n\n}\n\nconst settings = new Settings();\nvar _default = settings;\nexports.default = _default;","var engine = require('../src/store-engine')\n\nvar storages = require('../storages/all')\nvar plugins = [require('../plugins/json2')]\n\nmodule.exports = engine.createStore(storages, plugins)\n","var util = require('./util')\nvar slice = util.slice\nvar pluck = util.pluck\nvar each = util.each\nvar bind = util.bind\nvar create = util.create\nvar isList = util.isList\nvar isFunction = util.isFunction\nvar isObject = util.isObject\n\nmodule.exports = {\n\tcreateStore: createStore\n}\n\nvar storeAPI = {\n\tversion: '2.0.12',\n\tenabled: false,\n\t\n\t// get returns the value of the given key. If that value\n\t// is undefined, it returns optionalDefaultValue instead.\n\tget: function(key, optionalDefaultValue) {\n\t\tvar data = this.storage.read(this._namespacePrefix + key)\n\t\treturn this._deserialize(data, optionalDefaultValue)\n\t},\n\n\t// set will store the given value at key and returns value.\n\t// Calling set with value === undefined is equivalent to calling remove.\n\tset: function(key, value) {\n\t\tif (value === undefined) {\n\t\t\treturn this.remove(key)\n\t\t}\n\t\tthis.storage.write(this._namespacePrefix + key, this._serialize(value))\n\t\treturn value\n\t},\n\n\t// remove deletes the key and value stored at the given key.\n\tremove: function(key) {\n\t\tthis.storage.remove(this._namespacePrefix + key)\n\t},\n\n\t// each will call the given callback once for each key-value pair\n\t// in this store.\n\teach: function(callback) {\n\t\tvar self = this\n\t\tthis.storage.each(function(val, namespacedKey) {\n\t\t\tcallback.call(self, self._deserialize(val), (namespacedKey || '').replace(self._namespaceRegexp, ''))\n\t\t})\n\t},\n\n\t// clearAll will remove all the stored key-value pairs in this store.\n\tclearAll: function() {\n\t\tthis.storage.clearAll()\n\t},\n\n\t// additional functionality that can't live in plugins\n\t// ---------------------------------------------------\n\n\t// hasNamespace returns true if this store instance has the given namespace.\n\thasNamespace: function(namespace) {\n\t\treturn (this._namespacePrefix == '__storejs_'+namespace+'_')\n\t},\n\n\t// createStore creates a store.js instance with the first\n\t// functioning storage in the list of storage candidates,\n\t// and applies the the given mixins to the instance.\n\tcreateStore: function() {\n\t\treturn createStore.apply(this, arguments)\n\t},\n\t\n\taddPlugin: function(plugin) {\n\t\tthis._addPlugin(plugin)\n\t},\n\t\n\tnamespace: function(namespace) {\n\t\treturn createStore(this.storage, this.plugins, namespace)\n\t}\n}\n\nfunction _warn() {\n\tvar _console = (typeof console == 'undefined' ? null : console)\n\tif (!_console) { return }\n\tvar fn = (_console.warn ? _console.warn : _console.log)\n\tfn.apply(_console, arguments)\n}\n\nfunction createStore(storages, plugins, namespace) {\n\tif (!namespace) {\n\t\tnamespace = ''\n\t}\n\tif (storages && !isList(storages)) {\n\t\tstorages = [storages]\n\t}\n\tif (plugins && !isList(plugins)) {\n\t\tplugins = [plugins]\n\t}\n\n\tvar namespacePrefix = (namespace ? '__storejs_'+namespace+'_' : '')\n\tvar namespaceRegexp = (namespace ? new RegExp('^'+namespacePrefix) : null)\n\tvar legalNamespaces = /^[a-zA-Z0-9_\\-]*$/ // alpha-numeric + underscore and dash\n\tif (!legalNamespaces.test(namespace)) {\n\t\tthrow new Error('store.js namespaces can only have alphanumerics + underscores and dashes')\n\t}\n\t\n\tvar _privateStoreProps = {\n\t\t_namespacePrefix: namespacePrefix,\n\t\t_namespaceRegexp: namespaceRegexp,\n\n\t\t_testStorage: function(storage) {\n\t\t\ttry {\n\t\t\t\tvar testStr = '__storejs__test__'\n\t\t\t\tstorage.write(testStr, testStr)\n\t\t\t\tvar ok = (storage.read(testStr) === testStr)\n\t\t\t\tstorage.remove(testStr)\n\t\t\t\treturn ok\n\t\t\t} catch(e) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\n\t\t_assignPluginFnProp: function(pluginFnProp, propName) {\n\t\t\tvar oldFn = this[propName]\n\t\t\tthis[propName] = function pluginFn() {\n\t\t\t\tvar args = slice(arguments, 0)\n\t\t\t\tvar self = this\n\n\t\t\t\t// super_fn calls the old function which was overwritten by\n\t\t\t\t// this mixin.\n\t\t\t\tfunction super_fn() {\n\t\t\t\t\tif (!oldFn) { return }\n\t\t\t\t\teach(arguments, function(arg, i) {\n\t\t\t\t\t\targs[i] = arg\n\t\t\t\t\t})\n\t\t\t\t\treturn oldFn.apply(self, args)\n\t\t\t\t}\n\n\t\t\t\t// Give mixing function access to super_fn by prefixing all mixin function\n\t\t\t\t// arguments with super_fn.\n\t\t\t\tvar newFnArgs = [super_fn].concat(args)\n\n\t\t\t\treturn pluginFnProp.apply(self, newFnArgs)\n\t\t\t}\n\t\t},\n\n\t\t_serialize: function(obj) {\n\t\t\treturn JSON.stringify(obj)\n\t\t},\n\n\t\t_deserialize: function(strVal, defaultVal) {\n\t\t\tif (!strVal) { return defaultVal }\n\t\t\t// It is possible that a raw string value has been previously stored\n\t\t\t// in a storage without using store.js, meaning it will be a raw\n\t\t\t// string value instead of a JSON serialized string. By defaulting\n\t\t\t// to the raw string value in case of a JSON parse error, we allow\n\t\t\t// for past stored values to be forwards-compatible with store.js\n\t\t\tvar val = ''\n\t\t\ttry { val = JSON.parse(strVal) }\n\t\t\tcatch(e) { val = strVal }\n\n\t\t\treturn (val !== undefined ? val : defaultVal)\n\t\t},\n\t\t\n\t\t_addStorage: function(storage) {\n\t\t\tif (this.enabled) { return }\n\t\t\tif (this._testStorage(storage)) {\n\t\t\t\tthis.storage = storage\n\t\t\t\tthis.enabled = true\n\t\t\t}\n\t\t},\n\n\t\t_addPlugin: function(plugin) {\n\t\t\tvar self = this\n\n\t\t\t// If the plugin is an array, then add all plugins in the array.\n\t\t\t// This allows for a plugin to depend on other plugins.\n\t\t\tif (isList(plugin)) {\n\t\t\t\teach(plugin, function(plugin) {\n\t\t\t\t\tself._addPlugin(plugin)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Keep track of all plugins we've seen so far, so that we\n\t\t\t// don't add any of them twice.\n\t\t\tvar seenPlugin = pluck(this.plugins, function(seenPlugin) {\n\t\t\t\treturn (plugin === seenPlugin)\n\t\t\t})\n\t\t\tif (seenPlugin) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.plugins.push(plugin)\n\n\t\t\t// Check that the plugin is properly formed\n\t\t\tif (!isFunction(plugin)) {\n\t\t\t\tthrow new Error('Plugins must be function values that return objects')\n\t\t\t}\n\n\t\t\tvar pluginProperties = plugin.call(this)\n\t\t\tif (!isObject(pluginProperties)) {\n\t\t\t\tthrow new Error('Plugins must return an object of function properties')\n\t\t\t}\n\n\t\t\t// Add the plugin function properties to this store instance.\n\t\t\teach(pluginProperties, function(pluginFnProp, propName) {\n\t\t\t\tif (!isFunction(pluginFnProp)) {\n\t\t\t\t\tthrow new Error('Bad plugin property: '+propName+' from plugin '+plugin.name+'. Plugins should only return functions.')\n\t\t\t\t}\n\t\t\t\tself._assignPluginFnProp(pluginFnProp, propName)\n\t\t\t})\n\t\t},\n\t\t\n\t\t// Put deprecated properties in the private API, so as to not expose it to accidential\n\t\t// discovery through inspection of the store object.\n\t\t\n\t\t// Deprecated: addStorage\n\t\taddStorage: function(storage) {\n\t\t\t_warn('store.addStorage(storage) is deprecated. Use createStore([storages])')\n\t\t\tthis._addStorage(storage)\n\t\t}\n\t}\n\n\tvar store = create(_privateStoreProps, storeAPI, {\n\t\tplugins: []\n\t})\n\tstore.raw = {}\n\teach(store, function(prop, propName) {\n\t\tif (isFunction(prop)) {\n\t\t\tstore.raw[propName] = bind(store, prop)\t\t\t\n\t\t}\n\t})\n\teach(storages, function(storage) {\n\t\tstore._addStorage(storage)\n\t})\n\teach(plugins, function(plugin) {\n\t\tstore._addPlugin(plugin)\n\t})\n\treturn store\n}\n","var assign = make_assign()\nvar create = make_create()\nvar trim = make_trim()\nvar Global = (typeof window !== 'undefined' ? window : global)\n\nmodule.exports = {\n\tassign: assign,\n\tcreate: create,\n\ttrim: trim,\n\tbind: bind,\n\tslice: slice,\n\teach: each,\n\tmap: map,\n\tpluck: pluck,\n\tisList: isList,\n\tisFunction: isFunction,\n\tisObject: isObject,\n\tGlobal: Global\n}\n\nfunction make_assign() {\n\tif (Object.assign) {\n\t\treturn Object.assign\n\t} else {\n\t\treturn function shimAssign(obj, props1, props2, etc) {\n\t\t\tfor (var i = 1; i < arguments.length; i++) {\n\t\t\t\teach(Object(arguments[i]), function(val, key) {\n\t\t\t\t\tobj[key] = val\n\t\t\t\t})\n\t\t\t}\t\t\t\n\t\t\treturn obj\n\t\t}\n\t}\n}\n\nfunction make_create() {\n\tif (Object.create) {\n\t\treturn function create(obj, assignProps1, assignProps2, etc) {\n\t\t\tvar assignArgsList = slice(arguments, 1)\n\t\t\treturn assign.apply(this, [Object.create(obj)].concat(assignArgsList))\n\t\t}\n\t} else {\n\t\tfunction F() {} // eslint-disable-line no-inner-declarations\n\t\treturn function create(obj, assignProps1, assignProps2, etc) {\n\t\t\tvar assignArgsList = slice(arguments, 1)\n\t\t\tF.prototype = obj\n\t\t\treturn assign.apply(this, [new F()].concat(assignArgsList))\n\t\t}\n\t}\n}\n\nfunction make_trim() {\n\tif (String.prototype.trim) {\n\t\treturn function trim(str) {\n\t\t\treturn String.prototype.trim.call(str)\n\t\t}\n\t} else {\n\t\treturn function trim(str) {\n\t\t\treturn str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '')\n\t\t}\n\t}\n}\n\nfunction bind(obj, fn) {\n\treturn function() {\n\t\treturn fn.apply(obj, Array.prototype.slice.call(arguments, 0))\n\t}\n}\n\nfunction slice(arr, index) {\n\treturn Array.prototype.slice.call(arr, index || 0)\n}\n\nfunction each(obj, fn) {\n\tpluck(obj, function(val, key) {\n\t\tfn(val, key)\n\t\treturn false\n\t})\n}\n\nfunction map(obj, fn) {\n\tvar res = (isList(obj) ? [] : {})\n\tpluck(obj, function(v, k) {\n\t\tres[k] = fn(v, k)\n\t\treturn false\n\t})\n\treturn res\n}\n\nfunction pluck(obj, fn) {\n\tif (isList(obj)) {\n\t\tfor (var i=0; i= 0; i--) {\n\t\tvar key = localStorage().key(i)\n\t\tfn(read(key), key)\n\t}\n}\n\nfunction remove(key) {\n\treturn localStorage().removeItem(key)\n}\n\nfunction clearAll() {\n\treturn localStorage().clear()\n}\n","// oldFF-globalStorage provides storage for Firefox\n// versions 6 and 7, where no localStorage, etc\n// is available.\n\nvar util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'oldFF-globalStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar globalStorage = Global.globalStorage\n\nfunction read(key) {\n\treturn globalStorage[key]\n}\n\nfunction write(key, data) {\n\tglobalStorage[key] = data\n}\n\nfunction each(fn) {\n\tfor (var i = globalStorage.length - 1; i >= 0; i--) {\n\t\tvar key = globalStorage.key(i)\n\t\tfn(globalStorage[key], key)\n\t}\n}\n\nfunction remove(key) {\n\treturn globalStorage.removeItem(key)\n}\n\nfunction clearAll() {\n\teach(function(key, _) {\n\t\tdelete globalStorage[key]\n\t})\n}\n","// oldIE-userDataStorage provides storage for Internet Explorer\n// versions 6 and 7, where no localStorage, sessionStorage, etc\n// is available.\n\nvar util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'oldIE-userDataStorage',\n\twrite: write,\n\tread: read,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar storageName = 'storejs'\nvar doc = Global.document\nvar _withStorageEl = _makeIEStorageElFunction()\nvar disable = (Global.navigator ? Global.navigator.userAgent : '').match(/ (MSIE 8|MSIE 9|MSIE 10)\\./) // MSIE 9.x, MSIE 10.x\n\nfunction write(unfixedKey, data) {\n\tif (disable) { return }\n\tvar fixedKey = fixKey(unfixedKey)\n\t_withStorageEl(function(storageEl) {\n\t\tstorageEl.setAttribute(fixedKey, data)\n\t\tstorageEl.save(storageName)\n\t})\n}\n\nfunction read(unfixedKey) {\n\tif (disable) { return }\n\tvar fixedKey = fixKey(unfixedKey)\n\tvar res = null\n\t_withStorageEl(function(storageEl) {\n\t\tres = storageEl.getAttribute(fixedKey)\n\t})\n\treturn res\n}\n\nfunction each(callback) {\n\t_withStorageEl(function(storageEl) {\n\t\tvar attributes = storageEl.XMLDocument.documentElement.attributes\n\t\tfor (var i=attributes.length-1; i>=0; i--) {\n\t\t\tvar attr = attributes[i]\n\t\t\tcallback(storageEl.getAttribute(attr.name), attr.name)\n\t\t}\n\t})\n}\n\nfunction remove(unfixedKey) {\n\tvar fixedKey = fixKey(unfixedKey)\n\t_withStorageEl(function(storageEl) {\n\t\tstorageEl.removeAttribute(fixedKey)\n\t\tstorageEl.save(storageName)\n\t})\n}\n\nfunction clearAll() {\n\t_withStorageEl(function(storageEl) {\n\t\tvar attributes = storageEl.XMLDocument.documentElement.attributes\n\t\tstorageEl.load(storageName)\n\t\tfor (var i=attributes.length-1; i>=0; i--) {\n\t\t\tstorageEl.removeAttribute(attributes[i].name)\n\t\t}\n\t\tstorageEl.save(storageName)\n\t})\n}\n\n// Helpers\n//////////\n\n// In IE7, keys cannot start with a digit or contain certain chars.\n// See https://github.com/marcuswestin/store.js/issues/40\n// See https://github.com/marcuswestin/store.js/issues/83\nvar forbiddenCharsRegex = new RegExp(\"[!\\\"#$%&'()*+,/\\\\\\\\:;<=>?@[\\\\]^`{|}~]\", \"g\")\nfunction fixKey(key) {\n\treturn key.replace(/^\\d/, '___$&').replace(forbiddenCharsRegex, '___')\n}\n\nfunction _makeIEStorageElFunction() {\n\tif (!doc || !doc.documentElement || !doc.documentElement.addBehavior) {\n\t\treturn null\n\t}\n\tvar scriptTag = 'script',\n\t\tstorageOwner,\n\t\tstorageContainer,\n\t\tstorageEl\n\n\t// Since #userData storage applies only to specific paths, we need to\n\t// somehow link our data to a specific path. We choose /favicon.ico\n\t// as a pretty safe option, since all browsers already make a request to\n\t// this URL anyway and being a 404 will not hurt us here. We wrap an\n\t// iframe pointing to the favicon in an ActiveXObject(htmlfile) object\n\t// (see: http://msdn.microsoft.com/en-us/library/aa752574(v=VS.85).aspx)\n\t// since the iframe access rules appear to allow direct access and\n\t// manipulation of the document element, even for a 404 page. This\n\t// document can be used instead of the current document (which would\n\t// have been limited to the current path) to perform #userData storage.\n\ttry {\n\t\t/* global ActiveXObject */\n\t\tstorageContainer = new ActiveXObject('htmlfile')\n\t\tstorageContainer.open()\n\t\tstorageContainer.write('<'+scriptTag+'>document.w=window')\n\t\tstorageContainer.close()\n\t\tstorageOwner = storageContainer.w.frames[0].document\n\t\tstorageEl = storageOwner.createElement('div')\n\t} catch(e) {\n\t\t// somehow ActiveXObject instantiation failed (perhaps some special\n\t\t// security settings or otherwse), fall back to per-path storage\n\t\tstorageEl = doc.createElement('div')\n\t\tstorageOwner = doc.body\n\t}\n\n\treturn function(storeFunction) {\n\t\tvar args = [].slice.call(arguments, 0)\n\t\targs.unshift(storageEl)\n\t\t// See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx\n\t\t// and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx\n\t\tstorageOwner.appendChild(storageEl)\n\t\tstorageEl.addBehavior('#default#userData')\n\t\tstorageEl.load(storageName)\n\t\tstoreFunction.apply(this, args)\n\t\tstorageOwner.removeChild(storageEl)\n\t\treturn\n\t}\n}\n","// cookieStorage is useful Safari private browser mode, where localStorage\n// doesn't work but cookies do. This implementation is adopted from\n// https://developer.mozilla.org/en-US/docs/Web/API/Storage/LocalStorage\n\nvar util = require('../src/util')\nvar Global = util.Global\nvar trim = util.trim\n\nmodule.exports = {\n\tname: 'cookieStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar doc = Global.document\n\nfunction read(key) {\n\tif (!key || !_has(key)) { return null }\n\tvar regexpStr = \"(?:^|.*;\\\\s*)\" +\n\t\tescape(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") +\n\t\t\"\\\\s*\\\\=\\\\s*((?:[^;](?!;))*[^;]?).*\"\n\treturn unescape(doc.cookie.replace(new RegExp(regexpStr), \"$1\"))\n}\n\nfunction each(callback) {\n\tvar cookies = doc.cookie.split(/; ?/g)\n\tfor (var i = cookies.length - 1; i >= 0; i--) {\n\t\tif (!trim(cookies[i])) {\n\t\t\tcontinue\n\t\t}\n\t\tvar kvp = cookies[i].split('=')\n\t\tvar key = unescape(kvp[0])\n\t\tvar val = unescape(kvp[1])\n\t\tcallback(val, key)\n\t}\n}\n\nfunction write(key, data) {\n\tif(!key) { return }\n\tdoc.cookie = escape(key) + \"=\" + escape(data) + \"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/\"\n}\n\nfunction remove(key) {\n\tif (!key || !_has(key)) {\n\t\treturn\n\t}\n\tdoc.cookie = escape(key) + \"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/\"\n}\n\nfunction clearAll() {\n\teach(function(_, key) {\n\t\tremove(key)\n\t})\n}\n\nfunction _has(key) {\n\treturn (new RegExp(\"(?:^|;\\\\s*)\" + escape(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") + \"\\\\s*\\\\=\")).test(doc.cookie)\n}\n","var util = require('../src/util')\nvar Global = util.Global\n\nmodule.exports = {\n\tname: 'sessionStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll\n}\n\nfunction sessionStorage() {\n\treturn Global.sessionStorage\n}\n\nfunction read(key) {\n\treturn sessionStorage().getItem(key)\n}\n\nfunction write(key, data) {\n\treturn sessionStorage().setItem(key, data)\n}\n\nfunction each(fn) {\n\tfor (var i = sessionStorage().length - 1; i >= 0; i--) {\n\t\tvar key = sessionStorage().key(i)\n\t\tfn(read(key), key)\n\t}\n}\n\nfunction remove(key) {\n\treturn sessionStorage().removeItem(key)\n}\n\nfunction clearAll() {\n\treturn sessionStorage().clear()\n}\n","// memoryStorage is a useful last fallback to ensure that the store\n// is functions (meaning store.get(), store.set(), etc will all function).\n// However, stored values will not persist when the browser navigates to\n// a new page or reloads the current page.\n\nmodule.exports = {\n\tname: 'memoryStorage',\n\tread: read,\n\twrite: write,\n\teach: each,\n\tremove: remove,\n\tclearAll: clearAll,\n}\n\nvar memoryStorage = {}\n\nfunction read(key) {\n\treturn memoryStorage[key]\n}\n\nfunction write(key, data) {\n\tmemoryStorage[key] = data\n}\n\nfunction each(callback) {\n\tfor (var key in memoryStorage) {\n\t\tif (memoryStorage.hasOwnProperty(key)) {\n\t\t\tcallback(memoryStorage[key], key)\n\t\t}\n\t}\n}\n\nfunction remove(key) {\n\tdelete memoryStorage[key]\n}\n\nfunction clearAll(key) {\n\tmemoryStorage = {}\n}\n","module.exports = json2Plugin\n\nfunction json2Plugin() {\n\trequire('./lib/json2')\n\treturn {}\n}\n","/* eslint-disable */\n\n// json2.js\n// 2016-10-28\n// Public Domain.\n// NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n// See http://www.JSON.org/js.html\n// This code should be minified before deployment.\n// See http://javascript.crockford.com/jsmin.html\n\n// USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO\n// NOT CONTROL.\n\n// This file creates a global JSON object containing two methods: stringify\n// and parse. This file provides the ES5 JSON capability to ES3 systems.\n// If a project might run on IE8 or earlier, then this file should be included.\n// This file does nothing on ES5 systems.\n\n// JSON.stringify(value, replacer, space)\n// value any JavaScript value, usually an object or array.\n// replacer an optional parameter that determines how object\n// values are stringified for objects. It can be a\n// function or an array of strings.\n// space an optional parameter that specifies the indentation\n// of nested structures. If it is omitted, the text will\n// be packed without extra whitespace. If it is a number,\n// it will specify the number of spaces to indent at each\n// level. If it is a string (such as \"\\t\" or \" \"),\n// it contains the characters used to indent at each level.\n// This method produces a JSON text from a JavaScript value.\n// When an object value is found, if the object contains a toJSON\n// method, its toJSON method will be called and the result will be\n// stringified. A toJSON method does not serialize: it returns the\n// value represented by the name/value pair that should be serialized,\n// or undefined if nothing should be serialized. The toJSON method\n// will be passed the key associated with the value, and this will be\n// bound to the value.\n\n// For example, this would serialize Dates as ISO strings.\n\n// Date.prototype.toJSON = function (key) {\n// function f(n) {\n// // Format integers to have at least two digits.\n// return (n < 10)\n// ? \"0\" + n\n// : n;\n// }\n// return this.getUTCFullYear() + \"-\" +\n// f(this.getUTCMonth() + 1) + \"-\" +\n// f(this.getUTCDate()) + \"T\" +\n// f(this.getUTCHours()) + \":\" +\n// f(this.getUTCMinutes()) + \":\" +\n// f(this.getUTCSeconds()) + \"Z\";\n// };\n\n// You can provide an optional replacer method. It will be passed the\n// key and value of each member, with this bound to the containing\n// object. The value that is returned from your method will be\n// serialized. If your method returns undefined, then the member will\n// be excluded from the serialization.\n\n// If the replacer parameter is an array of strings, then it will be\n// used to select the members to be serialized. It filters the results\n// such that only members with keys listed in the replacer array are\n// stringified.\n\n// Values that do not have JSON representations, such as undefined or\n// functions, will not be serialized. Such values in objects will be\n// dropped; in arrays they will be replaced with null. You can use\n// a replacer function to replace those with JSON values.\n\n// JSON.stringify(undefined) returns undefined.\n\n// The optional space parameter produces a stringification of the\n// value that is filled with line breaks and indentation to make it\n// easier to read.\n\n// If the space parameter is a non-empty string, then that string will\n// be used for indentation. If the space parameter is a number, then\n// the indentation will be that many spaces.\n\n// Example:\n\n// text = JSON.stringify([\"e\", {pluribus: \"unum\"}]);\n// // text is '[\"e\",{\"pluribus\":\"unum\"}]'\n\n// text = JSON.stringify([\"e\", {pluribus: \"unum\"}], null, \"\\t\");\n// // text is '[\\n\\t\"e\",\\n\\t{\\n\\t\\t\"pluribus\": \"unum\"\\n\\t}\\n]'\n\n// text = JSON.stringify([new Date()], function (key, value) {\n// return this[key] instanceof Date\n// ? \"Date(\" + this[key] + \")\"\n// : value;\n// });\n// // text is '[\"Date(---current time---)\"]'\n\n// JSON.parse(text, reviver)\n// This method parses a JSON text to produce an object or array.\n// It can throw a SyntaxError exception.\n\n// The optional reviver parameter is a function that can filter and\n// transform the results. It receives each of the keys and values,\n// and its return value is used instead of the original value.\n// If it returns what it received, then the structure is not modified.\n// If it returns undefined then the member is deleted.\n\n// Example:\n\n// // Parse the text. Values that look like ISO date strings will\n// // be converted to Date objects.\n\n// myData = JSON.parse(text, function (key, value) {\n// var a;\n// if (typeof value === \"string\") {\n// a =\n// /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/.exec(value);\n// if (a) {\n// return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],\n// +a[5], +a[6]));\n// }\n// }\n// return value;\n// });\n\n// myData = JSON.parse('[\"Date(09/09/2001)\"]', function (key, value) {\n// var d;\n// if (typeof value === \"string\" &&\n// value.slice(0, 5) === \"Date(\" &&\n// value.slice(-1) === \")\") {\n// d = new Date(value.slice(5, -1));\n// if (d) {\n// return d;\n// }\n// }\n// return value;\n// });\n\n// This is a reference implementation. You are free to copy, modify, or\n// redistribute.\n\n/*jslint\n eval, for, this\n*/\n\n/*property\n JSON, apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,\n getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,\n lastIndex, length, parse, prototype, push, replace, slice, stringify,\n test, toJSON, toString, valueOf\n*/\n\n\n// Create a JSON object only if one does not already exist. We create the\n// methods in a closure to avoid creating global variables.\n\nif (typeof JSON !== \"object\") {\n JSON = {};\n}\n\n(function () {\n \"use strict\";\n\n var rx_one = /^[\\],:{}\\s]*$/;\n var rx_two = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g;\n var rx_three = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g;\n var rx_four = /(?:^|:|,)(?:\\s*\\[)+/g;\n var rx_escapable = /[\\\\\"\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n var rx_dangerous = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10\n ? \"0\" + n\n : n;\n }\n\n function this_value() {\n return this.valueOf();\n }\n\n if (typeof Date.prototype.toJSON !== \"function\") {\n\n Date.prototype.toJSON = function () {\n\n return isFinite(this.valueOf())\n ? this.getUTCFullYear() + \"-\" +\n f(this.getUTCMonth() + 1) + \"-\" +\n f(this.getUTCDate()) + \"T\" +\n f(this.getUTCHours()) + \":\" +\n f(this.getUTCMinutes()) + \":\" +\n f(this.getUTCSeconds()) + \"Z\"\n : null;\n };\n\n Boolean.prototype.toJSON = this_value;\n Number.prototype.toJSON = this_value;\n String.prototype.toJSON = this_value;\n }\n\n var gap;\n var indent;\n var meta;\n var rep;\n\n\n function quote(string) {\n\n// If the string contains no control characters, no quote characters, and no\n// backslash characters, then we can safely slap some quotes around it.\n// Otherwise we must also replace the offending characters with safe escape\n// sequences.\n\n rx_escapable.lastIndex = 0;\n return rx_escapable.test(string)\n ? \"\\\"\" + string.replace(rx_escapable, function (a) {\n var c = meta[a];\n return typeof c === \"string\"\n ? c\n : \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n }) + \"\\\"\"\n : \"\\\"\" + string + \"\\\"\";\n }\n\n\n function str(key, holder) {\n\n// Produce a string from holder[key].\n\n var i; // The loop counter.\n var k; // The member key.\n var v; // The member value.\n var length;\n var mind = gap;\n var partial;\n var value = holder[key];\n\n// If the value has a toJSON method, call it to obtain a replacement value.\n\n if (value && typeof value === \"object\" &&\n typeof value.toJSON === \"function\") {\n value = value.toJSON(key);\n }\n\n// If we were called with a replacer function, then call the replacer to\n// obtain a replacement value.\n\n if (typeof rep === \"function\") {\n value = rep.call(holder, key, value);\n }\n\n// What happens next depends on the value's type.\n\n switch (typeof value) {\n case \"string\":\n return quote(value);\n\n case \"number\":\n\n// JSON numbers must be finite. Encode non-finite numbers as null.\n\n return isFinite(value)\n ? String(value)\n : \"null\";\n\n case \"boolean\":\n case \"null\":\n\n// If the value is a boolean or null, convert it to a string. Note:\n// typeof null does not produce \"null\". The case is included here in\n// the remote chance that this gets fixed someday.\n\n return String(value);\n\n// If the type is \"object\", we might be dealing with an object or an array or\n// null.\n\n case \"object\":\n\n// Due to a specification blunder in ECMAScript, typeof null is \"object\",\n// so watch out for that case.\n\n if (!value) {\n return \"null\";\n }\n\n// Make an array to hold the partial results of stringifying this object value.\n\n gap += indent;\n partial = [];\n\n// Is the value an array?\n\n if (Object.prototype.toString.apply(value) === \"[object Array]\") {\n\n// The value is an array. Stringify every element. Use null as a placeholder\n// for non-JSON values.\n\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || \"null\";\n }\n\n// Join all of the elements together, separated with commas, and wrap them in\n// brackets.\n\n v = partial.length === 0\n ? \"[]\"\n : gap\n ? \"[\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"]\"\n : \"[\" + partial.join(\",\") + \"]\";\n gap = mind;\n return v;\n }\n\n// If the replacer is an array, use it to select the members to be stringified.\n\n if (rep && typeof rep === \"object\") {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n if (typeof rep[i] === \"string\") {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (\n gap\n ? \": \"\n : \":\"\n ) + v);\n }\n }\n }\n } else {\n\n// Otherwise, iterate through all of the keys in the object.\n\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (\n gap\n ? \": \"\n : \":\"\n ) + v);\n }\n }\n }\n }\n\n// Join all of the member texts together, separated with commas,\n// and wrap them in braces.\n\n v = partial.length === 0\n ? \"{}\"\n : gap\n ? \"{\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"}\"\n : \"{\" + partial.join(\",\") + \"}\";\n gap = mind;\n return v;\n }\n }\n\n// If the JSON object does not yet have a stringify method, give it one.\n\n if (typeof JSON.stringify !== \"function\") {\n meta = { // table of character substitutions\n \"\\b\": \"\\\\b\",\n \"\\t\": \"\\\\t\",\n \"\\n\": \"\\\\n\",\n \"\\f\": \"\\\\f\",\n \"\\r\": \"\\\\r\",\n \"\\\"\": \"\\\\\\\"\",\n \"\\\\\": \"\\\\\\\\\"\n };\n JSON.stringify = function (value, replacer, space) {\n\n// The stringify method takes a value and an optional replacer, and an optional\n// space parameter, and returns a JSON text. The replacer can be a function\n// that can replace values, or an array of strings that will select the keys.\n// A default replacer method can be provided. Use of the space parameter can\n// produce text that is more easily readable.\n\n var i;\n gap = \"\";\n indent = \"\";\n\n// If the space parameter is a number, make an indent string containing that\n// many spaces.\n\n if (typeof space === \"number\") {\n for (i = 0; i < space; i += 1) {\n indent += \" \";\n }\n\n// If the space parameter is a string, it will be used as the indent string.\n\n } else if (typeof space === \"string\") {\n indent = space;\n }\n\n// If there is a replacer, it must be a function or an array.\n// Otherwise, throw an error.\n\n rep = replacer;\n if (replacer && typeof replacer !== \"function\" &&\n (typeof replacer !== \"object\" ||\n typeof replacer.length !== \"number\")) {\n throw new Error(\"JSON.stringify\");\n }\n\n// Make a fake root object containing our value under the key of \"\".\n// Return the result of stringifying the value.\n\n return str(\"\", {\"\": value});\n };\n }\n\n\n// If the JSON object does not yet have a parse method, give it one.\n\n if (typeof JSON.parse !== \"function\") {\n JSON.parse = function (text, reviver) {\n\n// The parse method takes a text and an optional reviver function, and returns\n// a JavaScript value if the text is a valid JSON text.\n\n var j;\n\n function walk(holder, key) {\n\n// The walk method is used to recursively walk the resulting structure so\n// that modifications can be made.\n\n var k;\n var v;\n var value = holder[key];\n if (value && typeof value === \"object\") {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = walk(value, k);\n if (v !== undefined) {\n value[k] = v;\n } else {\n delete value[k];\n }\n }\n }\n }\n return reviver.call(holder, key, value);\n }\n\n\n// Parsing happens in four stages. In the first stage, we replace certain\n// Unicode characters with escape sequences. JavaScript handles many characters\n// incorrectly, either silently deleting them, or treating them as line endings.\n\n text = String(text);\n rx_dangerous.lastIndex = 0;\n if (rx_dangerous.test(text)) {\n text = text.replace(rx_dangerous, function (a) {\n return \"\\\\u\" +\n (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n });\n }\n\n// In the second stage, we run the text against regular expressions that look\n// for non-JSON patterns. We are especially concerned with \"()\" and \"new\"\n// because they can cause invocation, and \"=\" because it can cause mutation.\n// But just to be safe, we want to reject all unexpected forms.\n\n// We split the second stage into 4 regexp operations in order to work around\n// crippling inefficiencies in IE's and Safari's regexp engines. First we\n// replace the JSON backslash pairs with \"@\" (a non-JSON character). Second, we\n// replace all simple value tokens with \"]\" characters. Third, we delete all\n// open brackets that follow a colon or comma or that begin the text. Finally,\n// we look to see that the remaining characters are only whitespace or \"]\" or\n// \",\" or \":\" or \"{\" or \"}\". If that is so, then the text is safe for eval.\n\n if (\n rx_one.test(\n text\n .replace(rx_two, \"@\")\n .replace(rx_three, \"]\")\n .replace(rx_four, \"\")\n )\n ) {\n\n// In the third stage we use the eval function to compile the text into a\n// JavaScript structure. The \"{\" operator is subject to a syntactic ambiguity\n// in JavaScript: it can begin a block or an object literal. We wrap the text\n// in parens to eliminate the ambiguity.\n\n j = eval(\"(\" + text + \")\");\n\n// In the optional fourth stage, we recursively walk the new structure, passing\n// each name/value pair to a reviver function for possible transformation.\n\n return (typeof reviver === \"function\")\n ? walk({\"\": j}, \"\")\n : j;\n }\n\n// If the text is not JSON parseable, then a SyntaxError is thrown.\n\n throw new SyntaxError(\"JSON.parse\");\n };\n }\n}());","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UITHEMES = exports.UIMODES = exports.LANGUAGES = exports.ENDPOINTS = exports.CHAINS = void 0;\n// Copyright 2017-2019 @polkadot/ui-settings authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nconst CHAINS = [{\n name: 'Development',\n networkId: 42,\n tokenDecimals: 0,\n tokenSymbol: 'Unit'\n}, {\n name: 'Local Testnet',\n networkId: 42,\n tokenDecimals: 0,\n tokenSymbol: 'Unit'\n}, {\n name: 'Charred Cherry',\n networkId: 42,\n tokenDecimals: 15,\n tokenSymbol: 'CHR'\n}, {\n name: 'Alexander',\n networkId: 42,\n tokenDecimals: 15,\n tokenSymbol: 'DOT'\n}];\nexports.CHAINS = CHAINS;\nconst ENDPOINTS = [{\n text: 'Alexander (Polkadot, hosted by Parity)',\n value: 'wss://poc3-rpc.polkadot.io/'\n}, {\n text: 'Charred Cherry (Substrate, hosted by Parity)',\n value: 'wss://substrate-rpc.parity.io/'\n}, {\n text: 'Local Node (127.0.0.1:9944)',\n value: 'ws://127.0.0.1:9944/'\n}];\nexports.ENDPOINTS = ENDPOINTS;\nconst LANGUAGES = [{\n value: 'default',\n text: 'Default browser language (auto-detect)'\n}];\nexports.LANGUAGES = LANGUAGES;\nconst UIMODES = [{\n value: 'full',\n text: 'Fully featured'\n}, {\n value: 'light',\n text: 'Basic features only'\n}];\nexports.UIMODES = UIMODES;\nconst UITHEMES = [{\n value: 'polkadot',\n text: 'Polkadot'\n}, {\n value: 'substrate',\n text: 'Substrate'\n}];\nexports.UITHEMES = UITHEMES;","\"use strict\";\nimport { View } from 'react-native';\nimport {Svg, Circle} from 'react-native-svg';\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\n// Copyright 2017-2019 @polkadot/ui-identicon authors & contributors\n// This software may be modified and distributed under the terms\n// of the Apache-2.0 license. See the LICENSE file for details.\nclass Empty extends _react.default.PureComponent {\n render() {\n const _this$props = this.props,\n className = _this$props.className,\n size = _this$props.size,\n style = _this$props.style;\n return _react.default.createElement(View, {\n className: `container ${className}`,\n style: style\n }, _react.default.createElement(Svg, {\n height: size,\n viewBox: \"0 0 64 64\",\n width: size\n }));\n }\n\n}\n\nexports.default = Empty;","import Rect from \"./elements/Rect\";\nimport Circle from \"./elements/Circle\";\nimport Ellipse from \"./elements/Ellipse\";\nimport Polygon from \"./elements/Polygon\";\nimport Polyline from \"./elements/Polyline\";\nimport Line from \"./elements/Line\";\nimport Svg from \"./elements/Svg\";\nimport Path from \"./elements/Path\";\nimport G from \"./elements/G\";\nimport Text from \"./elements/Text\";\nimport TSpan from \"./elements/TSpan\";\nimport TextPath from \"./elements/TextPath\";\nimport Use from \"./elements/Use\";\nimport Image from \"./elements/Image\";\nimport Symbol from \"./elements/Symbol\";\nimport Defs from \"./elements/Defs\";\nimport LinearGradient from \"./elements/LinearGradient\";\nimport RadialGradient from \"./elements/RadialGradient\";\nimport Stop from \"./elements/Stop\";\nimport ClipPath from \"./elements/ClipPath\";\nimport Pattern from \"./elements/Pattern\";\nimport Mask from \"./elements/Mask\";\n\nexport {\n Svg,\n Circle,\n Ellipse,\n G,\n Text,\n TSpan,\n TextPath,\n Path,\n Polygon,\n Polyline,\n Line,\n Rect,\n Use,\n Image,\n Symbol,\n Defs,\n LinearGradient,\n RadialGradient,\n Stop,\n ClipPath,\n Pattern,\n Mask,\n};\n\n//noinspection JSUnusedGlobalSymbols\nexport default Svg;\n","import React from \"react\";\nimport \"./Path\"; // must import Path first, don`t know why. without this will throw an `Super expression must either be null or a function, not undefined`\nimport { requireNativeComponent } from \"react-native\";\nimport extractProps from \"../lib/extract/extractProps\";\nimport Shape from \"./Shape\";\n\nexport default class extends Shape {\n static displayName = \"Rect\";\n\n static defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n rx: 0,\n ry: 0,\n };\n\n setNativeProps = props => {\n this.root.setNativeProps(props);\n };\n\n render() {\n const { props } = this;\n const { x, y, width, height, rx, ry } = props;\n return (\n {\n this.root = ele;\n }}\n {...extractProps(\n {\n ...props,\n x: null,\n y: null,\n },\n this,\n )}\n x={x}\n y={y}\n width={width}\n height={height}\n rx={rx}\n ry={ry}\n />\n );\n }\n}\n\nconst RNSVGRect = requireNativeComponent(\"RNSVGRect\");\n","import React from \"react\";\nimport { requireNativeComponent } from \"react-native\";\nimport Shape from \"./Shape\";\nimport extractProps from \"../lib/extract/extractProps\";\n\nexport default class extends Shape {\n static displayName = \"Path\";\n\n setNativeProps = (...args) => {\n this.root.setNativeProps(...args);\n };\n\n render() {\n const { props } = this;\n\n return (\n {\n this.root = ele;\n }}\n {...extractProps(props, this)}\n d={props.d}\n />\n );\n }\n}\n\nconst RNSVGPath = requireNativeComponent(\"RNSVGPath\");\n","import { Component } from \"react\";\nimport SvgTouchableMixin from \"../lib/SvgTouchableMixin\";\nimport _ from \"lodash\";\n\nclass Shape extends Component {\n constructor() {\n super(...arguments);\n _.forEach(SvgTouchableMixin, (method, key) => {\n this[key] = method.bind(this);\n });\n //noinspection JSUnusedGlobalSymbols\n this.state = this.touchableGetInitialState();\n }\n}\n\nexport default Shape;\n","import { Touchable } from \"react-native\";\nconst PRESS_RETENTION_OFFSET = { top: 20, left: 20, right: 20, bottom: 30 };\n\n//noinspection JSUnusedGlobalSymbols\nexport default {\n ...Touchable.Mixin,\n\n touchableHandleStartShouldSetResponder: function(e) {\n if (this.props.onStartShouldSetResponder) {\n return this.props.onStartShouldSetResponder(e);\n } else {\n return Touchable.Mixin.touchableHandleStartShouldSetResponder.call(\n this,\n e\n );\n }\n },\n\n touchableHandleResponderTerminationRequest: function(e) {\n if (this.props.onResponderTerminationRequest) {\n return this.props.onResponderTerminationRequest(e);\n } else {\n return Touchable.Mixin.touchableHandleResponderTerminationRequest.call(\n this,\n e\n );\n }\n },\n\n touchableHandleResponderGrant: function(e) {\n if (this.props.onResponderGrant) {\n return this.props.onResponderGrant(e);\n } else {\n return Touchable.Mixin.touchableHandleResponderGrant.call(this, e);\n }\n },\n\n touchableHandleResponderMove: function(e) {\n if (this.props.onResponderMove) {\n return this.props.onResponderMove(e);\n } else {\n return Touchable.Mixin.touchableHandleResponderMove.call(this, e);\n }\n },\n\n touchableHandleResponderRelease: function(e) {\n if (this.props.onResponderRelease) {\n return this.props.onResponderRelease(e);\n } else {\n return Touchable.Mixin.touchableHandleResponderRelease.call(\n this,\n e\n );\n }\n },\n\n touchableHandleResponderTerminate: function(e) {\n if (this.props.onResponderTerminate) {\n return this.props.onResponderTerminate(e);\n } else {\n return Touchable.Mixin.touchableHandleResponderTerminate.call(\n this,\n e\n );\n }\n },\n\n touchableHandlePress: function(e) {\n this.props.onPress && this.props.onPress(e);\n },\n\n touchableHandleActivePressIn: function(e) {\n this.props.onPressIn && this.props.onPressIn(e);\n },\n\n touchableHandleActivePressOut: function(e) {\n this.props.onPressOut && this.props.onPressOut(e);\n },\n\n touchableHandleLongPress: function(e) {\n this.props.onLongPress && this.props.onLongPress(e);\n },\n\n touchableGetPressRectOffset: function() {\n return this.props.pressRetentionOffset || PRESS_RETENTION_OFFSET;\n },\n\n touchableGetHitSlop: function() {\n return this.props.hitSlop;\n },\n\n touchableGetHighlightDelayMS: function() {\n return this.props.delayPressIn || 0;\n },\n\n touchableGetLongPressDelayMS: function() {\n return this.props.delayLongPress === 0\n ? 0\n : this.props.delayLongPress || 500;\n },\n\n touchableGetPressOutDelayMS: function() {\n return this.props.delayPressOut || 0;\n }\n};\n","/**\n * @license\n * Lodash \n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.11';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n\n return result;\n }\n\n if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n\n return result;\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '\"}}\n opaque={false}\n underlayColor={'transparent'}\n style={this.props.style}\n javaScriptEnabled={true}\n scrollEnabled={false}\n onLoad={this.props.onLoad}\n onLoadEnd={this.props.onLoadEnd}\n originWhitelist={['*']}\n />\n \n );\n }\n});\n\nmodule.exports = Canvas;\n","var QRCode = require('./lib/QRCode');\r\nvar ErrorCorrectLevel = require('./lib/ErrorCorrectLevel');\r\n\r\nvar qrcode = function(data, opt) {\r\n\topt = opt || {};\r\n\tvar qr = new QRCode(opt.typeNumber || -1,\r\n\t\t\t\t\t\topt.errorCorrectLevel || ErrorCorrectLevel.H);\r\n\tqr.addData(data);\r\n\tqr.make();\r\n\r\n\treturn qr;\r\n};\r\n\r\nqrcode.ErrorCorrectLevel = ErrorCorrectLevel;\r\n\r\nmodule.exports = qrcode;\r\n\r\n","var BitByte = require('./8BitByte');\nvar RSBlock = require('./RSBlock');\nvar BitBuffer = require('./BitBuffer');\nvar util = require('./util');\nvar Polynomial = require('./Polynomial');\n\nfunction QRCode(typeNumber, errorCorrectLevel) {\n\tthis.typeNumber = typeNumber;\n\tthis.errorCorrectLevel = errorCorrectLevel;\n\tthis.modules = null;\n\tthis.moduleCount = 0;\n\tthis.dataCache = null;\n\tthis.dataList = [];\n}\n\n// for client side minification\nvar proto = QRCode.prototype;\n\nproto.addData = function(data) {\n\tvar newData = new BitByte(data);\n\tthis.dataList.push(newData);\n\tthis.dataCache = null;\n};\n\nproto.isDark = function(row, col) {\n\tif (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n\t\tthrow new Error(row + \",\" + col);\n\t}\n\treturn this.modules[row][col];\n};\n\nproto.getModuleCount = function() {\n\treturn this.moduleCount;\n};\n\nproto.make = function() {\n\t// Calculate automatically typeNumber if provided is < 1\n\tif (this.typeNumber < 1 ){\n\t\tvar typeNumber = 1;\n\t\tfor (typeNumber = 1; typeNumber < 40; typeNumber++) {\n\t\t\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n\n\t\t\tvar buffer = new BitBuffer();\n\t\t\tvar totalDataCount = 0;\n\t\t\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\t\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < this.dataList.length; i++) {\n\t\t\t\tvar data = this.dataList[i];\n\t\t\t\tbuffer.put(data.mode, 4);\n\t\t\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\t\t\tdata.write(buffer);\n\t\t\t}\n\t\t\tif (buffer.getLengthInBits() <= totalDataCount * 8)\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.typeNumber = typeNumber;\n\t}\n\tthis.makeImpl(false, this.getBestMaskPattern() );\n};\n\nproto.makeImpl = function(test, maskPattern) {\n\t\n\tthis.moduleCount = this.typeNumber * 4 + 17;\n\tthis.modules = new Array(this.moduleCount);\n\t\n\tfor (var row = 0; row < this.moduleCount; row++) {\n\t\t\n\t\tthis.modules[row] = new Array(this.moduleCount);\n\t\t\n\t\tfor (var col = 0; col < this.moduleCount; col++) {\n\t\t\tthis.modules[row][col] = null;//(col + row) % 3;\n\t\t}\n\t}\n\n\tthis.setupPositionProbePattern(0, 0);\n\tthis.setupPositionProbePattern(this.moduleCount - 7, 0);\n\tthis.setupPositionProbePattern(0, this.moduleCount - 7);\n\tthis.setupPositionAdjustPattern();\n\tthis.setupTimingPattern();\n\tthis.setupTypeInfo(test, maskPattern);\n\t\n\tif (this.typeNumber >= 7) {\n\t\tthis.setupTypeNumber(test);\n\t}\n\n\tif (this.dataCache == null) {\n\t\tthis.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);\n\t}\n\n\tthis.mapData(this.dataCache, maskPattern);\n};\n\nproto.setupPositionProbePattern = function(row, col) {\n\t\n\tfor (var r = -1; r <= 7; r++) {\n\t\t\n\t\tif (row + r <= -1 || this.moduleCount <= row + r) continue;\n\t\t\n\t\tfor (var c = -1; c <= 7; c++) {\n\t\t\t\n\t\t\tif (col + c <= -1 || this.moduleCount <= col + c) continue;\n\t\t\t\n\t\t\tif ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n\t\t\t\t\t|| (0 <= c && c <= 6 && (r == 0 || r == 6) )\n\t\t\t\t\t|| (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t} else {\n\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t}\n\t\t}\t\t\n\t}\t\t\n};\n\nproto.getBestMaskPattern = function() {\n\n\tvar minLostPoint = 0;\n\tvar pattern = 0;\n\n\tfor (var i = 0; i < 8; i++) {\n\t\t\n\t\tthis.makeImpl(true, i);\n\n\t\tvar lostPoint = util.getLostPoint(this);\n\n\t\tif (i == 0 || minLostPoint > lostPoint) {\n\t\t\tminLostPoint = lostPoint;\n\t\t\tpattern = i;\n\t\t}\n\t}\n\n\treturn pattern;\n};\n\nproto.createMovieClip = function(target_mc, instance_name, depth) {\n\n\tvar qr_mc = target_mc.createEmptyMovieClip(instance_name, depth);\n\tvar cs = 1;\n\n\tthis.make();\n\n\tfor (var row = 0; row < this.modules.length; row++) {\n\t\t\n\t\tvar y = row * cs;\n\t\t\n\t\tfor (var col = 0; col < this.modules[row].length; col++) {\n\n\t\t\tvar x = col * cs;\n\t\t\tvar dark = this.modules[row][col];\n\t\t\n\t\t\tif (dark) {\n\t\t\t\tqr_mc.beginFill(0, 100);\n\t\t\t\tqr_mc.moveTo(x, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y + cs);\n\t\t\t\tqr_mc.lineTo(x, y + cs);\n\t\t\t\tqr_mc.endFill();\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn qr_mc;\n};\n\nproto.setupTimingPattern = function() {\n\t\n\tfor (var r = 8; r < this.moduleCount - 8; r++) {\n\t\tif (this.modules[r][6] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[r][6] = (r % 2 == 0);\n\t}\n\n\tfor (var c = 8; c < this.moduleCount - 8; c++) {\n\t\tif (this.modules[6][c] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[6][c] = (c % 2 == 0);\n\t}\n};\n\nproto.setupPositionAdjustPattern = function() {\n\n\tvar pos = util.getPatternPosition(this.typeNumber);\n\t\n\tfor (var i = 0; i < pos.length; i++) {\n\t\n\t\tfor (var j = 0; j < pos.length; j++) {\n\t\t\n\t\t\tvar row = pos[i];\n\t\t\tvar col = pos[j];\n\t\t\t\n\t\t\tif (this.modules[row][col] != null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tfor (var r = -2; r <= 2; r++) {\n\t\t\t\n\t\t\t\tfor (var c = -2; c <= 2; c++) {\n\t\t\t\t\n\t\t\t\t\tif (r == -2 || r == 2 || c == -2 || c == 2\n\t\t\t\t\t\t\t|| (r == 0 && c == 0) ) {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nproto.setupTypeNumber = function(test) {\n\n\tvar bits = util.getBCHTypeNumber(this.typeNumber);\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;\n\t}\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n\t}\n};\n\nproto.setupTypeInfo = function(test, maskPattern) {\n\n\tvar data = (this.errorCorrectLevel << 3) | maskPattern;\n\tvar bits = util.getBCHTypeInfo(data);\n\n\t// vertical\t\t\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\n\t\tif (i < 6) {\n\t\t\tthis.modules[i][8] = mod;\n\t\t} else if (i < 8) {\n\t\t\tthis.modules[i + 1][8] = mod;\n\t\t} else {\n\t\t\tthis.modules[this.moduleCount - 15 + i][8] = mod;\n\t\t}\n\t}\n\n\t// horizontal\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\t\n\t\tif (i < 8) {\n\t\t\tthis.modules[8][this.moduleCount - i - 1] = mod;\n\t\t} else if (i < 9) {\n\t\t\tthis.modules[8][15 - i - 1 + 1] = mod;\n\t\t} else {\n\t\t\tthis.modules[8][15 - i - 1] = mod;\n\t\t}\n\t}\n\n\t// fixed module\n\tthis.modules[this.moduleCount - 8][8] = (!test);\n};\n\nproto.mapData = function(data, maskPattern) {\n\t\n\tvar inc = -1;\n\tvar row = this.moduleCount - 1;\n\tvar bitIndex = 7;\n\tvar byteIndex = 0;\n\t\n\tfor (var col = this.moduleCount - 1; col > 0; col -= 2) {\n\n\t\tif (col == 6) col--;\n\n\t\twhile (true) {\n\n\t\t\tfor (var c = 0; c < 2; c++) {\n\t\t\t\t\n\t\t\t\tif (this.modules[row][col - c] == null) {\n\t\t\t\t\t\n\t\t\t\t\tvar dark = false;\n\n\t\t\t\t\tif (byteIndex < data.length) {\n\t\t\t\t\t\tdark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar mask = util.getMask(maskPattern, row, col - c);\n\n\t\t\t\t\tif (mask) {\n\t\t\t\t\t\tdark = !dark;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.modules[row][col - c] = dark;\n\t\t\t\t\tbitIndex--;\n\n\t\t\t\t\tif (bitIndex == -1) {\n\t\t\t\t\t\tbyteIndex++;\n\t\t\t\t\t\tbitIndex = 7;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\trow += inc;\n\n\t\t\tif (row < 0 || this.moduleCount <= row) {\n\t\t\t\trow -= inc;\n\t\t\t\tinc = -inc;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n};\n\nQRCode.PAD0 = 0xEC;\nQRCode.PAD1 = 0x11;\n\nQRCode.createData = function(typeNumber, errorCorrectLevel, dataList) {\n\t\n\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n\t\n\tvar buffer = new BitBuffer();\n\t\n\tfor (var i = 0; i < dataList.length; i++) {\n\t\tvar data = dataList[i];\n\t\tbuffer.put(data.mode, 4);\n\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\tdata.write(buffer);\n\t}\n\n\t// calc num max data.\n\tvar totalDataCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t}\n\n\tif (buffer.getLengthInBits() > totalDataCount * 8) {\n\t\tthrow new Error(\"code length overflow. (\"\n\t\t\t+ buffer.getLengthInBits()\n\t\t\t+ \">\"\n\t\t\t+ totalDataCount * 8\n\t\t\t+ \")\");\n\t}\n\n\t// end code\n\tif (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n\t\tbuffer.put(0, 4);\n\t}\n\n\t// padding\n\twhile (buffer.getLengthInBits() % 8 != 0) {\n\t\tbuffer.putBit(false);\n\t}\n\n\t// padding\n\twhile (true) {\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD0, 8);\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD1, 8);\n\t}\n\n\treturn QRCode.createBytes(buffer, rsBlocks);\n};\n\nQRCode.createBytes = function(buffer, rsBlocks) {\n\n\tvar offset = 0;\n\t\n\tvar maxDcCount = 0;\n\tvar maxEcCount = 0;\n\t\n\tvar dcdata = new Array(rsBlocks.length);\n\tvar ecdata = new Array(rsBlocks.length);\n\t\n\tfor (var r = 0; r < rsBlocks.length; r++) {\n\n\t\tvar dcCount = rsBlocks[r].dataCount;\n\t\tvar ecCount = rsBlocks[r].totalCount - dcCount;\n\n\t\tmaxDcCount = Math.max(maxDcCount, dcCount);\n\t\tmaxEcCount = Math.max(maxEcCount, ecCount);\n\t\t\n\t\tdcdata[r] = new Array(dcCount);\n\t\t\n\t\tfor (var i = 0; i < dcdata[r].length; i++) {\n\t\t\tdcdata[r][i] = 0xff & buffer.buffer[i + offset];\n\t\t}\n\t\toffset += dcCount;\n\t\t\n\t\tvar rsPoly = util.getErrorCorrectPolynomial(ecCount);\n\t\tvar rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1);\n\n\t\tvar modPoly = rawPoly.mod(rsPoly);\n\t\tecdata[r] = new Array(rsPoly.getLength() - 1);\n\t\tfor (var i = 0; i < ecdata[r].length; i++) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n\t\t\tecdata[r][i] = (modIndex >= 0)? modPoly.get(modIndex) : 0;\n\t\t}\n\n\t}\n\t\n\tvar totalCodeCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalCodeCount += rsBlocks[i].totalCount;\n\t}\n\n\tvar data = new Array(totalCodeCount);\n\tvar index = 0;\n\n\tfor (var i = 0; i < maxDcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < dcdata[r].length) {\n\t\t\t\tdata[index++] = dcdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (var i = 0; i < maxEcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < ecdata[r].length) {\n\t\t\t\tdata[index++] = ecdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn data;\n};\n\nmodule.exports = QRCode;\n\n","var mode = require('./mode');\n\nfunction QR8bitByte(data) {\n\tthis.mode = mode.MODE_8BIT_BYTE;\n\tthis.data = data;\n}\n\nQR8bitByte.prototype = {\n\n\tgetLength : function(buffer) {\n\t\treturn this.data.length;\n\t},\n\t\n\twrite : function(buffer) {\n\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t// not JIS ...\n\t\t\tbuffer.put(this.data.charCodeAt(i), 8);\n\t\t}\n\t}\n};\n\nmodule.exports = QR8bitByte;\n\n","module.exports = {\n\tMODE_NUMBER :\t\t1 << 0,\n\tMODE_ALPHA_NUM : \t1 << 1,\n\tMODE_8BIT_BYTE : \t1 << 2,\n\tMODE_KANJI :\t\t1 << 3\n};\n","// ErrorCorrectLevel\nvar ECL = require('./ErrorCorrectLevel');\n\nfunction QRRSBlock(totalCount, dataCount) {\n\tthis.totalCount = totalCount;\n\tthis.dataCount = dataCount;\n}\n\nQRRSBlock.RS_BLOCK_TABLE = [\n\n\t// L\n\t// M\n\t// Q\n\t// H\n\n\t// 1\n\t[1, 26, 19],\n\t[1, 26, 16],\n\t[1, 26, 13],\n\t[1, 26, 9],\n\t\n\t// 2\n\t[1, 44, 34],\n\t[1, 44, 28],\n\t[1, 44, 22],\n\t[1, 44, 16],\n\n\t// 3\n\t[1, 70, 55],\n\t[1, 70, 44],\n\t[2, 35, 17],\n\t[2, 35, 13],\n\n\t// 4\t\t\n\t[1, 100, 80],\n\t[2, 50, 32],\n\t[2, 50, 24],\n\t[4, 25, 9],\n\t\n\t// 5\n\t[1, 134, 108],\n\t[2, 67, 43],\n\t[2, 33, 15, 2, 34, 16],\n\t[2, 33, 11, 2, 34, 12],\n\t\n\t// 6\n\t[2, 86, 68],\n\t[4, 43, 27],\n\t[4, 43, 19],\n\t[4, 43, 15],\n\t\n\t// 7\t\t\n\t[2, 98, 78],\n\t[4, 49, 31],\n\t[2, 32, 14, 4, 33, 15],\n\t[4, 39, 13, 1, 40, 14],\n\t\n\t// 8\n\t[2, 121, 97],\n\t[2, 60, 38, 2, 61, 39],\n\t[4, 40, 18, 2, 41, 19],\n\t[4, 40, 14, 2, 41, 15],\n\t\n\t// 9\n\t[2, 146, 116],\n\t[3, 58, 36, 2, 59, 37],\n\t[4, 36, 16, 4, 37, 17],\n\t[4, 36, 12, 4, 37, 13],\n\t\n\t// 10\t\t\n\t[2, 86, 68, 2, 87, 69],\n\t[4, 69, 43, 1, 70, 44],\n\t[6, 43, 19, 2, 44, 20],\n\t[6, 43, 15, 2, 44, 16],\n\n\t// 11\n\t[4, 101, 81],\n\t[1, 80, 50, 4, 81, 51],\n\t[4, 50, 22, 4, 51, 23],\n\t[3, 36, 12, 8, 37, 13],\n\n\t// 12\n\t[2, 116, 92, 2, 117, 93],\n\t[6, 58, 36, 2, 59, 37],\n\t[4, 46, 20, 6, 47, 21],\n\t[7, 42, 14, 4, 43, 15],\n\n\t// 13\n\t[4, 133, 107],\n\t[8, 59, 37, 1, 60, 38],\n\t[8, 44, 20, 4, 45, 21],\n\t[12, 33, 11, 4, 34, 12],\n\n\t// 14\n\t[3, 145, 115, 1, 146, 116],\n\t[4, 64, 40, 5, 65, 41],\n\t[11, 36, 16, 5, 37, 17],\n\t[11, 36, 12, 5, 37, 13],\n\n\t// 15\n\t[5, 109, 87, 1, 110, 88],\n\t[5, 65, 41, 5, 66, 42],\n\t[5, 54, 24, 7, 55, 25],\n\t[11, 36, 12],\n\n\t// 16\n\t[5, 122, 98, 1, 123, 99],\n\t[7, 73, 45, 3, 74, 46],\n\t[15, 43, 19, 2, 44, 20],\n\t[3, 45, 15, 13, 46, 16],\n\n\t// 17\n\t[1, 135, 107, 5, 136, 108],\n\t[10, 74, 46, 1, 75, 47],\n\t[1, 50, 22, 15, 51, 23],\n\t[2, 42, 14, 17, 43, 15],\n\n\t// 18\n\t[5, 150, 120, 1, 151, 121],\n\t[9, 69, 43, 4, 70, 44],\n\t[17, 50, 22, 1, 51, 23],\n\t[2, 42, 14, 19, 43, 15],\n\n\t// 19\n\t[3, 141, 113, 4, 142, 114],\n\t[3, 70, 44, 11, 71, 45],\n\t[17, 47, 21, 4, 48, 22],\n\t[9, 39, 13, 16, 40, 14],\n\n\t// 20\n\t[3, 135, 107, 5, 136, 108],\n\t[3, 67, 41, 13, 68, 42],\n\t[15, 54, 24, 5, 55, 25],\n\t[15, 43, 15, 10, 44, 16],\n\n\t// 21\n\t[4, 144, 116, 4, 145, 117],\n\t[17, 68, 42],\n\t[17, 50, 22, 6, 51, 23],\n\t[19, 46, 16, 6, 47, 17],\n\n\t// 22\n\t[2, 139, 111, 7, 140, 112],\n\t[17, 74, 46],\n\t[7, 54, 24, 16, 55, 25],\n\t[34, 37, 13],\n\n\t// 23\n\t[4, 151, 121, 5, 152, 122],\n\t[4, 75, 47, 14, 76, 48],\n\t[11, 54, 24, 14, 55, 25],\n\t[16, 45, 15, 14, 46, 16],\n\n\t// 24\n\t[6, 147, 117, 4, 148, 118],\n\t[6, 73, 45, 14, 74, 46],\n\t[11, 54, 24, 16, 55, 25],\n\t[30, 46, 16, 2, 47, 17],\n\n\t// 25\n\t[8, 132, 106, 4, 133, 107],\n\t[8, 75, 47, 13, 76, 48],\n\t[7, 54, 24, 22, 55, 25],\n\t[22, 45, 15, 13, 46, 16],\n\n\t// 26\n\t[10, 142, 114, 2, 143, 115],\n\t[19, 74, 46, 4, 75, 47],\n\t[28, 50, 22, 6, 51, 23],\n\t[33, 46, 16, 4, 47, 17],\n\n\t// 27\n\t[8, 152, 122, 4, 153, 123],\n\t[22, 73, 45, 3, 74, 46],\n\t[8, 53, 23, 26, 54, 24],\n\t[12, 45, 15, 28, 46, 16],\n\n\t// 28\n\t[3, 147, 117, 10, 148, 118],\n\t[3, 73, 45, 23, 74, 46],\n\t[4, 54, 24, 31, 55, 25],\n\t[11, 45, 15, 31, 46, 16],\n\n\t// 29\n\t[7, 146, 116, 7, 147, 117],\n\t[21, 73, 45, 7, 74, 46],\n\t[1, 53, 23, 37, 54, 24],\n\t[19, 45, 15, 26, 46, 16],\n\n\t// 30\n\t[5, 145, 115, 10, 146, 116],\n\t[19, 75, 47, 10, 76, 48],\n\t[15, 54, 24, 25, 55, 25],\n\t[23, 45, 15, 25, 46, 16],\n\n\t// 31\n\t[13, 145, 115, 3, 146, 116],\n\t[2, 74, 46, 29, 75, 47],\n\t[42, 54, 24, 1, 55, 25],\n\t[23, 45, 15, 28, 46, 16],\n\n\t// 32\n\t[17, 145, 115],\n\t[10, 74, 46, 23, 75, 47],\n\t[10, 54, 24, 35, 55, 25],\n\t[19, 45, 15, 35, 46, 16],\n\n\t// 33\n\t[17, 145, 115, 1, 146, 116],\n\t[14, 74, 46, 21, 75, 47],\n\t[29, 54, 24, 19, 55, 25],\n\t[11, 45, 15, 46, 46, 16],\n\n\t// 34\n\t[13, 145, 115, 6, 146, 116],\n\t[14, 74, 46, 23, 75, 47],\n\t[44, 54, 24, 7, 55, 25],\n\t[59, 46, 16, 1, 47, 17],\n\n\t// 35\n\t[12, 151, 121, 7, 152, 122],\n\t[12, 75, 47, 26, 76, 48],\n\t[39, 54, 24, 14, 55, 25],\n\t[22, 45, 15, 41, 46, 16],\n\n\t// 36\n\t[6, 151, 121, 14, 152, 122],\n\t[6, 75, 47, 34, 76, 48],\n\t[46, 54, 24, 10, 55, 25],\n\t[2, 45, 15, 64, 46, 16],\n\n\t// 37\n\t[17, 152, 122, 4, 153, 123],\n\t[29, 74, 46, 14, 75, 47],\n\t[49, 54, 24, 10, 55, 25],\n\t[24, 45, 15, 46, 46, 16],\n\n\t// 38\n\t[4, 152, 122, 18, 153, 123],\n\t[13, 74, 46, 32, 75, 47],\n\t[48, 54, 24, 14, 55, 25],\n\t[42, 45, 15, 32, 46, 16],\n\n\t// 39\n\t[20, 147, 117, 4, 148, 118],\n\t[40, 75, 47, 7, 76, 48],\n\t[43, 54, 24, 22, 55, 25],\n\t[10, 45, 15, 67, 46, 16],\n\n\t// 40\n\t[19, 148, 118, 6, 149, 119],\n\t[18, 75, 47, 31, 76, 48],\n\t[34, 54, 24, 34, 55, 25],\n\t[20, 45, 15, 61, 46, 16]\n];\n\nQRRSBlock.getRSBlocks = function(typeNumber, errorCorrectLevel) {\n\t\n\tvar rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n\t\n\tif (rsBlock == undefined) {\n\t\tthrow new Error(\"bad rs block @ typeNumber:\" + typeNumber + \"/errorCorrectLevel:\" + errorCorrectLevel);\n\t}\n\n\tvar length = rsBlock.length / 3;\n\t\n\tvar list = new Array();\n\t\n\tfor (var i = 0; i < length; i++) {\n\n\t\tvar count = rsBlock[i * 3 + 0];\n\t\tvar totalCount = rsBlock[i * 3 + 1];\n\t\tvar dataCount = rsBlock[i * 3 + 2];\n\n\t\tfor (var j = 0; j < count; j++) {\n\t\t\tlist.push(new QRRSBlock(totalCount, dataCount) );\t\n\t\t}\n\t}\n\t\n\treturn list;\n}\n\nQRRSBlock.getRsBlockTable = function(typeNumber, errorCorrectLevel) {\n\n\tswitch(errorCorrectLevel) {\n\tcase ECL.L :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n\tcase ECL.M :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n\tcase ECL.Q :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n\tcase ECL.H :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n\tdefault :\n\t\treturn undefined;\n\t}\n}\n\nmodule.exports = QRRSBlock;\n","module.exports = {\n\tL : 1,\n\tM : 0,\n\tQ : 3,\n\tH : 2\n};\n\n","function QRBitBuffer() {\n\tthis.buffer = new Array();\n\tthis.length = 0;\n}\n\nQRBitBuffer.prototype = {\n\n\tget : function(index) {\n\t\tvar bufIndex = Math.floor(index / 8);\n\t\treturn ( (this.buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n\t},\n\t\n\tput : function(num, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tthis.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n\t\t}\n\t},\n\t\n\tgetLengthInBits : function() {\n\t\treturn this.length;\n\t},\n\t\n\tputBit : function(bit) {\n\t\n\t\tvar bufIndex = Math.floor(this.length / 8);\n\t\tif (this.buffer.length <= bufIndex) {\n\t\t\tthis.buffer.push(0);\n\t\t}\n\t\n\t\tif (bit) {\n\t\t\tthis.buffer[bufIndex] |= (0x80 >>> (this.length % 8) );\n\t\t}\n\t\n\t\tthis.length++;\n\t}\n};\n\nmodule.exports = QRBitBuffer;\n","var Mode = require('./mode');\nvar Polynomial = require('./Polynomial');\nvar math = require('./math');\n\nvar QRMaskPattern = {\n\tPATTERN000 : 0,\n\tPATTERN001 : 1,\n\tPATTERN010 : 2,\n\tPATTERN011 : 3,\n\tPATTERN100 : 4,\n\tPATTERN101 : 5,\n\tPATTERN110 : 6,\n\tPATTERN111 : 7\n};\n\nvar QRUtil = {\n\n PATTERN_POSITION_TABLE : [\n\t [],\n\t [6, 18],\n\t [6, 22],\n\t [6, 26],\n\t [6, 30],\n\t [6, 34],\n\t [6, 22, 38],\n\t [6, 24, 42],\n\t [6, 26, 46],\n\t [6, 28, 50],\n\t [6, 30, 54],\t\t\n\t [6, 32, 58],\n\t [6, 34, 62],\n\t [6, 26, 46, 66],\n\t [6, 26, 48, 70],\n\t [6, 26, 50, 74],\n\t [6, 30, 54, 78],\n\t [6, 30, 56, 82],\n\t [6, 30, 58, 86],\n\t [6, 34, 62, 90],\n\t [6, 28, 50, 72, 94],\n\t [6, 26, 50, 74, 98],\n\t [6, 30, 54, 78, 102],\n\t [6, 28, 54, 80, 106],\n\t [6, 32, 58, 84, 110],\n\t [6, 30, 58, 86, 114],\n\t [6, 34, 62, 90, 118],\n\t [6, 26, 50, 74, 98, 122],\n\t [6, 30, 54, 78, 102, 126],\n\t [6, 26, 52, 78, 104, 130],\n\t [6, 30, 56, 82, 108, 134],\n\t [6, 34, 60, 86, 112, 138],\n\t [6, 30, 58, 86, 114, 142],\n\t [6, 34, 62, 90, 118, 146],\n\t [6, 30, 54, 78, 102, 126, 150],\n\t [6, 24, 50, 76, 102, 128, 154],\n\t [6, 28, 54, 80, 106, 132, 158],\n\t [6, 32, 58, 84, 110, 136, 162],\n\t [6, 26, 54, 82, 110, 138, 166],\n\t [6, 30, 58, 86, 114, 142, 170]\n ],\n\n G15 : (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n G18 : (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),\n G15_MASK : (1 << 14) | (1 << 12) | (1 << 10)\t| (1 << 4) | (1 << 1),\n\n getBCHTypeInfo : function(data) {\n\t var d = data << 10;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n\t\t d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) ) ); \t\n\t }\n\t return ( (data << 10) | d) ^ QRUtil.G15_MASK;\n },\n\n getBCHTypeNumber : function(data) {\n\t var d = data << 12;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n\t\t d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) ) ); \t\n\t }\n\t return (data << 12) | d;\n },\n\n getBCHDigit : function(data) {\n\n\t var digit = 0;\n\n\t while (data != 0) {\n\t\t digit++;\n\t\t data >>>= 1;\n\t }\n\n\t return digit;\n },\n\n getPatternPosition : function(typeNumber) {\n\t return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n\n getMask : function(maskPattern, i, j) {\n\t \n\t switch (maskPattern) {\n\t\t \n\t case QRMaskPattern.PATTERN000 : return (i + j) % 2 == 0;\n\t case QRMaskPattern.PATTERN001 : return i % 2 == 0;\n\t case QRMaskPattern.PATTERN010 : return j % 3 == 0;\n\t case QRMaskPattern.PATTERN011 : return (i + j) % 3 == 0;\n\t case QRMaskPattern.PATTERN100 : return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0;\n\t case QRMaskPattern.PATTERN101 : return (i * j) % 2 + (i * j) % 3 == 0;\n\t case QRMaskPattern.PATTERN110 : return ( (i * j) % 2 + (i * j) % 3) % 2 == 0;\n\t case QRMaskPattern.PATTERN111 : return ( (i * j) % 3 + (i + j) % 2) % 2 == 0;\n\n\t default :\n\t\t throw new Error(\"bad maskPattern:\" + maskPattern);\n\t }\n },\n\n getErrorCorrectPolynomial : function(errorCorrectLength) {\n\n\t var a = new Polynomial([1], 0);\n\n\t for (var i = 0; i < errorCorrectLength; i++) {\n\t\t a = a.multiply(new Polynomial([1, math.gexp(i)], 0) );\n\t }\n\n\t return a;\n },\n\n getLengthInBits : function(mode, type) {\n\n\t if (1 <= type && type < 10) {\n\n\t\t // 1 - 9\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 10;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 9;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 8;\n\t\t case Mode.MODE_KANJI \t: return 8;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 27) {\n\n\t\t // 10 - 26\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 12;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 11;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 10;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 41) {\n\n\t\t // 27 - 40\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 14;\n\t\t case Mode.MODE_ALPHA_NUM\t: return 13;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 12;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else {\n\t\t throw new Error(\"type:\" + type);\n\t }\n },\n\n getLostPoint : function(qrCode) {\n\t \n\t var moduleCount = qrCode.getModuleCount();\n\t \n\t var lostPoint = 0;\n\t \n\t // LEVEL1\n\t \n\t for (var row = 0; row < moduleCount; row++) {\n\n\t\t for (var col = 0; col < moduleCount; col++) {\n\n\t\t\t var sameCount = 0;\n\t\t\t var dark = qrCode.isDark(row, col);\n\n\t\t\t\tfor (var r = -1; r <= 1; r++) {\n\n\t\t\t\t if (row + r < 0 || moduleCount <= row + r) {\n\t\t\t\t\t continue;\n\t\t\t\t }\n\n\t\t\t\t for (var c = -1; c <= 1; c++) {\n\n\t\t\t\t\t if (col + c < 0 || moduleCount <= col + c) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (r == 0 && c == 0) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (dark == qrCode.isDark(row + r, col + c) ) {\n\t\t\t\t\t\t sameCount++;\n\t\t\t\t\t }\n\t\t\t\t }\n\t\t\t }\n\n\t\t\t if (sameCount > 5) {\n\t\t\t\t lostPoint += (3 + sameCount - 5);\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL2\n\n\t for (var row = 0; row < moduleCount - 1; row++) {\n\t\t for (var col = 0; col < moduleCount - 1; col++) {\n\t\t\t var count = 0;\n\t\t\t if (qrCode.isDark(row, col ) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col ) ) count++;\n\t\t\t if (qrCode.isDark(row, col + 1) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col + 1) ) count++;\n\t\t\t if (count == 0 || count == 4) {\n\t\t\t\t lostPoint += 3;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL3\n\n\t for (var row = 0; row < moduleCount; row++) {\n\t\t for (var col = 0; col < moduleCount - 6; col++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row, col + 1)\n\t\t\t\t\t && qrCode.isDark(row, col + 2)\n\t\t\t\t\t && qrCode.isDark(row, col + 3)\n\t\t\t\t\t && qrCode.isDark(row, col + 4)\n\t\t\t\t\t && !qrCode.isDark(row, col + 5)\n\t\t\t\t\t && qrCode.isDark(row, col + 6) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount - 6; row++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row + 1, col)\n\t\t\t\t\t && qrCode.isDark(row + 2, col)\n\t\t\t\t\t && qrCode.isDark(row + 3, col)\n\t\t\t\t\t && qrCode.isDark(row + 4, col)\n\t\t\t\t\t && !qrCode.isDark(row + 5, col)\n\t\t\t\t\t && qrCode.isDark(row + 6, col) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL4\n\t \n\t var darkCount = 0;\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount; row++) {\n\t\t\t if (qrCode.isDark(row, col) ) {\n\t\t\t\t darkCount++;\n\t\t\t }\n\t\t }\n\t }\n\t \n\t var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n\t lostPoint += ratio * 10;\n\n\t return lostPoint;\t\t\n }\n};\n\nmodule.exports = QRUtil;\n","var math = require('./math');\n\nfunction QRPolynomial(num, shift) {\n\n\tif (num.length == undefined) {\n\t\tthrow new Error(num.length + \"/\" + shift);\n\t}\n\n\tvar offset = 0;\n\n\twhile (offset < num.length && num[offset] == 0) {\n\t\toffset++;\n\t}\n\n\tthis.num = new Array(num.length - offset + shift);\n\tfor (var i = 0; i < num.length - offset; i++) {\n\t\tthis.num[i] = num[i + offset];\n\t}\n}\n\nQRPolynomial.prototype = {\n\n\tget : function(index) {\n\t\treturn this.num[index];\n\t},\n\t\n\tgetLength : function() {\n\t\treturn this.num.length;\n\t},\n\t\n\tmultiply : function(e) {\n\t\n\t\tvar num = new Array(this.getLength() + e.getLength() - 1);\n\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tfor (var j = 0; j < e.getLength(); j++) {\n\t\t\t\tnum[i + j] ^= math.gexp(math.glog(this.get(i) ) + math.glog(e.get(j) ) );\n\t\t\t}\n\t\t}\n\t\n\t\treturn new QRPolynomial(num, 0);\n\t},\n\t\n\tmod : function(e) {\n\t\n\t\tif (this.getLength() - e.getLength() < 0) {\n\t\t\treturn this;\n\t\t}\n\t\n\t\tvar ratio = math.glog(this.get(0) ) - math.glog(e.get(0) );\n\t\n\t\tvar num = new Array(this.getLength() );\n\t\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tnum[i] = this.get(i);\n\t\t}\n\t\t\n\t\tfor (var i = 0; i < e.getLength(); i++) {\n\t\t\tnum[i] ^= math.gexp(math.glog(e.get(i) ) + ratio);\n\t\t}\n\t\n\t\t// recursive call\n\t\treturn new QRPolynomial(num, 0).mod(e);\n\t}\n};\n\nmodule.exports = QRPolynomial;\n","var QRMath = {\n\n\tglog : function(n) {\n\t\n\t\tif (n < 1) {\n\t\t\tthrow new Error(\"glog(\" + n + \")\");\n\t\t}\n\t\t\n\t\treturn QRMath.LOG_TABLE[n];\n\t},\n\t\n\tgexp : function(n) {\n\t\n\t\twhile (n < 0) {\n\t\t\tn += 255;\n\t\t}\n\t\n\t\twhile (n >= 256) {\n\t\t\tn -= 255;\n\t\t}\n\t\n\t\treturn QRMath.EXP_TABLE[n];\n\t},\n\t\n\tEXP_TABLE : new Array(256),\n\t\n\tLOG_TABLE : new Array(256)\n\n};\n\t\nfor (var i = 0; i < 8; i++) {\n\tQRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (var i = 8; i < 256; i++) {\n\tQRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4]\n\t\t^ QRMath.EXP_TABLE[i - 5]\n\t\t^ QRMath.EXP_TABLE[i - 6]\n\t\t^ QRMath.EXP_TABLE[i - 8];\n}\nfor (var i = 0; i < 255; i++) {\n\tQRMath.LOG_TABLE[QRMath.EXP_TABLE[i] ] = i;\n}\n\nmodule.exports = QRMath;\n","","import React, {Component, PureComponent} from 'react';\nimport {\n StyleSheet,\n View,\n Text,\n TouchableOpacity,\n Image,\n ScrollView,\n RefreshControl,\n Platform,\n StatusBar,\n SafeAreaView,\n} from 'react-native';\nimport Echarts from 'native-echarts';\nimport moment from 'moment/moment';\n\nimport {formatBalance} from '@polkadot/util';\nconst titlebottoms = ['All', 'Out', 'In'];\nimport {ScreenWidth, ScreenHeight} from '../../../util/Common';\nimport {observer, inject} from 'mobx-react';\nimport Header from '../../../components/Header';\nimport CoinRow from '../../../components/CoinRow';\nimport i18n from '../../../locales/i18n';\n@inject ('rootStore')\n@observer\nexport default class CoinDetails extends Component {\n constructor (props) {\n super (props);\n this.state = {\n isrefresh: false,\n isfirst: 0,\n titlebottom: 1,\n pageNum: 1,\n hasNextPage: false,\n transactions: [],\n StakingOption: {\n title: {\n text: i18n.t ('Assets.AssetsOption'),\n textStyle: {\n color: '#3E2D32',\n fontSize: 16,\n },\n padding: [0, 0, 0, 0],\n },\n tooltip: {},\n legend: {\n data: [''],\n },\n grid: {\n left: 5,\n },\n xAxis: {\n axisLine: {\n show: false,\n },\n data: [],\n },\n yAxis: {\n axisLine: {\n show: false,\n },\n position: 'right',\n },\n color: ['#FF5080'],\n series: [\n {\n type: 'line',\n smooth: true,\n data: [],\n },\n ],\n },\n };\n this.back = this.back.bind (this);\n this.Send = this.Send.bind (this);\n this.Receive = this.Receive.bind (this);\n this.Loadmore = this.Loadmore.bind (this);\n this.refresh = this.refresh.bind (this);\n this.Load = this.Load.bind (this);\n }\n // 点击返回\n back () {\n this.props.navigation.navigate ('Tabbed_Navigation');\n }\n //加载信息\n Load () {\n //清除缓存\n let REQUEST_URL = 'https://api.polkawallet.io:8080/tx_list_for_redis';\n let map = {\n method: 'POST',\n };\n let privateHeaders = {\n 'Content-Type': 'application/json',\n };\n map.headers = privateHeaders;\n map.follow = 20;\n map.timeout = 0;\n map.body =\n '{\"user_address\":\"' +\n this.props.rootStore.stateStore.Accounts[\n this.props.rootStore.stateStore.Account\n ].address +\n '\",\"pageNum\":\"1\",\"pageSize\":\"10\"}';\n fetch (REQUEST_URL, map)\n .then (() => {\n this.LoadTxList ();\n })\n .catch ();\n this.GetStakingOption (\n this.props.rootStore.stateStore.Accounts[\n this.props.rootStore.stateStore.Account\n ].address\n );\n }\n // 加载TXList\n LoadTxList (pageNum = 1) {\n //获取网络订单\n REQUEST_URL = 'https://api.polkawallet.io:8080/tx_list';\n let map = {\n method: 'POST',\n };\n privateHeaders = {\n 'Content-Type': 'application/json',\n };\n map.headers = privateHeaders;\n map.follow = 20;\n map.timeout = 0;\n map.body = `{\"user_address\":\"${this.props.rootStore.stateStore.Accounts[this.props.rootStore.stateStore.Account].address}\",\"pageNum\":${pageNum},\"pageSize\":\"10\"}`;\n fetch (REQUEST_URL, map)\n .then (result => {\n let transactions = [\n ...this.state.transactions,\n ...JSON.parse (result._bodyInit).tx_list.list,\n ];\n if (pageNum == 1) {\n transactions = [...JSON.parse (result._bodyInit).tx_list.list];\n }\n this.setState ({\n hasNextPage: JSON.parse (result._bodyInit).tx_list.hasNextPage,\n transactions,\n });\n })\n .catch ();\n }\n // 刷新\n refresh () {\n this.setState ({\n isrefresh: true,\n transactions: [],\n });\n setTimeout (() => {\n this.Load ();\n }, 200);\n this.setState ({\n isrefresh: false,\n });\n }\n // TXList 加载更多\n Loadmore () {\n this.setState (\n {\n pageNum: ++this.state.pageNum,\n },\n () => {\n this.LoadTxList (this.state.pageNum);\n }\n );\n }\n GetStakingOption (address) {\n //获取选中账户折线图数据\n\n let REQUEST_URL = 'https://api.polkawallet.io:8080/tx_money_date';\n let map = {\n method: 'POST',\n };\n let privateHeaders = {\n 'Content-Type': 'application/json',\n };\n map.headers = privateHeaders;\n map.follow = 20;\n map.timeout = 0;\n map.body =\n '{\"user_address\":\"' +\n this.props.rootStore.stateStore.Accounts[\n this.props.rootStore.stateStore.Account\n ].address +\n '\",\"UTCdate\":\"' +\n moment (new Date ().getTime ()).format ('YYYY-MM-DD HH:mm:ss') +\n '\"}';\n fetch (REQUEST_URL, map)\n .then (result => {\n let _StakingOption = {\n title: {\n text: i18n.t ('Assets.AssetsOption'),\n textStyle: {\n color: '#3E2D32',\n fontSize: 16,\n },\n padding: [0, 0, 0, 0],\n },\n tooltip: {},\n legend: {\n data: [''],\n },\n grid: {\n left: 5,\n },\n xAxis: {\n axisLine: {\n show: false,\n },\n data: [],\n },\n yAxis: {\n axisLine: {\n show: false,\n },\n position: 'right',\n },\n color: ['#FF5080'],\n series: [\n {\n type: 'line',\n smooth: true,\n data: [],\n },\n ],\n };\n _StakingOption.xAxis.data = [];\n _StakingOption.series[0].data = [];\n JSON.parse (result._bodyInit).map ((item, index) => {\n _StakingOption.xAxis.data.push (\n item.time.substring (5, 7) + '/' + item.time.substring (8, 10)\n );\n _StakingOption.series[0].data.push (item.money);\n });\n max = 0;\n for (i = 0; i < _StakingOption.series[0].data.length; i++) {\n if (_StakingOption.series[0].data[i] > max) {\n max = _StakingOption.series[0].data[i];\n }\n }\n power =\n formatBalance.calcSi (\n String (max),\n formatBalance.getDefaults ().decimals\n ).power + formatBalance.getDefaults ().decimals;\n unit = formatBalance.calcSi (\n String (max),\n formatBalance.getDefaults ().decimals\n ).text;\n for (i = 0; i < _StakingOption.series[0].data.length; i++) {\n _StakingOption.series[0].data[i] = (_StakingOption.series[0].data[i] /\n Number (Math.pow (10, power))).toFixed (3);\n }\n _StakingOption.title.text =\n i18n.t ('Assets.AssetsOption_new') + ' ( ' + unit + ' )';\n this.setState ({\n StakingOption: _StakingOption,\n });\n })\n .catch ();\n }\n // 点击send按钮\n Send () {\n this.props.navigation.navigate ('Transfer');\n }\n // 点击Receive按钮\n Receive () {\n this.props.navigation.navigate ('QR_Code');\n }\n componentDidMount () {\n // 通过addListener开启监听,didFocus RN 生命周期 页面获取焦点\n this._didBlurSubscription = this.props.navigation.addListener (\n 'didFocus',\n payload => {\n this.Load ();\n }\n );\n }\n componentWillUnmount () {\n // 在页面消失的时候,取消监听\n this._didBlurSubscription && this._didBlurSubscription.remove ();\n }\n render () {\n return (\n \n \n