diff --git a/.circleci/config.yml b/.circleci/config.yml index f886dc0ecc4..0d2053a1996 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -91,7 +91,7 @@ jobs: - run: name: Bundle emission - command: cd emission && yarn bundle-for-native-ci + command: yarn bundle-for-native-ci - save_cache: key: v4-pods-{{ checksum "Podfile.lock" }} @@ -147,22 +147,22 @@ jobs: - restore_cache: keys: - - v3-yarn-{{ checksum "emission/yarn.lock" }} + - v3-yarn-{{ checksum "yarn.lock" }} # Fall back to using the latest cache if no exact match is found. - v3-yarn- - run: name: Install Yarn Dependencies - command: cd emission && yarn install --ignore-engines + command: yarn install --ignore-engines - save_cache: - key: v3-yarn-{{ checksum "emission/yarn.lock" }} + key: v3-yarn-{{ checksum "yarn.lock" }} paths: - - emission/node_modules + - node_modules - run: name: Deploy via auto-release - command: cd emission && yarn update-metaphysics + command: yarn update-metaphysics workflows: version: 2 diff --git a/.gitattributes b/.gitattributes index 386b45fd09d..859b2d65baa 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,3 @@ CHANGELOG.yml merge=union +src/__generated__/*.graphql.ts linguist-generated +src/__generated__/*.queryMap.json linguist-generated diff --git a/.gitignore b/.gitignore index fb1ca1fcc59..1d995691aaa 100644 --- a/.gitignore +++ b/.gitignore @@ -52,12 +52,42 @@ iOSInjectionProject/ fastlane/Gemfile.lock Artsy.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist -# React Native pods. See: Podfile -rn_pods - # regular Pods. No longer a submodule Pods # build artefacts derived_data Artsy/Networking/ARReactPackagerHost.m + +# COPIED FROM EMISSION + +# Xcode + +## Build generated +dist + +# Custom + +node_modules +npm-debug.log +.vscode/launchReactNative.js +.vscode/.react/ +.vscode/typings +.apphub +coverage +package-lock.json +yarn-error.log +.awcache + +# Use a custom, cached location for Jest to save transpiling +# on every PR +.jest/cache + +# Danger artifacts +tslint-errors.json + +# TypeScript Logs +tsc_raw.log + +# Emission bundle +emission/Pod/Assets/Emission.js* diff --git a/emission/.gqlconfig b/.gqlconfig similarity index 100% rename from emission/.gqlconfig rename to .gqlconfig diff --git a/emission/.npmrc b/.npmrc similarity index 100% rename from emission/.npmrc rename to .npmrc diff --git a/emission/.nvmrc b/.nvmrc similarity index 100% rename from emission/.nvmrc rename to .nvmrc diff --git a/emission/.prettierignore b/.prettierignore similarity index 100% rename from emission/.prettierignore rename to .prettierignore diff --git a/emission/.stylelintrc b/.stylelintrc similarity index 100% rename from emission/.stylelintrc rename to .stylelintrc diff --git a/.travis.yml b/.travis.yml index 45bbf77647f..17945fcbe64 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,19 +11,18 @@ cache: # General SwiftPM # Danger Swift plugins, like Yams - .build - - emission/node_modules - - emission/.jest/cache + - node_modules + - .jest/cache install: # Grab the latest Danger JS from npm - nvm use 12 - npm install -g danger - npm install -g yarn - - pushd emission && yarn install && popd + - yarn install script: # Run the Dangerfile.swift - swift run danger-swift ci - - cd emission - yarn ci - yarn danger ci --verbose diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 093d1dd6133..fb782c57155 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,8 +1,6 @@ { // See http://go.microsoft.com/fwlink/?LinkId=827846 // for the documentation about the extensions.json format - "recommendations": [ - "Orta.vscode-ios-common-files", - "Orta.vscode-danger", - ] + "recommendations": ["Orta.vscode-ios-common-files", "Orta.vscode-danger", "artsy.artsy-studio-extension-pack"], + "unwantedRecommendations": ["prisma.vscode-graphql"] } diff --git a/emission/.vscode/launch.json b/.vscode/launch.json similarity index 100% rename from emission/.vscode/launch.json rename to .vscode/launch.json diff --git a/emission/.vscode/settings.json b/.vscode/settings.json similarity index 90% rename from emission/.vscode/settings.json rename to .vscode/settings.json index 0193468004c..3c589f6f5d4 100644 --- a/emission/.vscode/settings.json +++ b/.vscode/settings.json @@ -28,9 +28,6 @@ "build": true, ".awcache": true, ".happypack": true, - "Example/build": true, - "Example/DerivedData": true, - "Example/Pods/Headers/**": true }, "search.exclude": { "**/node_modules": true, @@ -61,7 +58,6 @@ "matt" ], "cSpell.diagnosticLevel": "Hint", - "clang.compilationDatabase": "${workspaceRoot}/Example/compile_commands.json", "typescript.tsdk": "./node_modules/typescript/lib", "todohighlight.exclude": ["node_modules/**", ".vscode/**", "externals/**"], "tslint.autoFixOnSave": true, diff --git a/emission/.vscode/tasks.json b/.vscode/tasks.json similarity index 100% rename from emission/.vscode/tasks.json rename to .vscode/tasks.json diff --git a/emission/.yarnrc b/.yarnrc similarity index 100% rename from emission/.yarnrc rename to .yarnrc diff --git a/Artsy.xcodeproj/project.pbxproj b/Artsy.xcodeproj/project.pbxproj index 45ef15a6670..b037d28e551 100644 --- a/Artsy.xcodeproj/project.pbxproj +++ b/Artsy.xcodeproj/project.pbxproj @@ -4616,7 +4616,7 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Artsy/Pods-Artsy-frameworks.sh", - "${PODS_ROOT}/../emission/node_modules/@mapbox/react-native-mapbox-gl/ios/Mapbox.framework", + "${PODS_ROOT}/../node_modules/@mapbox/react-native-mapbox-gl/ios/Mapbox.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( @@ -4649,7 +4649,6 @@ "${PODS_ROOT}/Artsy+UIFonts/Pod/Assets/Unica77LL-Regular.otf", "${PODS_ROOT}/Artsy+UILabels/Pod/Assets/Chevron_Black.png", "${PODS_ROOT}/Artsy+UILabels/Pod/Assets/Chevron_Black@2x.png", - "${PODS_ROOT}/../emission/Pod/Assets/Emission.js", "${PODS_ROOT}/../emission/Pod/Assets/assets", "${PODS_ROOT}/Extraction/Extraction/Assets/ARLoadFailureRetryIcon@2x.png", "${PODS_ROOT}/FBSDKCoreKit/FacebookSDKStrings.bundle", @@ -4674,7 +4673,6 @@ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Unica77LL-Regular.otf", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Chevron_Black.png", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Chevron_Black@2x.png", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Emission.js", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/assets", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ARLoadFailureRetryIcon@2x.png", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FacebookSDKStrings.bundle", diff --git a/Artsy/App/ARAppDelegate+Emission.m b/Artsy/App/ARAppDelegate+Emission.m index 908fc33ede5..62c6f710333 100644 --- a/Artsy/App/ARAppDelegate+Emission.m +++ b/Artsy/App/ARAppDelegate+Emission.m @@ -86,7 +86,7 @@ - (void)setupEmission; [self setupSharedEmissionWithPackagerURL:packagerURL]; } else if ([AROptions boolForOption:AROptionsDevReactEnv]) { - NSString *bundleUrlString = [NSString stringWithFormat:@"http://%@:8081/Example/Emission/index.ios.bundle?platform=ios&dev=true", [ARReactPackagerHost hostname]]; + NSString *bundleUrlString = [NSString stringWithFormat:@"http://%@:8081/index.ios.bundle?platform=ios&dev=true", [ARReactPackagerHost hostname]]; NSURL *packagerURL = [NSURL URLWithString:bundleUrlString]; [self setupSharedEmissionWithPackagerURL:packagerURL]; diff --git a/Podfile b/Podfile index 987a9cf8467..ee432de3bc8 100644 --- a/Podfile +++ b/Podfile @@ -22,16 +22,9 @@ installing_pods = ARGV.include?('install') || ARGV.include?('update') npm_vendored_podspecs = {} if installing_pods - system 'pushd emission; yarn install --ignore-engines; popd' - - npm_vendored_podspecs = JSON.parse(File.read('./emission/npm-podspecs.json'), symbolize_names: true) - npm_vendored_podspecs.update(npm_vendored_podspecs) do |_pod_name, props| - if props[:path] - props.merge path: File.join('./emission/', props[:path]) - else - props.merge podspec: File.join('./emission/', props[:podspec]) - end - end + system 'yarn install --ignore-engines' + + npm_vendored_podspecs = JSON.parse(File.read('./npm-podspecs.json'), symbolize_names: true) # Remove DevSupport pod on CI builds, which are used to deploy prod builds. if ENV['CIRCLE_BUILD_NUM'] diff --git a/Podfile.lock b/Podfile.lock index 681e740a55f..256fe5a41e9 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -70,7 +70,7 @@ PODS: - DHCShakeNotifier (0.2.0) - DoubleConversion (1.1.6) - EDColor (1.0.0) - - Emission (1.21.51): + - Emission (1.21.52): - "Artsy+UIColors" - "Artsy+UIFonts (>= 3.0.0)" - DoubleConversion (= 1.1.6) @@ -461,22 +461,22 @@ DEPENDENCIES: - Artsy-UIButtons - CocoaLumberjack (from `https://github.com/CocoaLumberjack/CocoaLumberjack.git`) - DHCShakeNotifier - - DoubleConversion (from `./emission/node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) + - DoubleConversion (from `node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - EDColor - Emission (from `./emission`) - Expecta - "Expecta+Snapshots" - Extraction - - FBLazyVector (from `./emission/node_modules/react-native/Libraries/FBLazyVector`) - - FBReactNativeSpec (from `./emission/node_modules/react-native/Libraries/FBReactNativeSpec`) + - FBLazyVector (from `node_modules/react-native/Libraries/FBLazyVector`) + - FBReactNativeSpec (from `node_modules/react-native/Libraries/FBReactNativeSpec`) - FBSDKCoreKit (~> 4.33) - FBSDKLoginKit (~> 4.33) - FBSnapshotTestCase - FLKAutoLayout (from `https://github.com/orta/FLKAutoLayout.git`, branch `v1`) - - Folly (from `./emission/node_modules/react-native/third-party-podspecs/Folly.podspec`) + - Folly (from `node_modules/react-native/third-party-podspecs/Folly.podspec`) - Forgeries/Mocks - FXBlurView - - glog (from `./emission/node_modules/react-native/third-party-podspecs/glog.podspec`) + - glog (from `node_modules/react-native/third-party-podspecs/glog.podspec`) - Interstellar/Core (from `https://github.com/ashfurrow/Interstellar.git`, branch `observable-unsubscribe`) - ISO8601DateFormatter (from `https://github.com/orta/iso-8601-date-formatter`) - JLRoutes (from `https://github.com/orta/JLRoutes.git`) @@ -498,48 +498,48 @@ DEPENDENCIES: - ORStackView (= 2.0.3) - Pulley (from `https://github.com/l2succes/Pulley.git`, branch `master`) - Quick - - RCTRequired (from `./emission/node_modules/react-native/Libraries/RCTRequired`) - - RCTTypeSafety (from `./emission/node_modules/react-native/Libraries/TypeSafety`) - - React (from `./emission/node_modules/react-native`) - - React-Core/DevSupport (from `./emission/node_modules/react-native`) - - React-CoreModules (from `./emission/node_modules/react-native/React/CoreModules`) - - React-cxxreact (from `./emission/node_modules/react-native/ReactCommon/cxxreact`) - - React-jsi (from `./emission/node_modules/react-native/ReactCommon/jsi`) - - React-jsiexecutor (from `./emission/node_modules/react-native/ReactCommon/jsiexecutor`) - - React-jsinspector (from `./emission/node_modules/react-native/ReactCommon/jsinspector`) - - "react-native-cameraroll (from `./emission/node_modules/@react-native-community/cameraroll`)" - - "react-native-geolocation (from `./emission/node_modules/@react-native-community/geolocation`)" - - "react-native-mapbox-gl (from `./emission/node_modules/@mapbox/react-native-mapbox-gl`)" - - react-native-navigator-ios (from `./emission/node_modules/react-native-navigator-ios`) - - "react-native-netinfo (from `./emission/node_modules/@react-native-community/netinfo`)" - - React-RCTActionSheet (from `./emission/node_modules/react-native/Libraries/ActionSheetIOS`) - - React-RCTAnimation (from `./emission/node_modules/react-native/Libraries/NativeAnimation`) - - React-RCTBlob (from `./emission/node_modules/react-native/Libraries/Blob`) - - React-RCTImage (from `./emission/node_modules/react-native/Libraries/Image`) - - React-RCTLinking (from `./emission/node_modules/react-native/Libraries/LinkingIOS`) - - React-RCTNetwork (from `./emission/node_modules/react-native/Libraries/Network`) - - React-RCTSettings (from `./emission/node_modules/react-native/Libraries/Settings`) - - React-RCTText (from `./emission/node_modules/react-native/Libraries/Text`) - - React-RCTVibration (from `./emission/node_modules/react-native/Libraries/Vibration`) - - ReactCommon/jscallinvoker (from `./emission/node_modules/react-native/ReactCommon`) - - ReactCommon/turbomodule/core (from `./emission/node_modules/react-native/ReactCommon`) + - RCTRequired (from `node_modules/react-native/Libraries/RCTRequired`) + - RCTTypeSafety (from `node_modules/react-native/Libraries/TypeSafety`) + - React (from `node_modules/react-native`) + - React-Core/DevSupport (from `node_modules/react-native`) + - React-CoreModules (from `node_modules/react-native/React/CoreModules`) + - React-cxxreact (from `node_modules/react-native/ReactCommon/cxxreact`) + - React-jsi (from `node_modules/react-native/ReactCommon/jsi`) + - React-jsiexecutor (from `node_modules/react-native/ReactCommon/jsiexecutor`) + - React-jsinspector (from `node_modules/react-native/ReactCommon/jsinspector`) + - "react-native-cameraroll (from `node_modules/@react-native-community/cameraroll`)" + - "react-native-geolocation (from `node_modules/@react-native-community/geolocation`)" + - "react-native-mapbox-gl (from `node_modules/@mapbox/react-native-mapbox-gl`)" + - react-native-navigator-ios (from `node_modules/react-native-navigator-ios`) + - "react-native-netinfo (from `node_modules/@react-native-community/netinfo`)" + - React-RCTActionSheet (from `node_modules/react-native/Libraries/ActionSheetIOS`) + - React-RCTAnimation (from `node_modules/react-native/Libraries/NativeAnimation`) + - React-RCTBlob (from `node_modules/react-native/Libraries/Blob`) + - React-RCTImage (from `node_modules/react-native/Libraries/Image`) + - React-RCTLinking (from `node_modules/react-native/Libraries/LinkingIOS`) + - React-RCTNetwork (from `node_modules/react-native/Libraries/Network`) + - React-RCTSettings (from `node_modules/react-native/Libraries/Settings`) + - React-RCTText (from `node_modules/react-native/Libraries/Text`) + - React-RCTVibration (from `node_modules/react-native/Libraries/Vibration`) + - ReactCommon/jscallinvoker (from `node_modules/react-native/ReactCommon`) + - ReactCommon/turbomodule/core (from `node_modules/react-native/ReactCommon`) - ReactiveObjC - - "RNCAsyncStorage (from `./emission/node_modules/@react-native-community/async-storage`)" - - RNReanimated (from `./emission/node_modules/react-native-reanimated`) - - RNSVG (from `./emission/node_modules/react-native-svg`) + - "RNCAsyncStorage (from `node_modules/@react-native-community/async-storage`)" + - RNReanimated (from `node_modules/react-native-reanimated`) + - RNSVG (from `node_modules/react-native-svg`) - SDWebImage (>= 3.7.2) - - SentryReactNative (from `./emission/node_modules/react-native-sentry`) + - SentryReactNative (from `node_modules/react-native-sentry`) - Specta - SSFadingScrollView (from `https://github.com/alloy/SSFadingScrollView.git`, branch `add-axial-support`) - Starscream - SwiftyJSON - Then - - tipsi-stripe (from `./emission/node_modules/tipsi-stripe/tipsi-stripe.podspec`) + - tipsi-stripe (from `node_modules/tipsi-stripe/tipsi-stripe.podspec`) - UICKeyChainStore - "UIView+BooleanAnimations" - VCRURLConnection - "XCTest+OHHTTPStubSuiteCleanUp" - - Yoga (from `./emission/node_modules/react-native/ReactCommon/yoga`) + - Yoga (from `node_modules/react-native/ReactCommon/yoga`) SPEC REPOS: https://cdn.cocoapods.org/: @@ -609,20 +609,20 @@ EXTERNAL SOURCES: CocoaLumberjack: :git: https://github.com/CocoaLumberjack/CocoaLumberjack.git DoubleConversion: - :podspec: "./emission/node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" + :podspec: node_modules/react-native/third-party-podspecs/DoubleConversion.podspec Emission: :path: "./emission" FBLazyVector: - :path: "./emission/node_modules/react-native/Libraries/FBLazyVector" + :path: node_modules/react-native/Libraries/FBLazyVector FBReactNativeSpec: - :path: "./emission/node_modules/react-native/Libraries/FBReactNativeSpec" + :path: node_modules/react-native/Libraries/FBReactNativeSpec FLKAutoLayout: :branch: v1 :git: https://github.com/orta/FLKAutoLayout.git Folly: - :podspec: "./emission/node_modules/react-native/third-party-podspecs/Folly.podspec" + :podspec: node_modules/react-native/third-party-podspecs/Folly.podspec glog: - :podspec: "./emission/node_modules/react-native/third-party-podspecs/glog.podspec" + :podspec: node_modules/react-native/third-party-podspecs/glog.podspec Interstellar: :branch: observable-unsubscribe :git: https://github.com/ashfurrow/Interstellar.git @@ -636,68 +636,68 @@ EXTERNAL SOURCES: :branch: master :git: https://github.com/l2succes/Pulley.git RCTRequired: - :path: "./emission/node_modules/react-native/Libraries/RCTRequired" + :path: node_modules/react-native/Libraries/RCTRequired RCTTypeSafety: - :path: "./emission/node_modules/react-native/Libraries/TypeSafety" + :path: node_modules/react-native/Libraries/TypeSafety React: - :path: "./emission/node_modules/react-native" + :path: node_modules/react-native React-Core: - :path: "./emission/node_modules/react-native" + :path: node_modules/react-native React-CoreModules: - :path: "./emission/node_modules/react-native/React/CoreModules" + :path: node_modules/react-native/React/CoreModules React-cxxreact: - :path: "./emission/node_modules/react-native/ReactCommon/cxxreact" + :path: node_modules/react-native/ReactCommon/cxxreact React-jsi: - :path: "./emission/node_modules/react-native/ReactCommon/jsi" + :path: node_modules/react-native/ReactCommon/jsi React-jsiexecutor: - :path: "./emission/node_modules/react-native/ReactCommon/jsiexecutor" + :path: node_modules/react-native/ReactCommon/jsiexecutor React-jsinspector: - :path: "./emission/node_modules/react-native/ReactCommon/jsinspector" + :path: node_modules/react-native/ReactCommon/jsinspector react-native-cameraroll: - :path: "./emission/node_modules/@react-native-community/cameraroll" + :path: "node_modules/@react-native-community/cameraroll" react-native-geolocation: - :path: "./emission/node_modules/@react-native-community/geolocation" + :path: "node_modules/@react-native-community/geolocation" react-native-mapbox-gl: - :path: "./emission/node_modules/@mapbox/react-native-mapbox-gl" + :path: "node_modules/@mapbox/react-native-mapbox-gl" react-native-navigator-ios: - :path: "./emission/node_modules/react-native-navigator-ios" + :path: node_modules/react-native-navigator-ios react-native-netinfo: - :path: "./emission/node_modules/@react-native-community/netinfo" + :path: "node_modules/@react-native-community/netinfo" React-RCTActionSheet: - :path: "./emission/node_modules/react-native/Libraries/ActionSheetIOS" + :path: node_modules/react-native/Libraries/ActionSheetIOS React-RCTAnimation: - :path: "./emission/node_modules/react-native/Libraries/NativeAnimation" + :path: node_modules/react-native/Libraries/NativeAnimation React-RCTBlob: - :path: "./emission/node_modules/react-native/Libraries/Blob" + :path: node_modules/react-native/Libraries/Blob React-RCTImage: - :path: "./emission/node_modules/react-native/Libraries/Image" + :path: node_modules/react-native/Libraries/Image React-RCTLinking: - :path: "./emission/node_modules/react-native/Libraries/LinkingIOS" + :path: node_modules/react-native/Libraries/LinkingIOS React-RCTNetwork: - :path: "./emission/node_modules/react-native/Libraries/Network" + :path: node_modules/react-native/Libraries/Network React-RCTSettings: - :path: "./emission/node_modules/react-native/Libraries/Settings" + :path: node_modules/react-native/Libraries/Settings React-RCTText: - :path: "./emission/node_modules/react-native/Libraries/Text" + :path: node_modules/react-native/Libraries/Text React-RCTVibration: - :path: "./emission/node_modules/react-native/Libraries/Vibration" + :path: node_modules/react-native/Libraries/Vibration ReactCommon: - :path: "./emission/node_modules/react-native/ReactCommon" + :path: node_modules/react-native/ReactCommon RNCAsyncStorage: - :path: "./emission/node_modules/@react-native-community/async-storage" + :path: "node_modules/@react-native-community/async-storage" RNReanimated: - :path: "./emission/node_modules/react-native-reanimated" + :path: node_modules/react-native-reanimated RNSVG: - :path: "./emission/node_modules/react-native-svg" + :path: node_modules/react-native-svg SentryReactNative: - :path: "./emission/node_modules/react-native-sentry" + :path: node_modules/react-native-sentry SSFadingScrollView: :branch: add-axial-support :git: https://github.com/alloy/SSFadingScrollView.git tipsi-stripe: - :podspec: "./emission/node_modules/tipsi-stripe/tipsi-stripe.podspec" + :podspec: node_modules/tipsi-stripe/tipsi-stripe.podspec Yoga: - :path: "./emission/node_modules/react-native/ReactCommon/yoga" + :path: node_modules/react-native/ReactCommon/yoga CHECKOUT OPTIONS: AFOAuth1Client: @@ -754,7 +754,7 @@ SPEC CHECKSUMS: DHCShakeNotifier: 64048427ecaa763f2472d0032f58bf7a10074eee DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2 EDColor: c83f9a61f9f9b3c23d541f1feb561558e29cb088 - Emission: 7657821cbcfd431abaf30c1fa8e1ffec28a7866e + Emission: c0d44f4745243b1cfc750f84f30a68714283a5a7 Expecta: e1c022fcd33910b6be89c291d2775b3fe27a89fe "Expecta+Snapshots": c343f410c7a6392f3e22e78f94c44b6c0749a516 Extraction: 2be993a17f8f8c4fac988ebecaed93a409181faf @@ -836,6 +836,6 @@ SPEC CHECKSUMS: "XCTest+OHHTTPStubSuiteCleanUp": 4469ec8863c6bc022c5089a9b94233eb3416c5ee Yoga: ba3d99dbee6c15ea6bbe3783d1f0cb1ffb79af0f -PODFILE CHECKSUM: 2057bdb5dc57363490ad61e40d14bbc9d90c41a0 +PODFILE CHECKSUM: bde362cc9b474c64f2d920484e2086f123a9793a COCOAPODS: 1.7.5 diff --git a/README.md b/README.md index 97dffd3ce13..1b774b6e9a1 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,6 @@ bundle exec pod install --repo-update open Artsy.xcworkspace # finally start the react-native bundler -cd emission yarn start ``` diff --git a/emission/__mocks__/react-relay.js b/__mocks__/react-relay.js similarity index 100% rename from emission/__mocks__/react-relay.js rename to __mocks__/react-relay.js diff --git a/emission/apollo.config.js b/apollo.config.js similarity index 100% rename from emission/apollo.config.js rename to apollo.config.js diff --git a/emission/babel.config.js b/babel.config.js similarity index 100% rename from emission/babel.config.js rename to babel.config.js diff --git a/emission/dangerfile.ts b/dangerfile.ts similarity index 81% rename from emission/dangerfile.ts rename to dangerfile.ts index 5fe0dc22aff..c4cc77dd92e 100644 --- a/emission/dangerfile.ts +++ b/dangerfile.ts @@ -5,9 +5,6 @@ import { danger, fail, markdown, warn } from "danger" import * as fs from "fs" import * as path from "path" -// TODO: after moving emission package.json into eigen repo root, we can remove this -const qualify = (file: string) => path.join("../", file) - // Setup const pr = danger.github.pr const bodyAndTitle = (pr.body + pr.title).toLowerCase() @@ -19,7 +16,7 @@ const typescriptOnly = (file: string) => file.includes(".ts") const filesOnly = (file: string) => fs.existsSync(file) && fs.lstatSync(file).isFile() // Modified or Created can be treated the same a lot of the time -const createdFiles = danger.git.created_files.map(qualify).filter(filesOnly) +const createdFiles = danger.git.created_files.filter(filesOnly) const appOnlyFilter = (filename: string) => filename.includes("src/lib/") && @@ -29,11 +26,6 @@ const appOnlyFilter = (filename: string) => const createdAppOnlyFiles = createdFiles.filter(appOnlyFilter) -// If it's not a branch PR -if (pr.base.repo.full_name !== pr.head.repo.full_name) { - warn("This PR comes from a fork, and won't get JS generated for QA testing this PR inside the Emission Example app.") -} - // Check that every file created has a corresponding test file const correspondingTestsForAppFiles = createdAppOnlyFiles.map(f => { const newPath = path.dirname(f) @@ -98,14 +90,3 @@ import jest from "danger-plugin-jest" if (fs.existsSync("test-results.json")) { jest({ testResultsJsonPath: "test-results.json" }) } - -const AppDelegate = fs.readFileSync("Example/Emission/AppDelegate.m", "utf8") -if ( - !AppDelegate.includes("static NSString *UserID = nil;") || - !AppDelegate.includes("static NSString *UserAccessToken = nil;") -) { - fail( - "Sensitive user credentials have been left in this PR, please remove those and sqaush the commits so no trace " + - "of them is left behind." - ) -} diff --git a/emission/data/cityDataSortedByDisplayPreference.json b/data/cityDataSortedByDisplayPreference.json similarity index 100% rename from emission/data/cityDataSortedByDisplayPreference.json rename to data/cityDataSortedByDisplayPreference.json diff --git a/emission/data/colors.json b/data/colors.json similarity index 100% rename from emission/data/colors.json rename to data/colors.json diff --git a/emission/data/complete.queryMap.json b/data/complete.queryMap.json similarity index 100% rename from emission/data/complete.queryMap.json rename to data/complete.queryMap.json diff --git a/emission/data/schema.graphql b/data/schema.graphql similarity index 100% rename from emission/data/schema.graphql rename to data/schema.graphql diff --git a/docs/updating_emission.md b/docs/updating_emission.md deleted file mode 100644 index ca0f4f6104f..00000000000 --- a/docs/updating_emission.md +++ /dev/null @@ -1,28 +0,0 @@ -### Updating Emission steps - -## Update Eigen with the most recent version of Emission - -- [New Emission releases](https://github.com/artsy/emission#deploying-emission) are made after any merged PR. -- Update Eigen's `Podfile`, specifically the `EMISSION_VERSION` constant near the top. It needs to point to the same version number you want to deploy. -- Apply the update: `bundle exec pod repo update artsy && bundle exec pod install`. You will see a diff with the new version in `Podfile.lock`. -- Commit your changes and merge a self assigned PR in Eigen with the updated Emission changes. -- Once that PR has merged, switch to your master branch, pull the latest changes, and run `make deploy`. This will create a new version of Eigen with the updated Emission package. - -## Get Emission's to compile - -If it doesn't compile out-right: - -- If the error exists inside React: look into what post-install hooks run inside the Emission repo. - - E.g. inside [package.json](https://github.com/artsy/emission/blob/master/package.json), [scripts/post\_\*.sh](https://github.com/artsy/emission/tree/master/scripts) and the example [app's Podfile](https://github.com/artsy/emission/blob/master/Example/Podfile). They may need to be applied here. - -- If the error exists inside Emission: Look at the Emission test app [AppDelegate](https://github.com/artsy/emission/blob/master/Example/Emission/AppDelegate.m) to see how all of the - available functions are wired up. - -## Get Emission runtime - -Does it crash on launch? - -- Sometimes the simulator will crash after you've run unit tests in it. Uninstall the app from the simulator to fix the crash. -- Might need to add new settings to [the `AREmissionConfiguration` object](https://github.com/artsy/emission/blob/master/Pod/Classes/Core/AREmission.h) in Eigen's side. Ideally these should get raised by compiler warnings, but you never know. -- A native module may have new exposed callbacks which are required to be set up on launch. diff --git a/docs/using_dev_emission.md b/docs/using_dev_emission.md deleted file mode 100644 index aae79cd4ea8..00000000000 --- a/docs/using_dev_emission.md +++ /dev/null @@ -1,28 +0,0 @@ -## Using Emission via `yarn start` in Emission - -When trying to work on some more complex interactions between Emission and Eigen, it can help -to skip the Emission release setup in favour of having Eigen talk to the React Native server. - -You enable this by hitting cmd + alt + z to bring up the Eigen -admin panel. In here is an option "Use local Emission packager" - select this. What this option -does is change the path for Emissions' JS from a statically compiled file (which gets shipped with -the app) to `http://localhost:8081/Example/Emission/index.ios.bundle?platform=ios&dev=true` - -This kills the app, open Eigen back up and you should see the green status bar indicating it's compiling -some Emission dynamically. - -Because both Eigen and React Native use the shake gesture, the React Native shake gesture is disabled -but you can trigger it via the Eigen admin menu. - -## Running Objective-C Changes from Emission in Eigen - -The above steps only link Eigen to Emission's _JavaScript_. But what if you want to link to Emission's _Objective-C_? Well lucky you, it's very straightforward. - -First, follow the steps above so you're running against Emission's RNP. You'll now need to edit Eigen's `Podfile`. Don't commit these changes, they're just for developing. The change will look something like: - -```diff -- pod 'Emission', '~> 1.12' -+ pod 'Emission', path: '../emission' # Point to the directory where you have Emission cloned. -``` - -Now run `bundle exec pod update Emission` from Eigen's directory. This points Eigen to your local Emission. You can open Eigen in Xcode and edit Emission's Objective-C files there – you'll be editing the files in your local Emission clone. diff --git a/emission/.autorc b/emission/.autorc deleted file mode 100644 index 5f191f7b186..00000000000 --- a/emission/.autorc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "@artsy", -} diff --git a/emission/.gitignore b/emission/.gitignore deleted file mode 100644 index c27f981596e..00000000000 --- a/emission/.gitignore +++ /dev/null @@ -1,68 +0,0 @@ -# Xcode - -## Build generated -build/ -DerivedData -dist - -## Various settings -*.pbxuser -!default.pbxuser -*.mode1v3 -!default.mode1v3 -*.mode2v3 -!default.mode2v3 -*.perspectivev3 -!default.perspectivev3 -xcuserdata - -## Other -*.xccheckout -*.moved-aside -*.xcuserstate -*.xcscmblueprint - -## Obj-C/Swift specific -*.hmap -*.ipa - -## Playgrounds -timeline.xctimeline -playground.xcworkspace - -# Custom - -.DS_Store -node_modules -npm-debug.log -Artsy-UIFonts/* -Example/Pods/* -Example/vendor/* -Example/compile_commands.json -Example/Emission/Configuration.h -.vscode/launchReactNative.js -.vscode/.react/ -.vscode/typings -.apphub -coverage -package-lock.json -yarn-error.log -.awcache - -# Use a custom, cached location for Jest to save transpiling -# on every PR -.jest/cache - -# Danger artifacts -tslint-errors.json - -# Haul -# -haul-debug.log -.happypack -test-results.json -head_metadata.json -.vscode/*.sql - -# TypeScript Logs -tsc_raw.log diff --git a/emission/.storybook/webpack.config.js b/emission/.storybook/webpack.config.js deleted file mode 100644 index 8d3eb506af8..00000000000 --- a/emission/.storybook/webpack.config.js +++ /dev/null @@ -1,30 +0,0 @@ -const path = require("path"); -const webpack = require("webpack"); - -const { - OccurenceOrderPlugin, - includePaths, - excludePaths -} = require("@storybook/react-native/dist/server/config/utils"); - -module.exports = { - devtool: "#inline-source-map", // Otherwise getting errors about e.g. `Relay` not being defined. - resolve: { - extensions: [".js", ".jsx", ".ts", ".tsx"] - }, - module: { - loaders: [ - { - test: /\.tsx?$/, - exclude: /node_modules/, - loaders: [ - "awesome-typescript-loader?configFileName=./tsconfig.json&silent=true&transpileOnly=true&target=es6&useBabel=true&useCache=true" - ] - } - ] - }, - plugins: [ - new OccurenceOrderPlugin(), - new webpack.HotModuleReplacementPlugin() - ] -}; diff --git a/emission/.vscode/extensions.json b/emission/.vscode/extensions.json deleted file mode 100644 index 481087fedef..00000000000 --- a/emission/.vscode/extensions.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "recommendations": ["artsy.artsy-studio-extension-pack"], - "unwantedRecommendations": ["prisma.vscode-graphql"] -} diff --git a/emission/Emission.podspec b/emission/Emission.podspec index 1af9c78a8d3..afe6cadb2d5 100644 --- a/emission/Emission.podspec +++ b/emission/Emission.podspec @@ -1,7 +1,7 @@ require 'json' require 'date' -root = ENV['EMISSION_ROOT'] || __dir__ +root = ENV['EMISSION_ROOT'] || File.join(__dir__, '../') pkg_version = lambda do |dir_from_root = '', version = 'version'| path = File.join(root, dir_from_root, 'package.json') JSON.load(File.read(path))[version] @@ -58,21 +58,21 @@ podspec = Pod::Spec.new do |s| # React's Dependencies # s.dependency 'Yoga', "#{react_native_version}.React" react_podspecs = [ - 'node_modules/react-native/third-party-podspecs/DoubleConversion.podspec', - 'node_modules/react-native/third-party-podspecs/Folly.podspec', - 'node_modules/react-native/third-party-podspecs/glog.podspec' + '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec', + '../node_modules/react-native/third-party-podspecs/Folly.podspec', + '../node_modules/react-native/third-party-podspecs/glog.podspec' ] # Native dependencies of Emission, which come from node_modules dep_podspecs = [ - 'node_modules/tipsi-stripe/tipsi-stripe.podspec', - 'node_modules/@mapbox/react-native-mapbox-gl/react-native-mapbox-gl.podspec', - 'node_modules/react-native-sentry/SentryReactNative.podspec', - 'node_modules/react-native-svg/RNSVG.podspec', - 'node_modules/react-native-navigator-ios/react-native-navigator-ios.podspec', - 'node_modules/@react-native-community/cameraroll/react-native-cameraroll.podspec', - 'node_modules/@react-native-community/netinfo/react-native-netinfo.podspec', - 'node_modules/@react-native-community/geolocation/react-native-geolocation.podspec' + '../node_modules/tipsi-stripe/tipsi-stripe.podspec', + '../node_modules/@mapbox/react-native-mapbox-gl/react-native-mapbox-gl.podspec', + '../node_modules/react-native-sentry/SentryReactNative.podspec', + '../node_modules/react-native-svg/RNSVG.podspec', + '../node_modules/react-native-navigator-ios/react-native-navigator-ios.podspec', + '../node_modules/@react-native-community/cameraroll/react-native-cameraroll.podspec', + '../node_modules/@react-native-community/netinfo/react-native-netinfo.podspec', + '../node_modules/@react-native-community/geolocation/react-native-geolocation.podspec' ] # Ties the exact versions so host apps don't need to guess the version diff --git a/emission/Example/.ruby-version b/emission/Example/.ruby-version deleted file mode 100644 index ec1cf33c3f6..00000000000 --- a/emission/Example/.ruby-version +++ /dev/null @@ -1 +0,0 @@ -2.6.3 diff --git a/emission/Example/Emission.xcodeproj/project.pbxproj b/emission/Example/Emission.xcodeproj/project.pbxproj deleted file mode 100644 index f3c50611f26..00000000000 --- a/emission/Example/Emission.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1219 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 34C566E6214C4AAA00479C22 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34C566E5214C4AAA00479C22 /* AVFoundation.framework */; }; - 3A484741223AC736002E657B /* docs in Resources */ = {isa = PBXBuildFile; fileRef = 3A484740223AC736002E657B /* docs */; }; - 3A7D41FE213F3CAD009618F5 /* ARLabOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A7D41FC213F3CAC009618F5 /* ARLabOptions.m */; }; - 3ACAE7B922258EAD009C2236 /* ARAdminSentryBreadcrumbViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3ACAE7B722258EAD009C2236 /* ARAdminSentryBreadcrumbViewController.m */; }; - 402D55D24FAA1BC36FB4ED85 /* libPods-Emission.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B53B6F10A80F64A976B9F221 /* libPods-Emission.a */; }; - 510DCB121CCA69EC0075E8CB /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 510DCB111CCA69EC0075E8CB /* main.m */; }; - 510DCB151CCA69EC0075E8CB /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 510DCB141CCA69EC0075E8CB /* AppDelegate.m */; }; - 510DCB1D1CCA69EC0075E8CB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 510DCB1C1CCA69EC0075E8CB /* Assets.xcassets */; }; - 510DCB2B1CCA69EC0075E8CB /* OpaqueImageViewComponentTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 510DCB2A1CCA69EC0075E8CB /* OpaqueImageViewComponentTests.m */; }; - 510DCB361CCA69EC0075E8CB /* EmissionUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 510DCB351CCA69EC0075E8CB /* EmissionUITests.m */; }; - 510E94FD1CCA828900BDF098 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 510E94FB1CCA828900BDF098 /* LaunchScreen.xib */; }; - 510E95141CCEB84F00BDF098 /* TestHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 510E95131CCEB84F00BDF098 /* TestHelper.m */; }; - 515687BE2079A300002F365C /* ARAdminPreloadTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 515687BD2079A300002F365C /* ARAdminPreloadTableViewCell.m */; }; - 515926A8206BA0C000048C74 /* complete.queryMap.json in Resources */ = {isa = PBXBuildFile; fileRef = 515926A7206BA0C000048C74 /* complete.queryMap.json */; }; - 515926AE206CF8BA00048C74 /* UITabBarDownloadsTemplate@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 515926AD206CF8B900048C74 /* UITabBarDownloadsTemplate@2x.png */; }; - 51F3E9A41CF3B8A4004A2013 /* EigenLikeNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 51F3E9A31CF3B8A4004A2013 /* EigenLikeNavigationController.m */; }; - 5E09C96B21E7B46B00207812 /* RCTTestModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E09C96621E7B46B00207812 /* RCTTestModule.m */; }; - 5E09C96C21E7B46B00207812 /* RCTSnapshotManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E09C96921E7B46B00207812 /* RCTSnapshotManager.m */; }; - 5E09C96D21E7B46B00207812 /* RCTTestRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E09C96A21E7B46B00207812 /* RCTTestRunner.m */; }; - 6011C23B1DAF5DD900CE54E5 /* ARRootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6011C23A1DAF5DD900CE54E5 /* ARRootViewController.m */; }; - 6011C2451DAF61AF00CE54E5 /* ARAdminTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6011C23E1DAF61AF00CE54E5 /* ARAdminTableViewCell.m */; }; - 6011C2461DAF61AF00CE54E5 /* ARTickedTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6011C2401DAF61AF00CE54E5 /* ARTickedTableViewCell.m */; }; - 6011C2471DAF61AF00CE54E5 /* ARAnimatedTickView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6011C2421DAF61AF00CE54E5 /* ARAnimatedTickView.m */; }; - 6011C24B1DAF63C000CE54E5 /* ARDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 6011C24A1DAF63C000CE54E5 /* ARDefaults.m */; }; - 6011C24E1DAF697B00CE54E5 /* EigenLikeAdminViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6011C24D1DAF697B00CE54E5 /* EigenLikeAdminViewController.m */; }; - 6011C2511DAF7B6D00CE54E5 /* UnroutedViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6011C2501DAF7B6D00CE54E5 /* UnroutedViewController.m */; }; - 6011C2561DAF835900CE54E5 /* logo@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6011C2551DAF835900CE54E5 /* logo@2x.png */; }; - 60218E2920168D4E00A6C66B /* ARTopMenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 60218E2820168D4E00A6C66B /* ARTopMenuViewController.m */; }; - 608A60D61F75614700B6EF83 /* AppSetup.m in Sources */ = {isa = PBXBuildFile; fileRef = 608A60D51F75614700B6EF83 /* AppSetup.m */; }; - 60A1A77E1DA3A23C005E3357 /* BackArrow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 60A1A77B1DA3A23C005E3357 /* BackArrow@2x.png */; }; - 60A1A77F1DA3A23C005E3357 /* BackArrow_Highlighted@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 60A1A77C1DA3A23C005E3357 /* BackArrow_Highlighted@2x.png */; }; - 60A1A7801DA3A23C005E3357 /* BackArrowBlack@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 60A1A77D1DA3A23C005E3357 /* BackArrowBlack@2x.png */; }; - 60AEE7A01ECC6237008058E3 /* NSDateFormatter+TimeAgo.m in Sources */ = {isa = PBXBuildFile; fileRef = 60AEE79F1ECC6237008058E3 /* NSDateFormatter+TimeAgo.m */; }; - 60B743B71D3EB12600E6B2A3 /* ARStorybookComponentViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 60B743B61D3EB12600E6B2A3 /* ARStorybookComponentViewController.m */; }; - 60E4ABF71EE7D85000E8C3B1 /* LoadingSpinner.m in Sources */ = {isa = PBXBuildFile; fileRef = 60E4ABF61EE7D85000E8C3B1 /* LoadingSpinner.m */; }; - 60EDA5731F4B2944007A6100 /* InternalWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 60EDA5721F4B2944007A6100 /* InternalWebViewController.m */; }; - 60F61A8B1DAF982B00A72101 /* AuthenticationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 60F61A8A1DAF982B00A72101 /* AuthenticationManager.m */; }; - 7F4FEE4321A36F7F00B8766A /* Back@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7F4FEE4021A36F7E00B8766A /* Back@2x.png */; }; - 7F4FEE4421A36F7F00B8766A /* Back.png in Resources */ = {isa = PBXBuildFile; fileRef = 7F4FEE4121A36F7E00B8766A /* Back.png */; }; - 7F4FEE4521A36F7F00B8766A /* Back@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7F4FEE4221A36F7F00B8766A /* Back@3x.png */; }; - 7F6D717721CAA82D001BC122 /* Placeholder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F6D717621CAA82D001BC122 /* Placeholder.swift */; }; - DC0E8A345456472B4B0828A5 /* libPods-EmissionTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C4F07E47A447A6BE9EE66978 /* libPods-EmissionTests.a */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 510DCB271CCA69EC0075E8CB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 607FACC81AFB9204008FA782 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 510DCB0D1CCA69EC0075E8CB; - remoteInfo = Emission; - }; - 510DCB321CCA69EC0075E8CB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 607FACC81AFB9204008FA782 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 510DCB0D1CCA69EC0075E8CB; - remoteInfo = Emission; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 02E9860078C8122DA3D55F0F /* Pods-Emission.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Emission.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Emission/Pods-Emission.debug.xcconfig"; sourceTree = ""; }; - 163341760E6AD3C2BD2501B6 /* Pods-Emission.deploy.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Emission.deploy.xcconfig"; path = "Pods/Target Support Files/Pods-Emission/Pods-Emission.deploy.xcconfig"; sourceTree = ""; }; - 17DDC2B5E27740D462B9B1E4 /* Pods-EmissionTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-EmissionTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-EmissionTests/Pods-EmissionTests.debug.xcconfig"; sourceTree = ""; }; - 34C566E5214C4AAA00479C22 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - 3A484740223AC736002E657B /* docs */ = {isa = PBXFileReference; lastKnownFileType = folder; name = docs; path = ../docs; sourceTree = ""; }; - 3A7D41FC213F3CAC009618F5 /* ARLabOptions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARLabOptions.m; sourceTree = ""; }; - 3A7D41FD213F3CAD009618F5 /* ARLabOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARLabOptions.h; sourceTree = ""; }; - 3ACAE7B722258EAD009C2236 /* ARAdminSentryBreadcrumbViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ARAdminSentryBreadcrumbViewController.m; sourceTree = ""; }; - 3ACAE7B822258EAD009C2236 /* ARAdminSentryBreadcrumbViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARAdminSentryBreadcrumbViewController.h; sourceTree = ""; }; - 3CA8129D4B3357E4EDA54CF0 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; - 510DCB0E1CCA69EC0075E8CB /* Emission.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Emission.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 510DCB111CCA69EC0075E8CB /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 510DCB131CCA69EC0075E8CB /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 510DCB141CCA69EC0075E8CB /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 510DCB1C1CCA69EC0075E8CB /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 510DCB211CCA69EC0075E8CB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 510DCB261CCA69EC0075E8CB /* EmissionTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = EmissionTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 510DCB2A1CCA69EC0075E8CB /* OpaqueImageViewComponentTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OpaqueImageViewComponentTests.m; sourceTree = ""; }; - 510DCB2C1CCA69EC0075E8CB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 510DCB311CCA69EC0075E8CB /* EmissionUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = EmissionUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 510DCB351CCA69EC0075E8CB /* EmissionUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EmissionUITests.m; sourceTree = ""; }; - 510DCB371CCA69ED0075E8CB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 510E94FC1CCA828900BDF098 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 510E95131CCEB84F00BDF098 /* TestHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestHelper.m; sourceTree = ""; }; - 510E95151CCEC22C00BDF098 /* TestHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TestHelper.h; sourceTree = ""; }; - 515687BC2079A300002F365C /* ARAdminPreloadTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARAdminPreloadTableViewCell.h; sourceTree = ""; }; - 515687BD2079A300002F365C /* ARAdminPreloadTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ARAdminPreloadTableViewCell.m; sourceTree = ""; }; - 515926A7206BA0C000048C74 /* complete.queryMap.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = complete.queryMap.json; path = ../../data/complete.queryMap.json; sourceTree = ""; }; - 515926AD206CF8B900048C74 /* UITabBarDownloadsTemplate@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "UITabBarDownloadsTemplate@2x.png"; sourceTree = ""; }; - 51F3E9A21CF3B8A4004A2013 /* EigenLikeNavigationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EigenLikeNavigationController.h; sourceTree = ""; }; - 51F3E9A31CF3B8A4004A2013 /* EigenLikeNavigationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EigenLikeNavigationController.m; sourceTree = ""; }; - 5D75FFB0E282ED7DB0B9141E /* Pods-EmissionTests.deploy.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-EmissionTests.deploy.xcconfig"; path = "Pods/Target Support Files/Pods-EmissionTests/Pods-EmissionTests.deploy.xcconfig"; sourceTree = ""; }; - 5E09C96521E7B46B00207812 /* RCTSnapshotManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTSnapshotManager.h; sourceTree = ""; }; - 5E09C96621E7B46B00207812 /* RCTTestModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTTestModule.m; sourceTree = ""; }; - 5E09C96721E7B46B00207812 /* RCTTestModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTTestModule.h; sourceTree = ""; }; - 5E09C96821E7B46B00207812 /* RCTTestRunner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCTTestRunner.h; sourceTree = ""; }; - 5E09C96921E7B46B00207812 /* RCTSnapshotManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTSnapshotManager.m; sourceTree = ""; }; - 5E09C96A21E7B46B00207812 /* RCTTestRunner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTTestRunner.m; sourceTree = ""; }; - 6011C2391DAF5DD900CE54E5 /* ARRootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARRootViewController.h; sourceTree = ""; }; - 6011C23A1DAF5DD900CE54E5 /* ARRootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARRootViewController.m; sourceTree = ""; }; - 6011C23D1DAF61AF00CE54E5 /* ARAdminTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARAdminTableViewCell.h; sourceTree = ""; }; - 6011C23E1DAF61AF00CE54E5 /* ARAdminTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARAdminTableViewCell.m; sourceTree = ""; }; - 6011C23F1DAF61AF00CE54E5 /* ARTickedTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARTickedTableViewCell.h; sourceTree = ""; }; - 6011C2401DAF61AF00CE54E5 /* ARTickedTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARTickedTableViewCell.m; sourceTree = ""; }; - 6011C2411DAF61AF00CE54E5 /* ARAnimatedTickView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARAnimatedTickView.h; sourceTree = ""; }; - 6011C2421DAF61AF00CE54E5 /* ARAnimatedTickView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARAnimatedTickView.m; sourceTree = ""; }; - 6011C2491DAF63C000CE54E5 /* ARDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARDefaults.h; sourceTree = ""; }; - 6011C24A1DAF63C000CE54E5 /* ARDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARDefaults.m; sourceTree = ""; }; - 6011C24C1DAF697B00CE54E5 /* EigenLikeAdminViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EigenLikeAdminViewController.h; sourceTree = ""; }; - 6011C24D1DAF697B00CE54E5 /* EigenLikeAdminViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EigenLikeAdminViewController.m; sourceTree = ""; }; - 6011C24F1DAF7B6D00CE54E5 /* UnroutedViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnroutedViewController.h; sourceTree = ""; }; - 6011C2501DAF7B6D00CE54E5 /* UnroutedViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UnroutedViewController.m; sourceTree = ""; }; - 6011C2551DAF835900CE54E5 /* logo@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "logo@2x.png"; sourceTree = ""; }; - 60204ADD1D9D590900204628 /* Emission.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Emission.entitlements; sourceTree = ""; }; - 60218E2720168D4E00A6C66B /* ARTopMenuViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARTopMenuViewController.h; sourceTree = ""; }; - 60218E2820168D4E00A6C66B /* ARTopMenuViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ARTopMenuViewController.m; sourceTree = ""; }; - 607673A21ECC4C9F005848B5 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - 6077F28F1EE56723004F054D /* CHANGELOG.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = CHANGELOG.md; path = ../CHANGELOG.md; sourceTree = ""; }; - 608A60D41F75614700B6EF83 /* AppSetup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppSetup.h; sourceTree = ""; }; - 608A60D51F75614700B6EF83 /* AppSetup.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppSetup.m; sourceTree = ""; }; - 608C6DB91FA263290044E235 /* CommitNetworkModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommitNetworkModel.h; sourceTree = ""; }; - 608C6DBA1FA263290044E235 /* CommitNetworkModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CommitNetworkModel.m; sourceTree = ""; }; - 60A1A77B1DA3A23C005E3357 /* BackArrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BackArrow@2x.png"; sourceTree = ""; }; - 60A1A77C1DA3A23C005E3357 /* BackArrow_Highlighted@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BackArrow_Highlighted@2x.png"; sourceTree = ""; }; - 60A1A77D1DA3A23C005E3357 /* BackArrowBlack@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BackArrowBlack@2x.png"; sourceTree = ""; }; - 60A1A7841DA3A879005E3357 /* ARMacros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARMacros.h; sourceTree = ""; }; - 60AE1D7E1EE7DF9C00FC800A /* PRNetworkModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRNetworkModel.h; sourceTree = ""; }; - 60AE1D7F1EE7DF9C00FC800A /* PRNetworkModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRNetworkModel.m; sourceTree = ""; }; - 60AEE79E1ECC6237008058E3 /* NSDateFormatter+TimeAgo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDateFormatter+TimeAgo.h"; sourceTree = ""; }; - 60AEE79F1ECC6237008058E3 /* NSDateFormatter+TimeAgo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDateFormatter+TimeAgo.m"; sourceTree = ""; }; - 60B743B51D3EB12600E6B2A3 /* ARStorybookComponentViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARStorybookComponentViewController.h; sourceTree = ""; }; - 60B743B61D3EB12600E6B2A3 /* ARStorybookComponentViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARStorybookComponentViewController.m; sourceTree = ""; }; - 60E4ABF51EE7D85000E8C3B1 /* LoadingSpinner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoadingSpinner.h; sourceTree = ""; }; - 60E4ABF61EE7D85000E8C3B1 /* LoadingSpinner.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoadingSpinner.m; sourceTree = ""; }; - 60EDA5711F4B2944007A6100 /* InternalWebViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InternalWebViewController.h; sourceTree = ""; }; - 60EDA5721F4B2944007A6100 /* InternalWebViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InternalWebViewController.m; sourceTree = ""; }; - 60F61A891DAF982A00A72101 /* AuthenticationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AuthenticationManager.h; sourceTree = ""; }; - 60F61A8A1DAF982B00A72101 /* AuthenticationManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AuthenticationManager.m; sourceTree = ""; }; - 7F4FEE4021A36F7E00B8766A /* Back@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Back@2x.png"; sourceTree = ""; }; - 7F4FEE4121A36F7E00B8766A /* Back.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Back.png; sourceTree = ""; }; - 7F4FEE4221A36F7F00B8766A /* Back@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Back@3x.png"; sourceTree = ""; }; - 7F6D717621CAA82D001BC122 /* Placeholder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Placeholder.swift; sourceTree = ""; }; - 9AB72C7CDF8351EF0ADB2E4D /* Pods-Emission.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Emission.release.xcconfig"; path = "Pods/Target Support Files/Pods-Emission/Pods-Emission.release.xcconfig"; sourceTree = ""; }; - B53B6F10A80F64A976B9F221 /* libPods-Emission.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Emission.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - BD6A42932C7B5D57AE022D1A /* Emission.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Emission.podspec; path = ../Emission.podspec; sourceTree = ""; }; - C4F07E47A447A6BE9EE66978 /* libPods-EmissionTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-EmissionTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - DB1BB078CB1708CE8106DA15 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; - E347387A62A41620FEED9427 /* Pods-EmissionTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-EmissionTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-EmissionTests/Pods-EmissionTests.release.xcconfig"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 510DCB0B1CCA69EC0075E8CB /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 34C566E6214C4AAA00479C22 /* AVFoundation.framework in Frameworks */, - 402D55D24FAA1BC36FB4ED85 /* libPods-Emission.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 510DCB231CCA69EC0075E8CB /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - DC0E8A345456472B4B0828A5 /* libPods-EmissionTests.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 510DCB2E1CCA69EC0075E8CB /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 510DCB0F1CCA69EC0075E8CB /* Emission */ = { - isa = PBXGroup; - children = ( - 515926AC206CF8B900048C74 /* Resources */, - 60F61A881DAF849700A72101 /* App */, - 60AEE79D1ECC620F008058E3 /* Categories */, - 60F61A871DAF848E00A72101 /* View Controllers */, - 6011C2521DAF7EF600CE54E5 /* Launch */, - 6011C23C1DAF619700CE54E5 /* Admin Tableview Cells */, - 60D3D56D1D42532600A15671 /* Navigation */, - 60D3D56C1D42531200A15671 /* Storybooks */, - 510DCB101CCA69EC0075E8CB /* Supporting Files */, - ); - path = Emission; - sourceTree = ""; - }; - 510DCB101CCA69EC0075E8CB /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 60204ADD1D9D590900204628 /* Emission.entitlements */, - 510DCB1C1CCA69EC0075E8CB /* Assets.xcassets */, - 510DCB211CCA69EC0075E8CB /* Info.plist */, - 510DCB111CCA69EC0075E8CB /* main.m */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 510DCB291CCA69EC0075E8CB /* EmissionTests */ = { - isa = PBXGroup; - children = ( - 5E09C95221E7A0D500207812 /* RCTTest */, - 510DCB2A1CCA69EC0075E8CB /* OpaqueImageViewComponentTests.m */, - 510DCB2C1CCA69EC0075E8CB /* Info.plist */, - 510E95151CCEC22C00BDF098 /* TestHelper.h */, - 510E95131CCEB84F00BDF098 /* TestHelper.m */, - ); - path = EmissionTests; - sourceTree = ""; - }; - 510DCB341CCA69EC0075E8CB /* EmissionUITests */ = { - isa = PBXGroup; - children = ( - 510DCB351CCA69EC0075E8CB /* EmissionUITests.m */, - 510DCB371CCA69ED0075E8CB /* Info.plist */, - ); - path = EmissionUITests; - sourceTree = ""; - }; - 515926AC206CF8B900048C74 /* Resources */ = { - isa = PBXGroup; - children = ( - 515926A7206BA0C000048C74 /* complete.queryMap.json */, - 515926AD206CF8B900048C74 /* UITabBarDownloadsTemplate@2x.png */, - ); - path = Resources; - sourceTree = SOURCE_ROOT; - }; - 5E09C95221E7A0D500207812 /* RCTTest */ = { - isa = PBXGroup; - children = ( - 5E09C96521E7B46B00207812 /* RCTSnapshotManager.h */, - 5E09C96921E7B46B00207812 /* RCTSnapshotManager.m */, - 5E09C96721E7B46B00207812 /* RCTTestModule.h */, - 5E09C96621E7B46B00207812 /* RCTTestModule.m */, - 5E09C96821E7B46B00207812 /* RCTTestRunner.h */, - 5E09C96A21E7B46B00207812 /* RCTTestRunner.m */, - ); - path = RCTTest; - sourceTree = ""; - }; - 6011C23C1DAF619700CE54E5 /* Admin Tableview Cells */ = { - isa = PBXGroup; - children = ( - 6011C23D1DAF61AF00CE54E5 /* ARAdminTableViewCell.h */, - 6011C23E1DAF61AF00CE54E5 /* ARAdminTableViewCell.m */, - 6011C23F1DAF61AF00CE54E5 /* ARTickedTableViewCell.h */, - 6011C2401DAF61AF00CE54E5 /* ARTickedTableViewCell.m */, - 6011C2411DAF61AF00CE54E5 /* ARAnimatedTickView.h */, - 6011C2421DAF61AF00CE54E5 /* ARAnimatedTickView.m */, - 6011C24C1DAF697B00CE54E5 /* EigenLikeAdminViewController.h */, - 6011C24D1DAF697B00CE54E5 /* EigenLikeAdminViewController.m */, - 515687BC2079A300002F365C /* ARAdminPreloadTableViewCell.h */, - 515687BD2079A300002F365C /* ARAdminPreloadTableViewCell.m */, - ); - name = "Admin Tableview Cells"; - sourceTree = ""; - }; - 6011C2521DAF7EF600CE54E5 /* Launch */ = { - isa = PBXGroup; - children = ( - 6011C2551DAF835900CE54E5 /* logo@2x.png */, - 510E94FB1CCA828900BDF098 /* LaunchScreen.xib */, - ); - name = Launch; - sourceTree = ""; - }; - 607FACC71AFB9204008FA782 = { - isa = PBXGroup; - children = ( - 3A484740223AC736002E657B /* docs */, - 607FACF51AFB993E008FA782 /* Podspec Metadata */, - 510DCB0F1CCA69EC0075E8CB /* Emission */, - 510DCB291CCA69EC0075E8CB /* EmissionTests */, - 510DCB341CCA69EC0075E8CB /* EmissionUITests */, - 607FACD11AFB9204008FA782 /* Products */, - A8456AA0E39F581C091B5C1D /* Frameworks */, - BA58B07A6BE3C2C396F4F73F /* Pods */, - ); - indentWidth = 2; - sourceTree = ""; - tabWidth = 2; - }; - 607FACD11AFB9204008FA782 /* Products */ = { - isa = PBXGroup; - children = ( - 510DCB0E1CCA69EC0075E8CB /* Emission.app */, - 510DCB261CCA69EC0075E8CB /* EmissionTests.xctest */, - 510DCB311CCA69EC0075E8CB /* EmissionUITests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 607FACF51AFB993E008FA782 /* Podspec Metadata */ = { - isa = PBXGroup; - children = ( - 6077F28F1EE56723004F054D /* CHANGELOG.md */, - BD6A42932C7B5D57AE022D1A /* Emission.podspec */, - 3CA8129D4B3357E4EDA54CF0 /* README.md */, - DB1BB078CB1708CE8106DA15 /* LICENSE */, - ); - name = "Podspec Metadata"; - sourceTree = ""; - }; - 60A1A77A1DA3A230005E3357 /* Resources */ = { - isa = PBXGroup; - children = ( - 60A1A77B1DA3A23C005E3357 /* BackArrow@2x.png */, - 60A1A77C1DA3A23C005E3357 /* BackArrow_Highlighted@2x.png */, - 60A1A77D1DA3A23C005E3357 /* BackArrowBlack@2x.png */, - 7F4FEE4121A36F7E00B8766A /* Back.png */, - 7F4FEE4021A36F7E00B8766A /* Back@2x.png */, - 7F4FEE4221A36F7F00B8766A /* Back@3x.png */, - ); - name = Resources; - sourceTree = ""; - }; - 60AEE79D1ECC620F008058E3 /* Categories */ = { - isa = PBXGroup; - children = ( - 60AEE79E1ECC6237008058E3 /* NSDateFormatter+TimeAgo.h */, - 60AEE79F1ECC6237008058E3 /* NSDateFormatter+TimeAgo.m */, - ); - name = Categories; - sourceTree = ""; - }; - 60D3D56C1D42531200A15671 /* Storybooks */ = { - isa = PBXGroup; - children = ( - 60B743B51D3EB12600E6B2A3 /* ARStorybookComponentViewController.h */, - 60B743B61D3EB12600E6B2A3 /* ARStorybookComponentViewController.m */, - ); - name = Storybooks; - sourceTree = ""; - }; - 60D3D56D1D42532600A15671 /* Navigation */ = { - isa = PBXGroup; - children = ( - 60A1A77A1DA3A230005E3357 /* Resources */, - 51F3E9A21CF3B8A4004A2013 /* EigenLikeNavigationController.h */, - 51F3E9A31CF3B8A4004A2013 /* EigenLikeNavigationController.m */, - 60218E2720168D4E00A6C66B /* ARTopMenuViewController.h */, - 60218E2820168D4E00A6C66B /* ARTopMenuViewController.m */, - ); - name = Navigation; - sourceTree = ""; - }; - 60F61A871DAF848E00A72101 /* View Controllers */ = { - isa = PBXGroup; - children = ( - 3ACAE7B822258EAD009C2236 /* ARAdminSentryBreadcrumbViewController.h */, - 3ACAE7B722258EAD009C2236 /* ARAdminSentryBreadcrumbViewController.m */, - 6011C2391DAF5DD900CE54E5 /* ARRootViewController.h */, - 6011C23A1DAF5DD900CE54E5 /* ARRootViewController.m */, - 6011C24F1DAF7B6D00CE54E5 /* UnroutedViewController.h */, - 6011C2501DAF7B6D00CE54E5 /* UnroutedViewController.m */, - 60EDA5711F4B2944007A6100 /* InternalWebViewController.h */, - 60EDA5721F4B2944007A6100 /* InternalWebViewController.m */, - 7F6D717621CAA82D001BC122 /* Placeholder.swift */, - ); - name = "View Controllers"; - sourceTree = ""; - }; - 60F61A881DAF849700A72101 /* App */ = { - isa = PBXGroup; - children = ( - 510DCB131CCA69EC0075E8CB /* AppDelegate.h */, - 510DCB141CCA69EC0075E8CB /* AppDelegate.m */, - 608A60D41F75614700B6EF83 /* AppSetup.h */, - 608A60D51F75614700B6EF83 /* AppSetup.m */, - 6011C2491DAF63C000CE54E5 /* ARDefaults.h */, - 6011C24A1DAF63C000CE54E5 /* ARDefaults.m */, - 3A7D41FD213F3CAD009618F5 /* ARLabOptions.h */, - 3A7D41FC213F3CAC009618F5 /* ARLabOptions.m */, - 60A1A7841DA3A879005E3357 /* ARMacros.h */, - 60F61A891DAF982A00A72101 /* AuthenticationManager.h */, - 60F61A8A1DAF982B00A72101 /* AuthenticationManager.m */, - 608C6DB91FA263290044E235 /* CommitNetworkModel.h */, - 608C6DBA1FA263290044E235 /* CommitNetworkModel.m */, - 60E4ABF51EE7D85000E8C3B1 /* LoadingSpinner.h */, - 60E4ABF61EE7D85000E8C3B1 /* LoadingSpinner.m */, - 60AE1D7E1EE7DF9C00FC800A /* PRNetworkModel.h */, - 60AE1D7F1EE7DF9C00FC800A /* PRNetworkModel.m */, - ); - name = App; - sourceTree = ""; - }; - A8456AA0E39F581C091B5C1D /* Frameworks */ = { - isa = PBXGroup; - children = ( - 34C566E5214C4AAA00479C22 /* AVFoundation.framework */, - 607673A21ECC4C9F005848B5 /* XCTest.framework */, - B53B6F10A80F64A976B9F221 /* libPods-Emission.a */, - C4F07E47A447A6BE9EE66978 /* libPods-EmissionTests.a */, - ); - name = Frameworks; - sourceTree = ""; - }; - BA58B07A6BE3C2C396F4F73F /* Pods */ = { - isa = PBXGroup; - children = ( - 02E9860078C8122DA3D55F0F /* Pods-Emission.debug.xcconfig */, - 9AB72C7CDF8351EF0ADB2E4D /* Pods-Emission.release.xcconfig */, - 163341760E6AD3C2BD2501B6 /* Pods-Emission.deploy.xcconfig */, - 17DDC2B5E27740D462B9B1E4 /* Pods-EmissionTests.debug.xcconfig */, - 5D75FFB0E282ED7DB0B9141E /* Pods-EmissionTests.deploy.xcconfig */, - E347387A62A41620FEED9427 /* Pods-EmissionTests.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 510DCB0D1CCA69EC0075E8CB /* Emission */ = { - isa = PBXNativeTarget; - buildConfigurationList = 510DCB3E1CCA69ED0075E8CB /* Build configuration list for PBXNativeTarget "Emission" */; - buildPhases = ( - 6E41E6A6664172F7C45F3D36 /* [CP] Check Pods Manifest.lock */, - 510DCB0A1CCA69EC0075E8CB /* Sources */, - 510DCB0B1CCA69EC0075E8CB /* Frameworks */, - 513510561DAFBBB9007223BF /* Compile JS Bundle for Release */, - 5157C2E92018C82400DE6B07 /* Record Packager Host IP for Debug */, - 510DCB0C1CCA69EC0075E8CB /* Resources */, - 510E94FE1CCB87F100BDF098 /* Create Clang compilation DB */, - 3531E0CB4D0C66204FFF9D4A /* [CP] Copy Pods Resources */, - 3CB362FC55CDD77CDAA5F2C2 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Emission; - productName = Emission; - productReference = 510DCB0E1CCA69EC0075E8CB /* Emission.app */; - productType = "com.apple.product-type.application"; - }; - 510DCB251CCA69EC0075E8CB /* EmissionTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 510DCB3F1CCA69ED0075E8CB /* Build configuration list for PBXNativeTarget "EmissionTests" */; - buildPhases = ( - 26CA73EDB939BB2466B1F25A /* [CP] Check Pods Manifest.lock */, - 510DCB221CCA69EC0075E8CB /* Sources */, - 510DCB231CCA69EC0075E8CB /* Frameworks */, - 510DCB241CCA69EC0075E8CB /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 510DCB281CCA69EC0075E8CB /* PBXTargetDependency */, - ); - name = EmissionTests; - productName = EmissionTests; - productReference = 510DCB261CCA69EC0075E8CB /* EmissionTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 510DCB301CCA69EC0075E8CB /* EmissionUITests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 510DCB401CCA69ED0075E8CB /* Build configuration list for PBXNativeTarget "EmissionUITests" */; - buildPhases = ( - 510DCB2D1CCA69EC0075E8CB /* Sources */, - 510DCB2E1CCA69EC0075E8CB /* Frameworks */, - 510DCB2F1CCA69EC0075E8CB /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 510DCB331CCA69EC0075E8CB /* PBXTargetDependency */, - ); - name = EmissionUITests; - productName = EmissionUITests; - productReference = 510DCB311CCA69EC0075E8CB /* EmissionUITests.xctest */; - productType = "com.apple.product-type.bundle.ui-testing"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 607FACC81AFB9204008FA782 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0720; - LastUpgradeCheck = 1130; - ORGANIZATIONNAME = CocoaPods; - TargetAttributes = { - 510DCB0D1CCA69EC0075E8CB = { - CreatedOnToolsVersion = 7.2.1; - DevelopmentTeam = 23KMWZ572J; - LastSwiftMigration = 1020; - ProvisioningStyle = Automatic; - SystemCapabilities = { - com.apple.BackgroundModes = { - enabled = 1; - }; - com.apple.Keychain = { - enabled = 1; - }; - com.apple.SafariKeychain = { - enabled = 1; - }; - }; - }; - 510DCB251CCA69EC0075E8CB = { - CreatedOnToolsVersion = 7.2.1; - LastSwiftMigration = 1010; - TestTargetID = 510DCB0D1CCA69EC0075E8CB; - }; - 510DCB301CCA69EC0075E8CB = { - CreatedOnToolsVersion = 7.2.1; - TestTargetID = 510DCB0D1CCA69EC0075E8CB; - }; - }; - }; - buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "Emission" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 607FACC71AFB9204008FA782; - productRefGroup = 607FACD11AFB9204008FA782 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 510DCB0D1CCA69EC0075E8CB /* Emission */, - 510DCB251CCA69EC0075E8CB /* EmissionTests */, - 510DCB301CCA69EC0075E8CB /* EmissionUITests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 510DCB0C1CCA69EC0075E8CB /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 510E94FD1CCA828900BDF098 /* LaunchScreen.xib in Resources */, - 6011C2561DAF835900CE54E5 /* logo@2x.png in Resources */, - 7F4FEE4421A36F7F00B8766A /* Back.png in Resources */, - 515926A8206BA0C000048C74 /* complete.queryMap.json in Resources */, - 60A1A77F1DA3A23C005E3357 /* BackArrow_Highlighted@2x.png in Resources */, - 515926AE206CF8BA00048C74 /* UITabBarDownloadsTemplate@2x.png in Resources */, - 60A1A7801DA3A23C005E3357 /* BackArrowBlack@2x.png in Resources */, - 510DCB1D1CCA69EC0075E8CB /* Assets.xcassets in Resources */, - 7F4FEE4321A36F7F00B8766A /* Back@2x.png in Resources */, - 3A484741223AC736002E657B /* docs in Resources */, - 7F4FEE4521A36F7F00B8766A /* Back@3x.png in Resources */, - 60A1A77E1DA3A23C005E3357 /* BackArrow@2x.png in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 510DCB241CCA69EC0075E8CB /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 510DCB2F1CCA69EC0075E8CB /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 26CA73EDB939BB2466B1F25A /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-EmissionTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 3531E0CB4D0C66204FFF9D4A /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Emission/Pods-Emission-resources.sh", - "${PODS_ROOT}/Artsy+UIFonts/Pod/Assets/AGaramondPro-Bold.otf", - "${PODS_ROOT}/Artsy+UIFonts/Pod/Assets/AGaramondPro-BoldItalic.otf", - "${PODS_ROOT}/Artsy+UIFonts/Pod/Assets/AGaramondPro-Italic.otf", - "${PODS_ROOT}/Artsy+UIFonts/Pod/Assets/AGaramondPro-Regular.otf", - "${PODS_ROOT}/Artsy+UIFonts/Pod/Assets/AGaramondPro-Semibold.otf", - "${PODS_ROOT}/Artsy+UIFonts/Pod/Assets/AVG65lig.otf", - "${PODS_ROOT}/Artsy+UIFonts/Pod/Assets/ReactNativeAGaramondPro-Italic.otf", - "${PODS_ROOT}/Artsy+UIFonts/Pod/Assets/ReactNativeAGaramondPro-Regular.otf", - "${PODS_ROOT}/Artsy+UIFonts/Pod/Assets/ReactNativeAGaramondPro-Semibold.otf", - "${PODS_ROOT}/Artsy+UIFonts/Pod/Assets/Unica77LL-Italic.otf", - "${PODS_ROOT}/Artsy+UIFonts/Pod/Assets/Unica77LL-Medium.otf", - "${PODS_ROOT}/Artsy+UIFonts/Pod/Assets/Unica77LL-MediumItalic.otf", - "${PODS_ROOT}/Artsy+UIFonts/Pod/Assets/Unica77LL-Regular.otf", - "${PODS_ROOT}/../../Pod/Assets/Emission.js", - "${PODS_ROOT}/../../Pod/Assets/assets", - "${PODS_ROOT}/Extraction/Extraction/Assets/ARLoadFailureRetryIcon@2x.png", - "${PODS_ROOT}/SAMKeychain/Support/SAMKeychain.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/Stripe/Stripe.bundle", - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AGaramondPro-Bold.otf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AGaramondPro-BoldItalic.otf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AGaramondPro-Italic.otf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AGaramondPro-Regular.otf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AGaramondPro-Semibold.otf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AVG65lig.otf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ReactNativeAGaramondPro-Italic.otf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ReactNativeAGaramondPro-Regular.otf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ReactNativeAGaramondPro-Semibold.otf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Unica77LL-Italic.otf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Unica77LL-Medium.otf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Unica77LL-MediumItalic.otf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Unica77LL-Regular.otf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Emission.js", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/assets", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ARLoadFailureRetryIcon@2x.png", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SAMKeychain.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Stripe.bundle", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Emission/Pods-Emission-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - 3CB362FC55CDD77CDAA5F2C2 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Emission/Pods-Emission-frameworks.sh", - "${PODS_ROOT}/../../node_modules/@mapbox/react-native-mapbox-gl/ios/Mapbox.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Mapbox.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Emission/Pods-Emission-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 510E94FE1CCB87F100BDF098 /* Create Clang compilation DB */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Create Clang compilation DB"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "if type -p clang-compilation-database-tool > /dev/null 2>&1; then\nclang-compilation-database-tool collect \"${OBJECT_FILE_DIR_normal}\" > \"${SRCROOT}/compile_commands.json\"\nfi"; - showEnvVarsInLog = 0; - }; - 513510561DAFBBB9007223BF /* Compile JS Bundle for Release */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 12; - files = ( - ); - inputPaths = ( - ); - name = "Compile JS Bundle for Release"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "if [ \"$CONFIGURATION\" = \"Release\" ]\nthen\nexport NVM_DIR=\"$HOME/.nvm\"\n[ -s \"$NVM_DIR/nvm.sh\" ] && . \"$NVM_DIR/nvm.sh\"\ncd .. && nvm use && npm run bundle\nfi"; - showEnvVarsInLog = 0; - }; - 5157C2E92018C82400DE6B07 /* Record Packager Host IP for Debug */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Record Packager Host IP for Debug"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# Taken from https://github.com/facebook/react-native/blob/2716f53220f947c690d5f627286aad51313256a0/scripts/react-native-xcode.sh\n\n# Print commands before executing them (useful for troubleshooting)\nset -x\nDEST=$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH\n\nif [[ \"$CONFIGURATION\" = \"Debug\" && ! \"$PLATFORM_NAME\" == *simulator ]]; then\nPLISTBUDDY='/usr/libexec/PlistBuddy'\nPLIST=$TARGET_BUILD_DIR/$INFOPLIST_PATH\nIP=$(ipconfig getifaddr en0)\nif [ -z \"$IP\" ]; then\nIP=$(ifconfig | grep 'inet ' | grep -v ' 127.' | cut -d\\ -f2 | awk 'NR==1{print $1}')\nfi\n\nif [ -z ${DISABLE_XIP+x} ]; then\nIP=\"$IP.xip.io\"\nfi\n\n$PLISTBUDDY -c \"Add NSAppTransportSecurity:NSExceptionDomains:localhost:NSTemporaryExceptionAllowsInsecureHTTPLoads bool true\" \"$PLIST\"\n$PLISTBUDDY -c \"Add NSAppTransportSecurity:NSExceptionDomains:$IP:NSTemporaryExceptionAllowsInsecureHTTPLoads bool true\" \"$PLIST\"\necho \"$IP\" > \"$DEST/ip.txt\"\nfi"; - showEnvVarsInLog = 0; - }; - 6E41E6A6664172F7C45F3D36 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Emission-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 510DCB0A1CCA69EC0075E8CB /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6011C2511DAF7B6D00CE54E5 /* UnroutedViewController.m in Sources */, - 6011C2451DAF61AF00CE54E5 /* ARAdminTableViewCell.m in Sources */, - 3ACAE7B922258EAD009C2236 /* ARAdminSentryBreadcrumbViewController.m in Sources */, - 3A7D41FE213F3CAD009618F5 /* ARLabOptions.m in Sources */, - 60B743B71D3EB12600E6B2A3 /* ARStorybookComponentViewController.m in Sources */, - 51F3E9A41CF3B8A4004A2013 /* EigenLikeNavigationController.m in Sources */, - 515687BE2079A300002F365C /* ARAdminPreloadTableViewCell.m in Sources */, - 6011C2461DAF61AF00CE54E5 /* ARTickedTableViewCell.m in Sources */, - 60E4ABF71EE7D85000E8C3B1 /* LoadingSpinner.m in Sources */, - 60218E2920168D4E00A6C66B /* ARTopMenuViewController.m in Sources */, - 60F61A8B1DAF982B00A72101 /* AuthenticationManager.m in Sources */, - 608A60D61F75614700B6EF83 /* AppSetup.m in Sources */, - 6011C2471DAF61AF00CE54E5 /* ARAnimatedTickView.m in Sources */, - 60AEE7A01ECC6237008058E3 /* NSDateFormatter+TimeAgo.m in Sources */, - 510DCB151CCA69EC0075E8CB /* AppDelegate.m in Sources */, - 6011C24B1DAF63C000CE54E5 /* ARDefaults.m in Sources */, - 60EDA5731F4B2944007A6100 /* InternalWebViewController.m in Sources */, - 510DCB121CCA69EC0075E8CB /* main.m in Sources */, - 6011C24E1DAF697B00CE54E5 /* EigenLikeAdminViewController.m in Sources */, - 6011C23B1DAF5DD900CE54E5 /* ARRootViewController.m in Sources */, - 7F6D717721CAA82D001BC122 /* Placeholder.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 510DCB221CCA69EC0075E8CB /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 510DCB2B1CCA69EC0075E8CB /* OpaqueImageViewComponentTests.m in Sources */, - 510E95141CCEB84F00BDF098 /* TestHelper.m in Sources */, - 5E09C96B21E7B46B00207812 /* RCTTestModule.m in Sources */, - 5E09C96D21E7B46B00207812 /* RCTTestRunner.m in Sources */, - 5E09C96C21E7B46B00207812 /* RCTSnapshotManager.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 510DCB2D1CCA69EC0075E8CB /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 510DCB361CCA69EC0075E8CB /* EmissionUITests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 510DCB281CCA69EC0075E8CB /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 510DCB0D1CCA69EC0075E8CB /* Emission */; - targetProxy = 510DCB271CCA69EC0075E8CB /* PBXContainerItemProxy */; - }; - 510DCB331CCA69EC0075E8CB /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 510DCB0D1CCA69EC0075E8CB /* Emission */; - targetProxy = 510DCB321CCA69EC0075E8CB /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 510E94FB1CCA828900BDF098 /* LaunchScreen.xib */ = { - isa = PBXVariantGroup; - children = ( - 510E94FC1CCA828900BDF098 /* Base */, - ); - name = LaunchScreen.xib; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 510DCB381CCA69ED0075E8CB /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 02E9860078C8122DA3D55F0F /* Pods-Emission.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CC = "${SRCROOT}/compile_commands_emitting_clang"; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_CXX0X_EXTENSIONS = YES; - CODE_SIGN_ENTITLEMENTS = Emission/Emission.entitlements; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = ""; - GCC_TREAT_WARNINGS_AS_ERRORS = YES; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_PEDANTIC = YES; - INFOPLIST_FILE = Emission/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - OTHER_LDFLAGS = ( - "$(inherited)", - "-lstdc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = net.artsy.Emission; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = "Emission/Emission-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - WARNING_CFLAGS = "-Wno-variadic-macros"; - }; - name = Debug; - }; - 510DCB391CCA69ED0075E8CB /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9AB72C7CDF8351EF0ADB2E4D /* Pods-Emission.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CC = "${SRCROOT}/compile_commands_emitting_clang"; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_CXX0X_EXTENSIONS = YES; - CODE_SIGN_ENTITLEMENTS = Emission/Emission.entitlements; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = ""; - GCC_TREAT_WARNINGS_AS_ERRORS = YES; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_PEDANTIC = YES; - INFOPLIST_FILE = Emission/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - OTHER_LDFLAGS = ( - "$(inherited)", - "-lstdc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = net.artsy.Emission; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - WARNING_CFLAGS = "-Wno-variadic-macros"; - }; - name = Release; - }; - 510DCB3A1CCA69ED0075E8CB /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 17DDC2B5E27740D462B9B1E4 /* Pods-EmissionTests.debug.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ENABLE_MODULES = YES; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "COCOAPODS=1", - "FB_REFERENCE_IMAGE_DIR=\"\\\"$(SOURCE_ROOT)/$(TARGET_NAME)/ReferenceImages\\\"\"", - ); - INFOPLIST_FILE = EmissionTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = net.artsy.EmissionTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Emission.app/Emission"; - }; - name = Debug; - }; - 510DCB3B1CCA69ED0075E8CB /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E347387A62A41620FEED9427 /* Pods-EmissionTests.release.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ENABLE_MODULES = YES; - INFOPLIST_FILE = EmissionTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = net.artsy.EmissionTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.2; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Emission.app/Emission"; - }; - name = Release; - }; - 510DCB3C1CCA69ED0075E8CB /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - DEBUG_INFORMATION_FORMAT = dwarf; - INFOPLIST_FILE = EmissionUITests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = net.artsy.EmissionUITests; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_TARGET_NAME = Emission; - USES_XCTRUNNER = YES; - }; - name = Debug; - }; - 510DCB3D1CCA69ED0075E8CB /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - INFOPLIST_FILE = EmissionUITests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = net.artsy.EmissionUITests; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_TARGET_NAME = Emission; - USES_XCTRUNNER = YES; - }; - name = Release; - }; - 607FACED1AFB9204008FA782 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 607FACEE1AFB9204008FA782 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 608A60D01F755E2F00B6EF83 /* Deploy */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "DEPLOY=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Deploy; - }; - 608A60D11F755E2F00B6EF83 /* Deploy */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 163341760E6AD3C2BD2501B6 /* Pods-Emission.deploy.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CC = "${SRCROOT}/compile_commands_emitting_clang"; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_CXX0X_EXTENSIONS = YES; - CODE_SIGN_ENTITLEMENTS = Emission/Emission.entitlements; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = ""; - GCC_TREAT_WARNINGS_AS_ERRORS = YES; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_PEDANTIC = YES; - INFOPLIST_FILE = Emission/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - OTHER_LDFLAGS = ( - "$(inherited)", - "-lstdc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = net.artsy.Emission; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = "Emission/Emission-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - WARNING_CFLAGS = "-Wno-variadic-macros"; - }; - name = Deploy; - }; - 608A60D21F755E2F00B6EF83 /* Deploy */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5D75FFB0E282ED7DB0B9141E /* Pods-EmissionTests.deploy.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ENABLE_MODULES = YES; - DEBUG_INFORMATION_FORMAT = dwarf; - INFOPLIST_FILE = EmissionTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = net.artsy.EmissionTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Emission.app/Emission"; - }; - name = Deploy; - }; - 608A60D31F755E2F00B6EF83 /* Deploy */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - DEBUG_INFORMATION_FORMAT = dwarf; - INFOPLIST_FILE = EmissionUITests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = net.artsy.EmissionUITests; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_TARGET_NAME = Emission; - USES_XCTRUNNER = YES; - }; - name = Deploy; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 510DCB3E1CCA69ED0075E8CB /* Build configuration list for PBXNativeTarget "Emission" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 510DCB381CCA69ED0075E8CB /* Debug */, - 608A60D11F755E2F00B6EF83 /* Deploy */, - 510DCB391CCA69ED0075E8CB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 510DCB3F1CCA69ED0075E8CB /* Build configuration list for PBXNativeTarget "EmissionTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 510DCB3A1CCA69ED0075E8CB /* Debug */, - 608A60D21F755E2F00B6EF83 /* Deploy */, - 510DCB3B1CCA69ED0075E8CB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 510DCB401CCA69ED0075E8CB /* Build configuration list for PBXNativeTarget "EmissionUITests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 510DCB3C1CCA69ED0075E8CB /* Debug */, - 608A60D31F755E2F00B6EF83 /* Deploy */, - 510DCB3D1CCA69ED0075E8CB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "Emission" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 607FACED1AFB9204008FA782 /* Debug */, - 608A60D01F755E2F00B6EF83 /* Deploy */, - 607FACEE1AFB9204008FA782 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 607FACC81AFB9204008FA782 /* Project object */; -} diff --git a/emission/Example/Emission.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/emission/Example/Emission.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index f6ade13ad0f..00000000000 --- a/emission/Example/Emission.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/emission/Example/Emission.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/emission/Example/Emission.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003d6..00000000000 --- a/emission/Example/Emission.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/emission/Example/Emission.xcodeproj/xcshareddata/xcschemes/Emission Example.xcscheme b/emission/Example/Emission.xcodeproj/xcshareddata/xcschemes/Emission Example.xcscheme deleted file mode 100644 index 722358d98ba..00000000000 --- a/emission/Example/Emission.xcodeproj/xcshareddata/xcschemes/Emission Example.xcscheme +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/emission/Example/Emission.xcodeproj/xcshareddata/xcschemes/Emission.xcscheme b/emission/Example/Emission.xcodeproj/xcshareddata/xcschemes/Emission.xcscheme deleted file mode 100644 index de938e78de4..00000000000 --- a/emission/Example/Emission.xcodeproj/xcshareddata/xcschemes/Emission.xcscheme +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/emission/Example/Emission.xcworkspace/contents.xcworkspacedata b/emission/Example/Emission.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 327e05a2367..00000000000 --- a/emission/Example/Emission.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/emission/Example/Emission.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/emission/Example/Emission.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003d6..00000000000 --- a/emission/Example/Emission.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/emission/Example/Emission/ARAdminPreloadTableViewCell.h b/emission/Example/Emission/ARAdminPreloadTableViewCell.h deleted file mode 100644 index 0f8014cdb98..00000000000 --- a/emission/Example/Emission/ARAdminPreloadTableViewCell.h +++ /dev/null @@ -1,6 +0,0 @@ -#import -#import "ARAdminTableViewCell.h" - -@interface ARAdminPreloadTableViewCell : ARAdminTableViewCell -@property (nonatomic, copy) dispatch_block_t preloadBlock; -@end diff --git a/emission/Example/Emission/ARAdminPreloadTableViewCell.m b/emission/Example/Emission/ARAdminPreloadTableViewCell.m deleted file mode 100644 index 404de8a438f..00000000000 --- a/emission/Example/Emission/ARAdminPreloadTableViewCell.m +++ /dev/null @@ -1,22 +0,0 @@ -#import "ARAdminPreloadTableViewCell.h" - -@implementation ARAdminPreloadTableViewCell - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier; -{ - if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) { - UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; - [button setImage:[UIImage imageNamed:@"UITabBarDownloadsTemplate"] forState:UIControlStateNormal]; - [button sizeToFit]; - [button addTarget:self action:@selector(invokePreloadBlock) forControlEvents:UIControlEventTouchUpInside]; - self.accessoryView = button; - } - return self; -} - -- (void)invokePreloadBlock; -{ - self.preloadBlock(); -} - -@end diff --git a/emission/Example/Emission/ARAdminSentryBreadcrumbViewController.h b/emission/Example/Emission/ARAdminSentryBreadcrumbViewController.h deleted file mode 100644 index 920da720100..00000000000 --- a/emission/Example/Emission/ARAdminSentryBreadcrumbViewController.h +++ /dev/null @@ -1,5 +0,0 @@ -#import - -@interface ARAdminSentryBreadcrumbViewController : UIViewController - -@end diff --git a/emission/Example/Emission/ARAdminSentryBreadcrumbViewController.m b/emission/Example/Emission/ARAdminSentryBreadcrumbViewController.m deleted file mode 100644 index e7462233112..00000000000 --- a/emission/Example/Emission/ARAdminSentryBreadcrumbViewController.m +++ /dev/null @@ -1,80 +0,0 @@ -#import "ARAdminSentryBreadcrumbViewController.h" - -#import -#import - -#import - -// Pull out the private fileManager -@interface SentryBreadcrumbStore (Private) -@property(nonatomic, strong) SentryFileManager *fileManager; -@end - - -@implementation ARAdminSentryBreadcrumbViewController - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - // Grab the breadcrumbs from analytics calls and API wins/losses - // Convert those into string messages - // Throw them into a UITextView - // :shippit: - // - SentryBreadcrumbStore *store = [SentryClient sharedClient].breadcrumbs; - NSArray *> *breadCrumbs = [[[store.fileManager getAllStoredBreadcrumbs] reverseObjectEnumerator] allObjects]; - - NSMutableArray *messages = [NSMutableArray array]; - for (NSDictionary *data in breadCrumbs) { - NSDictionary *breadcrumb = [NSJSONSerialization JSONObjectWithData: data[@"data"] options:NSJSONReadingAllowFragments error:NULL]; - - NSString *timestamp = breadcrumb[@"timestamp"]; - NSString *category = breadcrumb[@"category"]; - NSString *message; - - // Is a console log message - if ([category isEqualToString:@"console"]){ - message = [NSString stringWithFormat:@"🕰 %@ \n%@ - %@", timestamp, breadcrumb[@"level"], breadcrumb[@"message"]]; - } - - // Is the start of an API call - if (!message && [category isEqualToString:@"fetch"]){ - NSString *url = breadcrumb[@"data"][@"url"]; - NSString *method = breadcrumb[@"data"][@"method"]; - NSString *status = @"START"; - - message = [NSString stringWithFormat:@"🕰 %@ \n%@ - %@ %@",timestamp, status, method, url]; - } - - // Is the end of an API call - if (!message && [category isEqualToString:@"xhr"]){ - NSString *url = breadcrumb[@"data"][@"url"]; - NSString *method = breadcrumb[@"data"][@"method"]; - NSString *status = breadcrumb[@"data"][@"status_code"]; - - message = [NSString stringWithFormat:@"🕰 %@ \n%@ - %@ %@", timestamp, status, method, url]; - } - - // Is a generic API call - if (!message && category) { - message = [NSString stringWithFormat:@"🕰 %@ \n🔎 %@ \n%@", timestamp, category, breadcrumb[@"data"]]; - } - - if (message){ - [messages addObject:message]; - } - } - - UITextView *tv = [[UITextView alloc] initWithFrame:self.view.bounds]; - tv.font = [UIFont fontWithName:@"Menlo-Regular" size:13]; - tv.textContainerInset = UIEdgeInsetsMake(60, 20, 60, 20); - tv.contentOffset = CGPointMake(0, 60); - tv.editable = NO; - [self.view addSubview:tv]; - [tv alignToView:self.view]; - - tv.text = [messages componentsJoinedByString:@"\n\n"]; -} - -@end diff --git a/emission/Example/Emission/ARAdminTableViewCell.h b/emission/Example/Emission/ARAdminTableViewCell.h deleted file mode 100644 index a941e4bc16a..00000000000 --- a/emission/Example/Emission/ARAdminTableViewCell.h +++ /dev/null @@ -1,10 +0,0 @@ -#import - -extern CGFloat ARTableViewCellSettingsHeight; - - -@interface ARAdminTableViewCell : UITableViewCell - -@property (nonatomic, assign) BOOL useSerifFont; - -@end diff --git a/emission/Example/Emission/ARAdminTableViewCell.m b/emission/Example/Emission/ARAdminTableViewCell.m deleted file mode 100644 index 7bf7210b634..00000000000 --- a/emission/Example/Emission/ARAdminTableViewCell.m +++ /dev/null @@ -1,63 +0,0 @@ -#import "ARAdminTableViewCell.h" -#import "EigenLikeAdminViewController.h" - -#import -#import - -CGFloat ARTableViewCellSettingsHeight = 60; - -@implementation ARAdminTableViewCell - -CGFloat MainTextVerticalOffset = 4; -CGFloat DetailTextVerticalOffset = 6; - -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier -{ - BOOL overwriteStyle = [reuseIdentifier isEqualToString:ARLabOptionCell]; - UITableViewCellStyle usedStyle = overwriteStyle ? UITableViewCellStyleSubtitle : style; - - self = [super initWithStyle:usedStyle reuseIdentifier:reuseIdentifier]; - if (!self) { - return nil; - } - - self.useSerifFont = YES; - UIView *backgroundView = [[UIView alloc] init]; - backgroundView.backgroundColor = [UIColor artsyGrayLight]; - self.selectedBackgroundView = backgroundView; - self.textLabel.backgroundColor = [UIColor clearColor]; - - return self; -} - - -- (void)setUseSerifFont:(BOOL)newUseSerifFont -{ - _useSerifFont = newUseSerifFont; - - if (_useSerifFont) { - self.textLabel.font = [UIFont serifFontWithSize:18]; - self.detailTextLabel.font = [UIFont serifItalicFontWithSize:16]; - } else { - self.textLabel.font = [UIFont sansSerifFontWithSize:15]; - self.detailTextLabel.font = [UIFont sansSerifFontWithSize:15]; - } -} - -- (void)layoutSubviews -{ - [super layoutSubviews]; - - if (!self.detailTextLabel) { - if (_useSerifFont) { - CGRect frame = self.textLabel.frame; - frame.size.height -= MainTextVerticalOffset; - self.textLabel.frame = frame; - self.textLabel.center = CGPointMake(self.textLabel.center.x, self.textLabel.center.y + MainTextVerticalOffset); - } - } else { - self.detailTextLabel.center = CGPointMake(self.detailTextLabel.center.x, self.detailTextLabel.center.y + DetailTextVerticalOffset); - } -} - -@end diff --git a/emission/Example/Emission/ARAnimatedTickView.h b/emission/Example/Emission/ARAnimatedTickView.h deleted file mode 100644 index 0a221ddcd31..00000000000 --- a/emission/Example/Emission/ARAnimatedTickView.h +++ /dev/null @@ -1,9 +0,0 @@ -#import - - -@interface ARAnimatedTickView : UIView -- (id)initWithSelection:(BOOL)selected; - -- (BOOL)selected; -- (void)setSelected:(BOOL)selected animated:(BOOL)animated; -@end diff --git a/emission/Example/Emission/ARAnimatedTickView.m b/emission/Example/Emission/ARAnimatedTickView.m deleted file mode 100644 index bc879a6ea51..00000000000 --- a/emission/Example/Emission/ARAnimatedTickView.m +++ /dev/null @@ -1,176 +0,0 @@ -#import "ARAnimatedTickView.h" -#import - -#define TICK_DIMENSION 32 - -@interface ARTickViewFrontLayer : CAShapeLayer -@end - - -@interface ARTickViewBackLayer : CALayer -@property (nonatomic, assign) CGFloat completion; -@end - - -@interface ARAnimatedTickView () { - ARTickViewBackLayer *_backLayer; -} -@end - - -@implementation ARAnimatedTickView - -- (id)initWithFrame:(CGRect)frame -{ - [NSException raise:NSInvalidArgumentException format:@"NSObject %@[%@]: selector not recognized - use initWithSelection: ", NSStringFromClass([self class]), NSStringFromSelector(_cmd)]; - return nil; -} - -- (id)initWithSelection:(BOOL)selected -{ - self = [super initWithFrame:CGRectMake(0, 0, TICK_DIMENSION, TICK_DIMENSION)]; - if (self) { - self.backgroundColor = [[UIColor artsyGrayRegular] colorWithAlphaComponent:0.2]; - - _backLayer = [ARTickViewBackLayer layer]; - _backLayer.completion = 1; - _backLayer.bounds = self.bounds; - _backLayer.position = CGPointMake(TICK_DIMENSION / 2, TICK_DIMENSION / 2); - - [self.layer addSublayer:_backLayer]; - [self.layer addSublayer:[ARTickViewFrontLayer layer]]; - - [self setSelected:selected animated:NO]; - } - return self; -} - -- (BOOL)selected -{ - return (_backLayer.completion) ? YES : NO; -} - -- (void)setSelected:(BOOL)selected animated:(BOOL)animated -{ - if (!animated) { - _backLayer.completion = selected ? 1 : 0; - [_backLayer setNeedsDisplay]; - - } else { - CABasicAnimation *positionAnimation = [CABasicAnimation animationWithKeyPath:@"completion"]; - positionAnimation.duration = 0.15; - positionAnimation.fromValue = @(!selected); - positionAnimation.toValue = @(selected); - positionAnimation.fillMode = kCAFillModeForwards; - positionAnimation.removedOnCompletion = YES; - [_backLayer addAnimation:positionAnimation forKey:@"TickAnimation"]; - - _backLayer.completion = selected ? 1 : 0; - } -} - -@end - - -@implementation ARTickViewFrontLayer - -// This is essentially the facia behind which the tick selection is drawn - -+ (instancetype)layer -{ - ARTickViewFrontLayer *layer = [[ARTickViewFrontLayer alloc] init]; - CGMutablePathRef tickPath = CGPathCreateMutable(); - - // Tick with gets diffed on outline // x y - CGPathMoveToPoint(tickPath, NULL, 24.28, 6.62); - CGPathAddLineToPoint(tickPath, NULL, 12.14, 22.07); - CGPathAddLineToPoint(tickPath, NULL, 6.62, 16.55); - CGPathAddLineToPoint(tickPath, NULL, 4.41, 18.76); - CGPathAddLineToPoint(tickPath, NULL, 12.14, 26.48); - CGPathAddLineToPoint(tickPath, NULL, 26.48, 8.83); - CGPathAddLineToPoint(tickPath, NULL, 24.28, 6.62); - CGPathCloseSubpath(tickPath); - - // Outline - CGPathMoveToPoint(tickPath, NULL, 32, 32); - CGPathAddLineToPoint(tickPath, NULL, 0, 32); - CGPathAddLineToPoint(tickPath, NULL, 0, 0); - CGPathAddLineToPoint(tickPath, NULL, 32, 0); - CGPathAddLineToPoint(tickPath, NULL, 32, 32); - CGPathCloseSubpath(tickPath); - - layer.path = tickPath; - CGPathRelease(tickPath); - - layer.fillColor = [UIColor whiteColor].CGColor; - return layer; -} - -@end - - -@implementation ARTickViewBackLayer - -// Tell the class if completion changes that needs a redraw -// meaning you can animate the key completion using a CABasicAnimation - -+ (BOOL)needsDisplayForKey:(NSString *)key -{ - if ([key isEqualToString:@"completion"]) { - return YES; - } - - return [super needsDisplayForKey:key]; -} - -- (void)drawInContext:(CGContextRef)context -{ - [self drawLowerHalfInContext:context]; - [self drawUpperHalfInContext:context]; -} - -// Top left is 0,0 - -- (void)drawLowerHalfInContext:(CGContextRef)ctx -{ - CGPoint TL = CGPointMake(6.0, 15.2); - CGPoint BL = CGPointMake(4.1, 19.4); - - // this is double the distance it needs, so that it finished in half-time - - CGPoint TR = CGPointMake(21, 32); - CGPoint BR = CGPointMake(21.1, 34.6); - [self drawStretchyRectWithPointsTL:TL TR:TR BL:BL BR:BR inContext:ctx]; -} - -- (void)drawUpperHalfInContext:(CGContextRef)ctx -{ - CGPoint TL = CGPointMake(9.4, 24.5); - CGPoint BL = CGPointMake(12.1, 27.1); - - CGPoint TR = CGPointMake(24, 6.8); - CGPoint BR = CGPointMake(27.1, 8.9); - [self drawStretchyRectWithPointsTL:TL TR:TR BL:BL BR:BR inContext:ctx]; -} - -- (void)drawStretchyRectWithPointsTL:(CGPoint)TL TR:(CGPoint)TR BL:(CGPoint)BL BR:(CGPoint)BR inContext:(CGContextRef)ctx -{ - CGContextMoveToPoint(ctx, TL.x, TL.y); - - // the top right - CGContextAddLineToPoint(ctx, ((TR.x - TL.x) * self.completion) + TL.x, ((TR.y - TL.y) * self.completion) + TL.y); - // bottom right - CGContextAddLineToPoint(ctx, ((BR.x - BL.x) * self.completion) + BL.x, ((BR.y - BL.y) * self.completion) + BL.y); - - // bottom left - CGContextAddLineToPoint(ctx, BL.x, BL.y); - CGContextClosePath(ctx); - - // Color it - CGContextSetFillColorWithColor(ctx, [UIColor artsyPurpleRegular].CGColor); - CGContextSetLineWidth(ctx, 0); - - CGContextDrawPath(ctx, kCGPathFill); -} - -@end diff --git a/emission/Example/Emission/ARDefaults.h b/emission/Example/Emission/ARDefaults.h deleted file mode 100644 index b7317d644b5..00000000000 --- a/emission/Example/Emission/ARDefaults.h +++ /dev/null @@ -1,19 +0,0 @@ -#import - -extern NSString *const ARForceUseRNPDefault; -extern NSString *const ARJumpStraightIntoStorybooks; - -extern NSString *const ARUseStagingDefault; -extern NSString *const ARUsePREmissionDefault; -extern NSString *const ARPREmissionIDDefault; - -extern NSString *const ARStagingAPIURLDefault; -extern NSString *const ARStagingWebURLDefault; -extern NSString *const ARStagingMetaphysicsURLDefault; -extern NSString *const ARStagingPredictionURLDefault; -extern NSString *const ARRNPackagerHostDefault; - -@interface ARDefaults : NSObject -+ (void)setup; -+ (void)resetDefaults; -@end diff --git a/emission/Example/Emission/ARDefaults.m b/emission/Example/Emission/ARDefaults.m deleted file mode 100644 index 7ed5c273e46..00000000000 --- a/emission/Example/Emission/ARDefaults.m +++ /dev/null @@ -1,50 +0,0 @@ -#import "ARDefaults.h" -#import - -NSString *const ARForceUseRNPDefault = @"ARForceUseRNPDefault"; -NSString *const ARJumpStraightIntoStorybooks = @"ARJumpStraightIntoStorybooks"; - -NSString *const ARUseStagingDefault = @"ARUseStagingDefault"; -NSString *const ARUsePREmissionDefault = @"ARUsePREmissionDefault"; -NSString *const ARPREmissionIDDefault = @"ARPREmissionIDDefault"; - -NSString *const ARStagingAPIURLDefault = @"ARStagingAPIURLDefault"; -NSString *const ARStagingWebURLDefault = @"ARStagingWebURLDefault"; -NSString *const ARStagingMetaphysicsURLDefault = @"ARStagingMetaphysicsURLDefault"; -NSString *const ARStagingPredictionURLDefault = @"ARStagingPredictionURLDefault"; -NSString *const ARRNPackagerHostDefault = @"ARStagingRNPackagerHostDefault"; - - -@implementation ARDefaults - -+ (void)setup -{ - BOOL useStagingDefault; -#if DEBUG - useStagingDefault = YES; -#else - useStagingDefault = NO; -#endif - - NSString *ipPath = [[NSBundle mainBundle] pathForResource:@"ip" ofType:@"txt"]; - NSString *ipGuess = [[NSString stringWithContentsOfFile:ipPath encoding:NSUTF8StringEncoding error:nil] - stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]]; - NSString *host = ipGuess ? ipGuess : @"localhost"; - - [[NSUserDefaults standardUserDefaults] registerDefaults:@{ - ARUseStagingDefault : @(useStagingDefault), - ARStagingAPIURLDefault : @"https://stagingapi.artsy.net", - ARStagingWebURLDefault : @"https://staging.artsy.net", - ARStagingMetaphysicsURLDefault : @"https://metaphysics-staging.artsy.net/v2", - ARStagingPredictionURLDefault : @"https://live-staging.artsy.net", - ARRNPackagerHostDefault : host, - }]; -} - -+ (void)resetDefaults -{ - [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:[[NSBundle mainBundle] bundleIdentifier]]; - [[NSUserDefaults standardUserDefaults] synchronize]; -} - -@end diff --git a/emission/Example/Emission/ARLabOptions.h b/emission/Example/Emission/ARLabOptions.h deleted file mode 100644 index 7d3aad4b8a0..00000000000 --- a/emission/Example/Emission/ARLabOptions.h +++ /dev/null @@ -1,20 +0,0 @@ -#import - -extern NSDictionary *AROptionsAnExampleLabOption; - -@interface ARLabOptions : NSObject - -/// Returns all the current options -+ (NSArray *)labsOptions; -/// A subset of the above that the app should restart upon changing -+ (NSArray *)labsOptionsThatRequireRestart; -/// A dictionary of lab options to true/false as NSNumbers -+ (NSDictionary *)labOptionsMap; -/// So we can provide a UI -+ (NSString *)descriptionForOption:(NSString *)option; - -/// Get and set individual options -+ (BOOL)boolForOption:(NSString *)option; -+ (void)setBool:(BOOL)value forOption:(NSString *)option; - -@end diff --git a/emission/Example/Emission/ARLabOptions.m b/emission/Example/Emission/ARLabOptions.m deleted file mode 100644 index 38007030110..00000000000 --- a/emission/Example/Emission/ARLabOptions.m +++ /dev/null @@ -1,71 +0,0 @@ - -#import "ARLabOptions.h" - -static NSDictionary *options = nil; - -@implementation ARLabOptions - -+ (void)initialize -{ - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - // - // The keys in this hash are how you can access the value in Emission code: - // - // import { options } from "lib/options" - // - // if (options.example) { - // [something] - // - // - // Then in your test files, you can use jest to mock "lib/options" with your own - // object. - // - options = @{ - @"AROptionsPriceTransparency": @"Price transparency", - @"AROptionsLotConditionReport": @"Lot Condition Report", - @"AROptionsFilterCollectionsArtworks": @"Filter Collections Artworks" - }; - }); - -} - -+ (NSArray *)labsOptions -{ - return options.allKeys; -} - -+ (NSString *)descriptionForOption:(NSString *)option -{ - return options[option]; -} - -+ (NSDictionary *)labOptionsMap -{ - NSArray *options = [self labsOptions]; - NSMutableDictionary *mutableOptions = [NSMutableDictionary dictionary]; - - for (NSString *option in options) { - [mutableOptions setObject:@([self boolForOption:option]) forKey:option]; - } - return [mutableOptions copy]; -} - - -+ (NSArray *)labsOptionsThatRequireRestart -{ - return @[]; -} - -+ (BOOL)boolForOption:(NSString *)option -{ - return [[NSUserDefaults standardUserDefaults] boolForKey:option]; -} - -+ (void)setBool:(BOOL)value forOption:(NSString *)option -{ - [[NSUserDefaults standardUserDefaults] setBool:value forKey:option]; - [[NSUserDefaults standardUserDefaults] synchronize]; -} - -@end diff --git a/emission/Example/Emission/ARMacros.h b/emission/Example/Emission/ARMacros.h deleted file mode 100644 index 2da794aa87b..00000000000 --- a/emission/Example/Emission/ARMacros.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef ARMacros_h -#define ARMacros_h - -#define ar_keypath(anObject, aKeyPath) ((void)(NO && ((void)anObject.aKeyPath, NO)), @ #aKeyPath) - -#endif /* ARMacros_h */ diff --git a/emission/Example/Emission/ARRootViewController.h b/emission/Example/Emission/ARRootViewController.h deleted file mode 100644 index f2d6ec29b2b..00000000000 --- a/emission/Example/Emission/ARRootViewController.h +++ /dev/null @@ -1,9 +0,0 @@ -#import -#import "EigenLikeAdminViewController.h" -#import "AuthenticationManager.h" - -@interface ARRootViewController : EigenLikeAdminViewController - -@property (nonatomic) AuthenticationManager *authenticationManager; - -@end diff --git a/emission/Example/Emission/ARRootViewController.m b/emission/Example/Emission/ARRootViewController.m deleted file mode 100644 index 195fbc035b3..00000000000 --- a/emission/Example/Emission/ARRootViewController.m +++ /dev/null @@ -1,564 +0,0 @@ -#import "ARRootViewController.h" -#import "ARAnimatedTickView.h" -#import "ARTickedTableViewCell.h" -#import "ARAdminTableViewCell.h" -#import "ARAdminPreloadTableViewCell.h" -#import "EigenLikeNavigationController.h" -#import - -#import "AppDelegate.h" -#import "ARDefaults.h" -#import "AppSetup.h" -#import "ARLabOptions.h" - -#import -#import - -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import - -#import "ARStorybookComponentViewController.h" - -#import "InternalWebViewController.h" -#import "EigenLikeNavigationController.h" -#import -#import "ARAdminSentryBreadcrumbViewController.h" - -#import -#import - -@implementation ARRootViewController - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - AppSetup *setup = [AppSetup ambientSetup]; - - ARTableViewData *tableViewData = [[ARTableViewData alloc] init]; - [self registerClass:ARTickedTableViewCell.class forCellReuseIdentifier:ARLabOptionCell]; - [self registerClass:ARAdminTableViewCell.class forCellReuseIdentifier:ARSubtitledLabOptionCell]; - [self registerClass:ARAdminTableViewCell.class forCellReuseIdentifier:AROptionCell]; - [self registerClass:ARAdminPreloadTableViewCell.class forCellReuseIdentifier:ARPreloadOptionCell]; - - ARSectionData *appData = [[ARSectionData alloc] init]; - [self setupSection:appData withTitle:[self titleForApp]]; - [appData addCellData:[self emissionJSLocationDescription:setup.emissionLoadedFromString]]; - [tableViewData addSectionData:appData]; - - // This isn't of any use unless you're developing - if(!setup.usingPRBuild) { - ARSectionData *developerSection = [self developersSection]; - [tableViewData addSectionData:developerSection]; - } - - ARSectionData *userSection = [self userSection]; - [tableViewData addSectionData:userSection]; - - ARSectionData *labsSection = [self labsSection]; - [tableViewData addSectionData:labsSection]; - - // TODO: Deprecate - // These were nice quick for getting bootstrapped, but they should be storybooks - // so that they can be controlled in JS and deployed with PRs. - ARSectionData *viewControllerSection = [self jumpToViewControllersSection]; - [tableViewData addSectionData:viewControllerSection]; - - ARSectionData *adminSection = [self adminSection]; - [tableViewData addSectionData:adminSection]; - - self.tableViewData = tableViewData; -} - -- (void)viewDidAppear:(BOOL)animated -{ - [super viewDidAppear:animated]; - - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - BOOL autoJump = [[NSUserDefaults standardUserDefaults] boolForKey:ARJumpStraightIntoStorybooks]; - if (autoJump) { - id viewController = [ARStorybookComponentViewController new]; - [self.navigationController pushViewController:viewController animated:YES]; - } - }); -} - -/// Sections - -- (ARSectionData *)jumpToViewControllersSection -{ - ARSectionData *sectionData = [[ARSectionData alloc] init]; - [self setupSection:sectionData withTitle:@"View Controllers"]; - - [sectionData addCellData:self.jumpToSearch]; - [sectionData addCellData:self.jumpToShow]; - [sectionData addCellData:self.jumpToFair]; - [sectionData addCellData:self.jumpToMap]; - [sectionData addCellData:self.jumpToCollection]; - [sectionData addCellData:self.jumpToArtwork]; - [sectionData addCellData:self.jumpToPartner]; - [sectionData addCellData:self.jumpToArtist]; - [sectionData addCellData:self.jumpToRandomArtist]; - [sectionData addCellData:self.jumpToHomepage]; - [sectionData addCellData:self.jumpToGene]; - [sectionData addCellData:self.jumpToRefinedGene]; - [sectionData addCellData:self.jumpToMyProfile]; - [sectionData addCellData:self.jumpToConsignments]; - [sectionData addCellData:self.jumpToInbox]; - [sectionData addCellData:self.jumpToInquiry]; - [sectionData addCellData:self.jumpToFavorites]; - [sectionData addCellData:self.jumpToBidFlow]; - - return sectionData; -} - -- (ARSectionData *)developersSection -{ - ARSectionData *sectionData = [[ARSectionData alloc] init]; - [self setupSection:sectionData withTitle:@"Developer"]; - - [sectionData addCellData:self.jumpToStorybooks]; - [sectionData addCellData:self.autoOpenStorybooksOnLaunch]; - - return sectionData; -} - -- (ARSectionData *)labsSection -{ - ARSectionData *labsSectionData = [[ARSectionData alloc] init]; - labsSectionData.headerTitle = @"Labs"; - - NSArray *options = [ARLabOptions labsOptions]; - for (NSInteger index = 0; index < options.count; index++) { - NSString *key = options[index]; - NSString *title = [ARLabOptions descriptionForOption:key]; - BOOL requiresRestart = [[ARLabOptions labsOptionsThatRequireRestart] indexOfObject:title] != NSNotFound; - - ARCellData *cellData = [[ARCellData alloc] initWithIdentifier:ARLabOptionCell]; - [cellData setCellConfigurationBlock:^(UITableViewCell *cell) { - cell.textLabel.text = requiresRestart ? [title stringByAppendingString:@" (restarts)"] : title; - cell.accessoryView = [[ARAnimatedTickView alloc] initWithSelection:[ARLabOptions boolForOption:key]]; - }]; - - [cellData setCellSelectionBlock:^(UITableView *tableView, NSIndexPath *indexPath) { - BOOL currentSelection = [ARLabOptions boolForOption:key]; - [ARLabOptions setBool:!currentSelection forOption:key]; - - if (requiresRestart) { - // Show checkmark. - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - exit(0); - }); - } else { - AppDelegate *appDelegate = (id)[UIApplication sharedApplication].delegate; - [appDelegate reloadEmission]; - } - - UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; - [(ARAnimatedTickView *)cell.accessoryView setSelected:!currentSelection animated:YES]; - }]; - - [labsSectionData addCellData:cellData]; - } - return labsSectionData; -} - -- (ARCellData *)jumpToStorybooks -{ - return [self tappableCellDataWithTitle:@"Open Storybook" selection: ^{ - id viewController = [ARStorybookComponentViewController new]; - [self.navigationController pushViewController:viewController animated:YES]; - }]; -} - -- (ARCellData *)autoOpenStorybooksOnLaunch -{ - BOOL autoJump = [[NSUserDefaults standardUserDefaults] boolForKey:ARJumpStraightIntoStorybooks]; - NSString *title = autoJump ? @"Stop auto-jumping into Storybooks" : @"Jump into Storybooks on launch"; - - ARCellData *autoSwitchCellData = [[ARCellData alloc] initWithIdentifier:AROptionCell]; - [autoSwitchCellData setCellConfigurationBlock:^(UITableViewCell *cell) { - cell.textLabel.text = title; - cell.accessoryView = [[ARAnimatedTickView alloc] initWithSelection:autoJump]; - }]; - - [autoSwitchCellData setCellSelectionBlock:^(UITableView *tableView, NSIndexPath *indexPath) { - UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; - cell.accessoryView = [[ARAnimatedTickView alloc] initWithSelection:!autoJump]; - - [self showAlertViewWithTitle:@"Confirm Switch" message:@"Switching auto-storybooks." actionTitle:@"Do it" actionHandler:^{ - [[NSUserDefaults standardUserDefaults] setBool:!autoJump forKey:ARJumpStraightIntoStorybooks]; - [[NSUserDefaults standardUserDefaults] synchronize]; - exit(0); - }]; - }]; - - return autoSwitchCellData; -} - - -- (ARCellData *)jumpToEndUserStorybooks -{ - return [self tappableCellDataWithTitle:@"Open Storybook Browser" selection: ^{ - id viewController = [[ARComponentViewController alloc] initWithEmission:nil moduleName:@"StorybookBrowser" initialProperties: @{}]; - [self.navigationController pushViewController:viewController animated:YES]; - }]; -} - - -- (ARCellData *)jumpToUserDocs -{ - return [self tappableCellDataWithTitle:@"Open Emission beta Docs" selection: ^{ - NSURL *url = [NSURL URLWithString:@"https://github.com/artsy/emission/blob/master/docs/using_the_beta.md"]; - id viewController = [[InternalWebViewController alloc] initWithURL:url]; - [self.navigationController pushViewController:viewController animated:YES]; - }]; -} - -- (ARCellData *)jumpToSearch -{ - return [self tappableCellDataWithTitle:@"Search" selection:^{ - id viewController = [[ARSearchComponentViewController alloc] init]; - [self.navigationController pushViewController:viewController animated:YES]; - }]; -} - -- (ARCellData *)jumpToArtwork -{ - return [self tappableCellDataWithTitle:@"Artwork" selection:^{ - id viewController = [[ARArtworkComponentViewController alloc] initWithArtworkID:@"be-at-rbrick-mastermind-japan-1000-percent"]; - [self.navigationController pushViewController:viewController animated:YES]; - }]; -} - -- (ARCellData *)jumpToPartner -{ - return [self tappableCellDataWithTitle:@"Partner" selection:^{ - id viewController = [[ARPartnerComponentViewController alloc] initWithPartnerID:@"gagosian-gallery"]; - [self.navigationController pushViewController:viewController animated:YES]; - }]; -} - -- (ARCellData *)jumpToArtist -{ - NSString *artistID = @"andy-warhol"; - return [self viewControllerCellDataWithTitle:@"Artist" - selection:^{ - id viewController = [[ARArtistComponentViewController alloc] initWithArtistID:artistID]; - [self.navigationController pushViewController:viewController animated:YES]; - } - preload:^NSArray *{ - return [ARArtistComponentViewController preloadQueriesWithArtistID:artistID]; - }]; -} - -- (ARCellData *)jumpToCollection -{ - return [self viewControllerCellDataWithTitle:@"Collection" - selection:^{ - id viewController = [[ARCollectionComponentViewController alloc] initWithCollectionID:@"street-art-now"]; - [self.navigationController pushViewController:viewController animated:YES]; - } - preload:nil]; -} - -- (ARCellData *)jumpToRandomArtist -{ - NSString *sourceRoot = [NSProcessInfo processInfo].environment[@"SRCROOT"]; - NSString *artistListFromExample = @"../externals/metaphysics/schema/artist/maps/artist_title_slugs.js"; - NSString *slugsPath = [sourceRoot stringByAppendingPathComponent:artistListFromExample]; - - NSFileManager *manager = [NSFileManager defaultManager]; - - // Don't have the submodule? bail, it's no biggie - if (![manager fileExistsAtPath:slugsPath]) { return nil; } - - // Otherwise lets support jumping to a random Artist - return [self tappableCellDataWithTitle:@"Artist (random from metaphysics)" selection: ^{ - NSString *data = [NSString stringWithContentsOfFile:slugsPath encoding:NSUTF8StringEncoding error:nil]; - NSString *jsonString = [[[data - stringByReplacingOccurrencesOfString:@"export default" withString:@""] - stringByReplacingOccurrencesOfString:@"'" withString:@"\""] - stringByReplacingOccurrencesOfString:@",\n];" withString:@"]"]; - NSArray *artists = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil]; - u_int32_t rnd = arc4random_uniform((uint32_t)artists.count); - id viewController = [[ARArtistComponentViewController alloc] initWithArtistID:[artists objectAtIndex:rnd]]; - [self.navigationController pushViewController:viewController animated:YES]; - }]; -} - -- (ARCellData *)jumpToHomepage -{ - return [self viewControllerCellDataWithTitle:@"Homepage" - selection:^{ - id viewController = [[ARHomeComponentViewController alloc] initWithSelectedArtist:nil tab:ARHomeTabArtists emission:nil]; - [self.navigationController pushViewController:viewController animated:YES]; - } - preload:^NSArray *{ - return [ARHomeComponentViewController preloadQueriesWithSelectedArtist:nil tab:ARHomeTabArtists]; - }]; -} - -- (ARCellData *)jumpToGene -{ - NSString *geneID = @"minimalism"; - return [self viewControllerCellDataWithTitle:@"Gene" - selection:^{ - id viewController = [[ARGeneComponentViewController alloc] initWithGeneID:geneID]; - [self.navigationController pushViewController:viewController animated:YES]; - } - preload:^NSArray *{ - return [ARGeneComponentViewController preloadQueriesWithGeneID:geneID refineSettings:@{}]; - }]; -} - -- (ARCellData *)jumpToRefinedGene -{ - // From: https://github.com/artsy/metaphysics/blob/master/schema/home/add_generic_genes.js - NSString *geneID = @"emerging-art"; - NSDictionary *refineSettings = @{ @"medium": @"painting", @"price_range": @"50.00-10000.00" }; - return [self viewControllerCellDataWithTitle:@"Gene Refined" - selection:^{ - id viewController = [[ARGeneComponentViewController alloc] initWithGeneID:geneID refineSettings:refineSettings]; - [self.navigationController pushViewController:viewController animated:YES]; - } - preload:^NSArray *{ - return [ARGeneComponentViewController preloadQueriesWithGeneID:geneID refineSettings:refineSettings]; - }]; -} - -- (ARCellData *)jumpToMyProfile -{ - return [self tappableCellDataWithTitle:@"My Profile" - selection:^{ - id viewController = [[ARMyProfileComponentViewController alloc] init]; - [self.navigationController pushViewController:viewController animated:YES]; - }]; -} - - -- (ARCellData *)jumpToConsignments -{ - return [self tappableCellDataWithTitle:@"Start Consignment Flow" selection:^{ - [[(EigenLikeNavigationController *)self.navigationController backButton] setHidden:YES]; - id viewController = [[ARShowConsignmentsFlowViewController alloc] init]; - - UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:viewController]; - nav.navigationBarHidden = YES; - [self.navigationController presentViewController:nav animated:YES completion:NULL]; - }]; -} - -- (ARCellData *)jumpToInbox -{ - return [self viewControllerCellDataWithTitle:@"Inbox" - selection:^{ - id viewController = [[ARInboxComponentViewController alloc] initWithInbox]; - [self.navigationController pushViewController:viewController animated:YES]; - } - preload:^NSArray *{ - return [ARInboxComponentViewController preloadQueries]; - }]; -} - -- (ARCellData *)jumpToInquiry -{ - return [self tappableCellDataWithTitle:@"Inquiry" selection: ^{ - id viewController = [[ARInquiryComponentViewController alloc] initWithArtworkID:@"damien-hirst-analgesics"]; - [self.navigationController presentViewController:viewController animated:YES completion:nil]; - }]; -} - -- (ARCellData *)jumpToFavorites -{ - return [self viewControllerCellDataWithTitle:@"Favorites" - selection:^{ - id viewController = [[ARFavoritesComponentViewController alloc] init]; - [self.navigationController pushViewController:viewController animated:YES]; - } - preload:^NSArray *{ - return [ARFavoritesComponentViewController preloadQueries]; - }]; -} - -- (ARCellData *)jumpToShow -{ - return [self tappableCellDataWithTitle:@"Show" selection:^{ - id viewController = [[ARShowComponentViewController alloc] initWithShowID:@"harlan-levey-projects-recreational-painting"]; - [self.navigationController pushViewController:viewController animated:YES]; - }]; -} - -- (ARCellData *)jumpToFair -{ - return [self tappableCellDataWithTitle:@"Fair" selection:^{ - id viewController = [[ARFairComponentViewController alloc] initWithFairID:@"the-art-show-2019"]; - [self.navigationController pushViewController:viewController animated:YES]; - }]; -} - -- (ARCellData *)jumpToMap -{ - return [self tappableCellDataWithTitle:@"Map" selection:^{ - id viewController = [[ARMapContainerViewController alloc] init]; - [self.navigationController pushViewController:viewController animated:YES]; - - }]; -} - -- (ARCellData *)jumpToBidFlow -{ - NSString *artworkID = @"david-hockney-pool-made-with-paper-and-blue-ink-for-book-from-paper-pools-2"; - NSString *saleID = @"phillips-summer-school-1"; - return [self viewControllerCellDataWithTitle:@"Bid Flow" selection: ^{ - ARBidFlowViewController *bidFlowController = [[ARBidFlowViewController alloc] initWithArtworkID:artworkID saleID:saleID]; - EigenLikeNavigationController *navigationController = [[EigenLikeNavigationController alloc] initWithRootViewController:bidFlowController]; - navigationController.showBackButtonOnRoot = YES; - [self presentViewController:navigationController animated:YES completion:nil]; - } preload:^NSArray *{ - return [ARBidFlowViewController preloadQueriesWithArtworkID:artworkID saleID:saleID intent:ARBidFlowViewControllerIntentBid]; - }]; -} - -- (ARCellData *)generateStagingSwitch -{ - BOOL useStaging = [[NSUserDefaults standardUserDefaults] boolForKey:ARUseStagingDefault]; - NSString *title = [NSString stringWithFormat:@"Switch to %@ (Resets)", useStaging ? @"Production" : @"Staging"]; - - ARCellData *crashCellData = [[ARCellData alloc] initWithIdentifier:AROptionCell]; - [crashCellData setCellConfigurationBlock:^(UITableViewCell *cell) { - cell.textLabel.text = title; - }]; - - [crashCellData setCellSelectionBlock:^(UITableView *tableView, NSIndexPath *indexPath) { - [self showAlertViewWithTitle:@"Confirm Switch" message:@"Switching servers may log you out. App will exit. Please re-open to log back in." actionTitle:@"Continue" actionHandler:^{ - - [[NSUserDefaults standardUserDefaults] setBool:!useStaging forKey:ARUseStagingDefault]; - [[NSUserDefaults standardUserDefaults] synchronize]; - [[[AREmission sharedInstance] graphQLQueryCacheModule] clearAll]; - - exit(0); - }]; - }]; - return crashCellData; -} - -- (ARCellData *)toggleRNPSwitch -{ - BOOL forceRNP = [[NSUserDefaults standardUserDefaults] boolForKey:ARForceUseRNPDefault]; - NSString *rnpLocation = [[NSUserDefaults standardUserDefaults] stringForKey:ARRNPackagerHostDefault]; - NSString *title = !forceRNP ? [NSString stringWithFormat:@"Use RNP with %@", rnpLocation] : @"Revert forced RNP"; - - ARCellData *crashCellData = [[ARCellData alloc] initWithIdentifier:AROptionCell]; - [crashCellData setCellConfigurationBlock:^(UITableViewCell *cell) { - cell.textLabel.text = title; - }]; - - [crashCellData setCellSelectionBlock:^(UITableView *tableView, NSIndexPath *indexPath) { - [self showAlertViewWithTitle:@"Confirm Switch" message:@"Switching forced RNP settings." actionTitle:@"Continue" actionHandler:^{ - - [[NSUserDefaults standardUserDefaults] setBool:!forceRNP forKey:ARForceUseRNPDefault]; - [[NSUserDefaults standardUserDefaults] synchronize]; - exit(0); - }]; - }]; - return crashCellData; -} - -- (ARCellData *)emissionJSLocationDescription:(NSString *)loadedFromString -{ - return [self informationCellDataWithTitle:loadedFromString]; -} - -- (ARSectionData *)userSection -{ - ARSectionData *sectionData = [[ARSectionData alloc] init]; - [self setupSection:sectionData withTitle:@"User"]; - - [sectionData addCellData:self.jumpToEndUserStorybooks]; -#if defined(DEPLOY) - [sectionData addCellData:self.jumpToUserDocs]; -#endif - - return sectionData; -} - -- (ARSectionData *)adminSection -{ - ARSectionData *sectionData = [[ARSectionData alloc] init]; - [self setupSection:sectionData withTitle:@"Admin"]; - [sectionData addCellData:self.showSentryLogs]; - - AppSetup *setup = [AppSetup ambientSetup]; - if (setup.inStaging) { - [sectionData addCellDataFromArray:@[ - [self editableTextCellDataWithName:@"Gravity API" defaultKey:ARStagingAPIURLDefault], - [self editableTextCellDataWithName:@"Metaphysics API" defaultKey:ARStagingMetaphysicsURLDefault], - [self editableTextCellDataWithName:@"Prediction URL" defaultKey:ARStagingPredictionURLDefault], - [self editableTextCellDataWithName:@"RN Packager" defaultKey:ARRNPackagerHostDefault], - ]]; - - } - - [sectionData addCellData:self.toggleRNPSwitch]; - [sectionData addCellData:self.generateStagingSwitch]; - [sectionData addCellData:self.clearGraphQLQueryCache]; - [sectionData addCellData:self.clearImageCache]; - [sectionData addCellData:self.logOutButton]; - return sectionData; -} - -- (ARCellData *)clearGraphQLQueryCache; -{ - return [self tappableCellDataWithTitle:@"Clear GraphQL Query Cache" selection:^{ - [[[AREmission sharedInstance] graphQLQueryCacheModule] clearAll]; - }]; -} - -- (ARCellData *)clearImageCache; -{ - return [self tappableCellDataWithTitle:@"Clear image cache" selection:^{ - SDWebImageManager *manager = [SDWebImageManager sharedManager]; - [[manager imageCache] clearDiskOnCompletion:^{ - [[manager imageCache] clearMemory]; - }]; - }]; -} - -- (ARCellData *)logOutButton -{ - return [self tappableCellDataWithTitle:@"Log Out" selection:^{ - [self showAlertViewWithTitle:@"Confirm Log Out" message:@"" actionTitle:@"Continue" actionHandler:^{ - - [self.authenticationManager logOut]; - exit(0); - }]; - }]; -} - -- (ARCellData *)showSentryLogs -{ - return [self tappableCellDataWithTitle:@"Show Sentry Breadcrumbs" selection:^{ - [self.navigationController pushViewController:[[ARAdminSentryBreadcrumbViewController alloc] init] animated:YES]; - }]; -} - -@end diff --git a/emission/Example/Emission/ARStorybookComponentViewController.h b/emission/Example/Emission/ARStorybookComponentViewController.h deleted file mode 100644 index 1cca8fd5e5f..00000000000 --- a/emission/Example/Emission/ARStorybookComponentViewController.h +++ /dev/null @@ -1,11 +0,0 @@ -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface ARStorybookComponentViewController : ARComponentViewController - -- (instancetype)init; - -@end - -NS_ASSUME_NONNULL_END diff --git a/emission/Example/Emission/ARStorybookComponentViewController.m b/emission/Example/Emission/ARStorybookComponentViewController.m deleted file mode 100644 index a8eaee1de1d..00000000000 --- a/emission/Example/Emission/ARStorybookComponentViewController.m +++ /dev/null @@ -1,10 +0,0 @@ -#import "ARStorybookComponentViewController.h" - -@implementation ARStorybookComponentViewController - -- (instancetype)init; -{ - return [self initWithEmission:nil moduleName:@"Storybook" initialProperties:nil]; -} - -@end diff --git a/emission/Example/Emission/ARTickedTableViewCell.h b/emission/Example/Emission/ARTickedTableViewCell.h deleted file mode 100644 index 69583f0d985..00000000000 --- a/emission/Example/Emission/ARTickedTableViewCell.h +++ /dev/null @@ -1,8 +0,0 @@ -#import "ARAdminTableViewCell.h" - - -@interface ARTickedTableViewCell : ARAdminTableViewCell - -- (void)setTickSelected:(BOOL)selected animated:(BOOL)animated; -- (BOOL)isSelected; -@end diff --git a/emission/Example/Emission/ARTickedTableViewCell.m b/emission/Example/Emission/ARTickedTableViewCell.m deleted file mode 100644 index 51ce2e648ce..00000000000 --- a/emission/Example/Emission/ARTickedTableViewCell.m +++ /dev/null @@ -1,36 +0,0 @@ -#import "ARTickedTableViewCell.h" -#import "ARAnimatedTickView.h" - - -@implementation ARTickedTableViewCell - -- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier -{ - self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; - if (self) { - self.useSerifFont = YES; - self.selectionStyle = UITableViewCellSelectionStyleNone; - self.accessoryView = [[ARAnimatedTickView alloc] initWithSelection:NO]; - self.textLabel.textColor = [UIColor blackColor]; - } - return self; -} - -// Using setSelected comes with too much baggage. Lets simplify. - -- (void)setTickSelected:(BOOL)selected animated:(BOOL)animated -{ - if ([self.accessoryView isKindOfClass:[ARAnimatedTickView class]]) { - [(ARAnimatedTickView *)self.accessoryView setSelected:selected animated:animated]; - } -} - -- (BOOL)isSelected -{ - if ([self.accessoryView isKindOfClass:[ARAnimatedTickView class]]) { - return [(ARAnimatedTickView *)self.accessoryView selected]; - } - return NO; -} - -@end diff --git a/emission/Example/Emission/ARTopMenuViewController.h b/emission/Example/Emission/ARTopMenuViewController.h deleted file mode 100644 index cbae1055bfc..00000000000 --- a/emission/Example/Emission/ARTopMenuViewController.h +++ /dev/null @@ -1,7 +0,0 @@ -#import - -@interface ARTopMenuViewController : UIViewController - -- (instancetype) initWithNavigationController:(UINavigationController *)controller; - -@end diff --git a/emission/Example/Emission/ARTopMenuViewController.m b/emission/Example/Emission/ARTopMenuViewController.m deleted file mode 100644 index 51bcc2ad405..00000000000 --- a/emission/Example/Emission/ARTopMenuViewController.m +++ /dev/null @@ -1,37 +0,0 @@ -#import "ARTopMenuViewController.h" -#import - -@interface ARTopMenuViewController () -@property (nonatomic, strong) UINavigationController *nav; -@property (nonatomic, strong) NSLayoutConstraint *statusBarVerticalConstraint; - -@end - -@implementation ARTopMenuViewController - -- (instancetype) initWithNavigationController:(UINavigationController *)controller -{ - self = [super init]; - if (!self) { return nil; } - - _nav = controller; - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - // Add the nav to our VC - [self.nav willMoveToParentViewController:self]; - [self addChildViewController:self.nav]; - [self.view addSubview:self.nav.view]; - [self.nav didMoveToParentViewController:self]; - [self addChildViewController:self.nav]; - - [self.nav.view alignTopEdgeWithView:self.view predicate:@"0"]; - [self.nav.view alignBottom:@"0" trailing:@"0" toView:self.view]; - [self.nav.view constrainWidthToView:self.view predicate:@"0"]; -} - -@end diff --git a/emission/Example/Emission/AppDelegate.h b/emission/Example/Emission/AppDelegate.h deleted file mode 100644 index 98a59aca993..00000000000 --- a/emission/Example/Emission/AppDelegate.h +++ /dev/null @@ -1,13 +0,0 @@ -#import - -@interface AppDelegate : UIResponder -@property (strong, nonatomic) UIWindow *window; -@property (nonatomic, strong) NSString *emissionLoadedFromString; - -// TODO: abstract into a switchboard? -- (UIViewController *)viewControllerForRoute:(NSString *)route; - -// Reloads Emission, and re-creates native modules etc -- (void)reloadEmission; -@end - diff --git a/emission/Example/Emission/AppDelegate.m b/emission/Example/Emission/AppDelegate.m deleted file mode 100644 index fc5c8fbd6b3..00000000000 --- a/emission/Example/Emission/AppDelegate.m +++ /dev/null @@ -1,437 +0,0 @@ -#import -#import - -#import "AppDelegate.h" -#import "ARDefaults.h" -#import "AppSetup.h" - -#import "ARTopMenuViewController.h" -#import "EigenLikeNavigationController.h" -#import "ARRootViewController.h" -#import "UnroutedViewController.h" - -#import -#import -#import -#import -#import -#import -#import - -#import "ARStorybookComponentViewController.h" -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import - -#import "InternalWebViewController.h" -#import -#import -#import "AuthenticationManager.h" -#import "LoadingSpinner.h" - -#import - -// If you have the ID of a user and an access token for them, you can impersonate them by hardcoding those here. -// Obviously you should *never* check these in! - -static NSString *UserID = nil; -static NSString *UserAccessToken = nil; - -static BOOL -randomBOOL(void) -{ - return rand() % 2 == 1; -} - -@interface AppDelegate () -@property (nonatomic, strong) EigenLikeNavigationController *navigationController; -@property (nonatomic, strong) LoadingSpinner *spinner; -@end - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; -{ - // Sets all our default defaults - [ARDefaults setup]; - - AppSetup *setup = [AppSetup ambientSetup]; - NSString *service = setup.inStaging ? @"Emission-Staging" : @"Emission-Production"; - - BOOL isImpersonating = UserID && UserAccessToken; - AuthenticationManager *auth = isImpersonating ? nil : [[AuthenticationManager alloc] initWithService:service]; - self.spinner = [LoadingSpinner new]; - - ARRootViewController *rootVC = [ARRootViewController new]; - rootVC.authenticationManager = auth; - - self.navigationController = [[EigenLikeNavigationController alloc] initWithRootViewController:rootVC]; - - self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - self.window.backgroundColor = [UIColor whiteColor]; - self.window.rootViewController = [[ARTopMenuViewController alloc] initWithNavigationController:self.navigationController];; - [self.window makeKeyAndVisible]; - - BOOL isAuthenticated = isImpersonating || auth.isAuthenticated; - NSString *userID = isImpersonating ? UserID : auth.userID; - NSString *accessToken = isImpersonating ? UserAccessToken : auth.token; - - if (isAuthenticated) { - [self setupEmissionWithUserID:userID accessToken:accessToken keychainService:service]; - } else { - [self.spinner presentSpinnerOnViewController:rootVC title:@"Logging in" subtitle:nil completion:^{ - [auth presentAuthenticationPromptOnViewController:rootVC.presentedViewController completion:^{ - NSLog(@"Logged in successfully :)"); - [self setupEmissionWithUserID:[auth userID] accessToken:[auth token] keychainService:service]; - }]; - }]; - } - - return YES; -} - - -#pragma mark - Emission - -- (void)reloadEmission -{ - AppSetup *setup = [AppSetup ambientSetup]; - NSString *service = setup.inStaging ? @"Emission-Staging" : @"Emission-Production"; - - BOOL isImpersonating = UserID && UserAccessToken; - AuthenticationManager *auth = isImpersonating ? nil : [[AuthenticationManager alloc] initWithService:service]; - - NSString *userID = isImpersonating ? UserID : auth.userID; - NSString *accessToken = isImpersonating ? UserAccessToken : auth.token; - [self setupEmissionWithUserID:userID accessToken:accessToken keychainService:service]; -} - -- (void)setupEmissionWithUserID:(NSString *)userID accessToken:(NSString *)accessToken keychainService:(NSString *)service; -{ - AREmission *emission = nil; - - AppSetup *setup = [AppSetup ambientSetup]; - - EmissionKeys *keys = [[EmissionKeys alloc] init]; - -#if TARGET_IPHONE_SIMULATOR - NSString *sentryDSN = nil; -#else - // Only use sentry when on a phone - NSString *sentryDSN = [keys sentryProductionDSN]; - [self setupSentry:sentryDSN userID:userID]; -#endif - - AREmissionConfiguration *config = [[AREmissionConfiguration alloc] initWithUserID:userID - authenticationToken:accessToken - launchCount:2 // launches mod20 == 2 is the trigger for showing ratings prompt (eg, launch on 2, 22, 42, etc). - sentryDSN:sentryDSN - stripePublishableKey:[keys stripePublishableKey] - googleMapsAPIKey:[keys googleMapsAPIKey] - mapBoxAPIClientKey:[keys mapBoxAPIClientKey] - gravityURL:setup.gravityURL - metaphysicsURL:setup.metaphysicsURL - predictionURL:setup.predictionURL - userAgent:@"Emission Example" - env:setup.inStaging ? AREnvStaging : AREnvProduction - options:setup.options]; - - emission = [[AREmission alloc] initWithConfiguration:config packagerURL:setup.jsCodeLocation]; - [AREmission setSharedInstance:emission]; - [emission.bridge reload]; - - ARRootViewController *controller = (id)self.navigationController.topViewController; - [controller.tableView reloadData]; - - emission.APIModule.artistFollowStatusProvider = ^(NSString *artistID, RCTResponseSenderBlock block) { - NSNumber *following = @(randomBOOL()); - NSLog(@"Artist(%@).follow => %@", artistID, following); - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - block(@[[NSNull null], following]); - }); - }; - emission.APIModule.artistFollowStatusAssigner = ^(NSString *artistID, BOOL following, RCTResponseSenderBlock block) { - NSLog(@"Artist(%@).follow = %@", artistID, @(following)); - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ -// if (randomBOOL()) { - block(@[[NSNull null], @(following)]); -// } else { -// NSLog(@"Simulated follow request ‘failed’."); -// block(@[RCTJSErrorFromNSError([NSError errorWithDomain:@"Artsy" code:42 userInfo:nil]), @(!following)]); -// } - }); - }; - - emission.APIModule.geneFollowStatusProvider = ^(NSString *geneID, RCTResponseSenderBlock block) { - NSNumber *following = @(randomBOOL()); - NSLog(@"Gene(%@).follow => %@", geneID, following); - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - block(@[[NSNull null], following]); - }); - }; - - emission.APIModule.geneFollowStatusAssigner = ^(NSString *geneID, BOOL following, RCTResponseSenderBlock block) { - NSLog(@"Gene(%@).follow = %@", geneID, @(following)); - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - // if (randomBOOL()) { - block(@[[NSNull null], @(following)]); - // } else { - // NSLog(@"Simulated follow request ‘failed’."); - // block(@[RCTJSErrorFromNSError([NSError errorWithDomain:@"Artsy" code:42 userInfo:nil]), @(!following)]); - // } - }); - }; - - emission.APIModule.notificationReadStatusAssigner = ^(RCTResponseSenderBlock block) { - NSLog(@"notificationReadStatusAssigner from APIModule called"); - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - block(@[[NSNull null]]); - }); - }; - - emission.APIModule.augmentedRealityVIRPresenter = ^(NSString *imgUrl, CGFloat widthIn, CGFloat heightIn, NSString *artworkSlug, NSString *artworkId) { - UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"VR!" message:[NSString stringWithFormat:@"slug: %@, width: %f, height: %f", artworkSlug, widthIn, heightIn] preferredStyle:UIAlertControllerStyleAlert]; - UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"ok" style:UIAlertActionStyleDefault handler:nil]; - [alert addAction:defaultAction]; - id controller = self.navigationController; - [controller presentViewController:alert animated:YES completion:nil]; - }; - - emission.switchBoardModule.updateShouldHideBackButton = ^(BOOL shouldHide) { - dispatch_async(dispatch_get_main_queue(), ^{ - [[self.navigationController backButton] setHidden:shouldHide]; - }); - }; - - emission.switchBoardModule.presentNavigationViewController = ^(UIViewController * _Nonnull fromViewController, - NSString * _Nonnull route) { - if ([fromViewController isKindOfClass:ARStorybookComponentViewController.class]) { - NSLog(@"Route push - %@", route); - return; - } - [fromViewController.navigationController pushViewController:[self viewControllerForRoute:route] animated:YES]; - }; - - emission.switchBoardModule.presentModalViewController = ^(UIViewController * _Nonnull fromViewController, - NSString * _Nonnull route) { - if ([fromViewController isKindOfClass:ARStorybookComponentViewController.class]) { - NSLog(@"Route modal - %@", route); - return; - } - UIViewController *viewController = [self viewControllerForRoute:route]; - UINavigationController *navigationController = [[EigenLikeNavigationController alloc] initWithRootViewController:viewController]; - navigationController.navigationBarHidden = NO; - viewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone - target:self - action:@selector(dismissModalViewController)]; - // If the source of this dismiss call is itself being dismissed, then present form our own navigation controller. - // Otherwise, present from _its_ navigation controller. - if (fromViewController.isBeingDismissed || fromViewController.navigationController.isBeingDismissed) { - [self.navigationController presentViewController:navigationController animated:YES completion:nil]; - } else { - [fromViewController.navigationController presentViewController:navigationController animated:YES completion:nil]; - } - }; - - emission.eventsModule.eventOccurred = ^(NSDictionary * _Nonnull info) { - NSLog(@"[Event] - %@", info); - }; - - emission.refineModule.triggerRefine = ^(NSDictionary *_Nonnull initial, NSDictionary *_Nonnull current, UIViewController *_Nonnull controller, RCTPromiseResolveBlock resolve, RCTPromiseRejectBlock reject) { - sleep(1); - resolve(@{ @"sort": @"-year", @"medium": @"design", @"selectedPrice": @"0-50000" }); - }; - - emission.worksForYouModule.setNotificationsCount = ^(NSInteger count) { - sleep(1); - NSLog(@"Set notifications count: %@", @(count)); - }; -} - -- (NSString *)valueForKey:(NSString *)key - fromQueryItems:(NSArray *)queryItems -{ - NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name=%@", key]; - NSURLQueryItem *queryItem = [[queryItems - filteredArrayUsingPredicate:predicate] - firstObject]; - return queryItem.value; -} - -- (UIViewController *)viewControllerForRoute:(NSString *)route; -{ - UIViewController *viewController = nil; - - - BOOL isShow = [route hasPrefix:@"/show/"] || [route hasPrefix:@"show/"]; - BOOL isCityBMWList = [route hasPrefix:@"/city-bmw-list"]; - BOOL isCityFairList = [route hasPrefix:@"/city-fair/"]; - BOOL isCitySavedList = [route hasPrefix:@"/city-save/"]; - BOOL isCityList = [route hasPrefix:@"/city/"]; - - if ([route hasPrefix:@"ios-settings"]) { - viewController = [[ARMyProfileComponentViewController alloc] init]; - - } else if ([route hasPrefix:@"privacy-request"]) { - viewController = [[ARPrivacyRequestComponentViewController alloc] init]; - - } else if ([route hasPrefix:@"/artist/"] && [route componentsSeparatedByString:@"/"].count == 3) { - NSString *artistID = [[route componentsSeparatedByString:@"/"] lastObject]; - viewController = [[ARArtistComponentViewController alloc] initWithArtistID:artistID]; - - } else if ([route hasPrefix:@"/artwork/"]) { - NSString *artworkID = [[route componentsSeparatedByString:@"/"] lastObject]; - viewController = [[ARArtworkComponentViewController alloc] initWithArtworkID:artworkID]; - - } else if ([route hasPrefix:@"/partner-locations"]) { - NSString *partnerID = [[route componentsSeparatedByString:@"/"] lastObject]; - viewController = [[ARPartnerLocationsComponentViewController alloc] initWithPartnerID:partnerID]; - - } else if ([route hasPrefix:@"/partner"]) { - NSString *partnerID = [[route componentsSeparatedByString:@"/"] lastObject]; - viewController = [[ARPartnerComponentViewController alloc] initWithPartnerID:partnerID]; - - } else if ([route hasPrefix:@"/gene/"] || [route hasPrefix:@"gene/"]) { - NSString *geneID = [[[[route componentsSeparatedByString:@"/"] lastObject] componentsSeparatedByString:@"?"] firstObject]; - NSURLComponents *components = [NSURLComponents componentsWithString:route]; - NSMutableDictionary *params = [NSMutableDictionary dictionary]; - for ( NSURLQueryItem *item in components.queryItems) { - params[item.name] = item.value; - } - viewController = [[ARGeneComponentViewController alloc] initWithGeneID:geneID refineSettings:params]; - - } else if ([route hasPrefix:@"/conversation/"] || [route hasPrefix:@"conversation/"]) { - NSString *conversationID = [[route componentsSeparatedByString:@"/"] lastObject]; - viewController = [[ARConversationComponentViewController alloc] initWithConversationID:conversationID]; - - } else if ([route isEqualToString:@"/"]) { - viewController = [[ARHomeComponentViewController alloc] initWithSelectedArtist:nil tab:ARHomeTabArtists emission:nil]; - - } else if ([route hasPrefix:@"/works-for-you/"] || [route hasPrefix:@"works-for-you"]) { - NSURLComponents *components = [[NSURLComponents alloc] initWithString:route]; - NSString *artistID = [self valueForKey:@"artist_id" fromQueryItems:components.queryItems]; - viewController = [[ARHomeComponentViewController alloc] initWithSelectedArtist:artistID tab:ARHomeTabArtists emission:nil]; - - } else if ([route hasSuffix:@"entity=gallery"]){ - return [[UnroutedViewController alloc] initWithRoute:route]; - - } else if ([route hasSuffix:@"entity=fair"]) { - NSString *fairID = [[route componentsSeparatedByString:@"/"] lastObject]; - viewController = [[ARFairComponentViewController alloc] initWithFairID:fairID]; - - } else if ([route hasSuffix:@"entity=fair-booth"]) { - NSString *fairBoothID = [[route componentsSeparatedByString:@"/"] lastObject]; - viewController = [[ARFairBoothComponentViewController alloc] initWithFairBoothID:fairBoothID]; - - } else if ([route hasPrefix:@"/fair"] && [route hasSuffix:@"/artworks"]) { - NSString *fairID = [[route componentsSeparatedByString:@"/"] objectAtIndex:2]; - viewController = [[ARFairArtworksComponentViewController alloc] initWithFairID:fairID]; - - } else if ([route hasPrefix:@"/fair"] && [route hasSuffix:@"/artists"]) { - NSString *fairID = [[route componentsSeparatedByString:@"/"] objectAtIndex:2]; - viewController = [[ARFairArtistsComponentViewController alloc] initWithFairID:fairID]; - - } else if ([route hasPrefix:@"/fair"] && [route hasSuffix:@"/exhibitors"]) { - NSString *fairID = [[route componentsSeparatedByString:@"/"] objectAtIndex:2]; - viewController = [[ARFairExhibitorsComponentViewController alloc] initWithFairID:fairID]; - - } else if ([route hasPrefix:@"/fair"] && [route hasSuffix:@"/info"]) { - NSString *fairID = [[route componentsSeparatedByString:@"/"] objectAtIndex:2]; - viewController = [[ARFairMoreInfoComponentViewController alloc] initWithFairID:fairID]; - - } else if ([route hasPrefix:@"/fair"] && [route hasSuffix:@"/bmw-sponsored-content"]) { - NSString *fairID = [[route componentsSeparatedByString:@"/"] objectAtIndex:2]; - viewController = [[ARFairBMWArtActivationComponentViewController alloc] initWithFairID:fairID]; - - } else if ([route hasSuffix:@"entity=fair-booth"]) { - NSString *fairBoothID = [[route componentsSeparatedByString:@"/"] lastObject]; - viewController = [[ARFairBoothComponentViewController alloc] initWithFairBoothID:fairBoothID]; - - } else if (isShow && [route hasSuffix:@"/artworks"]) { - NSString *showID = [[route componentsSeparatedByString:@"/"] objectAtIndex:2]; - viewController = [[ARShowArtworksComponentViewController alloc] initWithShowID:showID]; - - } else if (isShow && [route hasSuffix:@"/artists"]) { - NSString *showID = [[route componentsSeparatedByString:@"/"] objectAtIndex:2]; - viewController = [[ARShowArtistsComponentViewController alloc] initWithShowID:showID]; - - } else if (isShow && [route hasSuffix:@"/info"]) { - NSString *showID = [[route componentsSeparatedByString:@"/"] objectAtIndex:2]; - viewController = [[ARShowMoreInfoComponentViewController alloc] initWithShowID:showID]; - - } else if (isCityFairList) { - NSString *citySlug = [[route componentsSeparatedByString:@"/"] lastObject]; - viewController = [[ARCityFairListComponentViewController alloc] initWithCitySlug:citySlug]; - - } else if (isCitySavedList) { - NSString *citySlug = [[route componentsSeparatedByString:@"/"] lastObject]; - viewController = [[ARCitySavedListComponentViewController alloc] initWithCitySlug:citySlug]; - - } else if (isCityList) { - NSString *citySlug = [[route componentsSeparatedByString:@"/"] objectAtIndex:2]; - NSString *section = [[route componentsSeparatedByString:@"/"] objectAtIndex:3]; - viewController = [[ARCitySectionListComponentViewController alloc] initWithCitySlug:citySlug section:section]; - - } else if (isShow) { - NSString *showID = [route componentsSeparatedByString:@"/"].lastObject; - viewController = [[ARShowComponentViewController alloc] initWithShowID:showID]; - - } else if (isCityBMWList) { - NSString *citySlug = [[route componentsSeparatedByString:@"/"] lastObject]; - viewController = [[ARCityBMWListComponentViewController alloc] initWithCitySlug:citySlug]; - - } else if ([route isEqualToString:@"/artwork-classifications"]) { - viewController = [[ARArtworkAttributionClassFAQViewController alloc] init]; - } else { - viewController = [[UnroutedViewController alloc] initWithRoute:route]; - } - - return viewController; -} - -- (void)dismissModalViewController; -{ - UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController; - [navigationController dismissViewControllerAnimated:YES completion:nil]; -} - -- (void)setupSentry:(NSString *)sentryDSN userID:(NSString *)userID -{ - NSError *error = nil; - SentryClient *client = [[SentryClient alloc] initWithDsn:sentryDSN didFailWithError:&error]; - NSAssert(error == nil, @"Unable to initialize a SentryClient SDK: %@", error); - error = nil; - [client startCrashHandlerWithError:&error]; - NSAssert(error == nil, @"Unable to start the Sentry crash handler: %@", error); - [SentryClient setSharedClient:client]; - - // Log you in - SentryUser *user = [[SentryUser alloc] initWithUserId:userID]; - SentryClient.sharedClient.user = user; - -} - -@end diff --git a/emission/Example/Emission/AppSetup.h b/emission/Example/Emission/AppSetup.h deleted file mode 100644 index 1adca9d89c7..00000000000 --- a/emission/Example/Emission/AppSetup.h +++ /dev/null @@ -1,28 +0,0 @@ -#import - -@interface AppSetup: NSObject - -+ (instancetype)ambientSetup; - -- (instancetype)init NS_UNAVAILABLE; -+ (instancetype)new NS_UNAVAILABLE; - -@property (nonatomic, readonly) BOOL inStaging; - -@property (nonatomic, readonly) BOOL usingRNP; -@property (nonatomic, readonly) BOOL usingMaster; -@property (nonatomic, readonly) BOOL usingPRBuild; - -@property (nonatomic, readonly) BOOL inSimulator; - -@property (copy, nonatomic, readonly) NSString *gravityURL; -@property (copy, nonatomic, readonly) NSString *metaphysicsURL; -@property (copy, nonatomic, readonly) NSString *predictionURL; -@property (copy, nonatomic, readonly) NSString *packagerURL; - -@property (nonatomic, strong, readonly) NSString *emissionLoadedFromString; -@property (nonatomic, strong, readonly) NSURL *jsCodeLocation; - -@property (nonatomic, strong, readonly) NSDictionary *options; - -@end diff --git a/emission/Example/Emission/AppSetup.m b/emission/Example/Emission/AppSetup.m deleted file mode 100644 index 381d9d718f1..00000000000 --- a/emission/Example/Emission/AppSetup.m +++ /dev/null @@ -1,92 +0,0 @@ -#import - -#import "ARDefaults.h" -#import "AppSetup.h" -#import -#import "ARLabOptions.h" - -@implementation AppSetup - -+ (instancetype)ambientSetup -{ - return [[self.class alloc] initWithAmbientContext]; -} - -- (instancetype)initWithAmbientContext -{ - self = [super init]; - if (self) { - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - - NSString *packagerURL = [defaults stringForKey:ARRNPackagerHostDefault];; - _gravityURL = @"https://api.artsy.net"; - _metaphysicsURL = @"https://metaphysics-production.artsy.net/v2"; - _predictionURL = @"https://live.artsy.net"; - - BOOL useStaging = [defaults boolForKey:ARUseStagingDefault]; - if (useStaging) { - _gravityURL = [defaults stringForKey:ARStagingAPIURLDefault]; - _metaphysicsURL = [defaults stringForKey:ARStagingMetaphysicsURLDefault]; - _predictionURL = [defaults stringForKey:ARStagingPredictionURLDefault]; - } - - BOOL runningUnitTests = NSClassFromString(@"XCTest") != Nil; - BOOL runningCITests = NO; - BOOL useMaster = ![[KSCrash sharedInstance] crashedLastLaunch]; - BOOL usePRBuild = NO; - BOOL useRNP = NO; - BOOL isSimulator = NO; - -#ifdef RUNNING_ON_CI - runningCITests = YES; -#endif - -#if TARGET_IPHONE_SIMULATOR - isSimulator = !runningCITests; // Don't use RNP with unit tests -#endif - - // Comment these out to set yourself up as though you were running the beta - usePRBuild = [defaults boolForKey:ARUsePREmissionDefault]; - useMaster = useMaster || isSimulator; - useRNP = isSimulator || [defaults boolForKey:ARForceUseRNPDefault]; - - if (runningUnitTests) { - if (runningCITests) { - // nop on CI, we'll fall back to the bundled Emission JS which we've just built with `yarn bundle:native-tests` - NSLog(@"ASH I AM HERE"); - } else { - NSString *rnpString = [NSString stringWithFormat:@"http://%@:8081/Example/Emission/index.tests.ios.bundle?platform=ios&dev=true", packagerURL]; - - _jsCodeLocation = [NSURL URLWithString:rnpString]; - _emissionLoadedFromString = [NSString stringWithFormat:@"Using Unit Test RNP from %@", _jsCodeLocation.host]; - } - } else if (useRNP) { - NSString *rnpString = [NSString stringWithFormat:@"http://%@:8081/Example/Emission/index.ios.bundle?platform=ios&dev=true", packagerURL]; - - _jsCodeLocation = [NSURL URLWithString:rnpString]; - _emissionLoadedFromString = [NSString stringWithFormat:@"Using RNP from %@", _jsCodeLocation.host]; - } - - // Fall back to the bundled Emission JS for release - if (!_jsCodeLocation) { - NSBundle *emissionBundle = [NSBundle bundleForClass:AREmission.class]; - - _jsCodeLocation = [emissionBundle URLForResource:@"Emission" withExtension:@"js"]; - _emissionLoadedFromString = @"Using bundled JS"; - NSLog(@"%@", _emissionLoadedFromString); - } - - _inSimulator = isSimulator; - _inStaging = useStaging; - - _usingMaster = useMaster; - _usingRNP = useRNP; - _usingPRBuild = usePRBuild; - - _options = [ARLabOptions labOptionsMap]; - } - - return self; -} - -@end diff --git a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Contents.json b/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 307e83865c1..00000000000 --- a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-Small@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "iphone_settings_29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-Small-40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "iphone_spotlight_40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "iphone_app_60@3x.png", - "scale" : "3x" - }, - { - "idiom" : "ipad", - "size" : "20x20", - "scale" : "1x" - }, - { - "idiom" : "ipad", - "size" : "20x20", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "29x29", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-Small@2x-1.png", - "scale" : "2x" - }, - { - "idiom" : "ipad", - "size" : "40x40", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-Small-40@2x-1.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "ipad_app_76@1x.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "ipad_app_76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "ipad_pro_app_83@2x.png", - "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Emission-itunes.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Emission-itunes.png b/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Emission-itunes.png deleted file mode 100644 index 97400acf013..00000000000 Binary files a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Emission-itunes.png and /dev/null differ diff --git a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png b/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png deleted file mode 100644 index fef8ab1ccb4..00000000000 Binary files a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png and /dev/null differ diff --git a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x-1.png b/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x-1.png deleted file mode 100644 index c68437f4356..00000000000 Binary files a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x-1.png and /dev/null differ diff --git a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x.png b/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x.png deleted file mode 100644 index c68437f4356..00000000000 Binary files a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x.png and /dev/null differ diff --git a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png b/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png deleted file mode 100644 index e6c3eb0da85..00000000000 Binary files a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png and /dev/null differ diff --git a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png b/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png deleted file mode 100644 index e6c3eb0da85..00000000000 Binary files a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png and /dev/null differ diff --git a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/ipad_app_76@1x.png b/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/ipad_app_76@1x.png deleted file mode 100644 index f705165fa02..00000000000 Binary files a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/ipad_app_76@1x.png and /dev/null differ diff --git a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/ipad_app_76@2x.png b/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/ipad_app_76@2x.png deleted file mode 100644 index edfa4679d40..00000000000 Binary files a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/ipad_app_76@2x.png and /dev/null differ diff --git a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/ipad_pro_app_83@2x.png b/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/ipad_pro_app_83@2x.png deleted file mode 100644 index e6b5666ae5b..00000000000 Binary files a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/ipad_pro_app_83@2x.png and /dev/null differ diff --git a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/iphone_app_60@3x.png b/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/iphone_app_60@3x.png deleted file mode 100644 index 02cd206f575..00000000000 Binary files a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/iphone_app_60@3x.png and /dev/null differ diff --git a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/iphone_settings_29@3x.png b/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/iphone_settings_29@3x.png deleted file mode 100644 index cc9e966a74e..00000000000 Binary files a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/iphone_settings_29@3x.png and /dev/null differ diff --git a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/iphone_spotlight_40@3x.png b/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/iphone_spotlight_40@3x.png deleted file mode 100644 index fef8ab1ccb4..00000000000 Binary files a/emission/Example/Emission/Assets.xcassets/AppIcon.appiconset/iphone_spotlight_40@3x.png and /dev/null differ diff --git a/emission/Example/Emission/Assets.xcassets/Contents.json b/emission/Example/Emission/Assets.xcassets/Contents.json deleted file mode 100644 index da4a164c918..00000000000 --- a/emission/Example/Emission/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/emission/Example/Emission/Assets.xcassets/gradient.imageset/Contents.json b/emission/Example/Emission/Assets.xcassets/gradient.imageset/Contents.json deleted file mode 100644 index 54499582a28..00000000000 --- a/emission/Example/Emission/Assets.xcassets/gradient.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "gradient.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/emission/Example/Emission/Assets.xcassets/gradient.imageset/gradient.png b/emission/Example/Emission/Assets.xcassets/gradient.imageset/gradient.png deleted file mode 100644 index 598148ab15c..00000000000 Binary files a/emission/Example/Emission/Assets.xcassets/gradient.imageset/gradient.png and /dev/null differ diff --git a/emission/Example/Emission/AuthenticationManager.h b/emission/Example/Emission/AuthenticationManager.h deleted file mode 100644 index 2cfc3346f46..00000000000 --- a/emission/Example/Emission/AuthenticationManager.h +++ /dev/null @@ -1,25 +0,0 @@ -#import -#import - -/// Handles Keychain communication, and setup for -/// the user authentication details - -@interface AuthenticationManager : NSObject - -- (instancetype)initWithService:(NSString *)scheme; - -- (void)presentAuthenticationPromptOnViewController:(UIViewController *)viewController completion:(dispatch_block_t)completion; - -- (void)logOut; - -/// Is there a userID & token? -@property (readonly) BOOL isAuthenticated; - -/// User's unique UUID -@property (readonly) NSString *userID; -/// Auth token -@property (readonly) NSString *token; -/// The scheme used by the current authentication route -@property (readonly) NSString *service; - -@end diff --git a/emission/Example/Emission/AuthenticationManager.m b/emission/Example/Emission/AuthenticationManager.m deleted file mode 100644 index 2b57c5980f4..00000000000 --- a/emission/Example/Emission/AuthenticationManager.m +++ /dev/null @@ -1,136 +0,0 @@ -#import "AuthenticationManager.h" -#import "ARDefaults.h" -#import "AppSetup.h" - -#import -#import - -#import -#import -#import -#import - -@interface AuthenticationManager() -@property (nonatomic, strong) UIViewController *viewController; -@end - -@implementation AuthenticationManager - -- (instancetype)initWithService:(NSString *)service -{ - if ((self = [super init])) { - _service = service; - [self updateFromStoredCredentials]; - }; - return self; -} - -- (void)updateFromStoredCredentials -{ - - _userID = [SAMKeychain accountsForService:self.service][0][kSAMKeychainAccountKey]; - _token = [SAMKeychain passwordForService:self.service account:_userID]; - _isAuthenticated = _userID && _token; -} - -- (void)presentAuthenticationPromptOnViewController:(UIViewController *)viewController completion:(dispatch_block_t)completion -{ - self.viewController = viewController; - [self showAuthenticationToArtsy:nil completion:completion]; -} - -/// Create an alert view to type in your user credentials - -- (void)showAuthenticationToArtsy:(NSString *)errorMessage completion:(dispatch_block_t)completion -{ - AppSetup *setup = [AppSetup ambientSetup]; - NSString *prodOrStaging = setup.inStaging ? @"staging" : @"production"; - NSString *message = errorMessage ? errorMessage : [NSString stringWithFormat:@"Enter your %@ Artsy credentials", prodOrStaging]; - UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Authentication" - message:message - preferredStyle:UIAlertControllerStyleAlert]; - - [alert addTextFieldWithConfigurationHandler:^(UITextField *textField) { - textField.placeholder = @"Email"; - }]; - - [alert addTextFieldWithConfigurationHandler:^(UITextField *textField) { - textField.placeholder = @"Password"; - textField.secureTextEntry = YES; - }]; - - __weak UIAlertController *weakAlert = alert; - [alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { - [self authenticateWithEmail:weakAlert.textFields[0].text - password:weakAlert.textFields[1].text - keychainService:self.service - completion:completion]; - }]]; - - [self.viewController presentViewController:alert animated:YES completion:nil]; -} - -/// Attempt to log in with creds, if it fails, set up the alert view again - -- (void)authenticateWithEmail:(NSString *)email password:(NSString *)password keychainService:(NSString *)service completion:(dispatch_block_t)completion; -{ - EmissionKeys *keys = [[EmissionKeys alloc] init]; - - if(![keys artsyAPIClientKey] || ![keys artsyAPIClientSecret]) { - @throw @"You need to set up your CocoaPods Keys, you may have to run `bundle exec pod install` in the Example dir."; - } - [keys stripePublishableKey]; - - ArtsyAuthentication *auth = [[ArtsyAuthentication alloc] initWithClientID:[keys artsyAPIClientKey] - clientSecret:[keys artsyAPIClientSecret]]; - - BOOL useStaging = [[NSUserDefaults standardUserDefaults] boolForKey:ARUseStagingDefault]; - auth.router.staging = useStaging; - - [auth getWeekLongXAppTrialToken:^(ArtsyToken *token, NSError *error) { - if (error) { - NSLog(@"%@", error); - [self showAuthenticationToArtsy:nil completion:completion]; - } else { - [auth logInAndFetchUserDetailsWithEmail:email - password:password - completion:^(ArtsyToken *token, NSDictionary *userDetails, NSError *error) { - (void)auth; // keep a strong reference for as long as needed - dispatch_async(dispatch_get_main_queue(), ^{ - if (error) { - NSLog(@"%@", error); - [self showAuthenticationToArtsy:error.localizedFailureReason completion:completion]; - - } else { - NSString *userID = userDetails[@"_id"]; - NSString *accessToken = token.token; - NSParameterAssert(userID); - NSParameterAssert(accessToken); - - NSError *error = nil; - [SAMKeychain setPassword:accessToken forService:service account:userID error:&error]; - if (error) { - NSLog(@"%@", error); - } - - [self.viewController dismissViewControllerAnimated:YES completion:nil]; - [self updateFromStoredCredentials]; - completion(); - } - }); - }]; - } - }]; -} - -- (void)logOut -{ - NSString *userID = [SAMKeychain accountsForService:self.service][0][kSAMKeychainAccountKey]; - NSError *error = nil; - [SAMKeychain deletePasswordForService:self.service account:userID error:&error]; - if(error) { - NSLog(@"Error: %@", error.localizedDescription); - } -} - -@end diff --git a/emission/Example/Emission/Back.png b/emission/Example/Emission/Back.png deleted file mode 100644 index 222f6acffb1..00000000000 Binary files a/emission/Example/Emission/Back.png and /dev/null differ diff --git a/emission/Example/Emission/Back@2x.png b/emission/Example/Emission/Back@2x.png deleted file mode 100644 index 83b34d9b917..00000000000 Binary files a/emission/Example/Emission/Back@2x.png and /dev/null differ diff --git a/emission/Example/Emission/Back@3x.png b/emission/Example/Emission/Back@3x.png deleted file mode 100644 index ddb401bdd06..00000000000 Binary files a/emission/Example/Emission/Back@3x.png and /dev/null differ diff --git a/emission/Example/Emission/BackArrow@2x.png b/emission/Example/Emission/BackArrow@2x.png deleted file mode 100644 index 45db8e2ebdb..00000000000 Binary files a/emission/Example/Emission/BackArrow@2x.png and /dev/null differ diff --git a/emission/Example/Emission/BackArrowBlack@2x.png b/emission/Example/Emission/BackArrowBlack@2x.png deleted file mode 100644 index 4529a353e4c..00000000000 Binary files a/emission/Example/Emission/BackArrowBlack@2x.png and /dev/null differ diff --git a/emission/Example/Emission/BackArrow_Highlighted@2x.png b/emission/Example/Emission/BackArrow_Highlighted@2x.png deleted file mode 100644 index 454a9b1dcdf..00000000000 Binary files a/emission/Example/Emission/BackArrow_Highlighted@2x.png and /dev/null differ diff --git a/emission/Example/Emission/Base.lproj/LaunchScreen.xib b/emission/Example/Emission/Base.lproj/LaunchScreen.xib deleted file mode 100644 index 90496311cb0..00000000000 --- a/emission/Example/Emission/Base.lproj/LaunchScreen.xib +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/emission/Example/Emission/EigenLikeAdminViewController.h b/emission/Example/Emission/EigenLikeAdminViewController.h deleted file mode 100644 index 2ee034ef115..00000000000 --- a/emission/Example/Emission/EigenLikeAdminViewController.h +++ /dev/null @@ -1,44 +0,0 @@ -#import -#import - -/// Tickable cells -extern NSString *const AROptionCell; -/// Cells with a subtitle -extern NSString *const ARSubtitledLabOptionCell; -/// Cells with a preload button -extern NSString *const ARPreloadOptionCell; -/// Normal cells -extern NSString *const ARLabOptionCell; - -@class ARGraphQLQuery; - -typedef NSArray *(^ARAdminVCPreloadBlock)(void); - -/// Provides some setup + extra functions on ARGenericTableViewController -/// that are extra useful for admin tooling - -@interface EigenLikeAdminViewController : ARGenericTableViewController - -/// Adds an Artsy styled header to the section -- (void)setupSection:(ARSectionData *)section withTitle:(NSString *)title; - -/// Show a "Are you sure?" with a cancel that doesn't run the closure -- (void)showAlertViewWithTitle:(NSString *)title message:(NSString *)message actionTitle:(NSString *)actionTitle actionHandler:(void (^)(void))handler; - -/// Easy NSUserDefault toggle -- (ARCellData *)editableTextCellDataWithName:(NSString *)name defaultKey:(NSString *)key; - -/// Metadata about the app version etc -- (NSString *)titleForApp; - -/// Simple cell that has a title and a click handler -- (ARCellData *)tappableCellDataWithTitle:(NSString *)title selection:(dispatch_block_t)selection; - -/// Simple cell that shows info -- (ARCellData *)informationCellDataWithTitle:(NSString *)title; - -- (ARCellData *)viewControllerCellDataWithTitle:(NSString *)title - selection:(dispatch_block_t)selection - preload:(ARAdminVCPreloadBlock)preload; - -@end diff --git a/emission/Example/Emission/EigenLikeAdminViewController.m b/emission/Example/Emission/EigenLikeAdminViewController.m deleted file mode 100644 index 4bc05b41bcb..00000000000 --- a/emission/Example/Emission/EigenLikeAdminViewController.m +++ /dev/null @@ -1,155 +0,0 @@ -#import "EigenLikeAdminViewController.h" -#import "ARAdminPreloadTableViewCell.h" - -#import -#import -#import -#import - -NSString *const AROptionCell = @"OptionCell"; -NSString *const ARLabOptionCell = @"LabOptionCell"; -NSString *const ARSubtitledLabOptionCell = @"SubtitledLabOptionCell"; -NSString *const ARPreloadOptionCell = @"PreloadOptionCell"; - -@implementation EigenLikeAdminViewController - -- (ARCellData *)tappableCellDataWithTitle:(NSString *)title selection:(dispatch_block_t)selection configuration:(CellConfigurationBlock_t)configuration; -{ - return [self tappableCellDataWithTitle:title selection:selection identifier:AROptionCell configuration:configuration]; -} - -- (ARCellData *)tappableCellDataWithTitle:(NSString *)title selection:(dispatch_block_t)selection identifier:(NSString *)identifier configuration:(CellConfigurationBlock_t)configuration; -{ - ARCellData *cellData = [[ARCellData alloc] initWithIdentifier:identifier]; - [cellData setCellConfigurationBlock:^(UITableViewCell *cell) { - cell.textLabel.text = title; - if (configuration) { - configuration(cell); - } - }]; - - [cellData setCellSelectionBlock:^(UITableView *tableView, NSIndexPath *indexPath) { - selection(); - }]; - return cellData; -} - -- (ARCellData *)tappableCellDataWithTitle:(NSString *)title selection:(dispatch_block_t)selection -{ - return [self tappableCellDataWithTitle:title selection:selection configuration:nil]; -} - -- (ARCellData *)viewControllerCellDataWithTitle:(NSString *)title - selection:(dispatch_block_t)selection - preload:(ARAdminVCPreloadBlock)preload; -{ - return [self tappableCellDataWithTitle:title - selection:selection - identifier:ARPreloadOptionCell - configuration:^(ARAdminPreloadTableViewCell *cell) { - cell.preloadBlock = ^{ - NSLog(@"Preload: %@", title); - [[[AREmission sharedInstance] graphQLQueryPreloaderModule] preloadQueries:preload()]; - }; - }]; -} - -- (ARCellData *)informationCellDataWithTitle:(NSString *)title - { - ARCellData *cell = [[ARCellData alloc] initWithIdentifier:AROptionCell]; - [cell setCellConfigurationBlock:^(UITableViewCell *cell) { - cell.textLabel.text = title; - cell.textLabel.textColor = [UIColor grayColor]; - }]; - - return cell; - } - -- (NSString *)titleForApp -{ - NSDictionary *metadata = [[NSBundle mainBundle] infoDictionary]; - NSString *build = [metadata objectForKey:@"CFBundleVersion"]; - return [NSString stringWithFormat:@"Emission build %@", build]; -} - -- (void)setupSection:(ARSectionData *)section withTitle:(NSString *)title -{ - UIView *wrapper = [UIView new]; - wrapper.backgroundColor = [UIColor colorWithWhite:0.95 alpha:1]; - - UILabel *label = [UILabel new]; - label.font = [UIFont sansSerifFontWithSize:14]; - label.text = title.uppercaseString; - label.frame = CGRectMake(15, 4, 400, 20); - - [wrapper addSubview:label]; - - section.headerView = wrapper; - section.headerHeight = 28; -} - -- (void)showAlertViewWithTitle:(NSString *)title message:(NSString *)message actionTitle:(NSString *)actionTitle actionHandler:(void (^)(void))handler -{ - UIAlertController *alert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; - - UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:actionTitle style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) { - handler(); - }]; - - UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil]; - - [alert addAction:defaultAction]; - [alert addAction:cancelAction]; - [self presentViewController:alert animated:YES completion:nil]; -} - -- (ARCellData *)editableTextCellDataWithName:(NSString *)name defaultKey:(NSString *)key -{ - ARCellData *cell = [[ARCellData alloc] initWithIdentifier:ARSubtitledLabOptionCell]; - cell.height = 60; - - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - NSString *value = [defaults stringForKey:key]; - - [cell setCellConfigurationBlock:^(UITableViewCell *tableViewCell) { - tableViewCell.textLabel.text = [NSString stringWithFormat:@"%@:", name]; - tableViewCell.detailTextLabel.text = value; - }]; - - [cell setCellSelectionBlock:^(UITableView *tableView, NSIndexPath *indexPath) { - UIAlertController *controller = [UIAlertController alertControllerWithTitle:name message:@"" preferredStyle:UIAlertControllerStyleAlert]; - - [controller addAction:[UIAlertAction actionWithTitle:@"Save + Restart" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) { - UITextField *theTextField = [controller textFields].firstObject; - [defaults setObject:theTextField.text forKey:key]; - [defaults synchronize]; - exit(0); - }]]; - - [controller addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { - [controller.presentingViewController dismissViewControllerAnimated:YES completion:nil]; - }]]; - - [controller addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { - textField.text = value; - }]; - - [self presentViewController:controller animated:YES completion:nil]; - }]; - return cell; -} - -- (void)viewWillAppear:(BOOL)animated -{ - [super viewWillAppear:animated]; - - // http://stackoverflow.com/questions/18924589/uitableviewcell-separator-disappearing-in-ios7 - - // Due to a weird apple bug we need to do something to - // trigger the lines between cells. - UIView *emptyView_ = [[UIView alloc] initWithFrame:CGRectZero]; - emptyView_.backgroundColor = [UIColor clearColor]; - [self.tableView setTableFooterView:emptyView_]; -} - -@end diff --git a/emission/Example/Emission/EigenLikeNavigationController.h b/emission/Example/Emission/EigenLikeNavigationController.h deleted file mode 100644 index 5a8793c30d7..00000000000 --- a/emission/Example/Emission/EigenLikeNavigationController.h +++ /dev/null @@ -1,10 +0,0 @@ -#import - -// A very simple reimplmentation of Eigen's ARNavigationViewController - -@interface EigenLikeNavigationController : UINavigationController - -@property (readonly, nonatomic, strong) UIButton *backButton; -@property (nonatomic, assign) BOOL showBackButtonOnRoot; - -@end diff --git a/emission/Example/Emission/EigenLikeNavigationController.m b/emission/Example/Emission/EigenLikeNavigationController.m deleted file mode 100644 index 45af082080d..00000000000 --- a/emission/Example/Emission/EigenLikeNavigationController.m +++ /dev/null @@ -1,83 +0,0 @@ -#import "EigenLikeNavigationController.h" -#import - -@interface EigenLikeNavigationController() - -@end - -@implementation EigenLikeNavigationController - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - self.navigationBarHidden = YES; - self.delegate = self; - - UIButton *backButton = [self createBackButton]; - [self.view addSubview:backButton]; - [backButton constrainTopSpaceToView:self.topLayoutGuide predicate:@"20"]; - [backButton alignLeadingEdgeWithView:self.view predicate:@"3"]; - [backButton constrainWidth:@"40" height:@"40"]; - _backButton = backButton; - - UIKeyCommand *command = [UIKeyCommand keyCommandWithInput:@"|" modifierFlags:UIKeyModifierControl action:@selector(toggleNav)]; - [self addKeyCommand: command]; -} - -- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated -{ - [UIView animateWithDuration:0.15 animations:^{ - self.backButton.alpha = (navigationController.viewControllers.count != 1) || self.showBackButtonOnRoot; - }]; -} - -- (void)pop -{ - if (self.presentingViewController) { - [self.presentingViewController dismissViewControllerAnimated:YES completion:nil]; - return; - } - // Support popping inside NavigatorIOS before falling back to our navigation VC - UINavigationController *targetNav = self; - for (UIViewController *controller in self.topViewController.childViewControllers) { - if ([controller isKindOfClass:UINavigationController.class]) { - if (controller.childViewControllers.count > 1) { targetNav = (id)controller; } - } - } - [targetNav popViewControllerAnimated:YES]; -} - -- (UIButton *)createBackButton -{ - UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [backButton setImage:[UIImage imageNamed:@"Back"] forState:UIControlStateNormal]; - [backButton addTarget:self action:@selector(pop) forControlEvents:UIControlEventTouchUpInside]; - backButton.adjustsImageWhenDisabled = NO; - - backButton.alpha = self.showBackButtonOnRoot ? 1 : 0; - backButton.layer.cornerRadius = 20; - backButton.layer.backgroundColor = [UIColor whiteColor].CGColor; - - return backButton; -} - -- (BOOL)shouldAutorotate; -{ - return self.topViewController.shouldAutorotate; -} - -- (UIInterfaceOrientationMask)supportedInterfaceOrientations; -{ - return self.topViewController.supportedInterfaceOrientations; -} - -- (void)toggleNav -{ - [UIView animateWithDuration:0.1 animations:^{ - CGFloat alpha = [self.backButton alpha]; - [self.backButton setAlpha:!alpha]; - }]; -} - -@end diff --git a/emission/Example/Emission/Emission-Bridging-Header.h b/emission/Example/Emission/Emission-Bridging-Header.h deleted file mode 100644 index 1b2cb5d6d09..00000000000 --- a/emission/Example/Emission/Emission-Bridging-Header.h +++ /dev/null @@ -1,4 +0,0 @@ -// -// Use this file to import your target's public headers that you would like to expose to Swift. -// - diff --git a/emission/Example/Emission/Emission.entitlements b/emission/Example/Emission/Emission.entitlements deleted file mode 100644 index f10171f7825..00000000000 --- a/emission/Example/Emission/Emission.entitlements +++ /dev/null @@ -1,17 +0,0 @@ - - - - - com.apple.developer.associated-domains - - webcredentials:artsy.net - webcredentials:www.artsy.net - webcredentials:staging.artsy.net - webcredentials:m.artsy.net - - keychain-access-groups - - $(AppIdentifierPrefix)net.artsy.Emission - - - diff --git a/emission/Example/Emission/Info.plist b/emission/Example/Emission/Info.plist deleted file mode 100644 index 5eae8bb9037..00000000000 --- a/emission/Example/Emission/Info.plist +++ /dev/null @@ -1,65 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.1.0 - CFBundleSignature - ???? - CFBundleVersion - 2017.09.22.12 - ITSAppUsesNonExemptEncryption - - LSApplicationQueriesSchemes - - comgooglemaps - comgooglemaps-x-callback - - LSRequiresIPhoneOS - - MGLMapboxMetricsEnabledSettingShownInApp - YES - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - - NSCameraUsageDescription - Using Camera to take photos for Consignments - NSLocationAlwaysAndWhenInUseUsageDescription - Using User Location to display nearby shows - NSLocationWhenInUseUsageDescription - Using User Location to display nearby shows - NSPhotoLibraryUsageDescription - Using Camera Roll for Consignments Photos - UIBackgroundModes - - location - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - UIInterfaceOrientationPortraitUpsideDown - - - diff --git a/emission/Example/Emission/InternalWebViewController.h b/emission/Example/Emission/InternalWebViewController.h deleted file mode 100644 index 5184ea4a434..00000000000 --- a/emission/Example/Emission/InternalWebViewController.h +++ /dev/null @@ -1,5 +0,0 @@ -#import - -@interface InternalWebViewController : UIViewController -- (instancetype)initWithURL:(NSURL *)url; -@end diff --git a/emission/Example/Emission/InternalWebViewController.m b/emission/Example/Emission/InternalWebViewController.m deleted file mode 100644 index 33d24af5b7f..00000000000 --- a/emission/Example/Emission/InternalWebViewController.m +++ /dev/null @@ -1,42 +0,0 @@ -#import "InternalWebViewController.h" -#import -#import - -#import - -@interface InternalWebViewController () -@property (nonatomic, readonly, strong) NSURL *initialURL; -@end - -@implementation InternalWebViewController - -- (instancetype)initWithURL:(NSURL *)url -{ - self = [super init]; - if (!self) { - return nil; - } - - _initialURL = url; - self.automaticallyAdjustsScrollViewInsets = NO; - - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init]; - WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:config]; - [self.view addSubview:webView]; - - [webView constrainTopSpaceToView:self.flk_topLayoutGuide predicate:@"0"]; - [webView alignLeading:@"0" trailing:@"0" toView:self.view]; - [webView alignBottomEdgeWithView:self.view predicate:@"0"]; - - NSURLRequest *initialRequest = [NSURLRequest requestWithURL:self.initialURL]; - [webView loadRequest:initialRequest]; -} - -@end diff --git a/emission/Example/Emission/LoadingSpinner.h b/emission/Example/Emission/LoadingSpinner.h deleted file mode 100644 index 797b7df8d03..00000000000 --- a/emission/Example/Emission/LoadingSpinner.h +++ /dev/null @@ -1,8 +0,0 @@ -#import -#import - -@interface LoadingSpinner : NSObject - -- (void)presentSpinnerOnViewController:(UIViewController *)viewController title:(NSString *)title subtitle:(NSString *)subtitle completion:(dispatch_block_t)completion; - -@end diff --git a/emission/Example/Emission/LoadingSpinner.m b/emission/Example/Emission/LoadingSpinner.m deleted file mode 100644 index a18cab52a3f..00000000000 --- a/emission/Example/Emission/LoadingSpinner.m +++ /dev/null @@ -1,52 +0,0 @@ -#import "LoadingSpinner.h" -#import -#import -#import - -@interface LoadingSpinner() -@property (nonatomic, strong) UIViewController *spinnerController; -@end - - -@implementation LoadingSpinner - -- (void)presentSpinnerOnViewController:(UIViewController *)viewController title:(NSString *)title subtitle:(NSString *)subtitle completion:(dispatch_block_t)completion; -{ - if (self.spinnerController == nil) { - - self.spinnerController = [UIViewController new]; - UIView *spinnerView = self.spinnerController.view; - ARSpinner *spinner = [ARSpinner new]; - [spinnerView addSubview:spinner]; - [spinner alignCenterWithView:spinnerView]; - - if (title) { - UILabel *titleLabel = [[UILabel alloc] init]; - titleLabel.text = title; - titleLabel.font = [UIFont serifFontWithSize:24]; - titleLabel.textAlignment = NSTextAlignmentCenter; - [spinnerView addSubview:titleLabel]; - [titleLabel alignLeading:@"0" trailing:@"0" toView:spinnerView]; - [titleLabel alignCenterYWithView:spinnerView predicate:@"-160"]; - } - - if (subtitle) { - UILabel *subtitleLabel = [[UILabel alloc] init]; - subtitleLabel.text = subtitle; - subtitleLabel.font = [UIFont serifFontWithSize:18]; - subtitleLabel.textAlignment = NSTextAlignmentCenter; - [spinnerView addSubview:subtitleLabel]; - [subtitleLabel alignLeading:@"0" trailing:@"0" toView:spinnerView]; - [subtitleLabel alignCenterYWithView:spinnerView predicate:@"-100"]; - } - - [viewController presentViewController:self.spinnerController animated:NO completion:^{ - [spinner startAnimating]; - if (completion) { - completion(); - } - }]; - } -} - -@end diff --git a/emission/Example/Emission/NSDateFormatter+TimeAgo.h b/emission/Example/Emission/NSDateFormatter+TimeAgo.h deleted file mode 100644 index 12ae8047742..00000000000 --- a/emission/Example/Emission/NSDateFormatter+TimeAgo.h +++ /dev/null @@ -1,10 +0,0 @@ -#import - -// Based on an implmentation in -// http://stackoverflow.com/questions/902950/iphone-convert-date-string-to-a-relative-time-stamp - -@interface NSDateFormatter (Extras) - -+ (NSString *)timeAgoFromDate:(NSDate *)date; - -@end diff --git a/emission/Example/Emission/NSDateFormatter+TimeAgo.m b/emission/Example/Emission/NSDateFormatter+TimeAgo.m deleted file mode 100644 index 899fd02c77a..00000000000 --- a/emission/Example/Emission/NSDateFormatter+TimeAgo.m +++ /dev/null @@ -1,45 +0,0 @@ -#import "NSDateFormatter+TimeAgo.h" - -@implementation NSDateFormatter (Extras) - -+ (NSString *)timeAgoFromDate:(NSDate *)date -{ - NSDate *now = [NSDate date]; - - NSTimeInterval time = [date timeIntervalSinceDate:now]; - time *= -1; - - if(time < 1) { - return @"-"; - - } else if (time < 60) { - return @"less than a minute ago"; - - } else if (time < 3600) { - NSInteger diff = round(time / 60); - if (diff == 1) return @"1 minute ago"; - - return [NSString stringWithFormat:@"%@ minutes ago", @(diff)]; - - } else if (time < 86400) { - NSInteger diff = round(time / 60 / 60); - if (diff == 1) return @"1 hour ago"; - - return [NSString stringWithFormat:@"%@ hours ago", @(diff)]; - - } else if (time < 604800) { - NSInteger diff = round(time / 60 / 60 / 24); - if (diff == 1) return @"yesterday"; - if (diff == 7) return @"last week"; - - return [NSString stringWithFormat:@"%@ days ago", @(diff)]; - - } else { - NSInteger diff = round(time / 60 / 60 / 24 / 7); - if (diff == 1) return @"last week"; - - return [NSString stringWithFormat:@"%@ weeks ago", @(diff)]; - } -} - -@end diff --git a/emission/Example/Emission/Placeholder.swift b/emission/Example/Emission/Placeholder.swift deleted file mode 100644 index 5b3eef56104..00000000000 --- a/emission/Example/Emission/Placeholder.swift +++ /dev/null @@ -1,4 +0,0 @@ -import Foundation - -// Dummy swift file -// This is necessary to fix this issue: https://stackoverflow.com/a/52939037 diff --git a/emission/Example/Emission/UnroutedViewController.h b/emission/Example/Emission/UnroutedViewController.h deleted file mode 100644 index 40664b33695..00000000000 --- a/emission/Example/Emission/UnroutedViewController.h +++ /dev/null @@ -1,7 +0,0 @@ -#import - -@interface UnroutedViewController : UIViewController - -- (instancetype)initWithRoute:(NSString *)title; - -@end diff --git a/emission/Example/Emission/UnroutedViewController.m b/emission/Example/Emission/UnroutedViewController.m deleted file mode 100644 index 86172457389..00000000000 --- a/emission/Example/Emission/UnroutedViewController.m +++ /dev/null @@ -1,110 +0,0 @@ -#import "UnroutedViewController.h" -#import -#import -#import -#import - -#import "ARDefaults.h" - -@import WebKit; - -@interface UnroutedViewController() -@property (readonly, nonatomic, strong) WKWebView *webView; -@property (nonatomic, readonly, strong) NSURL *initialURL; -@end - -@implementation UnroutedViewController - -- (instancetype)initWithRoute:(NSString *)route -{ - if ((self = [super init])) { - _initialURL = [self urlForRoute:route]; - self.automaticallyAdjustsScrollViewInsets = NO; - } - - return self; -} - -- (NSURL *)urlForRoute:(NSString *)route -{ - if ([route hasPrefix:@"http"]) { - NSURL *url = [NSURL URLWithString:route]; - if ([url.scheme isEqualToString:@"http"]) { - NSLog(@"WARNING: Using a non-SSL URL, which is probably not what we want in production: %@", route); - } - return url; - } - - BOOL useStaging = [[NSUserDefaults standardUserDefaults] boolForKey:ARUseStagingDefault]; - NSURL *baseUrl = [NSURL URLWithString: useStaging ? @"https://staging.artsy.net" : @"https://artsy.net"]; - return [[NSURL URLWithString:route relativeToURL:baseUrl] absoluteURL]; -} - -- (void)loadURL:(NSURL *)URL; -{ - AREmission *emission = [AREmission sharedInstance]; - NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL]; - NSString *agentString = [NSString stringWithFormat:@"Mozilla/5.0 Artsy-Mobile/3.3.0 Eigen/2017.07.07.13/3.3.0 (iPhone; iOS 9.0; Scale/2.00) AppleWebKit/601.1.46 (KHTML, like Gecko) Emission/1.x"]; - - [request addValue:agentString forHTTPHeaderField:@"UserAgent"]; - [request addValue:emission.configurationModule.userID forHTTPHeaderField:@"X-User-ID"]; - [request addValue:emission.configurationModule.authenticationToken forHTTPHeaderField:@"X-Access-Token"]; - - [self.webView loadRequest:request]; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init]; - - CGRect deviceBounds = [UIScreen mainScreen].bounds; - WKWebView *webView = [[WKWebView alloc] initWithFrame:deviceBounds configuration:config]; - - webView.frame = self.view.bounds; - webView.navigationDelegate = self; - [self.view addSubview:webView]; - - _webView = webView; - - [self loadURL:self.initialURL]; -} - -- (UIStatusBarStyle)preferredStatusBarStyle -{ - return UIStatusBarStyleLightContent; -} - -- (void)viewWillLayoutSubviews -{ - [self.webView constrainTopSpaceToView:self.flk_topLayoutGuide predicate:@"0"]; - [self.webView alignLeading:@"0" trailing:@"0" toView:self.view]; - [self.webView alignBottomEdgeWithView:self.view predicate:@"0"]; -} - -- (UIStatusBarStyle)statusBarStyle -{ - return self.statusBarStyle; -} - - -#pragma mark - Properties - -#pragma mark WKWebViewDelegate - -- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler; -{ - decisionHandler([self shouldLoadNavigationAction:navigationAction]); -} - -- (WKNavigationActionPolicy)shouldLoadNavigationAction:(WKNavigationAction *)navigationAction; -{ - if (navigationAction.navigationType == WKNavigationTypeLinkActivated) { - NSString *route = navigationAction.request.URL.absoluteString; - AREmission.sharedInstance.switchBoardModule.presentNavigationViewController(self, route); - } - return WKNavigationActionPolicyAllow; -} - - -@end diff --git a/emission/Example/Emission/index.ios.js b/emission/Example/Emission/index.ios.js deleted file mode 100644 index 5a8f2ff38e0..00000000000 --- a/emission/Example/Emission/index.ios.js +++ /dev/null @@ -1,4 +0,0 @@ -import "./index.storybooks" -import "../../src/lib/Components/Storybooks" - -import "../../index.ios" diff --git a/emission/Example/Emission/index.storybooks.js b/emission/Example/Emission/index.storybooks.js deleted file mode 100644 index 66a6faf21a9..00000000000 --- a/emission/Example/Emission/index.storybooks.js +++ /dev/null @@ -1,14 +0,0 @@ -import { AppRegistry } from "react-native" -import { getStorybookUI, configure, addDecorator } from "@storybook/react-native" -import React from "react" -import { Theme } from "@artsy/palette" -import { loadStories } from "../../storybook/storyLoader" - -// import your stories -configure(() => { - addDecorator(storyFn => {storyFn()}) - loadStories() -}, module) - -const StorybookUI = getStorybookUI({ port: 9001, host: "localhost" }) -AppRegistry.registerComponent("Storybook", () => StorybookUI) diff --git a/emission/Example/Emission/index.tests.ios.js b/emission/Example/Emission/index.tests.ios.js deleted file mode 100644 index 4813e96f680..00000000000 --- a/emission/Example/Emission/index.tests.ios.js +++ /dev/null @@ -1 +0,0 @@ -import "../../index.tests.ios" diff --git a/emission/Example/Emission/logo@2x.png b/emission/Example/Emission/logo@2x.png deleted file mode 100644 index 50fc9b70d54..00000000000 Binary files a/emission/Example/Emission/logo@2x.png and /dev/null differ diff --git a/emission/Example/Emission/main.m b/emission/Example/Emission/main.m deleted file mode 100644 index d39670488fa..00000000000 --- a/emission/Example/Emission/main.m +++ /dev/null @@ -1,18 +0,0 @@ -#import - -int main(int argc, char * argv[]) { - @autoreleasepool { - NSString *delegate = @"AppDelegate"; -#ifdef DEBUG - if (NSClassFromString(@"XCTestCase")) { - delegate = @"TestHelper"; - if (NSClassFromString(delegate) == nil) { - NSString *testBundlePath = [[NSProcessInfo processInfo] environment][@"XCInjectBundle"]; - NSCParameterAssert(testBundlePath); - NSCParameterAssert([[NSBundle bundleWithPath:testBundlePath] load]); - } - } -#endif - return UIApplicationMain(argc, argv, nil, delegate); - } -} diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/01a367ce1ba17e6231654c254d3877f2.jpg&width=240&height=240&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/01a367ce1ba17e6231654c254d3877f2.jpg&width=240&height=240&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index 77a2fcd2e26..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/01a367ce1ba17e6231654c254d3877f2.jpg&width=240&height=240&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/19e6af653c1bd8d817d6039941edbd64.jpg&width=240&height=318&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/19e6af653c1bd8d817d6039941edbd64.jpg&width=240&height=318&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index 76aad090899..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/19e6af653c1bd8d817d6039941edbd64.jpg&width=240&height=318&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/27ea9d092b82ecd20edc96598653902a.jpg&width=240&height=288&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/27ea9d092b82ecd20edc96598653902a.jpg&width=240&height=288&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index 493af112ac4..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/27ea9d092b82ecd20edc96598653902a.jpg&width=240&height=288&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/2965e15f16bf3b910644df310c638617.jpg&width=240&height=158&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/2965e15f16bf3b910644df310c638617.jpg&width=240&height=158&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index c9ce79a33ca..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/2965e15f16bf3b910644df310c638617.jpg&width=240&height=158&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/2cd5f0adfd98ac6f2fd3e2f8e63df1ba.jpg&width=239&height=199&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/2cd5f0adfd98ac6f2fd3e2f8e63df1ba.jpg&width=239&height=199&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index 5560d227400..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/2cd5f0adfd98ac6f2fd3e2f8e63df1ba.jpg&width=239&height=199&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/3c831b9f93087295a3e4b6269e5ce668.jpg&width=240&height=180&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/3c831b9f93087295a3e4b6269e5ce668.jpg&width=240&height=180&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index 1e3c9166223..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/3c831b9f93087295a3e4b6269e5ce668.jpg&width=240&height=180&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/3eafcf9a115e8563b48ee73abc29ec32.jpg&width=239&height=195&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/3eafcf9a115e8563b48ee73abc29ec32.jpg&width=239&height=195&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index 840c8c2b643..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/3eafcf9a115e8563b48ee73abc29ec32.jpg&width=239&height=195&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/4247f0bc475967b3f5b0ad087469a446.jpg&width=240&height=286&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/4247f0bc475967b3f5b0ad087469a446.jpg&width=240&height=286&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index a8402e86061..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/4247f0bc475967b3f5b0ad087469a446.jpg&width=240&height=286&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/53119f484ce7584122070cc667454567.jpg&width=240&height=316&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/53119f484ce7584122070cc667454567.jpg&width=240&height=316&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index bb47720b10b..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/53119f484ce7584122070cc667454567.jpg&width=240&height=316&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/6704bdfa661b25482b8a0b0af4477b67.jpg&width=240&height=285&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/6704bdfa661b25482b8a0b0af4477b67.jpg&width=240&height=285&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index e74fd0fd453..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/6704bdfa661b25482b8a0b0af4477b67.jpg&width=240&height=285&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/7cb9d36428889d59118016d52e70dad3.jpg&width=239&height=180&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/7cb9d36428889d59118016d52e70dad3.jpg&width=239&height=180&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index 87dc036620f..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/7cb9d36428889d59118016d52e70dad3.jpg&width=239&height=180&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/903b4eafaaf05976c5015aef40b316ea.jpg&width=240&height=318&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/903b4eafaaf05976c5015aef40b316ea.jpg&width=240&height=318&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index 57b710677e4..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/903b4eafaaf05976c5015aef40b316ea.jpg&width=240&height=318&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/93feeadf4429ce1f3731d43b83c6848f.jpg&width=240&height=295&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/93feeadf4429ce1f3731d43b83c6848f.jpg&width=240&height=295&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index 663391238f4..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/93feeadf4429ce1f3731d43b83c6848f.jpg&width=240&height=295&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/a3700a7727563905267e527708eb11b3.jpg&width=240&height=306&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/a3700a7727563905267e527708eb11b3.jpg&width=240&height=306&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index 13b209429bd..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/a3700a7727563905267e527708eb11b3.jpg&width=240&height=306&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/a93cb0f97d5783297fca0404c04f4f7b.jpg&width=240&height=267&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/a93cb0f97d5783297fca0404c04f4f7b.jpg&width=240&height=267&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index 61d2af0dc9a..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/a93cb0f97d5783297fca0404c04f4f7b.jpg&width=240&height=267&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/b70be29b9e546c2dcc0e2e93da34d310.jpg&width=240&height=242&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/b70be29b9e546c2dcc0e2e93da34d310.jpg&width=240&height=242&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index d5e8186bc95..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/b70be29b9e546c2dcc0e2e93da34d310.jpg&width=240&height=242&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/dcef487c075507708c5e85554d1e4653.jpg&width=240&height=175&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/dcef487c075507708c5e85554d1e4653.jpg&width=240&height=175&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index 02ec752b7a2..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/dcef487c075507708c5e85554d1e4653.jpg&width=240&height=175&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/e2aca009d3d8268edf6ccd63d15fdbd7.jpg&width=240&height=206&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/e2aca009d3d8268edf6ccd63d15fdbd7.jpg&width=240&height=206&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index c53c6504f4f..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/e2aca009d3d8268edf6ccd63d15fdbd7.jpg&width=240&height=206&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/e758d85563cbdf9071a2998d8e5276e6.jpg&width=240&height=294&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/e758d85563cbdf9071a2998d8e5276e6.jpg&width=240&height=294&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index 4a1d51a5af0..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/e758d85563cbdf9071a2998d8e5276e6.jpg&width=240&height=294&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/f7d62b3844dc44baa6afb3c255a021a2.jpg&width=240&height=306&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 b/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/f7d62b3844dc44baa6afb3c255a021a2.jpg&width=240&height=306&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 deleted file mode 100644 index da82a72dc32..00000000000 Binary files a/emission/Example/EmissionTests/Fixtures/com.hackemist.SDWebImageCache.test-fixtures/f7d62b3844dc44baa6afb3c255a021a2.jpg&width=240&height=306&key=a1f82558d8134f6cbebceb9e67d04980&quality=95 and /dev/null differ diff --git a/emission/Example/EmissionTests/Fixtures/rembrandt-harmensz-van-rijn-1_page-1.json b/emission/Example/EmissionTests/Fixtures/rembrandt-harmensz-van-rijn-1_page-1.json deleted file mode 100644 index f88a9431e74..00000000000 --- a/emission/Example/EmissionTests/Fixtures/rembrandt-harmensz-van-rijn-1_page-1.json +++ /dev/null @@ -1,168 +0,0 @@ -{ - "data": { - "artist": { - "artworks": [ - { - "title": "Self-portrait", - "sale_message": null, - "image": { - "aspect_ratio": 0.78, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2F88gjaABNaDJiH4eqCB-DKg%2Flarge.jpg&width=240&height=306&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Art History 101" - } - }, - { - "title": "Old Man with a Gold Chain", - "sale_message": null, - "image": { - "aspect_ratio": 0.9, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FoOghHqRbQefRwGPJuqjr0A%2Flarge.jpg&width=240&height=267&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Art Institute of Chicago" - } - }, - { - "title": "Self Portrait, 1659", - "sale_message": null, - "image": { - "aspect_ratio": 0.78, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2Fgwa65j8uA3P58LxldJYJAg%2Flarge.jpg&width=240&height=306&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "National Gallery of Art, Washington, D.C." - } - }, - { - "title": "Self Portrait at the Age of 63", - "sale_message": null, - "image": { - "aspect_ratio": 0.81, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FxWjmo05MqprCtMYaUYquUw%2Flarge.jpg&width=240&height=295&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "The National Gallery, London" - } - }, - { - "title": "The Anatomy Lesson of Dr. Nicolaes Tulp", - "sale_message": null, - "image": { - "aspect_ratio": 1.33, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FkvFioLTBXu0SWZ52sge1FQ%2Flarge.jpg&width=239&height=180&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Art History 101" - } - }, - { - "title": "Three Crosses (First State)", - "sale_message": null, - "image": { - "aspect_ratio": 1.16, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FyeDP7Jxgb5hYEDqlBkiBNg%2Flarge.jpg&width=240&height=206&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Rijksmuseum" - } - }, - { - "title": "The Company of Frans Banning Cocq and Willem van Ruytenburch (The Night Watch)", - "sale_message": null, - "image": { - "aspect_ratio": 1.23, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FIG8ZLvVmZgQiTn2zK0Bp8w%2Flarge.jpg&width=239&height=195&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Rijksmuseum" - } - }, - { - "title": "Self-Portrait as the Apostle Paul", - "sale_message": null, - "image": { - "aspect_ratio": 0.84, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FzHYh6S9dTIsEXEQt_gYZIA%2Flarge.jpg&width=240&height=285&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Rijksmuseum" - } - }, - { - "title": "The Wardens of the Amsterdam Drapers’ Guild, Known as ‘The Syndics’", - "sale_message": null, - "image": { - "aspect_ratio": 1.52, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FkZMo5_gjk1TbWVgZQuwyLQ%2Flarge.jpg&width=240&height=158&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Rijksmuseum" - } - }, - { - "title": "The Mill", - "sale_message": null, - "image": { - "aspect_ratio": 1.2, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2F1Nv6CZWY4leMHzI3qu0cog%2Fsquare.jpg&width=239&height=199&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "National Gallery of Art, Washington, D.C." - } - } - ] - } - } -} \ No newline at end of file diff --git a/emission/Example/EmissionTests/Fixtures/rembrandt-harmensz-van-rijn-1_page-2.json b/emission/Example/EmissionTests/Fixtures/rembrandt-harmensz-van-rijn-1_page-2.json deleted file mode 100644 index 52afcd6d9ec..00000000000 --- a/emission/Example/EmissionTests/Fixtures/rembrandt-harmensz-van-rijn-1_page-2.json +++ /dev/null @@ -1,328 +0,0 @@ -{ - "data": { - "artist": { - "artworks": [ - { - "title": "Self-portrait", - "sale_message": null, - "image": { - "aspect_ratio": 0.78, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2F88gjaABNaDJiH4eqCB-DKg%2Flarge.jpg&width=240&height=306&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Art History 101" - } - }, - { - "title": "Old Man with a Gold Chain", - "sale_message": null, - "image": { - "aspect_ratio": 0.9, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FoOghHqRbQefRwGPJuqjr0A%2Flarge.jpg&width=240&height=267&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Art Institute of Chicago" - } - }, - { - "title": "Self Portrait, 1659", - "sale_message": null, - "image": { - "aspect_ratio": 0.78, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2Fgwa65j8uA3P58LxldJYJAg%2Flarge.jpg&width=240&height=306&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "National Gallery of Art, Washington, D.C." - } - }, - { - "title": "Self Portrait at the Age of 63", - "sale_message": null, - "image": { - "aspect_ratio": 0.81, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FxWjmo05MqprCtMYaUYquUw%2Flarge.jpg&width=240&height=295&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "The National Gallery, London" - } - }, - { - "title": "The Anatomy Lesson of Dr. Nicolaes Tulp", - "sale_message": null, - "image": { - "aspect_ratio": 1.33, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FkvFioLTBXu0SWZ52sge1FQ%2Flarge.jpg&width=239&height=180&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Art History 101" - } - }, - { - "title": "Three Crosses (First State)", - "sale_message": null, - "image": { - "aspect_ratio": 1.16, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FyeDP7Jxgb5hYEDqlBkiBNg%2Flarge.jpg&width=240&height=206&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Rijksmuseum" - } - }, - { - "title": "The Company of Frans Banning Cocq and Willem van Ruytenburch (The Night Watch)", - "sale_message": null, - "image": { - "aspect_ratio": 1.23, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FIG8ZLvVmZgQiTn2zK0Bp8w%2Flarge.jpg&width=239&height=195&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Rijksmuseum" - } - }, - { - "title": "Self-Portrait as the Apostle Paul", - "sale_message": null, - "image": { - "aspect_ratio": 0.84, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FzHYh6S9dTIsEXEQt_gYZIA%2Flarge.jpg&width=240&height=285&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Rijksmuseum" - } - }, - { - "title": "The Wardens of the Amsterdam Drapers’ Guild, Known as ‘The Syndics’", - "sale_message": null, - "image": { - "aspect_ratio": 1.52, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FkZMo5_gjk1TbWVgZQuwyLQ%2Flarge.jpg&width=240&height=158&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Rijksmuseum" - } - }, - { - "title": "The Mill", - "sale_message": null, - "image": { - "aspect_ratio": 1.2, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2F1Nv6CZWY4leMHzI3qu0cog%2Fsquare.jpg&width=239&height=199&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "National Gallery of Art, Washington, D.C." - } - }, - { - "title": "Self-portrait", - "sale_message": null, - "image": { - "aspect_ratio": 0.82, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2Fzg-r2cfXcA7HaZ4djUQbQw%2Flarge.jpg&width=240&height=294&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Rijksmuseum" - } - }, - { - "title": "The Anatomy Lesson of Dr Joan Deyman", - "sale_message": null, - "image": { - "aspect_ratio": 1.33, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2Fc7sa-J0EO-_CUI_otYNQag%2Flarge.jpg&width=240&height=180&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "The National Gallery, London" - } - }, - { - "title": "A Woman bathing in a Stream (Hendrickje Stoffels?)", - "sale_message": null, - "image": { - "aspect_ratio": 0.75, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2Fh5-TAGslx_Pi0dOZ-VnBlA%2Flarge.jpg&width=240&height=318&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "The National Gallery, London" - } - }, - { - "title": "Isaac and Rebecca, Known as ‘The Jewish Bride’", - "sale_message": null, - "image": { - "aspect_ratio": 1.37, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FT8zyOM1P2ZbMiiw4Fjv_Ag%2Flarge.jpg&width=240&height=175&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Rijksmuseum" - } - }, - { - "title": "Bethsabée au bain tenant la lettre David (Bathsheba at Her Bath)", - "sale_message": null, - "image": { - "aspect_ratio": 0.99, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FfsBd3V0dYROR3qtx6g_FFA%2Flarge.jpg&width=240&height=242&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Musée du Louvre" - } - }, - { - "title": "Bathsheba", - "sale_message": null, - "image": { - "aspect_ratio": 1, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FMxJcbk5Uxj4ONK1LQHAqYQ%2Flarge.jpg&width=240&height=240&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Musée du Louvre" - } - }, - { - "title": "A Man in Armour (Alexander the Great?)", - "sale_message": null, - "image": { - "aspect_ratio": 0.75, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FHdfQOH3CSa_6zwsugH9jDw%2Flarge.jpg&width=240&height=318&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "The National Gallery, London" - } - }, - { - "title": "Self Portrait with Two Circles", - "sale_message": null, - "image": { - "aspect_ratio": 0.83, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FGssiXkzJM2SZvFU5dSWJ5g%2Flarge.jpg&width=240&height=288&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "The National Gallery, London" - } - }, - { - "title": "Portrait of a Woman, Possibly Maria Trip", - "sale_message": null, - "image": { - "aspect_ratio": 0.76, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FUJxHMaBgBKabD2g2sNtOpA%2Flarge.jpg&width=240&height=316&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Rijksmuseum" - } - }, - { - "title": "The Raising of Lazarus", - "sale_message": null, - "image": { - "aspect_ratio": 0.84, - "resized": { - "url": "https://i.embed.ly/1/display/resize?grow=false&url=https%3A%2F%2Fd32dm0rphc51dk.cloudfront.net%2FaPZFDVPeCQuUCq68iltmpg%2Flarge.jpg&width=240&height=286&key=a1f82558d8134f6cbebceb9e67d04980&quality=95" - } - }, - "artist": { - "name": "Rembrandt Harmensz. van Rijn" - }, - "partner": { - "name": "Los Angeles County Museum of Art" - } - } - ] - } - } -} \ No newline at end of file diff --git a/emission/Example/EmissionTests/Info.plist b/emission/Example/EmissionTests/Info.plist deleted file mode 100644 index ba72822e872..00000000000 --- a/emission/Example/EmissionTests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/emission/Example/EmissionTests/OpaqueImageViewComponentTests.m b/emission/Example/EmissionTests/OpaqueImageViewComponentTests.m deleted file mode 100644 index a1c62b70f6e..00000000000 --- a/emission/Example/EmissionTests/OpaqueImageViewComponentTests.m +++ /dev/null @@ -1,87 +0,0 @@ -#import "TestHelper.h" - -#import - - -SpecBegin(OpaqueImageViewComponent) - -describe(@"OpaqueImageViewComponent", ^{ - __block TestHelper *helper = nil; - __block NSDictionary *props = nil; - - beforeEach(^{ - helper = TestHelper.sharedHelper; - - NSDictionary *artwork = helper.artworks[0]; - props = @{ - @"containerStyle": [@{ - @"backgroundColor": @"red", - @"alignSelf": @"stretch", - } mutableCopy], - @"imageView": [@{ - @"imageURL": [artwork valueForKeyPath:@"image.resized.url"], - @"aspectRatio": [artwork valueForKeyPath:@"image.aspect_ratio"], - } mutableCopy], - }; - }); - - describe(@"with row layout", ^{ - beforeEach(^{ - props[@"containerStyle"][@"flexDirection"] = @"row"; - }); - - // Should not show any of the red of the container. - it(@"maintains the aspect ratio when automatically sizing to fill the available size", ^{ - props[@"imageView"][@"style"] = @{ @"flex": @1 }; - [helper runReactTestInRecordMode:NO module:@"OpaqueImageView" props:props]; - }); - - // Should show red of the container next to it. - it(@"maintains the aspect ration when given an explicit width", ^{ - props[@"imageView"][@"style"] = @{ @"width": @100 }; - [helper runReactTestInRecordMode:NO module:@"OpaqueImageView" props:props]; - }); - - // Should show red of the container next to it. - it(@"maintains the aspect ration when given an explicit height", ^{ - props[@"imageView"][@"style"] = @{ @"height": @100 }; - [helper runReactTestInRecordMode:NO module:@"OpaqueImageView" props:props]; - }); - }); - - describe(@"with column layout", ^{ - beforeEach(^{ - props[@"containerStyle"][@"flexDirection"] = @"column"; - }); - - // FIXME: This test is hanging, not sure why. -// // Should not show any of the red of the container. -// it(@"maintains the aspect ratio when automatically sizing to fill the available size", ^{ -// props[@"imageView"][@"style"] = @{ @"flex": @1 }; -// [helper runReactTestInRecordMode:YES module:@"OpaqueImageView" props:props]; -// }); - - // Should show red of the container below it. - it(@"maintains the aspect ration when given an explicit width", ^{ - // FIXME This shows as if it’s still a row, might be solved with RN 0.25-rc - props[@"containerStyle"][@"flex"] = @1; - props[@"containerStyle"][@"width"] = @100; - - props[@"imageView"][@"style"] = @{ @"width": @100 }; - [helper runReactTestInRecordMode:NO module:@"OpaqueImageView" props:props]; - }); - - // FIXME: I’m not even sure right now what this one should look like. -// // -// // Should show red of the container below it. -// xit(@"maintains the aspect ratio when given an explicit height", ^{ -// // props[@"containerStyle"][@"flex"] = @1; -// // props[@"containerStyle"][@"width"] = @200x; -// props[@"imageView"][@"style"] = @{ @"height": @100 }; -// [helper runReactTestInRecordMode:YES module:@"OpaqueImageView" props:props]; -// }); - }); -}); - -SpecEnd - diff --git a/emission/Example/EmissionTests/RCTTest/LICENSE b/emission/Example/EmissionTests/RCTTest/LICENSE deleted file mode 100644 index b96dcb0480a..00000000000 --- a/emission/Example/EmissionTests/RCTTest/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) Facebook, Inc. and its affiliates. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/emission/Example/EmissionTests/RCTTest/RCTSnapshotManager.h b/emission/Example/EmissionTests/RCTTest/RCTSnapshotManager.h deleted file mode 100644 index 24486906b63..00000000000 --- a/emission/Example/EmissionTests/RCTTest/RCTSnapshotManager.h +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -@interface RCTSnapshotManager : RCTViewManager - -@end diff --git a/emission/Example/EmissionTests/RCTTest/RCTSnapshotManager.m b/emission/Example/EmissionTests/RCTTest/RCTSnapshotManager.m deleted file mode 100644 index e74cf9c3005..00000000000 --- a/emission/Example/EmissionTests/RCTTest/RCTSnapshotManager.m +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import "RCTSnapshotManager.h" - -@interface RCTSnapshotView : UIView - -@property (nonatomic, copy) RCTDirectEventBlock onSnapshotReady; -@property (nonatomic, copy) NSString *testIdentifier; - -@end - -@implementation RCTSnapshotView - -- (void)setTestIdentifier:(NSString *)testIdentifier -{ - if (![_testIdentifier isEqualToString:testIdentifier]) { - _testIdentifier = [testIdentifier copy]; - dispatch_async(dispatch_get_main_queue(), ^{ - if (self.onSnapshotReady) { - self.onSnapshotReady(@{@"testIdentifier" : self.testIdentifier}); - } - }); - } -} - -@end - - -@implementation RCTSnapshotManager - -RCT_EXPORT_MODULE() - -- (UIView *)view -{ - return [RCTSnapshotView new]; -} - -RCT_EXPORT_VIEW_PROPERTY(testIdentifier, NSString) -RCT_EXPORT_VIEW_PROPERTY(onSnapshotReady, RCTDirectEventBlock) - -@end diff --git a/emission/Example/EmissionTests/RCTTest/RCTTestModule.h b/emission/Example/EmissionTests/RCTTest/RCTTestModule.h deleted file mode 100644 index 7bf93034e24..00000000000 --- a/emission/Example/EmissionTests/RCTTest/RCTTestModule.h +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -#import -#import - -typedef NS_ENUM(NSInteger, RCTTestStatus) { - RCTTestStatusPending = 0, - RCTTestStatusPassed, - RCTTestStatusFailed -}; - -@class FBSnapshotTestController; - -@interface RCTTestModule : NSObject - -/** - * The snapshot test controller for this module. - */ -@property (nonatomic, strong) FBSnapshotTestController *controller; - -/** - * This is the view to be snapshotted. - */ -@property (nonatomic, strong) UIView *view; - -/** - * This is used to give meaningful names to snapshot image files. - */ -@property (nonatomic, assign) SEL testSelector; - -/** - * This is polled while running the runloop until true. - */ -@property (nonatomic, readonly) RCTTestStatus status; - -@property (nonatomic, copy) NSString *testSuffix; - -@end diff --git a/emission/Example/EmissionTests/RCTTest/RCTTestModule.m b/emission/Example/EmissionTests/RCTTest/RCTTestModule.m deleted file mode 100644 index dd2424d31dd..00000000000 --- a/emission/Example/EmissionTests/RCTTest/RCTTestModule.m +++ /dev/null @@ -1,91 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import "RCTTestModule.h" - -#import -#import -#import -#import - -#import "FBSnapshotTestController.h" - -@implementation RCTTestModule { - NSMutableDictionary *_snapshotCounter; -} - -@synthesize bridge = _bridge; - -RCT_EXPORT_MODULE() - -- (dispatch_queue_t)methodQueue -{ - return _bridge.uiManager.methodQueue; -} - -RCT_EXPORT_METHOD(verifySnapshot:(RCTResponseSenderBlock)callback) -{ - RCTAssert(_controller != nil, @"No snapshot controller configured."); - - [_bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary *viewRegistry) { - NSString *testName = NSStringFromSelector(self->_testSelector); - if (!self->_snapshotCounter) { - self->_snapshotCounter = [NSMutableDictionary new]; - } - - NSNumber *counter = @([self->_snapshotCounter[testName] integerValue] + 1); - self->_snapshotCounter[testName] = counter; - - NSError *error = nil; - NSString *identifier = [counter stringValue]; - if (self->_testSuffix) { - identifier = [identifier stringByAppendingString:self->_testSuffix]; - } - BOOL success = [self->_controller compareSnapshotOfView:self->_view - selector:self->_testSelector - identifier:identifier - error:&error]; - if (!success) { - RCTLogInfo(@"Failed to verify snapshot %@ (error: %@)", identifier, error); - } - callback(@[@(success)]); - }]; -} - -RCT_EXPORT_METHOD(sendAppEvent:(NSString *)name body:(nullable id)body) -{ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - [_bridge.eventDispatcher sendAppEventWithName:name body:body]; -#pragma clang diagnostic pop -} - -RCT_REMAP_METHOD(shouldResolve, shouldResolve_resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) -{ - resolve(@1); -} - -RCT_REMAP_METHOD(shouldReject, shouldReject_resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) -{ - reject(nil, nil, nil); -} - -RCT_EXPORT_METHOD(markTestCompleted) -{ - [self markTestPassed:YES]; -} - -RCT_EXPORT_METHOD(markTestPassed:(BOOL)success) -{ - [_bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, __unused NSDictionary *viewRegistry) { - self->_status = success ? RCTTestStatusPassed : RCTTestStatusFailed; - }]; -} - -@end diff --git a/emission/Example/EmissionTests/RCTTest/RCTTestRunner.h b/emission/Example/EmissionTests/RCTTest/RCTTestRunner.h deleted file mode 100644 index 9a50e94b2c9..00000000000 --- a/emission/Example/EmissionTests/RCTTest/RCTTestRunner.h +++ /dev/null @@ -1,138 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import - -#import - -#ifndef FB_REFERENCE_IMAGE_DIR -#define FB_REFERENCE_IMAGE_DIR "" -#endif - -#define RCT_RUN_RUNLOOP_WHILE(CONDITION) \ -{ \ - NSDate *timeout = [NSDate dateWithTimeIntervalSinceNow:30]; \ - NSRunLoop *runloop = [NSRunLoop mainRunLoop]; \ - while ((CONDITION)) { \ - [runloop runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.01]]; \ - if ([timeout timeIntervalSinceNow] <= 0) { \ - XCTFail(@"Runloop timed out before condition was met"); \ - break; \ - } \ - } \ -} - -/** - * Use the RCTInitRunnerForApp macro for typical usage. See FBSnapshotTestCase.h for more information - * on how to configure the snapshotting system. - */ -#define RCTInitRunnerForApp(app__, moduleProvider__, scriptURL__) \ -[[RCTTestRunner alloc] initWithApp:(app__) \ - referenceDirectory:@FB_REFERENCE_IMAGE_DIR \ - moduleProvider:(moduleProvider__) \ - scriptURL: scriptURL__] - -@protocol RCTBridgeModule; -@class RCTBridge; - -@class RCTRootView; - -@interface RCTTestRunner : NSObject - -/** - * Controls the mode snapshots are run in. If set to true, new snapshots are written to disk, - * otherwise, the UI will be compared to the existing snapshot. - */ -@property (nonatomic, assign) BOOL recordMode; - -@property (nonatomic, assign, readwrite) BOOL useBundler; - -@property (nonatomic, assign, readwrite) BOOL useJSDebugger; - -@property (nonatomic, copy) NSString *testSuffix; - -@property (nonatomic, readonly) NSURL *scriptURL; - -/** - * Initialize a runner. It's recommended that you use the RCTInitRunnerForApp - * macro instead of calling this directly. - * - * @param app The path to the app bundle without suffixes, e.g. IntegrationTests/IntegrationTestsApp - * @param referenceDirectory The path for snapshot references images. - * @param block A block that returns an array of extra modules to be used by the test runner. - */ -- (instancetype)initWithApp:(NSString *)app - referenceDirectory:(NSString *)referenceDirectory - moduleProvider:(RCTBridgeModuleListProvider)block - scriptURL:(NSURL *)scriptURL NS_DESIGNATED_INITIALIZER; - -/** - * Simplest runTest function simply mounts the specified JS module with no - * initialProps and waits for it to call - * - * RCTTestModule.markTestCompleted() - * - * JS errors/exceptions and timeouts will fail the test. Snapshot tests call - * RCTTestModule.verifySnapshot whenever they want to verify what has been - * rendered (typically via requestAnimationFrame to make sure the latest state - * has been rendered in native. - * - * @param test Selector of the test, usually just `_cmd`. - * @param moduleName Name of the JS component as registered by `AppRegistry.registerComponent` in JS. - */ -- (void)runTest:(SEL)test module:(NSString *)moduleName; - -/** - * Same as runTest:, but allows for passing initialProps for providing mock data - * or requesting different behaviors, configurationBlock provides arbitrary logic for the hosting - * root view manipulation. - * - * @param test Selector of the test, usually just `_cmd`. - * @param moduleName Name of the JS component as registered by `AppRegistry.registerComponent` in JS. - * @param initialProps props that are passed into the component when rendered. - * @param configurationBlock A block that takes the hosting root view and performs arbitrary manipulation after its creation. - */ -- (void)runTest:(SEL)test module:(NSString *)moduleName - initialProps:(NSDictionary *)initialProps -configurationBlock:(void(^)(RCTRootView *rootView))configurationBlock; - -/** - * Same as runTest:, but allows for passing initialProps for providing mock data - * or requesting different behaviors, configurationBlock provides arbitrary logic for the hosting - * root view manipulation, and expectErrorRegex verifies that the error you expected was thrown. - * - * @param test Selector of the test, usually just `_cmd`. - * @param moduleName Name of the JS component as registered by `AppRegistry.registerComponent` in JS. - * @param initialProps props that are passed into the component when rendered. - * @param configurationBlock A block that takes the hosting root view and performs arbitrary manipulation after its creation. - * @param expectErrorRegex A regex that must match the error thrown. If no error is thrown, the test fails. - */ -- (void)runTest:(SEL)test module:(NSString *)moduleName - initialProps:(NSDictionary *)initialProps -configurationBlock:(void(^)(RCTRootView *rootView))configurationBlock -expectErrorRegex:(NSString *)expectErrorRegex; - -/** - * Same as runTest:, but allows for passing initialProps for providing mock data - * or requesting different behaviors, configurationBlock provides arbitrary logic for the hosting - * root view manipulation, and expectErrorBlock provides arbitrary - * logic for processing errors (nil will cause any error to fail the test). - * - * @param test Selector of the test, usually just `_cmd`. - * @param moduleName Name of the JS component as registered by `AppRegistry.registerComponent` in JS. - * @param initialProps props that are passed into the component when rendered. - * @param configurationBlock A block that takes the hosting root view and performs arbitrary manipulation after its creation. - * @param expectErrorBlock A block that takes the error message and returns NO to fail the test. - */ -- (void)runTest:(SEL)test module:(NSString *)moduleName - initialProps:(NSDictionary *)initialProps -configurationBlock:(void(^)(RCTRootView *rootView))configurationBlock -expectErrorBlock:(BOOL(^)(NSString *error))expectErrorBlock; - -@end diff --git a/emission/Example/EmissionTests/RCTTest/RCTTestRunner.m b/emission/Example/EmissionTests/RCTTest/RCTTestRunner.m deleted file mode 100644 index 91adbfca81b..00000000000 --- a/emission/Example/EmissionTests/RCTTest/RCTTestRunner.m +++ /dev/null @@ -1,197 +0,0 @@ -/** - * Copyright (c) 2015-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ - -#import "RCTTestRunner.h" - -#import -#import -#import -#import -#import -#import - -#import -#import "RCTTestModule.h" - -static const NSTimeInterval kTestTimeoutSeconds = 120; - -@implementation RCTTestRunner -{ - FBSnapshotTestController *_testController; - RCTBridgeModuleListProvider _moduleProvider; - NSString *_appPath; -} - -- (instancetype)initWithApp:(NSString *)app - referenceDirectory:(NSString *)referenceDirectory - moduleProvider:(RCTBridgeModuleListProvider)block - scriptURL:(NSURL *)scriptURL -{ - RCTAssertParam(app); - RCTAssertParam(referenceDirectory); - - if ((self = [super init])) { - if (!referenceDirectory.length) { - referenceDirectory = [[NSBundle bundleForClass:self.class].resourcePath stringByAppendingPathComponent:@"ReferenceImages"]; - } - - NSString *sanitizedAppName = [app stringByReplacingOccurrencesOfString:@"/" withString:@"-"]; - sanitizedAppName = [sanitizedAppName stringByReplacingOccurrencesOfString:@"\\" withString:@"-"]; - _testController = [[FBSnapshotTestController alloc] initWithTestName:sanitizedAppName]; - _testController.referenceImagesDirectory = referenceDirectory; - _moduleProvider = [block copy]; - _appPath = app; - - if (scriptURL != nil) { - _scriptURL = scriptURL; - } else { - [self updateScript]; - } - } - return self; -} - -RCT_NOT_IMPLEMENTED(- (instancetype)init) - -- (void)updateScript -{ - if (getenv("CI_USE_PACKAGER") || _useBundler) { - _scriptURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://localhost:8081/%@.bundle?platform=ios&dev=true", _appPath]]; - } else { - _scriptURL = [[NSBundle bundleForClass:[RCTBridge class]] URLForResource:@"main" withExtension:@"jsbundle"]; - } - RCTAssert(_scriptURL != nil, @"No scriptURL set"); -} - -- (void)setRecordMode:(BOOL)recordMode -{ - _testController.recordMode = recordMode; -} - -- (BOOL)recordMode -{ - return _testController.recordMode; -} - -- (void)setUseBundler:(BOOL)useBundler -{ - _useBundler = useBundler; - [self updateScript]; -} - -- (void)runTest:(SEL)test module:(NSString *)moduleName -{ - [self runTest:test module:moduleName initialProps:nil configurationBlock:nil expectErrorBlock:nil]; -} - -- (void)runTest:(SEL)test module:(NSString *)moduleName - initialProps:(NSDictionary *)initialProps -configurationBlock:(void(^)(RCTRootView *rootView))configurationBlock -{ - [self runTest:test module:moduleName initialProps:initialProps configurationBlock:configurationBlock expectErrorBlock:nil]; -} - -- (void)runTest:(SEL)test module:(NSString *)moduleName - initialProps:(NSDictionary *)initialProps -configurationBlock:(void(^)(RCTRootView *rootView))configurationBlock -expectErrorRegex:(NSString *)errorRegex -{ - BOOL(^expectErrorBlock)(NSString *error) = ^BOOL(NSString *error){ - return [error rangeOfString:errorRegex options:NSRegularExpressionSearch].location != NSNotFound; - }; - - [self runTest:test module:moduleName initialProps:initialProps configurationBlock:configurationBlock expectErrorBlock:expectErrorBlock]; -} - -- (void)runTest:(SEL)test module:(NSString *)moduleName - initialProps:(NSDictionary *)initialProps -configurationBlock:(void(^)(RCTRootView *rootView))configurationBlock -expectErrorBlock:(BOOL(^)(NSString *error))expectErrorBlock -{ - __weak RCTBridge *batchedBridge; - - @autoreleasepool { - __block NSMutableArray *errors = nil; - RCTLogFunction defaultLogFunction = RCTGetLogFunction(); - RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { - defaultLogFunction(level, source, fileName, lineNumber, message); - if (level >= RCTLogLevelError) { - if (errors == nil) { - errors = [NSMutableArray new]; - } - [errors addObject:message]; - } - }); - - RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:_scriptURL - moduleProvider:_moduleProvider - launchOptions:nil]; - [bridge.devSettings setIsDebuggingRemotely:_useJSDebugger]; - batchedBridge = [bridge batchedBridge]; - - RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge moduleName:moduleName initialProperties:initialProps]; -#if TARGET_OS_TV - rootView.frame = CGRectMake(0, 0, 1920, 1080); // Standard screen size for tvOS -#else - rootView.frame = CGRectMake(0, 0, 320, 2000); // Constant size for testing on multiple devices -#endif - - RCTTestModule *testModule = [rootView.bridge moduleForClass:[RCTTestModule class]]; - RCTAssert(_testController != nil, @"_testController should not be nil"); - testModule.controller = _testController; - testModule.testSelector = test; - testModule.testSuffix = _testSuffix; - testModule.view = rootView; - - UIViewController *vc = RCTSharedApplication().delegate.window.rootViewController; - vc.view = [UIView new]; - [vc.view addSubview:rootView]; // Add as subview so it doesn't get resized - - if (configurationBlock) { - configurationBlock(rootView); - } - - NSDate *date = [NSDate dateWithTimeIntervalSinceNow:kTestTimeoutSeconds]; - while (date.timeIntervalSinceNow > 0 && testModule.status == RCTTestStatusPending && errors == nil) { - [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - } - - [rootView removeFromSuperview]; - - RCTSetLogFunction(defaultLogFunction); - -#if RCT_DEV - NSArray *nonLayoutSubviews = [vc.view.subviews filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id subview, NSDictionary *bindings) { - return ![NSStringFromClass([subview class]) isEqualToString:@"_UILayoutGuide"]; - }]]; - - RCTAssert(nonLayoutSubviews.count == 0, @"There shouldn't be any other views: %@", nonLayoutSubviews); -#endif - - if (expectErrorBlock) { - RCTAssert(expectErrorBlock(errors[0]), @"Expected an error but the first one was missing or did not match."); - } else { - RCTAssert(errors == nil, @"RedBox errors: %@", errors); - RCTAssert(testModule.status != RCTTestStatusPending, @"Test didn't finish within %0.f seconds", kTestTimeoutSeconds); - RCTAssert(testModule.status == RCTTestStatusPassed, @"Test failed"); - } - - [bridge invalidate]; - } - - // Give the bridge a chance to disappear before continuing to the next test. - NSDate *invalidateTimeout = [NSDate dateWithTimeIntervalSinceNow:30]; - while (invalidateTimeout.timeIntervalSinceNow > 0 && batchedBridge != nil) { - [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - } -} - -@end diff --git a/emission/Example/EmissionTests/RCTTest/README.md b/emission/Example/EmissionTests/RCTTest/README.md deleted file mode 100644 index c4793b1c3d2..00000000000 --- a/emission/Example/EmissionTests/RCTTest/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# RCTTest - -This directory contains the Objective-C files from [React Native's RCTTest library](https://github.com/facebook/react-native/tree/master/Libraries/RCTTest). Facebook's [original React Native license](https://github.com/facebook/react-native/blob/35a136801cbd9dd92604ca33bf364cf63d97a59a/LICENSE) is included in the LICENSE file. - -## Why - -This was added in [this PR](https://github.com/artsy/emission/pull/1255) to get around [this bug in CocoaPods](https://github.com/CocoaPods/CocoaPods/issues/7195). The bug limits how child targets can override a dependency's subspecs from its parent target, which means that in order for the child target (our test) to access the `RCTTest` subspec, it would need to be included in the parent target (the Emission iOS app). However, this won't work because `RCTTest` links against `XCTest`, which isn't available on devices. - -The choices we considered were: - -- Move our unit tests into their own Xcode project. -- Vendor the RCTTest library, modifying its `#import` declarations where necessary. - -The biggest difference between the two options is what they make difficult and what they make complex. The first option makes upgrading React Native versions easier, but makes it more complex to write and run unit tests. The second option makes upgrading React Native more difficult, but makes tests easy to write and run. - -Since we write and run unit tests more often than upgrading React Native versions, we chose that option. diff --git a/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_column_layout_maintains_the_aspect_ration_when_given_an_explicit_width_1@2x.png b/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_column_layout_maintains_the_aspect_ration_when_given_an_explicit_width_1@2x.png deleted file mode 100644 index 3a369112286..00000000000 Binary files a/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_column_layout_maintains_the_aspect_ration_when_given_an_explicit_width_1@2x.png and /dev/null differ diff --git a/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_column_layout_maintains_the_aspect_ration_when_given_an_explicit_width_1@3x.png b/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_column_layout_maintains_the_aspect_ration_when_given_an_explicit_width_1@3x.png deleted file mode 100644 index dc3969a9152..00000000000 Binary files a/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_column_layout_maintains_the_aspect_ration_when_given_an_explicit_width_1@3x.png and /dev/null differ diff --git a/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_row_layout_maintains_the_aspect_ratio_when_automatically_sizing_to_fill_the_available_size_1@2x.png b/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_row_layout_maintains_the_aspect_ratio_when_automatically_sizing_to_fill_the_available_size_1@2x.png deleted file mode 100644 index 1f7c92845b5..00000000000 Binary files a/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_row_layout_maintains_the_aspect_ratio_when_automatically_sizing_to_fill_the_available_size_1@2x.png and /dev/null differ diff --git a/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_row_layout_maintains_the_aspect_ratio_when_automatically_sizing_to_fill_the_available_size_1@3x.png b/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_row_layout_maintains_the_aspect_ratio_when_automatically_sizing_to_fill_the_available_size_1@3x.png deleted file mode 100644 index 8e0e4979a7b..00000000000 Binary files a/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_row_layout_maintains_the_aspect_ratio_when_automatically_sizing_to_fill_the_available_size_1@3x.png and /dev/null differ diff --git a/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_row_layout_maintains_the_aspect_ration_when_given_an_explicit_height_1@2x.png b/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_row_layout_maintains_the_aspect_ration_when_given_an_explicit_height_1@2x.png deleted file mode 100644 index 8a84132858a..00000000000 Binary files a/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_row_layout_maintains_the_aspect_ration_when_given_an_explicit_height_1@2x.png and /dev/null differ diff --git a/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_row_layout_maintains_the_aspect_ration_when_given_an_explicit_height_1@3x.png b/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_row_layout_maintains_the_aspect_ration_when_given_an_explicit_height_1@3x.png deleted file mode 100644 index 75bf4da9d31..00000000000 Binary files a/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_row_layout_maintains_the_aspect_ration_when_given_an_explicit_height_1@3x.png and /dev/null differ diff --git a/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_row_layout_maintains_the_aspect_ration_when_given_an_explicit_width_1@2x.png b/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_row_layout_maintains_the_aspect_ration_when_given_an_explicit_width_1@2x.png deleted file mode 100644 index 3d5b584ae6e..00000000000 Binary files a/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_row_layout_maintains_the_aspect_ration_when_given_an_explicit_width_1@2x.png and /dev/null differ diff --git a/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_row_layout_maintains_the_aspect_ration_when_given_an_explicit_width_1@3x.png b/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_row_layout_maintains_the_aspect_ration_when_given_an_explicit_width_1@3x.png deleted file mode 100644 index b23e72fd5b4..00000000000 Binary files a/emission/Example/EmissionTests/ReferenceImages/EmissionTests-TestApps/OpaqueImageViewComponent_with_row_layout_maintains_the_aspect_ration_when_given_an_explicit_width_1@3x.png and /dev/null differ diff --git a/emission/Example/EmissionTests/TestApps.js b/emission/Example/EmissionTests/TestApps.js deleted file mode 100644 index 41bfcc1c5ba..00000000000 --- a/emission/Example/EmissionTests/TestApps.js +++ /dev/null @@ -1,21 +0,0 @@ -import Emission from 'emission' -import React from 'react' -import ReactNative from 'react-native' -const { View } = ReactNative -const { TestModule } = ReactNative.NativeModules - -class OpaqueImageViewTest extends React.Component { - assert() { - TestModule.verifySnapshot(TestModule.markTestPassed) - } - - render() { - return ( - - - - ) - } -} - -ReactNative.AppRegistry.registerComponent('OpaqueImageView', () => OpaqueImageViewTest) diff --git a/emission/Example/EmissionTests/TestHelper.h b/emission/Example/EmissionTests/TestHelper.h deleted file mode 100644 index 1aef7ed7a1c..00000000000 --- a/emission/Example/EmissionTests/TestHelper.h +++ /dev/null @@ -1,24 +0,0 @@ -#import -#import - -#import "RCTTestRunner.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface TestHelper : NSObject - -@property (nonatomic, strong, readwrite) UIWindow *window; -@property (nonatomic, strong, readonly) NSURL *fixturesURL; -@property (nonatomic, strong, readonly) NSArray *artworksPages; -@property (nonatomic, strong, readonly) NSArray *artworks; -@property (nonatomic, strong, readonly) RCTTestRunner *reactTestRunner; - -+ (instancetype)sharedHelper; - -- (void)runReactTestInRecordMode:(BOOL)recordMode - module:(NSString *)moduleName - props:(NSDictionary * _Nullable)props; - -@end - -NS_ASSUME_NONNULL_END diff --git a/emission/Example/EmissionTests/TestHelper.m b/emission/Example/EmissionTests/TestHelper.m deleted file mode 100644 index 8e48aecef90..00000000000 --- a/emission/Example/EmissionTests/TestHelper.m +++ /dev/null @@ -1,154 +0,0 @@ -#import "TestHelper.h" -#import "AppSetup.h" -#import "AREmission.h" -#import "ARDefaults.h" - -#import -#import - -#import - - -@interface TestHelper () -@property (nonatomic, strong, readwrite) NSArray *artworksPages; -@property (nonatomic, strong, readwrite) NSArray *artworks; -@end - -@implementation TestHelper - -@synthesize reactTestRunner = _reactTestRunner; - -+ (instancetype)sharedHelper; -{ - return (TestHelper *)UIApplication.sharedApplication.delegate; -} - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; -{ - [self assertCorrectEnvironment]; - [self loadArtworksFixtures]; - - self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - self.window.rootViewController = [UIViewController new]; - self.window.rootViewController.view.backgroundColor = [UIColor redColor]; - [self.window makeKeyAndVisible]; - - return YES; -} - -- (void)assertCorrectEnvironment; -{ - NSOperatingSystemVersion version = [NSProcessInfo processInfo].operatingSystemVersion; - - NSAssert(version.majorVersion == 12, - @"The tests should be run on iOS 12.x, not %ld.%ld", version.majorVersion, version.minorVersion); - - CGSize nativeResolution = [UIScreen mainScreen].nativeBounds.size; - NSAssert([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone && CGSizeEqualToSize(nativeResolution, CGSizeMake(1125, 2436)), - @"The tests should be run on an iPhone 6, not a device with native resolution %@", - NSStringFromCGSize(nativeResolution)); -} - -- (void)loadArtworksFixtures; -{ - self.artworksPages = @[ - [self loadJSONFixture:@"rembrandt-harmensz-van-rijn-1_page-1"], - [self loadJSONFixture:@"rembrandt-harmensz-van-rijn-1_page-2"], - ]; - - NSMutableArray *artworks = [NSMutableArray new]; - for (NSDictionary *artworksPage in self.artworksPages) { - [artworks addObjectsFromArray:[artworksPage valueForKeyPath:@"data.artist.artworks"]]; - } - self.artworks = [artworks copy]; - - // Ensure the tests do not hit the network for images. - SDImageCache *cache = [[SDImageCache alloc] initWithNamespace:@"test-fixtures" diskCacheDirectory:self.fixturesURL.path]; - [SDWebImageManager.sharedManager setValue:cache forKey:@"_imageCache"]; - - for (NSDictionary *artwork in self.artworks) { - NSURL *URL = [NSURL URLWithString:[artwork valueForKeyPath:@"image.resized.url"]]; - NSAssert([SDWebImageManager.sharedManager cachedImageExistsForURL:URL], @"Expected image to be available in cache: `%@'", URL); - } -} - -- (NSDictionary *)loadJSONFixture:(NSString *)filename; -{ - NSURL *URL = [[self.fixturesURL URLByAppendingPathComponent:filename] URLByAppendingPathExtension:@"json"]; - return [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfURL:URL] - options:0 - error:nil]; -} - -- (NSURL *)fixturesURL; -{ - NSURL *testsDir = [[NSURL fileURLWithPath:@(__FILE__)] URLByDeletingLastPathComponent]; - return [testsDir URLByAppendingPathComponent:@"Fixtures"]; -} - -- (RCTTestRunner *)reactTestRunner; -{ - if (_reactTestRunner == nil) { - [ARDefaults setup]; - AppSetup *setup = [AppSetup ambientSetup]; - - NSURL *URL = TestHelper.sharedHelper.fixturesURL; - URL = [URL URLByAppendingPathComponent:@"ReferenceImages"]; - _reactTestRunner = RCTInitRunnerForApp(@"EmissionTests/TestApps", ^NSArray> *{ - // RCTTestRunner expects a new config for each run instead of storing one between runs. - AREmissionConfiguration *config = [[AREmissionConfiguration alloc] initWithUserID:@"userID" - authenticationToken:@"some.access.token" - launchCount:0 - sentryDSN:nil - stripePublishableKey:@"strip-test-key" - googleMapsAPIKey:nil - mapBoxAPIClientKey:@"mapbox-test-key" - gravityURL:setup.gravityURL - metaphysicsURL:setup.metaphysicsURL - predictionURL:setup.predictionURL - userAgent:@"Emission Example" - env:AREnvTest - options:setup.options]; - return @[config]; - }, setup.jsCodeLocation); - } - return _reactTestRunner; -} - -// Taken from Expecta+FBSnapshotTestCase -static SEL -currentTestName(void) -{ - id compiledExample = [[NSThread currentThread] threadDictionary][@"SPTCurrentSpec"]; - NSString *name; - if ([compiledExample respondsToSelector:@selector(name)]) { - // Specta 0.3 syntax - name = [compiledExample performSelector:@selector(name)]; -// } else if ([compiledExample respondsToSelector:@selector(fileName)]) { -// // Specta 0.2 syntax -// name = [compiledExample performSelector:@selector(fileName)]; - } - name = [[[[name componentsSeparatedByString:@" test_"] lastObject] stringByReplacingOccurrencesOfString:@"__" withString:@"_"] stringByReplacingOccurrencesOfString:@"]" withString:@""]; - return NSSelectorFromString(name); -} - -- (void)runReactTestInRecordMode:(BOOL)recordMode - module:(NSString *)moduleName - props:(NSDictionary * _Nullable)props; -{ - BOOL before = self.reactTestRunner.recordMode; - @try { - self.reactTestRunner.recordMode = recordMode; - [self.reactTestRunner runTest:currentTestName() - module:moduleName - initialProps:props - configurationBlock:^(RCTRootView *rootView) { - rootView.frame = [[UIScreen mainScreen] bounds]; - }]; - } - @finally { - self.reactTestRunner.recordMode = before; - } -} - -@end diff --git a/emission/Example/EmissionUITests/EmissionUITests.m b/emission/Example/EmissionUITests/EmissionUITests.m deleted file mode 100644 index 6e2a86faefe..00000000000 --- a/emission/Example/EmissionUITests/EmissionUITests.m +++ /dev/null @@ -1,40 +0,0 @@ -// -// EmissionUITests.m -// EmissionUITests -// -// Created by Eloy Durán on 22/04/16. -// Copyright © 2016 CocoaPods. All rights reserved. -// - -#import - -@interface EmissionUITests : XCTestCase - -@end - -@implementation EmissionUITests - -- (void)setUp { - [super setUp]; - - // Put setup code here. This method is called before the invocation of each test method in the class. - - // In UI tests it is usually best to stop immediately when a failure occurs. - self.continueAfterFailure = NO; - // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. - [[[XCUIApplication alloc] init] launch]; - - // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. -} - -- (void)tearDown { - // Put teardown code here. This method is called after the invocation of each test method in the class. - [super tearDown]; -} - -- (void)testExample { - // Use recording to get started writing UI tests. - // Use XCTAssert and related functions to verify your tests produce the correct results. -} - -@end diff --git a/emission/Example/EmissionUITests/Info.plist b/emission/Example/EmissionUITests/Info.plist deleted file mode 100644 index ba72822e872..00000000000 --- a/emission/Example/EmissionUITests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/emission/Example/Gemfile b/emission/Example/Gemfile deleted file mode 100644 index 56dde1af1b8..00000000000 --- a/emission/Example/Gemfile +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true -source "https://rubygems.org" - -gem "cocoapods", "~> 1.7.2" - -# So we know if we need to run `pod install` -gem 'cocoapods-check' - -# To manage our secret keys -gem "cocoapods-keys" - -# To avoid ambiguous Podfile.lock contents -gem "psych" diff --git a/emission/Example/Gemfile.lock b/emission/Example/Gemfile.lock deleted file mode 100644 index 8b7e774074d..00000000000 --- a/emission/Example/Gemfile.lock +++ /dev/null @@ -1,91 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - CFPropertyList (3.0.0) - RubyInline (3.12.4) - ZenTest (~> 4.3) - ZenTest (4.11.2) - activesupport (4.2.11.1) - i18n (~> 0.7) - minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) - tzinfo (~> 1.1) - atomos (0.1.3) - claide (1.0.3) - cocoapods (1.7.5) - activesupport (>= 4.0.2, < 5) - claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.7.5) - cocoapods-deintegrate (>= 1.0.3, < 2.0) - cocoapods-downloader (>= 1.2.2, < 2.0) - cocoapods-plugins (>= 1.0.0, < 2.0) - cocoapods-search (>= 1.0.0, < 2.0) - cocoapods-stats (>= 1.0.0, < 2.0) - cocoapods-trunk (>= 1.3.1, < 2.0) - cocoapods-try (>= 1.1.0, < 2.0) - colored2 (~> 3.1) - escape (~> 0.0.4) - fourflusher (>= 2.3.0, < 3.0) - gh_inspector (~> 1.0) - molinillo (~> 0.6.6) - nap (~> 1.0) - ruby-macho (~> 1.4) - xcodeproj (>= 1.10.0, < 2.0) - cocoapods-check (1.1.0) - cocoapods (~> 1.0) - cocoapods-core (1.7.5) - activesupport (>= 4.0.2, < 6) - fuzzy_match (~> 2.0.4) - nap (~> 1.0) - cocoapods-deintegrate (1.0.4) - cocoapods-downloader (1.2.2) - cocoapods-keys (2.1.0) - dotenv - osx_keychain - cocoapods-plugins (1.0.0) - nap - cocoapods-search (1.0.0) - cocoapods-stats (1.1.0) - cocoapods-trunk (1.3.1) - nap (>= 0.8, < 2.0) - netrc (~> 0.11) - cocoapods-try (1.1.0) - colored2 (3.1.2) - concurrent-ruby (1.1.5) - dotenv (2.7.2) - escape (0.0.4) - fourflusher (2.3.1) - fuzzy_match (2.0.4) - gh_inspector (1.1.3) - i18n (0.9.5) - concurrent-ruby (~> 1.0) - minitest (5.11.3) - molinillo (0.6.6) - nanaimo (0.2.6) - nap (1.1.0) - netrc (0.11.0) - osx_keychain (1.0.2) - RubyInline (~> 3) - psych (3.1.0) - ruby-macho (1.4.0) - thread_safe (0.3.6) - tzinfo (1.2.5) - thread_safe (~> 0.1) - xcodeproj (1.12.0) - CFPropertyList (>= 2.3.3, < 4.0) - atomos (~> 0.1.3) - claide (>= 1.0.2, < 2.0) - colored2 (~> 3.1) - nanaimo (~> 0.2.6) - -PLATFORMS - ruby - -DEPENDENCIES - cocoapods (~> 1.7.2) - cocoapods-check - cocoapods-keys - psych - -BUNDLED WITH - 1.17.3 diff --git a/emission/Example/Podfile b/emission/Example/Podfile deleted file mode 100644 index 7078a06b31f..00000000000 --- a/emission/Example/Podfile +++ /dev/null @@ -1,130 +0,0 @@ -using_bundler = defined? Bundler -unless using_bundler - puts "\nPlease re-run using:".red - puts " bundle exec pod install\n\n" - exit(1) -end - -unless Dir.exist? '../node_modules' - puts "\nYou will need to run:".red - puts " yarn install\n\n" - exit(1) -end - -# TODO: Get autolinking working after RN upgrade -# require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' - -require "rbconfig" -expected_ruby_version = File.read(File.expand_path("../../.ruby-version", __FILE__)).strip -actual_ruby_version = RbConfig::CONFIG["RUBY_PROGRAM_VERSION"] -unless actual_ruby_version == expected_ruby_version - puts "\nYou are running #{actual_ruby_version}. Please re-run using Ruby version:".red - puts " #{expected_ruby_version}\n\n" - exit(1) -end - -source 'https://github.com/artsy/Specs.git' -source 'https://cdn.cocoapods.org/' - -inhibit_all_warnings! -platform :ios, '12.0' - -require 'json' -npm_vendored_podspecs = JSON.parse(File.read('../npm-podspecs.json'), symbolize_names: true) -npm_vendored_podspecs.update(npm_vendored_podspecs) do |_pod_name, props| - if props[:path] - props.merge path: File.join('../', props[:path]) - else - props.merge podspec: File.join('../', props[:podspec]) - end -end - -target 'Emission' do - pod 'Emission', path: '../', inhibit_warnings: false - - npm_vendored_podspecs.each do |pod_name, props| - pod pod_name.to_s, props - end - - pod 'Sentry', subspecs: %w[Core KSCrash] - # Got to make it look right - pod 'Artsy+UIFonts' - - # Native UI tweaks - pod 'FLKAutoLayout' - - # This is mostly tableviews, handle them easier, we use this in Eigen/Energy too - pod 'ARGenericTableViewController' - - # Storing Credentials - pod 'SAMKeychain' - - # custom zoom animation for image carousel - pod 'INTUAnimationEngine' - - # Authiung with Artsy - pod 'Artsy+Authentication', subspecs: %w[email], - git: 'https://github.com/artsy/Artsy-Authentication.git', - branch: 'fetch-user-details' - - # Bottom Sheet view controller for Map view - pod 'Pulley', git: 'https://github.com/l2succes/Pulley.git', branch: 'master' - - target 'EmissionTests' do - inherit! :search_paths - - # Used for standard Objective-C unit tests, analagous to Jest. - pod 'Specta' - pod 'Expecta' - - # Necessary because we're bypassing the RCTTestCase subspec. - pod 'FBSnapshotTestCase' - end -end - -plugin 'cocoapods-keys', - target: 'Emission', - keys: [ - 'ArtsyAPIClientSecret', # Authing to the Artsy API - 'ArtsyAPIClientKey', # - 'StripePublishableKey', # Used in Auctions registration flow - 'MapBoxAPIClientKey', # Used in City Maps - 'SentryProductionDSN', # Used in the Emission betas - 'GoogleMapsAPIKey' # - ] - -post_install do |installer| - # Mark the project as having been checked for Swift 5. - SWIFT_MAGIC_STRING = "1020" - installer.pods_project.root_object.attributes['LastSwiftUpdateCheck'] = SWIFT_MAGIC_STRING - installer.pods_project.root_object.attributes['LastUpgradeCheck'] = SWIFT_MAGIC_STRING - - installer.pods_project.targets.each do |target| - # Pulley and FBSnapshotTestCase contain pre-5.0 Swift code. Let's mark them as having been migrated. - # Note: This is the equivalent of opening Xcode's conversion warning, un-checking 'remind me', and clicking "convert later". - # It does not change the contents of the Pods. - if %w(Pulley FBSnapshotTestCase).include? target.name - target.project.root_object.attributes['TargetAttributes'] ||= {} - target.project.root_object.attributes['TargetAttributes'][target.uuid] = { 'LastSwiftMigration' => SWIFT_MAGIC_STRING } - end - - target.build_configurations.each do |config| - # CocoaPods setting the deployment target to be less than the actual deployable target is causing many Xcode warnings. This silences them. See: https://github.com/CocoaPods/CocoaPods/issues/7314 - config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0' - end - end - emission = installer.pods_project.targets.find { |target| target.name == 'Emission' } - emission.build_configurations.each do |config| - config.build_settings['GCC_TREAT_WARNINGS_AS_ERRORS'] = 'YES' - # We treat warnings as errors, but currently have outstanding deprecation warnings to deal with, so we ignore deprecation warnings. - # See: https://artsyproduct.atlassian.net/browse/MX-119 - config.build_settings['GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS'] = 'NO' - # Work around https://github.com/rs/SDWebImage/issues/2022, because we don't want to upgrade to SDWebImage 4 atm. - config.build_settings['CLANG_WARN_STRICT_PROTOTYPES'] = 'NO' - # Use dynamic queries by default in development mode. - if config.name == 'Debug' - query_map = '../data/complete.queryMap.json' - config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = "$(inherited) USE_DYNAMIC_GRAPHQL_MAP='#{query_map}'" - end - end -end diff --git a/emission/Example/Podfile.lock b/emission/Example/Podfile.lock deleted file mode 100644 index 71c8b1cd483..00000000000 --- a/emission/Example/Podfile.lock +++ /dev/null @@ -1,576 +0,0 @@ -PODS: - - ARGenericTableViewController (1.0.2) - - "Artsy+Authentication/email (1.5.0)": - - ISO8601DateFormatter - - "NSURL+QueryDictionary" - - "Artsy+UIColors (3.1.0)" - - "Artsy+UIFonts (3.3.3)" - - Artsy-UIButtons (2.3.3): - - "Artsy+UIColors (~> 3.0)" - - "Artsy+UIFonts" - - "UIView+BooleanAnimations" - - boost-for-react-native (1.63.0) - - DoubleConversion (1.1.6) - - Emission (1.21.52): - - "Artsy+UIColors" - - "Artsy+UIFonts (>= 3.0.0)" - - DoubleConversion (= 1.1.6) - - Extraction (>= 1.2.1) - - Folly (= 2018.10.22.00) - - glog (= 0.3.5) - - INTUAnimationEngine - - ISO8601DateFormatter - - Pulley - - React-Core (= 0.61.4) - - React-cxxreact (= 0.61.4) - - react-native-cameraroll (= 1.3.0) - - react-native-geolocation (= 2.0.2) - - react-native-mapbox-gl (= 6.1.3) - - react-native-navigator-ios (= 1.0.0) - - react-native-netinfo (= 4.6.1) - - React-RCTActionSheet (= 0.61.4) - - React-RCTAnimation (= 0.61.4) - - React-RCTImage (= 0.61.4) - - React-RCTLinking (= 0.61.4) - - React-RCTNetwork (= 0.61.4) - - React-RCTText (= 0.61.4) - - RNSVG (= 9.13.3) - - SDWebImage (< 4, >= 3.7.2) - - SentryReactNative (= 0.30.3) - - tipsi-stripe (= 7.5.0) - - Expecta (1.0.6) - - Extraction (1.2.6): - - Extraction/ARAnimationContinuation (= 1.2.6) - - Extraction/ARLoadFailureView (= 1.2.6) - - Extraction/ARSpinner (= 1.2.6) - - Extraction/ARSwitchView (= 1.2.6) - - "Extraction/UILabel+Typography (= 1.2.6)" - - "Extraction/UIView+ARSpinner (= 1.2.6)" - - Extraction/ARAnimationContinuation (1.2.6) - - Extraction/ARLoadFailureView (1.2.6): - - Artsy-UIButtons - - "Extraction/UILabel+Typography" - - ORStackView (< 3) - - Extraction/ARSpinner (1.2.6): - - "Extraction/UIView+ARSpinner" - - "UIView+BooleanAnimations" - - Extraction/ARSwitchView (1.2.6): - - "Artsy+UIColors" - - "Artsy+UIFonts (>= 1.1.0)" - - FLKAutoLayout - - "UIView+BooleanAnimations" - - "Extraction/UILabel+Typography (1.2.6)" - - "Extraction/UIView+ARSpinner (1.2.6)": - - Extraction/ARAnimationContinuation - - FBLazyVector (0.61.4) - - FBReactNativeSpec (0.61.4): - - Folly (= 2018.10.22.00) - - RCTRequired (= 0.61.4) - - RCTTypeSafety (= 0.61.4) - - React-Core (= 0.61.4) - - React-jsi (= 0.61.4) - - ReactCommon/turbomodule/core (= 0.61.4) - - FBSnapshotTestCase (2.1.4): - - FBSnapshotTestCase/SwiftSupport (= 2.1.4) - - FBSnapshotTestCase/Core (2.1.4) - - FBSnapshotTestCase/SwiftSupport (2.1.4): - - FBSnapshotTestCase/Core - - FLKAutoLayout (1.0.1) - - Folly (2018.10.22.00): - - boost-for-react-native - - DoubleConversion - - Folly/Default (= 2018.10.22.00) - - glog - - Folly/Default (2018.10.22.00): - - boost-for-react-native - - DoubleConversion - - glog - - glog (0.3.5) - - INTUAnimationEngine (1.4.2): - - INTUAnimationEngine/SpringSolver (= 1.4.2) - - INTUAnimationEngine/SpringSolver (1.4.2) - - ISO8601DateFormatter (0.8) - - Keys (1.0.1) - - KSCrash/Core (1.15.20): - - KSCrash/Reporting/Filters/Basic - - KSCrash/Recording (1.15.20): - - KSCrash/Recording/Tools (= 1.15.20) - - KSCrash/Recording/Tools (1.15.20) - - KSCrash/Reporting/Filters/Base (1.15.20): - - KSCrash/Recording - - KSCrash/Reporting/Filters/Basic (1.15.20): - - KSCrash/Recording - - KSCrash/Reporting/Filters/Base - - "NSURL+QueryDictionary (1.2.0)" - - ORStackView (2.0.3): - - FLKAutoLayout - - Pulley (2.6.2) - - RCTRequired (0.61.4) - - RCTTypeSafety (0.61.4): - - FBLazyVector (= 0.61.4) - - Folly (= 2018.10.22.00) - - RCTRequired (= 0.61.4) - - React-Core (= 0.61.4) - - React (0.61.4): - - React-Core (= 0.61.4) - - React-Core/DevSupport (= 0.61.4) - - React-Core/RCTWebSocket (= 0.61.4) - - React-RCTActionSheet (= 0.61.4) - - React-RCTAnimation (= 0.61.4) - - React-RCTBlob (= 0.61.4) - - React-RCTImage (= 0.61.4) - - React-RCTLinking (= 0.61.4) - - React-RCTNetwork (= 0.61.4) - - React-RCTSettings (= 0.61.4) - - React-RCTText (= 0.61.4) - - React-RCTVibration (= 0.61.4) - - React-Core (0.61.4): - - Folly (= 2018.10.22.00) - - glog - - React-Core/Default (= 0.61.4) - - React-cxxreact (= 0.61.4) - - React-jsi (= 0.61.4) - - React-jsiexecutor (= 0.61.4) - - Yoga - - React-Core/CoreModulesHeaders (0.61.4): - - Folly (= 2018.10.22.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.61.4) - - React-jsi (= 0.61.4) - - React-jsiexecutor (= 0.61.4) - - Yoga - - React-Core/Default (0.61.4): - - Folly (= 2018.10.22.00) - - glog - - React-cxxreact (= 0.61.4) - - React-jsi (= 0.61.4) - - React-jsiexecutor (= 0.61.4) - - Yoga - - React-Core/DevSupport (0.61.4): - - Folly (= 2018.10.22.00) - - glog - - React-Core/Default (= 0.61.4) - - React-Core/RCTWebSocket (= 0.61.4) - - React-cxxreact (= 0.61.4) - - React-jsi (= 0.61.4) - - React-jsiexecutor (= 0.61.4) - - React-jsinspector (= 0.61.4) - - Yoga - - React-Core/RCTActionSheetHeaders (0.61.4): - - Folly (= 2018.10.22.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.61.4) - - React-jsi (= 0.61.4) - - React-jsiexecutor (= 0.61.4) - - Yoga - - React-Core/RCTAnimationHeaders (0.61.4): - - Folly (= 2018.10.22.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.61.4) - - React-jsi (= 0.61.4) - - React-jsiexecutor (= 0.61.4) - - Yoga - - React-Core/RCTBlobHeaders (0.61.4): - - Folly (= 2018.10.22.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.61.4) - - React-jsi (= 0.61.4) - - React-jsiexecutor (= 0.61.4) - - Yoga - - React-Core/RCTImageHeaders (0.61.4): - - Folly (= 2018.10.22.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.61.4) - - React-jsi (= 0.61.4) - - React-jsiexecutor (= 0.61.4) - - Yoga - - React-Core/RCTLinkingHeaders (0.61.4): - - Folly (= 2018.10.22.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.61.4) - - React-jsi (= 0.61.4) - - React-jsiexecutor (= 0.61.4) - - Yoga - - React-Core/RCTNetworkHeaders (0.61.4): - - Folly (= 2018.10.22.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.61.4) - - React-jsi (= 0.61.4) - - React-jsiexecutor (= 0.61.4) - - Yoga - - React-Core/RCTSettingsHeaders (0.61.4): - - Folly (= 2018.10.22.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.61.4) - - React-jsi (= 0.61.4) - - React-jsiexecutor (= 0.61.4) - - Yoga - - React-Core/RCTTextHeaders (0.61.4): - - Folly (= 2018.10.22.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.61.4) - - React-jsi (= 0.61.4) - - React-jsiexecutor (= 0.61.4) - - Yoga - - React-Core/RCTVibrationHeaders (0.61.4): - - Folly (= 2018.10.22.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.61.4) - - React-jsi (= 0.61.4) - - React-jsiexecutor (= 0.61.4) - - Yoga - - React-Core/RCTWebSocket (0.61.4): - - Folly (= 2018.10.22.00) - - glog - - React-Core/Default (= 0.61.4) - - React-cxxreact (= 0.61.4) - - React-jsi (= 0.61.4) - - React-jsiexecutor (= 0.61.4) - - Yoga - - React-CoreModules (0.61.4): - - FBReactNativeSpec (= 0.61.4) - - Folly (= 2018.10.22.00) - - RCTTypeSafety (= 0.61.4) - - React-Core/CoreModulesHeaders (= 0.61.4) - - React-RCTImage (= 0.61.4) - - ReactCommon/turbomodule/core (= 0.61.4) - - React-cxxreact (0.61.4): - - boost-for-react-native (= 1.63.0) - - DoubleConversion - - Folly (= 2018.10.22.00) - - glog - - React-jsinspector (= 0.61.4) - - React-jsi (0.61.4): - - boost-for-react-native (= 1.63.0) - - DoubleConversion - - Folly (= 2018.10.22.00) - - glog - - React-jsi/Default (= 0.61.4) - - React-jsi/Default (0.61.4): - - boost-for-react-native (= 1.63.0) - - DoubleConversion - - Folly (= 2018.10.22.00) - - glog - - React-jsiexecutor (0.61.4): - - DoubleConversion - - Folly (= 2018.10.22.00) - - glog - - React-cxxreact (= 0.61.4) - - React-jsi (= 0.61.4) - - React-jsinspector (0.61.4) - - react-native-cameraroll (1.3.0): - - React - - react-native-geolocation (2.0.2): - - React - - react-native-mapbox-gl (6.1.3): - - React - - react-native-navigator-ios (1.0.0): - - React - - react-native-netinfo (4.6.1): - - React - - React-RCTActionSheet (0.61.4): - - React-Core/RCTActionSheetHeaders (= 0.61.4) - - React-RCTAnimation (0.61.4): - - React-Core/RCTAnimationHeaders (= 0.61.4) - - React-RCTBlob (0.61.4): - - React-Core/RCTBlobHeaders (= 0.61.4) - - React-Core/RCTWebSocket (= 0.61.4) - - React-jsi (= 0.61.4) - - React-RCTNetwork (= 0.61.4) - - React-RCTImage (0.61.4): - - React-Core/RCTImageHeaders (= 0.61.4) - - React-RCTNetwork (= 0.61.4) - - React-RCTLinking (0.61.4): - - React-Core/RCTLinkingHeaders (= 0.61.4) - - React-RCTNetwork (0.61.4): - - React-Core/RCTNetworkHeaders (= 0.61.4) - - React-RCTSettings (0.61.4): - - React-Core/RCTSettingsHeaders (= 0.61.4) - - React-RCTText (0.61.4): - - React-Core/RCTTextHeaders (= 0.61.4) - - React-RCTVibration (0.61.4): - - React-Core/RCTVibrationHeaders (= 0.61.4) - - ReactCommon/jscallinvoker (0.61.4): - - DoubleConversion - - Folly (= 2018.10.22.00) - - glog - - React-cxxreact (= 0.61.4) - - ReactCommon/turbomodule/core (0.61.4): - - DoubleConversion - - Folly (= 2018.10.22.00) - - glog - - React-Core (= 0.61.4) - - React-cxxreact (= 0.61.4) - - React-jsi (= 0.61.4) - - ReactCommon/jscallinvoker (= 0.61.4) - - RNCAsyncStorage (1.6.3): - - React - - RNReanimated (1.4.0): - - React - - RNSVG (9.13.3): - - React - - SAMKeychain (1.5.3) - - SDWebImage (3.8.3): - - SDWebImage/Core (= 3.8.3) - - SDWebImage/Core (3.8.3) - - Sentry (3.9.1): - - Sentry/Core (= 3.9.1) - - Sentry/KSCrash (= 3.9.1) - - Sentry/Core (3.9.1) - - Sentry/KSCrash (3.9.1): - - KSCrash/Core (~> 1.15.12) - - SentryReactNative (0.30.3): - - React - - Sentry (~> 3.9.0) - - Sentry/KSCrash (~> 3.9.0) - - Specta (1.0.7) - - Stripe (14.0.0) - - tipsi-stripe (7.5.0): - - React - - Stripe (~> 14.0.0) - - "UIView+BooleanAnimations (1.0.2)" - - Yoga (1.14.0) - -DEPENDENCIES: - - ARGenericTableViewController - - "Artsy+Authentication/email (from `https://github.com/artsy/Artsy-Authentication.git`, branch `fetch-user-details`)" - - "Artsy+UIFonts" - - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - - Emission (from `../`) - - Expecta - - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - - FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`) - - FBSnapshotTestCase - - FLKAutoLayout - - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) - - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - - INTUAnimationEngine - - Keys (from `Pods/CocoaPodsKeys`) - - Pulley (from `https://github.com/l2succes/Pulley.git`, branch `master`) - - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - - React (from `../node_modules/react-native`) - - React-Core/DevSupport (from `../node_modules/react-native`) - - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) - - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) - - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) - - "react-native-cameraroll (from `../node_modules/@react-native-community/cameraroll`)" - - "react-native-geolocation (from `../node_modules/@react-native-community/geolocation`)" - - "react-native-mapbox-gl (from `../node_modules/@mapbox/react-native-mapbox-gl`)" - - react-native-navigator-ios (from `../node_modules/react-native-navigator-ios`) - - "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)" - - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) - - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) - - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) - - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) - - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) - - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) - - React-RCTText (from `../node_modules/react-native/Libraries/Text`) - - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) - - ReactCommon/jscallinvoker (from `../node_modules/react-native/ReactCommon`) - - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - - "RNCAsyncStorage (from `../node_modules/@react-native-community/async-storage`)" - - RNReanimated (from `../node_modules/react-native-reanimated`) - - RNSVG (from `../node_modules/react-native-svg`) - - SAMKeychain - - Sentry/Core - - Sentry/KSCrash - - SentryReactNative (from `../node_modules/react-native-sentry`) - - Specta - - tipsi-stripe (from `../node_modules/tipsi-stripe/tipsi-stripe.podspec`) - - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) - -SPEC REPOS: - https://cdn.cocoapods.org/: - - ARGenericTableViewController - - boost-for-react-native - - Expecta - - FBSnapshotTestCase - - FLKAutoLayout - - INTUAnimationEngine - - ISO8601DateFormatter - - KSCrash - - "NSURL+QueryDictionary" - - ORStackView - - SAMKeychain - - SDWebImage - - Sentry - - Specta - - Stripe - - "UIView+BooleanAnimations" - https://github.com/artsy/Specs.git: - - "Artsy+UIColors" - - "Artsy+UIFonts" - - Artsy-UIButtons - - Extraction - -EXTERNAL SOURCES: - "Artsy+Authentication": - :branch: fetch-user-details - :git: https://github.com/artsy/Artsy-Authentication.git - DoubleConversion: - :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" - Emission: - :path: "../" - FBLazyVector: - :path: "../node_modules/react-native/Libraries/FBLazyVector" - FBReactNativeSpec: - :path: "../node_modules/react-native/Libraries/FBReactNativeSpec" - Folly: - :podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec" - glog: - :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" - Keys: - :path: Pods/CocoaPodsKeys - Pulley: - :branch: master - :git: https://github.com/l2succes/Pulley.git - RCTRequired: - :path: "../node_modules/react-native/Libraries/RCTRequired" - RCTTypeSafety: - :path: "../node_modules/react-native/Libraries/TypeSafety" - React: - :path: "../node_modules/react-native" - React-Core: - :path: "../node_modules/react-native" - React-CoreModules: - :path: "../node_modules/react-native/React/CoreModules" - React-cxxreact: - :path: "../node_modules/react-native/ReactCommon/cxxreact" - React-jsi: - :path: "../node_modules/react-native/ReactCommon/jsi" - React-jsiexecutor: - :path: "../node_modules/react-native/ReactCommon/jsiexecutor" - React-jsinspector: - :path: "../node_modules/react-native/ReactCommon/jsinspector" - react-native-cameraroll: - :path: "../node_modules/@react-native-community/cameraroll" - react-native-geolocation: - :path: "../node_modules/@react-native-community/geolocation" - react-native-mapbox-gl: - :path: "../node_modules/@mapbox/react-native-mapbox-gl" - react-native-navigator-ios: - :path: "../node_modules/react-native-navigator-ios" - react-native-netinfo: - :path: "../node_modules/@react-native-community/netinfo" - React-RCTActionSheet: - :path: "../node_modules/react-native/Libraries/ActionSheetIOS" - React-RCTAnimation: - :path: "../node_modules/react-native/Libraries/NativeAnimation" - React-RCTBlob: - :path: "../node_modules/react-native/Libraries/Blob" - React-RCTImage: - :path: "../node_modules/react-native/Libraries/Image" - React-RCTLinking: - :path: "../node_modules/react-native/Libraries/LinkingIOS" - React-RCTNetwork: - :path: "../node_modules/react-native/Libraries/Network" - React-RCTSettings: - :path: "../node_modules/react-native/Libraries/Settings" - React-RCTText: - :path: "../node_modules/react-native/Libraries/Text" - React-RCTVibration: - :path: "../node_modules/react-native/Libraries/Vibration" - ReactCommon: - :path: "../node_modules/react-native/ReactCommon" - RNCAsyncStorage: - :path: "../node_modules/@react-native-community/async-storage" - RNReanimated: - :path: "../node_modules/react-native-reanimated" - RNSVG: - :path: "../node_modules/react-native-svg" - SentryReactNative: - :path: "../node_modules/react-native-sentry" - tipsi-stripe: - :podspec: "../node_modules/tipsi-stripe/tipsi-stripe.podspec" - Yoga: - :path: "../node_modules/react-native/ReactCommon/yoga" - -CHECKOUT OPTIONS: - "Artsy+Authentication": - :commit: 1b582675598c999726d9edacd3b8559e01cf7c48 - :git: https://github.com/artsy/Artsy-Authentication.git - Pulley: - :commit: 23f1c0e8cad5a72d03176fe33535c14726e7a160 - :git: https://github.com/l2succes/Pulley.git - tipsi-stripe: - :commit: aeb742baf1a8329ba371d9c94c7650104a112807 - :git: https://github.com/ashfurrow/tipsi-stripe - -SPEC CHECKSUMS: - ARGenericTableViewController: 61a0897ba66c35111b5d1cc3b44884282bd3c1a5 - "Artsy+Authentication": 3bf11ceca61c52e9e31490535bf5798f625406fa - "Artsy+UIColors": 31c03c4146f5e6618a9b950f37dfe02dd9ac09a6 - "Artsy+UIFonts": 597c44f264aead6bdc21898b690addd90e14edbd - Artsy-UIButtons: 3c396f0fad352a7b0332100e0ffcb0ca577e0082 - boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c - DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2 - Emission: c0d44f4745243b1cfc750f84f30a68714283a5a7 - Expecta: 3b6bd90a64b9a1dcb0b70aa0e10a7f8f631667d5 - Extraction: 2be993a17f8f8c4fac988ebecaed93a409181faf - FBLazyVector: feb35a6b7f7b50f367be07f34012f34a79282fa3 - FBReactNativeSpec: 51477b84b1bf7ab6f9ef307c24e3dd675391be44 - FBSnapshotTestCase: 094f9f314decbabe373b87cc339bea235a63e07a - FLKAutoLayout: 37e1e09de6411dbee5526860d9f55d9063323ea8 - Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51 - glog: 1f3da668190260b06b429bb211bfbee5cd790c28 - INTUAnimationEngine: 3a7d63738cd51af573d16848a771feedea7cc9f2 - ISO8601DateFormatter: 4551b6ce4f83185425f583b0b3feb3c7b59b942c - Keys: a576f4c9c1c641ca913a959a9c62ed3f215a8de9 - KSCrash: 4dc18329a90b516342809b9ca92fc4d199d712ea - "NSURL+QueryDictionary": bae616404e2adf6409d3d5c02a093cbf44c8a236 - ORStackView: b9507271cb41fb9e0b3eecc6414d831201e7cf7c - Pulley: edc993fb57f7eb20541c8453d0fce10559f21dac - RCTRequired: f3b3fb6f4723e8e52facb229d0c75fdc76773849 - RCTTypeSafety: 2ec60de6abb1db050b56ecc4b60188026078fd10 - React: 10e0130b57e55a7cd8c3dee37c1261102ce295f4 - React-Core: 636212410772d05f3a1eb79d965df2962ca1c70b - React-CoreModules: 6f70d5e41919289c582f88c9ad9923fe5c87400a - React-cxxreact: ddecbe9157ec1743f52ea17bf8d95debc0d6e846 - React-jsi: ca921f4041505f9d5197139b2d09eeb020bb12e8 - React-jsiexecutor: 8dfb73b987afa9324e4009bdce62a18ce23d983c - React-jsinspector: d15478d0a8ada19864aa4d1cc1c697b41b3fa92f - react-native-cameraroll: 463aff54e37cff27ea76eb792e6f1fa43b876320 - react-native-geolocation: c956aeb136625c23e0dce0467664af2c437888c9 - react-native-mapbox-gl: d0ac3b81a6cadbd7cadc80891da72e3e85379350 - react-native-navigator-ios: 93db84cc26b6f8d776e1f504c56082f593efcd09 - react-native-netinfo: a59d8426a8484f739fe3a95dd6ad5af1435db05f - React-RCTActionSheet: 7369b7c85f99b6299491333affd9f01f5a130c22 - React-RCTAnimation: d07be15b2bd1d06d89417eb0343f98ffd2b099a7 - React-RCTBlob: 8e0b23d95c9baa98f6b0e127e07666aaafd96c34 - React-RCTImage: 443050d14a66e8c2332e9c055f45689d23e15cc7 - React-RCTLinking: ce9a90ba155aec41be49e75ec721bbae2d48a47e - React-RCTNetwork: 41fe54bacc67dd00e6e4c4d30dd98a13e4beabc8 - React-RCTSettings: 45e3e0a6470310b2dab2ccc6d1d73121ba3ea936 - React-RCTText: 21934e0a51d522abcd0a275407e80af45d6fd9ec - React-RCTVibration: 0f76400ee3cec6edb9c125da49fed279340d145a - ReactCommon: a6a294e7028ed67b926d29551aa9394fd989c24c - RNCAsyncStorage: 3c304d1adfaea02ec732ac218801cb13897aa8c0 - RNReanimated: b2ab0b693dddd2339bd2f300e770f6302d2e960c - RNSVG: f6177f8d7c095fada7cfee2e4bb7388ba426064c - SAMKeychain: 483e1c9f32984d50ca961e26818a534283b4cd5c - SDWebImage: a72e880a8fe0f7fc31efe15aaed443c074d2a80c - Sentry: e2707f9a6b498277d9620a48fcb1bd3b655c8473 - SentryReactNative: 3dff4e9bd82aa581dc64ff8d2524d7007cea076b - Specta: 3e1bd89c3517421982dc4d1c992503e48bd5fe66 - Stripe: db29ad197c74aca6fb981e4e8355cf7ebd0fca5a - tipsi-stripe: 8aaaa6f5e4cfea5c35be3affbb616c4e6cfafa5f - "UIView+BooleanAnimations": a760be9a066036e55f298b7b7350a6cb14cfcd97 - Yoga: ba3d99dbee6c15ea6bbe3783d1f0cb1ffb79af0f - -PODFILE CHECKSUM: b9064f04abd7946ac749571c08020f82271ac2d4 - -COCOAPODS: 1.7.5 diff --git a/emission/Example/Resources/UITabBarDownloadsTemplate@2x.png b/emission/Example/Resources/UITabBarDownloadsTemplate@2x.png deleted file mode 100644 index cb5dad8ef9f..00000000000 Binary files a/emission/Example/Resources/UITabBarDownloadsTemplate@2x.png and /dev/null differ diff --git a/emission/Example/Resources/style.json b/emission/Example/Resources/style.json deleted file mode 100755 index f05557b1387..00000000000 --- a/emission/Example/Resources/style.json +++ /dev/null @@ -1,1295 +0,0 @@ -{ - "version": 8, - "name": "Artsy WIP", - "metadata": { - "mapbox:origin": "basic-template-v1", - "mapbox:autocomposite": true, - "mapbox:type": "template", - "mapbox:sdk-support": { - "js": "0.49.0", - "android": "6.5.0", - "ios": "4.4.0" - } - }, - "center": [114.16822626210228, 22.290506484957234], - "zoom": 14.648778113728689, - "bearing": 0, - "pitch": 0, - "sources": { - "composite": { - "url": "mapbox://mapbox.mapbox-streets-v7", - "type": "vector" - } - }, - "sprite": "mapbox://sprites/biron-io/cjpl8rt6t0gv12sp9bfpygswz", - "glyphs": "mapbox://fonts/biron-io/{fontstack}/{range}.pbf", - "layers": [ - { - "id": "background", - "type": "background", - "layout": {}, - "paint": { - "background-color": [ - "interpolate", - ["linear"], - ["zoom"], - 5, - "hsl(258, 7%, 95%)", - 7, - "hsl(225, 15%, 94%)" - ] - } - }, - { - "id": "national_park", - "type": "fill", - "source": "composite", - "source-layer": "landuse_overlay", - "filter": ["==", "class", "national_park"], - "layout": {}, - "paint": { - "fill-color": "#a8dcaa", - "fill-opacity": [ - "interpolate", - ["linear"], - ["zoom"], - 5, - 0, - 6, - 0.5 - ] - } - }, - { - "id": "landuse", - "type": "fill", - "source": "composite", - "source-layer": "landuse", - "filter": ["in", "class", "hospital", "park", "pitch", "school"], - "layout": {}, - "paint": { - "fill-color": [ - "match", - ["get", "class"], - "park", - "hsl(122, 42%, 85%)", - "hsla(0, 0%, 0%, 0)" - ], - "fill-opacity": [ - "interpolate", - ["linear"], - ["zoom"], - 5, - 0, - 6, - 1 - ] - } - }, - { - "id": "waterway", - "type": "line", - "source": "composite", - "source-layer": "waterway", - "minzoom": 8, - "filter": [ - "all", - ["==", "$type", "LineString"], - ["in", "class", "canal", "river"] - ], - "layout": {"line-join": "round", "line-cap": "round"}, - "paint": { - "line-color": "#86c2f4", - "line-width": [ - "interpolate", - ["exponential", 1.3], - ["zoom"], - 8.5, - 0.1, - 20, - 8 - ], - "line-opacity": [ - "interpolate", - ["linear"], - ["zoom"], - 8, - 0, - 8.5, - 1 - ] - } - }, - { - "id": "water", - "type": "fill", - "source": "composite", - "source-layer": "water", - "layout": {}, - "paint": { - "fill-color": [ - "interpolate", - ["linear"], - ["zoom"], - 5, - "hsl(205, 0%, 5%)", - 7, - "#b7d7f1" - ] - } - }, - { - "id": "aeroway-polygon", - "type": "fill", - "source": "composite", - "source-layer": "aeroway", - "filter": [ - "all", - ["==", "$type", "Polygon"], - ["in", "type", "helipad", "runway", "taxiway"] - ], - "layout": {}, - "paint": {"fill-color": "hsl(0, 0%, 77%)"} - }, - { - "id": "aeroway-line", - "type": "line", - "source": "composite", - "source-layer": "aeroway", - "filter": [ - "all", - ["==", "$type", "LineString"], - ["in", "type", "runway", "taxiway"] - ], - "layout": {}, - "paint": { - "line-width": [ - "interpolate", - ["exponential", 1.5], - ["zoom"], - 10, - 0.5, - 18, - 20 - ], - "line-color": "hsl(0, 0%, 77%)" - } - }, - { - "id": "building", - "type": "fill", - "source": "composite", - "source-layer": "building", - "minzoom": 15, - "filter": [ - "all", - ["!=", "type", "building:part"], - ["==", "underground", "false"] - ], - "layout": {}, - "paint": { - "fill-color": "hsla(243, 8%, 86%, 0)", - "fill-opacity": [ - "interpolate", - ["linear"], - ["zoom"], - 15.5, - 0, - 16, - 1 - ] - } - }, - { - "id": "pedestrian-path", - "type": "line", - "source": "composite", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - ["==", "$type", "LineString"], - [ - "all", - ["!=", "type", "platform"], - ["in", "class", "path", "pedestrian"] - ] - ], - "layout": {"line-join": "round", "line-cap": "round"}, - "paint": { - "line-width": [ - "interpolate", - ["exponential", 1.5], - ["zoom"], - 14, - [ - "match", - ["get", "class"], - "pedestrian", - 1, - "path", - 0.75, - 0.75 - ], - 20, - ["match", ["get", "class"], "pedestrian", 8, "path", 5, 5] - ], - "line-color": [ - "match", - ["get", "type"], - "sidewalk", - "hsl(206, 8%, 67%)", - "crossing", - "hsl(38, 6%, 75%)", - [ - "", - "path", - "pedestrian", - "preserved", - "secondary", - "tertiary", - "footway" - ], - "hsla(139, 20%, 72%, 0.38)", - "hsl(254, 13%, 82%)" - ], - "line-opacity": [ - "match", - ["get", "class"], - ["", "park", "landuse"], - 0.81, - 0.81 - ] - } - }, - { - "id": "tunnel", - "type": "line", - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - ["==", "$type", "LineString"], - [ - "all", - ["!=", "type", "service:parking_aisle"], - ["==", "structure", "tunnel"], - [ - "in", - "class", - "link", - "motorway", - "motorway_link", - "primary", - "secondary", - "service", - "street", - "street_limited", - "tertiary", - "track", - "trunk" - ] - ] - ], - "layout": {"line-join": "round"}, - "paint": { - "line-width": [ - "interpolate", - ["exponential", 1.5], - ["zoom"], - 5, - [ - "match", - ["get", "class"], - "motorway", - 0.5, - "trunk", - 0.5, - "primary", - 0.5, - "secondary", - 0.01, - "tertiary", - 0.01, - "street", - 0, - "street_limited", - 0, - "motorway_link", - 0, - "service", - 0, - "track", - 0, - "link", - 0, - 0 - ], - 12, - [ - "match", - ["get", "class"], - "motorway", - 3, - "trunk", - 3, - "primary", - 3, - "secondary", - 2, - "tertiary", - 2, - "street", - 0.5, - "street_limited", - 0.5, - "motorway_link", - 0.5, - "service", - 0, - "track", - 0, - "link", - 0, - 0 - ], - 18, - [ - "match", - ["get", "class"], - "motorway", - 30, - "trunk", - 30, - "primary", - 30, - "secondary", - 24, - "tertiary", - 24, - "street", - 12, - "street_limited", - 12, - "motorway_link", - 12, - "service", - 10, - "track", - 10, - "link", - 10, - 10 - ] - ], - "line-color": [ - "match", - ["get", "class"], - "street", - "hsl(38, 100%, 98%)", - "street_limited", - "hsl(38, 100%, 98%)", - "service", - "hsl(38, 100%, 98%)", - "track", - "hsl(38, 100%, 98%)", - "link", - "hsl(38, 100%, 98%)", - "hsl(0, 0%, 100%)" - ], - "line-dasharray": [0.2, 0.2] - } - }, - { - "id": "road", - "type": "line", - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - ["==", "$type", "LineString"], - [ - "all", - ["!=", "type", "service:parking_aisle"], - ["!in", "structure", "bridge", "tunnel"], - [ - "in", - "class", - "link", - "motorway", - "motorway_link", - "primary", - "secondary", - "service", - "street", - "street_limited", - "tertiary", - "track", - "trunk" - ] - ] - ], - "layout": {"line-join": "round", "line-cap": "round"}, - "paint": { - "line-width": [ - "interpolate", - ["exponential", 1.5], - ["zoom"], - 5, - [ - "match", - ["get", "class"], - "motorway", - 0.5, - "trunk", - 0.5, - "primary", - 0.5, - "secondary", - 0.01, - "tertiary", - 0.01, - "street", - 0, - "street_limited", - 0, - "motorway_link", - 0, - "service", - 0, - "track", - 0, - "link", - 0, - 0 - ], - 12, - [ - "match", - ["get", "class"], - "motorway", - 3, - "trunk", - 3, - "primary", - 3, - "secondary", - 2, - "tertiary", - 2, - "street", - 0.5, - "street_limited", - 0.5, - "motorway_link", - 0.5, - "service", - 0, - "track", - 0, - "link", - 0, - 0 - ], - 18, - [ - "match", - ["get", "class"], - "motorway", - 30, - "trunk", - 30, - "primary", - 30, - "secondary", - 24, - "tertiary", - 24, - "street", - 12, - "street_limited", - 12, - "motorway_link", - 12, - "service", - 10, - "track", - 10, - "link", - 10, - 10 - ] - ], - "line-color": [ - "match", - ["get", "class"], - "street", - "hsl(270, 3%, 100%)", - "street_limited", - "hsl(38, 0%, 100%)", - "service", - "hsl(38, 0%, 100%)", - "track", - "hsl(38, 0%, 100%)", - "link", - "hsla(38, 0%, 100%, 0.67)", - "hsl(0, 0%, 100%)" - ] - } - }, - { - "id": "bridge-case", - "type": "line", - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - ["==", "$type", "LineString"], - [ - "all", - ["!=", "type", "service:parking_aisle"], - ["==", "structure", "bridge"], - [ - "in", - "class", - "link", - "motorway", - "motorway_link", - "primary", - "secondary", - "service", - "street", - "street_limited", - "tertiary", - "track", - "trunk" - ] - ] - ], - "layout": {"line-join": "round"}, - "paint": { - "line-width": [ - "interpolate", - ["exponential", 1.5], - ["zoom"], - 10, - 1, - 16, - 2 - ], - "line-color": "hsla(38, 0%, 74%, 0)", - "line-gap-width": [ - "interpolate", - ["exponential", 1.5], - ["zoom"], - 5, - [ - "match", - ["get", "class"], - "motorway", - 0.5, - "trunk", - 0.5, - "primary", - 0.5, - "secondary", - 0.01, - "tertiary", - 0.01, - "street", - 0, - "street_limited", - 0, - "motorway_link", - 0, - "service", - 0, - "track", - 0, - "link", - 0, - 0 - ], - 12, - [ - "match", - ["get", "class"], - "motorway", - 3, - "trunk", - 3, - "primary", - 3, - "secondary", - 2, - "tertiary", - 2, - "street", - 0.5, - "street_limited", - 0.5, - "motorway_link", - 0.5, - "service", - 0, - "track", - 0, - "link", - 0, - 0 - ], - 18, - [ - "match", - ["get", "class"], - "motorway", - 30, - "trunk", - 30, - "primary", - 30, - "secondary", - 24, - "tertiary", - 24, - "street", - 12, - "street_limited", - 12, - "motorway_link", - 12, - "service", - 10, - "track", - 10, - "link", - 10, - 10 - ] - ] - } - }, - { - "id": "bridge", - "type": "line", - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - ["==", "$type", "LineString"], - [ - "all", - ["!=", "type", "service:parking_aisle"], - ["==", "structure", "bridge"], - [ - "in", - "class", - "link", - "motorway", - "motorway_link", - "primary", - "secondary", - "service", - "street", - "street_limited", - "tertiary", - "track", - "trunk" - ] - ] - ], - "layout": {"line-join": "round", "line-cap": "round"}, - "paint": { - "line-width": [ - "interpolate", - ["exponential", 1.5], - ["zoom"], - 5, - [ - "match", - ["get", "class"], - "motorway", - 0.5, - "trunk", - 0.5, - "primary", - 0.5, - "secondary", - 0.01, - "tertiary", - 0.01, - "street", - 0, - "street_limited", - 0, - "motorway_link", - 0, - "service", - 0, - "track", - 0, - "link", - 0, - 0 - ], - 12, - [ - "match", - ["get", "class"], - "motorway", - 3, - "trunk", - 3, - "primary", - 3, - "secondary", - 2, - "tertiary", - 2, - "street", - 0.5, - "street_limited", - 0.5, - "motorway_link", - 0.5, - "service", - 0, - "track", - 0, - "link", - 0, - 0 - ], - 18, - [ - "match", - ["get", "class"], - "motorway", - 30, - "trunk", - 30, - "primary", - 30, - "secondary", - 24, - "tertiary", - 24, - "street", - 12, - "street_limited", - 12, - "motorway_link", - 12, - "service", - 10, - "track", - 10, - "link", - 10, - 10 - ] - ], - "line-color": [ - "match", - ["get", "class"], - "street", - "hsl(38, 100%, 98%)", - "street_limited", - "hsl(38, 100%, 98%)", - "service", - "hsl(38, 100%, 98%)", - "track", - "hsl(38, 100%, 98%)", - "link", - "hsl(38, 100%, 98%)", - "hsl(0, 0%, 100%)" - ] - } - }, - { - "id": "admin-state-province", - "type": "line", - "source": "composite", - "source-layer": "admin", - "minzoom": 2, - "filter": ["all", ["==", "maritime", 0], [">=", "admin_level", 3]], - "layout": {"line-join": "round", "line-cap": "round"}, - "paint": { - "line-dasharray": [ - "step", - ["zoom"], - ["literal", [2, 0]], - 7, - ["literal", [2, 2, 6, 2]] - ], - "line-width": [ - "interpolate", - ["linear"], - ["zoom"], - 7, - 0.75, - 12, - 1.5 - ], - "line-opacity": [ - "interpolate", - ["linear"], - ["zoom"], - 2, - 0, - 3, - 1 - ], - "line-color": [ - "step", - ["zoom"], - "hsl(0, 0%, 80%)", - 4, - "hsl(0, 0%, 65%)" - ] - } - }, - { - "id": "admin-country", - "type": "line", - "source": "composite", - "source-layer": "admin", - "minzoom": 1, - "filter": [ - "all", - ["<=", "admin_level", 2], - ["==", "disputed", 0], - ["==", "maritime", 0] - ], - "layout": {"line-join": "round", "line-cap": "round"}, - "paint": { - "line-color": "hsl(0, 0%, 50%)", - "line-width": [ - "interpolate", - ["linear"], - ["zoom"], - 3, - 0.5, - 10, - 2 - ] - } - }, - { - "id": "admin-country-disputed", - "type": "line", - "source": "composite", - "source-layer": "admin", - "minzoom": 1, - "filter": [ - "all", - ["<=", "admin_level", 2], - ["==", "disputed", 1], - ["==", "maritime", 0] - ], - "layout": {"line-join": "round"}, - "paint": { - "line-color": "hsl(0, 0%, 50%)", - "line-width": [ - "interpolate", - ["linear"], - ["zoom"], - 3, - 0.5, - 10, - 2 - ], - "line-dasharray": [1.5, 1.5] - } - }, - { - "id": "road-label", - "type": "symbol", - "source": "composite", - "source-layer": "road_label", - "minzoom": 12, - "filter": [ - "in", - "class", - "link", - "motorway", - "pedestrian", - "primary", - "secondary", - "street", - "street_limited", - "tertiary", - "trunk" - ], - "layout": { - "text-size": ["match", ["get", "class"], "motorway", 8, 8], - "text-max-angle": 30, - "text-transform": "uppercase", - "text-font": ["Unica77 LL Regular", "Arial Unicode MS Regular"], - "symbol-placement": "line", - "text-padding": 1, - "text-rotation-alignment": "map", - "text-pitch-alignment": "viewport", - "text-field": ["get", "name_en"], - "text-letter-spacing": 0.15, - "text-max-width": 11.5 - }, - "paint": { - "text-color": "hsla(0, 72%, 0%, 0.73)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "text-opacity": 1 - } - }, - { - "id": "poi-label", - "type": "symbol", - "source": "composite", - "source-layer": "poi_label", - "filter": ["<=", "scalerank", 3], - "layout": { - "text-line-height": 1.1, - "text-size": [ - "interpolate", - ["linear"], - ["zoom"], - 10, - 11, - 18, - 12 - ], - "text-max-angle": 38, - "text-font": [ - "EB Garamond Regular", - "Arial Unicode MS Regular" - ], - "text-padding": 2, - "text-offset": [0, 0.75], - "text-anchor": "top", - "text-field": ["get", "name_en"], - "text-letter-spacing": 0, - "text-max-width": 8 - }, - "paint": { - "text-color": "hsla(208, 14%, 11%, 0.55)", - "text-halo-color": "hsla(0, 0%, 100%, 0.32)", - "text-halo-width": 1, - "text-halo-blur": 0.5 - } - }, - { - "id": "airport-label", - "type": "symbol", - "source": "composite", - "source-layer": "airport_label", - "filter": ["<=", "scalerank", 2], - "layout": { - "text-line-height": 1.1, - "text-size": [ - "interpolate", - ["linear"], - ["zoom"], - 10, - 12, - 18, - 18 - ], - "icon-image": [ - "step", - ["zoom"], - ["concat", ["get", "maki"], "-11"], - 13, - ["concat", ["get", "maki"], "-15"] - ], - "text-font": ["Roboto Regular", "Arial Unicode MS Regular"], - "text-padding": 2, - "text-offset": [0, 0.75], - "text-anchor": "top", - "text-field": [ - "step", - ["zoom"], - ["get", "ref"], - 14, - ["get", "name_en"] - ], - "text-max-width": 9 - }, - "paint": { - "text-color": "hsl(38, 19%, 29%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1 - } - }, - { - "id": "place-neighborhood-suburb-label", - "type": "symbol", - "source": "composite", - "source-layer": "place_label", - "minzoom": 12, - "maxzoom": 15, - "filter": ["in", "type", "neighbourhood", "suburb"], - "layout": { - "text-field": ["get", "name_en"], - "text-transform": "uppercase", - "text-letter-spacing": 0.15, - "text-max-width": 8, - "text-font": ["Unica77 LL Regular", "Arial Unicode MS Regular"], - "text-padding": 3, - "text-size": [ - "interpolate", - ["linear"], - ["zoom"], - 12, - 9, - 16, - 12 - ] - }, - "paint": { - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "text-color": "hsl(279, 0%, 17%)" - } - }, - { - "id": "place-town-village-hamlet-label", - "type": "symbol", - "source": "composite", - "source-layer": "place_label", - "minzoom": 6, - "maxzoom": 14, - "filter": ["in", "type", "hamlet", "town", "village"], - "layout": { - "text-size": [ - "interpolate", - ["linear"], - ["zoom"], - 5, - ["match", ["get", "type"], "town", 9.5, 8], - 16, - ["match", ["get", "type"], "town", 20, 16] - ], - "text-font": [ - "step", - ["zoom"], - [ - "literal", - ["EB Garamond Regular", "Arial Unicode MS Regular"] - ], - 12, - [ - "match", - ["get", "type"], - "town", - [ - "literal", - ["EB Garamond Regular", "Arial Unicode MS Regular"] - ], - [ - "literal", - ["EB Garamond Regular", "Arial Unicode MS Regular"] - ] - ] - ], - "text-max-width": 7, - "text-field": ["get", "name_en"] - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-blur": 0.5, - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1 - } - }, - { - "id": "place-city-label-minor", - "type": "symbol", - "source": "composite", - "source-layer": "place_label", - "minzoom": 1, - "maxzoom": 14, - "filter": ["all", ["!has", "scalerank"], ["==", "type", "city"]], - "layout": { - "text-size": [ - "interpolate", - ["linear"], - ["zoom"], - 5, - 12, - 16, - 27 - ], - "text-font": [ - "EB Garamond Regular", - "Arial Unicode MS Regular" - ], - "text-max-width": 10, - "text-field": ["get", "name_en"] - }, - "paint": { - "text-color": [ - "interpolate", - ["linear"], - ["zoom"], - 5, - "hsl(0, 0%, 33%)", - 6, - "hsl(0, 0%, 36%)" - ], - "text-halo-blur": 0.5, - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1.25 - } - }, - { - "id": "place-city-label-major", - "type": "symbol", - "source": "composite", - "source-layer": "place_label", - "minzoom": 1, - "maxzoom": 14, - "filter": ["all", ["==", "type", "city"], ["has", "scalerank"]], - "layout": { - "text-size": [ - "interpolate", - ["linear"], - ["zoom"], - 5, - ["step", ["get", "scalerank"], 14, 4, 12], - 16, - ["step", ["get", "scalerank"], 30, 4, 22] - ], - "text-font": [ - "step", - ["zoom"], - [ - "literal", - ["Unica77 LL Medium", "Arial Unicode MS Regular"] - ], - 11, - [ - "step", - ["get", "scalerank"], - [ - "literal", - ["EB Garamond Regular", "Arial Unicode MS Bold"] - ], - 5, - [ - "literal", - ["EB Garamond Regular", "Arial Unicode MS Regular"] - ] - ] - ], - "text-max-width": 10, - "text-field": ["get", "name_en"], - "text-letter-spacing": 0 - }, - "paint": { - "text-color": [ - "interpolate", - ["linear"], - ["zoom"], - 5, - "hsl(0, 0%, 33%)", - 6, - "hsl(0, 0%, 0%)" - ], - "text-halo-blur": 0.5, - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1.25, - "text-opacity": 1 - } - }, - { - "id": "state-label", - "type": "symbol", - "source": "composite", - "source-layer": "state_label", - "minzoom": 4, - "maxzoom": 8, - "layout": { - "text-line-height": 1.2, - "text-size": [ - "interpolate", - ["linear"], - ["zoom"], - 4, - ["step", ["get", "area"], 8, 20000, 9, 80000, 10], - 9, - ["step", ["get", "area"], 14, 20000, 18, 80000, 23] - ], - "text-transform": "uppercase", - "text-font": ["Roboto Black", "Arial Unicode MS Bold"], - "text-padding": 1, - "text-field": [ - "step", - ["zoom"], - [ - "step", - ["get", "area"], - ["get", "abbr"], - 80000, - ["get", "name_en"] - ], - 5, - ["get", "name_en"] - ], - "text-letter-spacing": 0.2, - "text-max-width": 6 - }, - "paint": { - "text-color": "hsl(38, 7%, 64%)", - "text-halo-width": 1, - "text-halo-color": "hsl(0, 0%, 100%)" - } - }, - { - "id": "country-label", - "type": "symbol", - "source": "composite", - "source-layer": "country_label", - "minzoom": 1, - "maxzoom": 8, - "layout": { - "text-field": ["get", "name_en"], - "text-max-width": [ - "interpolate", - ["linear"], - ["zoom"], - 0, - 5, - 3, - 6 - ], - "text-font": [ - "step", - ["zoom"], - ["literal", ["Roboto Medium", "Arial Unicode MS Regular"]], - 4, - ["literal", ["Roboto Bold", "Arial Unicode MS Bold"]] - ], - "text-size": [ - "interpolate", - ["linear"], - ["zoom"], - 2, - ["step", ["get", "scalerank"], 13, 3, 11, 5, 9], - 9, - ["step", ["get", "scalerank"], 35, 3, 27, 5, 22] - ] - }, - "paint": { - "text-halo-width": 1.5, - "text-halo-color": "hsl(0, 0%, 100%)", - "text-color": "hsl(0, 0%, 0%)" - } - } - ], - "created": "2018-12-12T14:00:00.406Z", - "id": "cjpl8rt6t0gv12sp9bfpygswz", - "modified": "2018-12-13T18:28:47.364Z", - "owner": "biron-io", - "visibility": "private", - "draft": false -} \ No newline at end of file diff --git a/emission/Example/compile_commands_emitting_clang b/emission/Example/compile_commands_emitting_clang deleted file mode 100755 index b8978cf06bb..00000000000 --- a/emission/Example/compile_commands_emitting_clang +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -CLANG="${DT_TOOLCHAIN_DIR}/usr/bin/clang" - -if type -p clang-compilation-database-tool > /dev/null 2>&1; then - clang-compilation-database-tool dump ${CLANG} $@ -fi - -exec ${CLANG} $@ \ No newline at end of file diff --git a/emission/LICENSE b/emission/LICENSE deleted file mode 100644 index 01c6419254b..00000000000 --- a/emission/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2018 Artsy Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/emission/Makefile b/emission/Makefile deleted file mode 100644 index 018c3f990cf..00000000000 --- a/emission/Makefile +++ /dev/null @@ -1,101 +0,0 @@ -BREW := $(shell command -v brew 2> /dev/null) -NVM := $(shell command -v nvm 2> /dev/null) -YARN := $(shell command -v yarn 2> /dev/null) -WATCHMAN := $(shell command -v watchman 2> /dev/null) -CODE := $(shell command -v code 2> /dev/null) - -setup: -ifndef BREW - $(error "Please install homebrew before running `make oss`: https://brew.sh") -endif - -ifndef NVM - @echo "Installing NVM" - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash - nvm install 12 -endif - -ifndef YARN - @echo "Installing Yarn" - npm install -g yarn -endif - -ifndef WATCHMAN - @echo "Installing Watchman" - brew install pcre - brew link pcre - brew install watchman --HEAD -endif - -ifndef CODE - @echo "Installing Visual Studio Code" - brew cask install visual-studio-code -endif - - @echo "Installing Node Dependencies" - yarn install - - @echo ""; - @echo ""; - @echo "That is all of the dependencies for Emission set up, to run the app:"; - @echo ""; - @echo " - Ensure you have an Artsy account: $$(tput setaf 3)https://www.artsy.net/sign_up$$(tput sgr0)" - @echo " - Open the folder in VS Code: '$$(tput setaf 3)code .$$(tput sgr0)'" - @echo " - Start the dev server: '$$(tput setaf 3)yarn start$$(tput sgr0)'" - @echo " - Open Xcode, and run Emission: '$$(tput setaf 3)open Example/Emission.xcworkspace$$(tput sgr0)'" - @echo "" - @echo "Any other details can be found in the README." - @echo "Enjoy!" - @echo "" - -artsy: - cd Example && bundle && bundle exec pod install - -oss: - @echo "Installing Cocoa Dependencies" - cd Example && bundle && bundle exec pod keys set ArtsyAPIClientSecret "3a33d2085cbd1176153f99781bbce7c6" Emission - cd Example && bundle exec pod keys set ArtsyAPIClientKey "e750db60ac506978fc70" - cd Example && bundle exec pod keys set StripePublishableKey "-" - cd Example && bundle exec pod keys set MapBoxAPIClientKey "-" - - -JQ := $(shell command -v jq 2> /dev/null) -RNVERSION=$(shell cd node_modules/react-native && pod ipc spec React.podspec | jq '.version' -r) -YOGAVERSION=$(shell cd node_modules/react-native/ReactCommon/yoga && pod ipc spec yoga.podspec | jq '.version' -r) -YOGA_SRC_BEFORE=yoga\/\*\*\/\*.{c,h} -YOGA_SRC_AFTER=ReactCommon\/yoga\/yoga\/\*\*\/\*.\{c,h\} -YOGA_MASTER_PODSPEC_URL = "https://raw.githubusercontent.com/facebook/react-native/master/ReactCommon/yoga/yoga.podspec" - -# This is only needed if you're updating React Native -update_specs_repos: -ifndef JQ - $(error "Please install jq before running `brew install jq`") -endif - - # Comment out Yoga, as it's dealt with below in ship_yoga - - @echo "Updating Artsy specs repo"; - pod repo update artsy - - @echo "Creating folder in artsy specs repo"; - mkdir ~/.cocoapods/repos/artsy/React/$(RNVERSION) - # mkdir ~/.cocoapods/repos/artsy/yoga/$(YOGAVERSION) - - @echo "Putting JSON specs in the folders"; - cd node_modules/react-native && pod ipc spec React.podspec > ~/.cocoapods/repos/artsy/React/$(RNVERSION)/React.podspec.json - # cd node_modules/react-native/ReactCommon/yoga && pod ipc spec yoga.podspec > ~/.cocoapods/repos/artsy/yoga/$(YOGAVERSION)/yoga.podspec.json - - # @echo "Modifying Yoga to reflect the React Native repo paths" - # sed -i -e 's/$(YOGA_SRC_BEFORE)/$(YOGA_SRC_AFTER)/g' ~/.cocoapods/repos/artsy/Yoga/$(YOGAVERSION)/Yoga.podspec.json - - @echo "Commiting the changes to our shared repo" - cd ~/.cocoapods/repos/artsy && git add . - cd ~/.cocoapods/repos/artsy && git commit -m "Shipping a new version of the React deps: v$(RNVERSION) for Emission deploys" - cd ~/.cocoapods/repos/artsy && git push - -# Use this PR for yoga podspec -# https://github.com/facebook/react-native/pull/18492 -ship_yoga: - # curl $(YOGA_MASTER_PODSPEC_URL) > ./externals/yoga/yoga.podspec - INSTALL_YOGA_WITHOUT_PATH_OPTION="true" pod ipc spec ./externals/yoga/yoga.podspec > ./externals/yoga/yoga.podspec.json - # rm -f ./externals/yoga/yoga.podspec diff --git a/emission/Pod/Assets/Emission.js b/emission/Pod/Assets/Emission.js deleted file mode 100644 index bb50fb29728..00000000000 --- a/emission/Pod/Assets/Emission.js +++ /dev/null @@ -1,1908 +0,0 @@ -var __BUNDLE_START_TIME__=this.nativePerformanceNow?nativePerformanceNow():Date.now(),__DEV__=false,process=this.process||{};process.env=process.env||{};process.env.NODE_ENV=process.env.NODE_ENV||"production"; -!(function(r){"use strict";r.__r=o,r.__d=function(r,i,n){if(null!=e[i])return;var o={dependencyMap:n,factory:r,hasError:!1,importedAll:t,importedDefault:t,isInitialized:!1,publicModule:{exports:{}}};e[i]=o},r.__c=n,r.__registerSegment=function(r,e){s[r]=e};var e=n(),t={},i={}.hasOwnProperty;function n(){return e=Object.create(null)}function o(r){var t=r,i=e[t];return i&&i.isInitialized?i.publicModule.exports:d(t,i)}function l(r){var i=r;if(e[i]&&e[i].importedDefault!==t)return e[i].importedDefault;var n=o(i),l=n&&n.__esModule?n.default:n;return e[i].importedDefault=l}function u(r){var n=r;if(e[n]&&e[n].importedAll!==t)return e[n].importedAll;var l,u=o(n);if(u&&u.__esModule)l=u;else{if(l={},u)for(var a in u)i.call(u,a)&&(l[a]=u[a]);l.default=u}return e[n].importedAll=l}o.importDefault=l,o.importAll=u;var a=!1;function d(e,t){if(!a&&r.ErrorUtils){var i;a=!0;try{i=v(e,t)}catch(e){r.ErrorUtils.reportFatalError(e)}return a=!1,i}return v(e,t)}var c=16,f=65535;function p(r){return{segmentId:r>>>c,localId:r&f}}o.unpackModuleId=p,o.packModuleId=function(r){return(r.segmentId<0){var n=p(t),a=n.segmentId,d=n.localId,c=s[a];null!=c&&(c(d),i=e[t])}var f=r.nativeRequire;if(!i&&f){var v=p(t),h=v.segmentId;f(v.localId,h),i=e[t]}if(!i)throw Error('Requiring unknown module "'+t+'".');if(i.hasError)throw m(t,i.error);i.isInitialized=!0;var I=i,g=I.factory,y=I.dependencyMap;try{var _=i.publicModule;return _.id=t,g(r,o,l,u,_,_.exports,y),i.factory=void 0,i.dependencyMap=void 0,_.exports}catch(r){throw i.hasError=!0,i.error=r,i.isInitialized=!1,i.publicModule.exports=void 0,r}}function m(r,e){return Error('Requiring module "'+r+'", which threw an exception: '+e)}})('undefined'!=typeof globalThis?globalThis:'undefined'!=typeof global?global:'undefined'!=typeof window?window:this); -!(function(n){var e=(function(){function n(n,e){return n}function e(n){var e={};return n.forEach(function(n,r){e[n]=!0}),e}function r(n,r,u){if(n.formatValueCalls++,n.formatValueCalls>200)return"[TOO BIG formatValueCalls "+n.formatValueCalls+" exceeded limit of 200]";var f=t(n,r);if(f)return f;var c=Object.keys(r),s=e(c);if(d(r)&&(c.indexOf('message')>=0||c.indexOf('description')>=0))return o(r);if(0===c.length){if(v(r)){var p=r.name?': '+r.name:'';return n.stylize('[Function'+p+']','special')}if(g(r))return n.stylize(RegExp.prototype.toString.call(r),'regexp');if(y(r))return n.stylize(Date.prototype.toString.call(r),'date');if(d(r))return o(r)}var h,b,m='',j=!1,O=['{','}'];(h=r,Array.isArray(h)&&(j=!0,O=['[',']']),v(r))&&(m=' [Function'+(r.name?': '+r.name:'')+']');return g(r)&&(m=' '+RegExp.prototype.toString.call(r)),y(r)&&(m=' '+Date.prototype.toUTCString.call(r)),d(r)&&(m=' '+o(r)),0!==c.length||j&&0!=r.length?u<0?g(r)?n.stylize(RegExp.prototype.toString.call(r),'regexp'):n.stylize('[Object]','special'):(n.seen.push(r),b=j?i(n,r,u,s,c):c.map(function(e){return a(n,r,u,s,e,j)}),n.seen.pop(),l(b,m,O)):O[0]+m+O[1]}function t(n,e){if(s(e))return n.stylize('undefined','undefined');if('string'==typeof e){var r="'"+JSON.stringify(e).replace(/^"|"$/g,'').replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return n.stylize(r,'string')}return c(e)?n.stylize(''+e,'number'):u(e)?n.stylize(''+e,'boolean'):f(e)?n.stylize('null','null'):void 0}function o(n){return'['+Error.prototype.toString.call(n)+']'}function i(n,e,r,t,o){for(var i=[],l=0,u=e.length;l-1&&(u=a?u.split('\n').map(function(n){return' '+n}).join('\n').substr(2):'\n'+u.split('\n').map(function(n){return' '+n}).join('\n')):u=n.stylize('[Circular]','special')),s(l)){if(a&&i.match(/^\d+$/))return u;(l=JSON.stringify(''+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(l=l.substr(1,l.length-2),l=n.stylize(l,'name')):(l=l.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),l=n.stylize(l,'string'))}return l+': '+u}function l(n,e,r){return n.reduce(function(n,e){return 0,e.indexOf('\n')>=0&&0,n+e.replace(/\u001b\[\d\d?m/g,'').length+1},0)>60?r[0]+(''===e?'':e+'\n ')+' '+n.join(',\n ')+' '+r[1]:r[0]+e+' '+n.join(', ')+' '+r[1]}function u(n){return'boolean'==typeof n}function f(n){return null===n}function c(n){return'number'==typeof n}function s(n){return void 0===n}function g(n){return p(n)&&'[object RegExp]'===h(n)}function p(n){return'object'==typeof n&&null!==n}function y(n){return p(n)&&'[object Date]'===h(n)}function d(n){return p(n)&&('[object Error]'===h(n)||n instanceof Error)}function v(n){return'function'==typeof n}function h(n){return Object.prototype.toString.call(n)}function b(n,e){return Object.prototype.hasOwnProperty.call(n,e)}return function(e,t){return r({seen:[],formatValueCalls:0,stylize:n},e,t.depth)}})(),r='(index)',t={trace:0,info:1,warn:2,error:3},o=[];o[t.trace]='debug',o[t.info]='log',o[t.warn]='warning',o[t.error]='error';var i=1;function a(r){return function(){var a;a=1===arguments.length&&'string'==typeof arguments[0]?arguments[0]:Array.prototype.map.call(arguments,function(n){return e(n,{depth:10})}).join(', ');var l=r;'Warning: '===a.slice(0,9)&&l>=t.error&&(l=t.warn),n.__inspectorLog&&n.__inspectorLog(o[l],a,[].slice.call(arguments),i),s.length&&(a=g('',a)),n.nativeLoggingHook(a,l)}}function l(n,e){return Array.apply(null,Array(e)).map(function(){return n})}var u="\u2502",f="\u2510",c="\u2518",s=[];function g(n,e){return s.join('')+n+' '+(e||'')}if(n.nativeLoggingHook){n.console;n.console={error:a(t.error),info:a(t.info),log:a(t.info),warn:a(t.warn),trace:a(t.trace),debug:a(t.trace),table:function(e){if(!Array.isArray(e)){var o=e;for(var i in e=[],o)if(o.hasOwnProperty(i)){var a=o[i];a[r]=i,e.push(a)}}if(0!==e.length){var u=Object.keys(e[0]).sort(),f=[],c=[];u.forEach(function(n,r){c[r]=n.length;for(var t=0;t';return function(){for(var r,u=arguments.length,o=new Array(u),a=0;a0?s[s.length-1]:null,h=s.length>1?s[s.length-2]:null,y='function'==typeof v,C='function'==typeof h;C&&u(y,'Cannot have a non-function arg after a function arg.');var p=y?v:null,M=C?h:null,b=y+C;if(s=s.slice(0,s.length-b),'sync'===l)return o.callNativeSyncHook(n,t,s,M,p);o.enqueueNativeCall(n,t,s,M,p)}).type=l,f}function c(n,t){return-1!==n.indexOf(t)}function v(t,o){return n(o,t||{})}g.__fbGenNativeModule=l;var h={};if(g.nativeModuleProxy)h=g.nativeModuleProxy;else if(!g.nativeExtensions){var y=g.__fbBatchedBridgeConfig;u(y,'__fbBatchedBridgeConfig is not set, cannot invoke native modules');var C=r(d[4]);(y.remoteModuleConfig||[]).forEach(function(n,t){var o=l(n,t);o&&(o.module?h[o.name]=o.module:C(h,o.name,{get:function(){return f(o.name,t)}}))})}m.exports=h},13,[14,15,19,4,31]); -__d(function(g,r,i,a,m,e,d){function t(){return m.exports=t=Object.assign||function(t){for(var n=1;n=5){var c=this._queue;this._queue=[[],[],[],this._callID],this._lastFlush=o,g.nativeFlushQueueImmediate(c)}n.counterEvent('pending_js_to_native_queue',this._queue[0].length),this.__spy&&this.__spy({type:1,module:t+'',method:l,args:u})}},{key:"createDebugLookup",value:function(t,l,u){}},{key:"setImmediatesCallback",value:function(t){this._immediatesCallback=t}},{key:"__guard",value:function(t){if(this.__shouldPauseOnThrow())t();else try{t()}catch(t){s.reportFatalError(t)}}},{key:"__shouldPauseOnThrow",value:function(){return'undefined'!=typeof DebuggerInternal&&!0===DebuggerInternal.shouldPauseOnThrow}},{key:"__callImmediates",value:function(){n.beginEvent('JSTimers.callImmediates()'),null!=this._immediatesCallback&&this._immediatesCallback(),n.endEvent()}},{key:"__callFunction",value:function(t,l,u){this._lastFlush=Date.now(),this._eventLoopStartTime=this._lastFlush,this.__spy?n.beginEvent(t+"."+l+"("+o(u)+")"):n.beginEvent(t+"."+l+"(...)"),this.__spy&&this.__spy({type:0,module:t,method:l,args:u});var s=this.getCallableModule(t);h(!!s,'Module %s is not a registered callable module (calling %s)',t,l),h(!!s[l],'Method %s does not exist on module %s',l,t);var c=s[l].apply(s,u);return n.endEvent(),c}},{key:"__invokeCallback",value:function(l,u){this._lastFlush=Date.now(),this._eventLoopStartTime=this._lastFlush;var s=l>>>1,n=1&l?this._successCallbacks.get(s):this._failureCallbacks.get(s);n&&(this._successCallbacks.delete(s),this._failureCallbacks.delete(s),n.apply(void 0,t(u)))}}],[{key:"spy",value:function(t){c.prototype.__spy=!0===t?function(t){console.log((0===t.type?'N->JS':'JS->N')+" : "+(t.module?t.module+'.':'')+t.method+"("+JSON.stringify(t.args)+")")}:!1===t?null:t}}]),c})());m.exports=c},20,[21,25,26,27,28,29,4,30,5]); -__d(function(g,r,i,a,m,e,d){var n=r(d[0]),t=r(d[1]),o=r(d[2]);m.exports=function(u){return n(u)||t(u)||o()}},21,[22,23,24]); -__d(function(g,r,i,a,m,e,d){m.exports=function(n){if(Array.isArray(n)){for(var t=0,f=new Array(n.length);t=0||Object.prototype.propertyIsEnumerable.call(n,l)&&(b[l]=n[l])}return b}},53,[54]); -__d(function(g,r,i,a,m,e,d){m.exports=function(n,t){if(null==n)return{};var f,u,o={},c=Object.keys(n);for(u=0;u=0||(o[f]=n[f]);return o}},54,[]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0])(r(d[1])),s={__constants:null,OS:'ios',get Version(){return this.constants.osVersion},get constants(){return null==this.__constants&&(this.__constants=t.default.getConstants()),this.__constants},get isPad(){return'pad'===this.constants.interfaceIdiom},get isTVOS(){return s.isTV},get isTV(){return'tv'===this.constants.interfaceIdiom},get isTesting(){return!1},select:function(t){return'ios'in t?t.ios:t.default}};m.exports=s},55,[9,56]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(r(d[1])).getEnforcing('PlatformConstants');e.default=n},56,[11,12]); -__d(function(g,r,i,a,m,e,d){'use strict';m.exports=r(d[0])},57,[58]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n="function"==typeof Symbol&&("function"==typeof Symbol?Symbol.for:"@@for"),o=n?("function"==typeof Symbol?Symbol.for:"@@for")("react.element"):60103,u=n?("function"==typeof Symbol?Symbol.for:"@@for")("react.portal"):60106,f=n?("function"==typeof Symbol?Symbol.for:"@@for")("react.fragment"):60107,l=n?("function"==typeof Symbol?Symbol.for:"@@for")("react.strict_mode"):60108,c=n?("function"==typeof Symbol?Symbol.for:"@@for")("react.profiler"):60114,s=n?("function"==typeof Symbol?Symbol.for:"@@for")("react.provider"):60109,y=n?("function"==typeof Symbol?Symbol.for:"@@for")("react.context"):60110,p=n?("function"==typeof Symbol?Symbol.for:"@@for")("react.forward_ref"):60112,b=n?("function"==typeof Symbol?Symbol.for:"@@for")("react.suspense"):60113,v=n?("function"==typeof Symbol?Symbol.for:"@@for")("react.suspense_list"):60120,S=n?("function"==typeof Symbol?Symbol.for:"@@for")("react.memo"):60115,h=n?("function"==typeof Symbol?Symbol.for:"@@for")("react.lazy"):60116;n&&("function"==typeof Symbol?Symbol.for:"@@for")("react.fundamental"),n&&("function"==typeof Symbol?Symbol.for:"@@for")("react.responder");var _="function"==typeof Symbol&&("function"==typeof Symbol?Symbol.iterator:"@@iterator");function k(t){for(var n=t.message,o="https://reactjs.org/docs/error-decoder.html?invariant="+n,u=1;uD.length&&D.push(t)}function N(t,n,f,l){var c=typeof t;"undefined"!==c&&"boolean"!==c||(t=null);var s=!1;if(null===t)s=!0;else switch(c){case"string":case"number":s=!0;break;case"object":switch(t.$$typeof){case o:case u:s=!0}}if(s)return f(l,t,""===n?"."+z(t,0):n),1;if(s=0,n=""===n?".":n+":",Array.isArray(t))for(var y=0;y1&&(t-=1),t<.16666666666666666?l+6*(n-l)*t:t<.5?n:t<.6666666666666666?l+(n-l)*(.6666666666666666-t)*6:l}function n(n,t,o){var u=o<.5?o*(1+t):o+t-o*t,s=2*o-u,h=l(s,u,n+.3333333333333333),c=l(s,u,n),b=l(s,u,n-.3333333333333333);return Math.round(255*h)<<24|Math.round(255*c)<<16|Math.round(255*b)<<8}var t,o='[-+]?\\d*\\.?\\d+',u="[-+]?\\d*\\.?\\d+%";function s(){for(var l=arguments.length,n=new Array(l),t=0;t255?255:n}function c(l){return(parseFloat(l)%360+360)%360/360}function b(l){var n=parseFloat(l);return n<0?0:n>1?255:Math.round(255*n)}function p(l){var n=parseFloat(l);return n<0?0:n>100?1:n/100}var y={transparent:0,aliceblue:4042850303,antiquewhite:4209760255,aqua:16777215,aquamarine:2147472639,azure:4043309055,beige:4126530815,bisque:4293182719,black:255,blanchedalmond:4293643775,blue:65535,blueviolet:2318131967,brown:2771004159,burlywood:3736635391,burntsienna:3934150143,cadetblue:1604231423,chartreuse:2147418367,chocolate:3530104575,coral:4286533887,cornflowerblue:1687547391,cornsilk:4294499583,crimson:3692313855,cyan:16777215,darkblue:35839,darkcyan:9145343,darkgoldenrod:3095792639,darkgray:2846468607,darkgreen:6553855,darkgrey:2846468607,darkkhaki:3182914559,darkmagenta:2332068863,darkolivegreen:1433087999,darkorange:4287365375,darkorchid:2570243327,darkred:2332033279,darksalmon:3918953215,darkseagreen:2411499519,darkslateblue:1211993087,darkslategray:793726975,darkslategrey:793726975,darkturquoise:13554175,darkviolet:2483082239,deeppink:4279538687,deepskyblue:12582911,dimgray:1768516095,dimgrey:1768516095,dodgerblue:512819199,firebrick:2988581631,floralwhite:4294635775,forestgreen:579543807,fuchsia:4278255615,gainsboro:3705462015,ghostwhite:4177068031,gold:4292280575,goldenrod:3668254975,gray:2155905279,green:8388863,greenyellow:2919182335,grey:2155905279,honeydew:4043305215,hotpink:4285117695,indianred:3445382399,indigo:1258324735,ivory:4294963455,khaki:4041641215,lavender:3873897215,lavenderblush:4293981695,lawngreen:2096890111,lemonchiffon:4294626815,lightblue:2916673279,lightcoral:4034953471,lightcyan:3774873599,lightgoldenrodyellow:4210742015,lightgray:3553874943,lightgreen:2431553791,lightgrey:3553874943,lightpink:4290167295,lightsalmon:4288707327,lightseagreen:548580095,lightskyblue:2278488831,lightslategray:2005441023,lightslategrey:2005441023,lightsteelblue:2965692159,lightyellow:4294959359,lime:16711935,limegreen:852308735,linen:4210091775,magenta:4278255615,maroon:2147483903,mediumaquamarine:1724754687,mediumblue:52735,mediumorchid:3126187007,mediumpurple:2473647103,mediumseagreen:1018393087,mediumslateblue:2070474495,mediumspringgreen:16423679,mediumturquoise:1221709055,mediumvioletred:3340076543,midnightblue:421097727,mintcream:4127193855,mistyrose:4293190143,moccasin:4293178879,navajowhite:4292783615,navy:33023,oldlace:4260751103,olive:2155872511,olivedrab:1804477439,orange:4289003775,orangered:4282712319,orchid:3664828159,palegoldenrod:4008225535,palegreen:2566625535,paleturquoise:2951671551,palevioletred:3681588223,papayawhip:4293907967,peachpuff:4292524543,peru:3448061951,pink:4290825215,plum:3718307327,powderblue:2967529215,purple:2147516671,rebeccapurple:1714657791,red:4278190335,rosybrown:3163525119,royalblue:1097458175,saddlebrown:2336560127,salmon:4202722047,sandybrown:4104413439,seagreen:780883967,seashell:4294307583,sienna:2689740287,silver:3233857791,skyblue:2278484991,slateblue:1784335871,slategray:1887473919,slategrey:1887473919,snow:4294638335,springgreen:16744447,steelblue:1182971135,tan:3535047935,teal:8421631,thistle:3636451583,tomato:4284696575,turquoise:1088475391,violet:4001558271,wheat:4125012991,white:4294967295,whitesmoke:4126537215,yellow:4294902015,yellowgreen:2597139199};m.exports=function(l){var k,f=(void 0===t&&(t={rgb:new RegExp('rgb'+s(o,o,o)),rgba:new RegExp('rgba'+s(o,o,o,o)),hsl:new RegExp('hsl'+s(o,u,u)),hsla:new RegExp('hsla'+s(o,u,u,o)),hex3:/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex4:/^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#([0-9a-fA-F]{6})$/,hex8:/^#([0-9a-fA-F]{8})$/}),t);return'number'==typeof l?l>>>0===l&&l>=0&&l<=4294967295?l:null:(k=f.hex6.exec(l))?parseInt(k[1]+'ff',16)>>>0:y.hasOwnProperty(l)?y[l]:(k=f.rgb.exec(l))?(h(k[1])<<24|h(k[2])<<16|h(k[3])<<8|255)>>>0:(k=f.rgba.exec(l))?(h(k[1])<<24|h(k[2])<<16|h(k[3])<<8|b(k[4]))>>>0:(k=f.hex3.exec(l))?parseInt(k[1]+k[1]+k[2]+k[2]+k[3]+k[3]+'ff',16)>>>0:(k=f.hex8.exec(l))?parseInt(k[1],16)>>>0:(k=f.hex4.exec(l))?parseInt(k[1]+k[1]+k[2]+k[2]+k[3]+k[3]+k[4]+k[4],16)>>>0:(k=f.hsl.exec(l))?(255|n(c(k[1]),p(k[2]),p(k[3])))>>>0:(k=f.hsla.exec(l))?(n(c(k[1]),p(k[2]),p(k[3]))|b(k[4]))>>>0:null}},68,[]); -__d(function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]),t={display:n.oneOf(['none','flex']),width:n.oneOfType([n.number,n.string]),height:n.oneOfType([n.number,n.string]),start:n.oneOfType([n.number,n.string]),end:n.oneOfType([n.number,n.string]),top:n.oneOfType([n.number,n.string]),left:n.oneOfType([n.number,n.string]),right:n.oneOfType([n.number,n.string]),bottom:n.oneOfType([n.number,n.string]),minWidth:n.oneOfType([n.number,n.string]),maxWidth:n.oneOfType([n.number,n.string]),minHeight:n.oneOfType([n.number,n.string]),maxHeight:n.oneOfType([n.number,n.string]),margin:n.oneOfType([n.number,n.string]),marginVertical:n.oneOfType([n.number,n.string]),marginHorizontal:n.oneOfType([n.number,n.string]),marginTop:n.oneOfType([n.number,n.string]),marginBottom:n.oneOfType([n.number,n.string]),marginLeft:n.oneOfType([n.number,n.string]),marginRight:n.oneOfType([n.number,n.string]),marginStart:n.oneOfType([n.number,n.string]),marginEnd:n.oneOfType([n.number,n.string]),padding:n.oneOfType([n.number,n.string]),paddingVertical:n.oneOfType([n.number,n.string]),paddingHorizontal:n.oneOfType([n.number,n.string]),paddingTop:n.oneOfType([n.number,n.string]),paddingBottom:n.oneOfType([n.number,n.string]),paddingLeft:n.oneOfType([n.number,n.string]),paddingRight:n.oneOfType([n.number,n.string]),paddingStart:n.oneOfType([n.number,n.string]),paddingEnd:n.oneOfType([n.number,n.string]),borderWidth:n.number,borderTopWidth:n.number,borderStartWidth:n.number,borderEndWidth:n.number,borderRightWidth:n.number,borderBottomWidth:n.number,borderLeftWidth:n.number,position:n.oneOf(['absolute','relative']),flexDirection:n.oneOf(['row','row-reverse','column','column-reverse']),flexWrap:n.oneOf(['wrap','nowrap','wrap-reverse']),justifyContent:n.oneOf(['flex-start','flex-end','center','space-between','space-around','space-evenly']),alignItems:n.oneOf(['flex-start','flex-end','center','stretch','baseline']),alignSelf:n.oneOf(['auto','flex-start','flex-end','center','stretch','baseline']),alignContent:n.oneOf(['flex-start','flex-end','center','stretch','space-between','space-around']),overflow:n.oneOf(['visible','hidden','scroll']),flex:n.number,flexGrow:n.number,flexShrink:n.number,flexBasis:n.oneOfType([n.number,n.string]),aspectRatio:n.number,zIndex:n.number,direction:n.oneOf(['inherit','ltr','rtl'])};m.exports=t},69,[70]); -__d(function(g,r,i,a,m,e,d){m.exports=r(d[0])()},70,[71]); -__d(function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]);function t(){}function o(){}o.resetWarningCache=t,m.exports=function(){function p(t,o,p,c,s,y){if(y!==n){var f=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw f.name='Invariant Violation',f}}function c(){return p}p.isRequired=p;var s={array:p,bool:p,func:p,number:p,object:p,string:p,symbol:p,any:p,arrayOf:c,element:p,elementType:p,instanceOf:c,node:p,objectOf:c,oneOf:c,oneOfType:c,shape:c,exact:c,checkPropTypes:o,resetWarningCache:t};return s.PropTypes=s,s}},71,[72]); -__d(function(g,r,i,a,m,e,d){'use strict';m.exports='SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'},72,[]); -__d(function(g,r,i,a,m,e,d){'use strict';var s=r(d[0]),h=r(d[1]),o={shadowColor:s,shadowOffset:h.shape({width:h.number,height:h.number}),shadowOpacity:h.number,shadowRadius:h.number};m.exports=o},73,[67,70]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),s=r(d[1]),n={transform:t.arrayOf(t.oneOfType([t.shape({perspective:t.number}),t.shape({rotate:t.string}),t.shape({rotateX:t.string}),t.shape({rotateY:t.string}),t.shape({rotateZ:t.string}),t.shape({scale:t.number}),t.shape({scaleX:t.number}),t.shape({scaleY:t.number}),t.shape({translateX:t.number}),t.shape({translateY:t.number}),t.shape({skewX:t.string}),t.shape({skewY:t.string})])),transformMatrix:function(t,s,n){if(t[s])return new Error("The transformMatrix style property is deprecated. Use `transform: [{ matrix: ... }]` instead.")},decomposedMatrix:function(t,s,n){if(t[s])return new Error("The decomposedMatrix style property is deprecated. Use `transform: [...]` instead.")},scaleX:s(t.number,'Use the transform prop instead.'),scaleY:s(t.number,'Use the transform prop instead.'),rotation:s(t.number,'Use the transform prop instead.'),translateX:s(t.number,'Use the transform prop instead.'),translateY:s(t.number,'Use the transform prop instead.')};m.exports=n},74,[70,75]); -__d(function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]);m.exports=function(t,o){return function(c,u,p){n.getViewManagerConfig(p)||void 0===c[u]||console.warn("`"+u+"` supplied to `"+p+"` has been deprecated. "+o);for(var s=arguments.length,f=new Array(s>3?s-3:0),l=3;l>>8)>>>0:void 0}},83,[55,68]); -__d(function(g,r,i,a,m,e,d){'use strict';r(d[0]),r(d[1]),r(d[2]),r(d[3]);m.exports=function(t){return t}},84,[85,55,4,30]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),o={createIdentityMatrix:function(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},createCopy:function(t){return[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15]]},createOrthographic:function(t,n,o,u,s,c){return[2/(n-t),0,0,0,0,2/(u-o),0,0,0,0,-2/(c-s),0,-(n+t)/(n-t),-(u+o)/(u-o),-(c+s)/(c-s),1]},createFrustum:function(t,n,o,u,s,c){var v=1/(n-t),f=1/(u-o),h=1/(s-c);return[s*v*2,0,0,0,0,s*f*2,0,0,(n+t)*v,(u+o)*f,(c+s)*h,-1,0,0,c*s*h*2,0]},createPerspective:function(t,n,o,u){var s=1/Math.tan(t/2),c=1/(o-u);return[s/n,0,0,0,0,s,0,0,0,0,(u+o)*c,-1,0,0,u*o*c*2,0]},createTranslate2d:function(t,n){var u=o.createIdentityMatrix();return o.reuseTranslate2dCommand(u,t,n),u},reuseTranslate2dCommand:function(t,n,o){t[12]=n,t[13]=o},reuseTranslate3dCommand:function(t,n,o,u){t[12]=n,t[13]=o,t[14]=u},createScale:function(t){var n=o.createIdentityMatrix();return o.reuseScaleCommand(n,t),n},reuseScaleCommand:function(t,n){t[0]=n,t[5]=n},reuseScale3dCommand:function(t,n,o,u){t[0]=n,t[5]=o,t[10]=u},reusePerspectiveCommand:function(t,n){t[11]=-1/n},reuseScaleXCommand:function(t,n){t[0]=n},reuseScaleYCommand:function(t,n){t[5]=n},reuseScaleZCommand:function(t,n){t[10]=n},reuseRotateXCommand:function(t,n){t[5]=Math.cos(n),t[6]=Math.sin(n),t[9]=-Math.sin(n),t[10]=Math.cos(n)},reuseRotateYCommand:function(t,n){t[0]=Math.cos(n),t[2]=-Math.sin(n),t[8]=Math.sin(n),t[10]=Math.cos(n)},reuseRotateZCommand:function(t,n){t[0]=Math.cos(n),t[1]=Math.sin(n),t[4]=-Math.sin(n),t[5]=Math.cos(n)},createRotateZ:function(t){var n=o.createIdentityMatrix();return o.reuseRotateZCommand(n,t),n},reuseSkewXCommand:function(t,n){t[4]=Math.tan(n)},reuseSkewYCommand:function(t,n){t[1]=Math.tan(n)},multiplyInto:function(t,n,o){var u=n[0],s=n[1],c=n[2],v=n[3],f=n[4],h=n[5],M=n[6],l=n[7],C=n[8],p=n[9],x=n[10],T=n[11],y=n[12],S=n[13],D=n[14],P=n[15],q=o[0],X=o[1],Y=o[2],I=o[3];t[0]=q*u+X*f+Y*C+I*y,t[1]=q*s+X*h+Y*p+I*S,t[2]=q*c+X*M+Y*x+I*D,t[3]=q*v+X*l+Y*T+I*P,q=o[4],X=o[5],Y=o[6],I=o[7],t[4]=q*u+X*f+Y*C+I*y,t[5]=q*s+X*h+Y*p+I*S,t[6]=q*c+X*M+Y*x+I*D,t[7]=q*v+X*l+Y*T+I*P,q=o[8],X=o[9],Y=o[10],I=o[11],t[8]=q*u+X*f+Y*C+I*y,t[9]=q*s+X*h+Y*p+I*S,t[10]=q*c+X*M+Y*x+I*D,t[11]=q*v+X*l+Y*T+I*P,q=o[12],X=o[13],Y=o[14],I=o[15],t[12]=q*u+X*f+Y*C+I*y,t[13]=q*s+X*h+Y*p+I*S,t[14]=q*c+X*M+Y*x+I*D,t[15]=q*v+X*l+Y*T+I*P},determinant:function(n){var o=t(n,16),u=o[0],s=o[1],c=o[2],v=o[3],f=o[4],h=o[5],M=o[6],l=o[7],C=o[8],p=o[9],x=o[10],T=o[11],y=o[12],S=o[13],D=o[14],P=o[15];return v*M*p*y-c*l*p*y-v*h*x*y+s*l*x*y+c*h*T*y-s*M*T*y-v*M*C*S+c*l*C*S+v*f*x*S-u*l*x*S-c*f*T*S+u*M*T*S+v*h*C*D-s*l*C*D-v*f*p*D+u*l*p*D+s*f*T*D-u*h*T*D-c*h*C*P+s*M*C*P+c*f*p*P-u*M*p*P-s*f*x*P+u*h*x*P},inverse:function(n){var u=o.determinant(n);if(!u)return n;var s=t(n,16),c=s[0],v=s[1],f=s[2],h=s[3],M=s[4],l=s[5],C=s[6],p=s[7],x=s[8],T=s[9],y=s[10],S=s[11],D=s[12],P=s[13],q=s[14],X=s[15];return[(C*S*P-p*y*P+p*T*q-l*S*q-C*T*X+l*y*X)/u,(h*y*P-f*S*P-h*T*q+v*S*q+f*T*X-v*y*X)/u,(f*p*P-h*C*P+h*l*q-v*p*q-f*l*X+v*C*X)/u,(h*C*T-f*p*T-h*l*y+v*p*y+f*l*S-v*C*S)/u,(p*y*D-C*S*D-p*x*q+M*S*q+C*x*X-M*y*X)/u,(f*S*D-h*y*D+h*x*q-c*S*q-f*x*X+c*y*X)/u,(h*C*D-f*p*D-h*M*q+c*p*q+f*M*X-c*C*X)/u,(f*p*x-h*C*x+h*M*y-c*p*y-f*M*S+c*C*S)/u,(l*S*D-p*T*D+p*x*P-M*S*P-l*x*X+M*T*X)/u,(h*T*D-v*S*D-h*x*P+c*S*P+v*x*X-c*T*X)/u,(v*p*D-h*l*D+h*M*P-c*p*P-v*M*X+c*l*X)/u,(h*l*x-v*p*x-h*M*T+c*p*T+v*M*S-c*l*S)/u,(C*T*D-l*y*D-C*x*P+M*y*P+l*x*q-M*T*q)/u,(v*y*D-f*T*D+f*x*P-c*y*P-v*x*q+c*T*q)/u,(f*l*D-v*C*D-f*M*P+c*C*P+v*M*q-c*l*q)/u,(v*C*x-f*l*x+f*M*T-c*C*T-v*M*y+c*l*y)/u]},transpose:function(t){return[t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15]]},multiplyVectorByMatrix:function(n,o){var u=t(n,4),s=u[0],c=u[1],v=u[2],f=u[3];return[s*o[0]+c*o[4]+v*o[8]+f*o[12],s*o[1]+c*o[5]+v*o[9]+f*o[13],s*o[2]+c*o[6]+v*o[10]+f*o[14],s*o[3]+c*o[7]+v*o[11]+f*o[15]]},v3Length:function(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2])},v3Normalize:function(t,n){var u=1/(n||o.v3Length(t));return[t[0]*u,t[1]*u,t[2]*u]},v3Dot:function(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]},v3Combine:function(t,n,o,u){return[o*t[0]+u*n[0],o*t[1]+u*n[1],o*t[2]+u*n[2]]},v3Cross:function(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]},quaternionToDegreesXYZ:function(n,u,s){var c=t(n,4),v=c[0],f=c[1],h=c[2],M=c[3],l=v*v,C=f*f,p=h*h,x=v*f+h*M,T=M*M+l+C+p,y=180/Math.PI;return x>.49999*T?[0,2*Math.atan2(v,M)*y,90]:x<-.49999*T?[0,-2*Math.atan2(v,M)*y,-90]:[o.roundTo3Places(Math.atan2(2*v*M-2*f*h,1-2*l-2*p)*y),o.roundTo3Places(Math.atan2(2*f*M-2*v*h,1-2*C-2*p)*y),o.roundTo3Places(Math.asin(2*v*f+2*h*M)*y)]},roundTo3Places:function(t){var n=t.toString().split('e');return.001*Math.round(n[0]+'e'+(n[1]?+n[1]-3:3))},decomposeMatrix:function(t){n(16===t.length,'Matrix decomposition needs a list of 3d matrix values, received %s',t);var u=[],s=[],c=[],v=[],f=[];if(t[15]){for(var h=[],M=[],l=0;l<4;l++){h.push([]);for(var C=0;C<4;C++){var p=t[4*l+C]/t[15];h[l].push(p),M.push(3===C?0:p)}}if(M[15]=1,o.determinant(M)){if(0!==h[0][3]||0!==h[1][3]||0!==h[2][3]){var x=[h[0][3],h[1][3],h[2][3],h[3][3]],T=o.inverse(M),y=o.transpose(T);u=o.multiplyVectorByMatrix(x,y)}else u[0]=u[1]=u[2]=0,u[3]=1;for(var S=0;S<3;S++)f[S]=h[3][S];for(var D=[],P=0;P<3;P++)D[P]=[h[P][0],h[P][1],h[P][2]];c[0]=o.v3Length(D[0]),D[0]=o.v3Normalize(D[0],c[0]),v[0]=o.v3Dot(D[0],D[1]),D[1]=o.v3Combine(D[1],D[0],1,-v[0]),v[0]=o.v3Dot(D[0],D[1]),D[1]=o.v3Combine(D[1],D[0],1,-v[0]),c[1]=o.v3Length(D[1]),D[1]=o.v3Normalize(D[1],c[1]),v[0]/=c[1],v[1]=o.v3Dot(D[0],D[2]),D[2]=o.v3Combine(D[2],D[0],1,-v[1]),v[2]=o.v3Dot(D[1],D[2]),D[2]=o.v3Combine(D[2],D[1],1,-v[2]),c[2]=o.v3Length(D[2]),D[2]=o.v3Normalize(D[2],c[2]),v[1]/=c[2],v[2]/=c[2];var q,X=o.v3Cross(D[1],D[2]);if(o.v3Dot(D[0],X)<0)for(var Y=0;Y<3;Y++)c[Y]*=-1,D[Y][0]*=-1,D[Y][1]*=-1,D[Y][2]*=-1;return s[0]=.5*Math.sqrt(Math.max(1+D[0][0]-D[1][1]-D[2][2],0)),s[1]=.5*Math.sqrt(Math.max(1-D[0][0]+D[1][1]-D[2][2],0)),s[2]=.5*Math.sqrt(Math.max(1-D[0][0]-D[1][1]+D[2][2],0)),s[3]=.5*Math.sqrt(Math.max(1+D[0][0]+D[1][1]+D[2][2],0)),D[2][1]>D[1][2]&&(s[0]=-s[0]),D[0][2]>D[2][0]&&(s[1]=-s[1]),D[1][0]>D[0][1]&&(s[2]=-s[2]),{rotationDegrees:q=s[0]<.001&&s[0]>=0&&s[1]<.001&&s[1]>=0?[0,0,o.roundTo3Places(180*Math.atan2(D[0][1],D[0][0])/Math.PI)]:o.quaternionToDegreesXYZ(s,h,D),perspective:u,quaternion:s,scale:c,skew:v,translation:f,rotate:q[2],rotateX:q[0],rotateY:q[1],scaleX:c[0],scaleY:c[1],translateX:f[0],translateY:f[1]}}}}};m.exports=o},85,[15,4]); -__d(function(g,r,i,a,m,e,d){'use strict';var t={width:void 0,height:void 0};m.exports=function(h,n){return(h=h||t)!==(n=n||t)&&(h.width!==n.width||h.height!==n.height)}},86,[]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),u=(r(d[2]),r(d[3]),r(d[4]),r(d[5]),(function(){function u(){t(this,u)}return n(u,null,[{key:"validateStyleProp",value:function(t,n,u){}},{key:"validateStyle",value:function(t,n){}},{key:"addValidStylePropTypes",value:function(t){}}]),u})());m.exports=u},87,[25,26,66,81,82,4]); -__d(function(g,r,i,a,m,e,d){'use strict';m.exports=function t(n){if(null!==n&&'object'==typeof n){if(!Array.isArray(n))return n;for(var f={},o=0,u=n.length;othis.eventPool.length&&this.eventPool.push(e)}function G(e){e.eventPool=[],e.getPooled=q,e.release=$}o(X.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=L)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=L)},persist:function(){this.isPersistent=L},isPersistent:Y,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=Y,this._dispatchInstances=this._dispatchListeners=null}}),X.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},X.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var i=new t;return o(i,n.prototype),n.prototype=i,n.prototype.constructor=n,n.Interface=o({},r.Interface,e),n.extend=r.extend,G(n),n},G(X);var J=X.extend({touchHistory:function(){return null}});function K(e){return"topTouchStart"===e}function Z(e){return"topTouchMove"===e}var ee=["topTouchStart"],te=["topTouchMove"],ne=["topTouchCancel","topTouchEnd"],re=[],ie={touchBank:re,numberActiveTouches:0,indexOfSingleActiveTouch:-1,mostRecentTimeStamp:0};function le(e){return e.timeStamp||e.timestamp}function ae(e){if(null==(e=e.identifier))throw f(Error("Touch object is missing identifier."));return e}function oe(e){var t=ae(e),n=re[t];n?(n.touchActive=!0,n.startPageX=e.pageX,n.startPageY=e.pageY,n.startTimeStamp=le(e),n.currentPageX=e.pageX,n.currentPageY=e.pageY,n.currentTimeStamp=le(e),n.previousPageX=e.pageX,n.previousPageY=e.pageY,n.previousTimeStamp=le(e)):(n={touchActive:!0,startPageX:e.pageX,startPageY:e.pageY,startTimeStamp:le(e),currentPageX:e.pageX,currentPageY:e.pageY,currentTimeStamp:le(e),previousPageX:e.pageX,previousPageY:e.pageY,previousTimeStamp:le(e)},re[t]=n),ie.mostRecentTimeStamp=le(e)}function ue(e){var t=re[ae(e)];t?(t.touchActive=!0,t.previousPageX=t.currentPageX,t.previousPageY=t.currentPageY,t.previousTimeStamp=t.currentTimeStamp,t.currentPageX=e.pageX,t.currentPageY=e.pageY,t.currentTimeStamp=le(e),ie.mostRecentTimeStamp=le(e)):console.warn("Cannot record touch move without a touch start.\nTouch Move: %s\n","Touch Bank: %s",se(e),fe())}function ce(e){var t=re[ae(e)];t?(t.touchActive=!1,t.previousPageX=t.currentPageX,t.previousPageY=t.currentPageY,t.previousTimeStamp=t.currentTimeStamp,t.currentPageX=e.pageX,t.currentPageY=e.pageY,t.currentTimeStamp=le(e),ie.mostRecentTimeStamp=le(e)):console.warn("Cannot record touch end without a touch start.\nTouch End: %s\n","Touch Bank: %s",se(e),fe())}function se(e){return JSON.stringify({identifier:e.identifier,pageX:e.pageX,pageY:e.pageY,timestamp:le(e)})}function fe(){var e=JSON.stringify(re.slice(0,20));return 20a||(l=a),Ue(l,e,i)}}}),_=function(e){return xe.get(e._nativeTag)||null},P=we,R=function(e){var t=e.stateNode._nativeTag;if(void 0===t&&(t=e.stateNode.canonical._nativeTag),!t)throw f(Error("All native instances should have a tag."));return t},ye.injection.injectGlobalResponderHandler({onChange:function(e,t,n){null!==t?u.UIManager.setJSResponder(t.stateNode._nativeTag,n):u.UIManager.clearJSResponder()}});var ze=c.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;ze.hasOwnProperty("ReactCurrentDispatcher")||(ze.ReactCurrentDispatcher={current:null}),ze.hasOwnProperty("ReactCurrentBatchConfig")||(ze.ReactCurrentBatchConfig={suspense:null});var Me="function"==typeof Symbol&&("function"==typeof Symbol?Symbol.for:"@@for"),Ae=Me?("function"==typeof Symbol?Symbol.for:"@@for")("react.element"):60103,De=Me?("function"==typeof Symbol?Symbol.for:"@@for")("react.portal"):60106,Fe=Me?("function"==typeof Symbol?Symbol.for:"@@for")("react.fragment"):60107,Oe=Me?("function"==typeof Symbol?Symbol.for:"@@for")("react.strict_mode"):60108,je=Me?("function"==typeof Symbol?Symbol.for:"@@for")("react.profiler"):60114,We=Me?("function"==typeof Symbol?Symbol.for:"@@for")("react.provider"):60109,He=Me?("function"==typeof Symbol?Symbol.for:"@@for")("react.context"):60110,Qe=Me?("function"==typeof Symbol?Symbol.for:"@@for")("react.concurrent_mode"):60111,Be=Me?("function"==typeof Symbol?Symbol.for:"@@for")("react.forward_ref"):60112,Ve=Me?("function"==typeof Symbol?Symbol.for:"@@for")("react.suspense"):60113,Le=Me?("function"==typeof Symbol?Symbol.for:"@@for")("react.suspense_list"):60120,Ye=Me?("function"==typeof Symbol?Symbol.for:"@@for")("react.memo"):60115,Xe=Me?("function"==typeof Symbol?Symbol.for:"@@for")("react.lazy"):60116;Me&&("function"==typeof Symbol?Symbol.for:"@@for")("react.fundamental"),Me&&("function"==typeof Symbol?Symbol.for:"@@for")("react.responder");var qe="function"==typeof Symbol&&("function"==typeof Symbol?Symbol.iterator:"@@iterator");function $e(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=qe&&e[qe]||e["@@iterator"])?e:null}function Ge(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case Fe:return"Fragment";case De:return"Portal";case je:return"Profiler";case Oe:return"StrictMode";case Ve:return"Suspense";case Le:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case He:return"Context.Consumer";case We:return"Context.Provider";case Be:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case Ye:return Ge(e.type);case Xe:if(e=1===e._status?e._result:null)return Ge(e)}return null}function Je(e){var t=e;if(e.alternate)for(;t.return;)t=t.return;else{if(0!=(2&t.effectTag))return 1;for(;t.return;)if(0!=(2&(t=t.return).effectTag))return 1}return 3===t.tag?2:3}function Ke(e){if(2!==Je(e))throw f(Error("Unable to find node on an unmounted component."))}function Ze(e){var t=e.alternate;if(!t){if(3===(t=Je(e)))throw f(Error("Unable to find node on an unmounted component."));return 1===t?null:e}for(var n=e,r=t;;){var i=n.return;if(null===i)break;var l=i.alternate;if(null===l){if(null!==(r=i.return)){n=r;continue}break}if(i.child===l.child){for(l=i.child;l;){if(l===n)return Ke(i),e;if(l===r)return Ke(i),t;l=l.sibling}throw f(Error("Unable to find node on an unmounted component."))}if(n.return!==r.return)n=i,r=l;else{for(var a=!1,o=i.child;o;){if(o===n){a=!0,n=i,r=l;break}if(o===r){a=!0,r=i,n=l;break}o=o.sibling}if(!a){for(o=l.child;o;){if(o===n){a=!0,n=l,r=i;break}if(o===r){a=!0,r=l,n=i;break}o=o.sibling}if(!a)throw f(Error("Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue."))}}if(n.alternate!==r)throw f(Error("Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue."))}if(3!==n.tag)throw f(Error("Unable to find node on an unmounted component."));return n.stateNode.current===n?e:t}function et(e){if(!(e=Ze(e)))return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}var tt={},nt=null,rt=0;function it(e,t,n){if(Array.isArray(t))for(var r=t.length;r--&&0wt||(e.current=xt[wt],xt[wt]=null,wt--)}function kt(e,t){xt[++wt]=e.current,e.current=t}var Ct={},_t={current:Ct},Pt={current:!1},Rt=Ct;function Nt(e,t){var n=e.type.contextTypes;if(!n)return Ct;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i,l={};for(i in n)l[i]=t[i];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function It(e){return null!==(e=e.childContextTypes)&&void 0!==e}function Ut(e){St(Pt),St(_t)}function zt(e){St(Pt),St(_t)}function Mt(e,t,n){if(_t.current!==Ct)throw f(Error("Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue."));kt(_t,t),kt(Pt,n)}function At(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var i in r=r.getChildContext())if(!(i in e))throw f(Error((Ge(t)||"Unknown")+'.getChildContext(): key "'+i+'" is not defined in childContextTypes.'));return o({},n,r)}function Dt(e){var t=e.stateNode;return t=t&&t.__reactInternalMemoizedMergedChildContext||Ct,Rt=_t.current,kt(_t,t),kt(Pt,Pt.current),!0}function Ft(e,t,n){var r=e.stateNode;if(!r)throw f(Error("Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue."));n?(t=At(e,t,Rt),r.__reactInternalMemoizedMergedChildContext=t,St(Pt),St(_t),kt(_t,t)):St(Pt),kt(Pt,n)}var Ot=s.unstable_runWithPriority,jt=s.unstable_scheduleCallback,Wt=s.unstable_cancelCallback,Ht=s.unstable_shouldYield,Qt=s.unstable_requestPaint,Bt=s.unstable_now,Vt=s.unstable_getCurrentPriorityLevel,Lt=s.unstable_ImmediatePriority,Yt=s.unstable_UserBlockingPriority,Xt=s.unstable_NormalPriority,qt=s.unstable_LowPriority,$t=s.unstable_IdlePriority,Gt={},Jt=void 0!==Qt?Qt:function(){},Kt=null,Zt=null,en=!1,tn=Bt(),nn=1e4>tn?Bt:function(){return Bt()-tn};function rn(){switch(Vt()){case Lt:return 99;case Yt:return 98;case Xt:return 97;case qt:return 96;case $t:return 95;default:throw f(Error("Unknown priority level."))}}function ln(e){switch(e){case 99:return Lt;case 98:return Yt;case 97:return Xt;case 96:return qt;case 95:return $t;default:throw f(Error("Unknown priority level."))}}function an(e,t){return e=ln(e),Ot(e,t)}function on(e,t,n){return e=ln(e),jt(e,t,n)}function un(e){return null===Kt?(Kt=[e],Zt=jt(Lt,sn)):Kt.push(e),Gt}function cn(){null!==Zt&&Wt(Zt),sn()}function sn(){if(!en&&null!==Kt){en=!0;var e=0;try{var t=Kt;an(99,function(){for(;e=(e=10*(1073741821-t)-10*(1073741821-e))?99:250>=e?98:5250>=e?97:95}function dn(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t}var pn=Object.prototype.hasOwnProperty;function hn(e,t){if(dn(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r=t&&(li=!0),e.firstContext=null)}function Cn(e,t){if(Tn!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(Tn=e,t=1073741823),t={context:e,observedBits:t,next:null},null===bn){if(null===yn)throw f(Error("Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo()."));bn=t,yn.dependencies={expirationTime:0,firstContext:t,responders:null}}else bn=bn.next=t;return e._currentValue}var _n=!1;function Pn(e){return{baseState:e,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Rn(e){return{baseState:e.baseState,firstUpdate:e.firstUpdate,lastUpdate:e.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Nn(e,t){return{expirationTime:e,suspenseConfig:t,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function In(e,t){null===e.lastUpdate?e.firstUpdate=e.lastUpdate=t:(e.lastUpdate.next=t,e.lastUpdate=t)}function Un(e,t){var n=e.alternate;if(null===n){var r=e.updateQueue,i=null;null===r&&(r=e.updateQueue=Pn(e.memoizedState))}else r=e.updateQueue,i=n.updateQueue,null===r?null===i?(r=e.updateQueue=Pn(e.memoizedState),i=n.updateQueue=Pn(n.memoizedState)):r=e.updateQueue=Rn(i):null===i&&(i=n.updateQueue=Rn(r));null===i||r===i?In(r,t):null===r.lastUpdate||null===i.lastUpdate?(In(r,t),In(i,t)):(In(r,t),i.lastUpdate=t)}function zn(e,t){var n=e.updateQueue;null===(n=null===n?e.updateQueue=Pn(e.memoizedState):Mn(e,n)).lastCapturedUpdate?n.firstCapturedUpdate=n.lastCapturedUpdate=t:(n.lastCapturedUpdate.next=t,n.lastCapturedUpdate=t)}function Mn(e,t){var n=e.alternate;return null!==n&&t===n.updateQueue&&(t=e.updateQueue=Rn(t)),t}function An(e,t,n,r,i,l){switch(n.tag){case 1:return"function"==typeof(e=n.payload)?e.call(l,r,i):e;case 3:e.effectTag=-2049&e.effectTag|64;case 0:if(null===(i="function"==typeof(e=n.payload)?e.call(l,r,i):e)||void 0===i)break;return o({},r,i);case 2:_n=!0}return r}function Dn(e,t,n,r,i){_n=!1;for(var l=(t=Mn(e,t)).baseState,a=null,o=0,u=t.firstUpdate,c=l;null!==u;){var s=u.expirationTime;sm?(g=f,f=null):g=f.sibling;var v=p(i,f,o[m],u);if(null===v){null===f&&(f=g);break}e&&f&&null===v.alternate&&t(i,f),a=l(v,a,m),null===s?c=v:s.sibling=v,s=v,f=g}if(m===o.length)return n(i,f),c;if(null===f){for(;mg?(v=m,m=null):v=m.sibling;var b=p(i,m,y.value,u);if(null===b){null===m&&(m=v);break}e&&m&&null===b.alternate&&t(i,m),a=l(b,a,g),null===s?c=b:s.sibling=b,s=b,m=v}if(y.done)return n(i,m),c;if(null===m){for(;!y.done;g++,y=o.next())null!==(y=d(i,y.value,u))&&(a=l(y,a,g),null===s?c=y:s.sibling=y,s=y);return c}for(m=r(i,m);!y.done;g++,y=o.next())null!==(y=h(m,i,g,y.value,u))&&(e&&null!==y.alternate&&m.delete(null===y.key?g:y.key),a=l(y,a,g),null===s?c=y:s.sibling=y,s=y);return e&&m.forEach(function(e){return t(i,e)}),c}return function(e,r,l,o){var u="object"==typeof l&&null!==l&&l.type===Fe&&null===l.key;u&&(l=l.props.children);var c="object"==typeof l&&null!==l;if(c)switch(l.$$typeof){case Ae:e:{for(c=l.key,u=r;null!==u;){if(u.key===c){if(7===u.tag?l.type===Fe:u.elementType===l.type){n(e,u.sibling),(r=i(u,l.type===Fe?l.props.children:l.props)).ref=qn(e,u,l),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}l.type===Fe?((r=ea(l.props.children,e.mode,o,l.key)).return=e,e=r):((o=Zl(l.type,l.key,l.props,null,e.mode,o)).ref=qn(e,r,l),o.return=e,e=o)}return a(e);case De:e:{for(u=l.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===l.containerInfo&&r.stateNode.implementation===l.implementation){n(e,r.sibling),(r=i(r,l.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=na(l,e.mode,o)).return=e,e=r}return a(e)}if("string"==typeof l||"number"==typeof l)return l=""+l,null!==r&&6===r.tag?(n(e,r.sibling),(r=i(r,l)).return=e,e=r):(n(e,r),(r=ta(l,e.mode,o)).return=e,e=r),a(e);if(Xn(l))return m(e,r,l,o);if($e(l))return g(e,r,l,o);if(c&&$n(e,l),void 0===l&&!u)switch(e.tag){case 1:case 0:throw e=e.type,f(Error((e.displayName||e.name||"Component")+"(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null."))}return n(e,r)}}var Jn=Gn(!0),Kn=Gn(!1),Zn={},er={current:Zn},tr={current:Zn},nr={current:Zn};function rr(e){if(e===Zn)throw f(Error("Expected host context to exist. This error is likely caused by a bug in React. Please file an issue."));return e}function ir(e,t){kt(nr,t),kt(tr,e),kt(er,Zn),St(er),kt(er,{isInAParentText:!1})}function lr(e){St(er),St(tr),St(nr)}function ar(e){rr(nr.current);var t=rr(er.current),n=e.type;n="AndroidTextInput"===n||"RCTMultilineTextInputView"===n||"RCTSinglelineTextInputView"===n||"RCTText"===n||"RCTVirtualText"===n,t!==(n=t.isInAParentText!==n?{isInAParentText:n}:t)&&(kt(tr,e),kt(er,n))}function or(e){tr.current===e&&(St(er),St(tr))}var ur=1,cr=1,sr=2,fr={current:0};function dr(e){for(var t=e;null!==t;){if(13===t.tag){if(null!==t.memoizedState)return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.effectTag))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function pr(e,t){return{responder:e,props:t}}var hr=0,mr=2,gr=4,vr=8,yr=16,br=32,Tr=64,Er=128,xr=ze.ReactCurrentDispatcher,wr=0,Sr=null,kr=null,Cr=null,_r=null,Pr=null,Rr=null,Nr=0,Ir=null,Ur=0,zr=!1,Mr=null,Ar=0;function Dr(){throw f(Error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem."))}function Fr(e,t){if(null===t)return!1;for(var n=0;nNr&&(Nr=s)):(zl(s,u.suspenseConfig),l=u.eagerReducer===e?u.eagerState:e(l,u.action)),a=u,u=u.next}while(null!==u&&u!==r);c||(o=a,i=l),dn(l,t.memoizedState)||(li=!0),t.memoizedState=l,t.baseUpdate=o,t.baseState=i,n.lastRenderedState=l}return[t.memoizedState,n.dispatch]}function Vr(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===Ir?(Ir={lastEffect:null}).lastEffect=e.next=e:null===(t=Ir.lastEffect)?Ir.lastEffect=e.next=e:(n=t.next,t.next=e,e.next=n,Ir.lastEffect=e),e}function Lr(e,t,n,r){var i=Wr();Ur|=e,i.memoizedState=Vr(t,n,void 0,void 0===r?null:r)}function Yr(e,t,n,r){var i=Hr();r=void 0===r?null:r;var l=void 0;if(null!==kr){var a=kr.memoizedState;if(l=a.destroy,null!==r&&Fr(r,a.deps))return void Vr(hr,n,l,r)}Ur|=e,i.memoizedState=Vr(t,n,l,r)}function Xr(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!==t&&void 0!==t?(e=e(),t.current=e,function(){t.current=null}):void 0}function qr(){}function $r(e,t,n){if(!(25>Ar))throw f(Error("Too many re-renders. React limits the number of renders to prevent an infinite loop."));var r=e.alternate;if(e===Sr||null!==r&&r===Sr)if(zr=!0,e={expirationTime:wr,suspenseConfig:null,action:n,eagerReducer:null,eagerState:null,next:null},null===Mr&&(Mr=new Map),void 0===(n=Mr.get(t)))Mr.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}else{var i=wl(),l=jn.suspense;l={expirationTime:i=Sl(i,e,l),suspenseConfig:l,action:n,eagerReducer:null,eagerState:null,next:null};var a=t.last;if(null===a)l.next=l;else{var o=a.next;null!==o&&(l.next=o),a.next=l}if(t.last=l,0===e.expirationTime&&(null===r||0===r.expirationTime)&&null!==(r=t.lastRenderedReducer))try{var u=t.lastRenderedState,c=r(u,n);if(l.eagerReducer=r,l.eagerState=c,dn(c,u))return}catch(e){}kl(e,i)}}var Gr={readContext:Cn,useCallback:Dr,useContext:Dr,useEffect:Dr,useImperativeHandle:Dr,useLayoutEffect:Dr,useMemo:Dr,useReducer:Dr,useRef:Dr,useState:Dr,useDebugValue:Dr,useResponder:Dr},Jr={readContext:Cn,useCallback:function(e,t){return Wr().memoizedState=[e,void 0===t?null:t],e},useContext:Cn,useEffect:function(e,t){return Lr(516,192,e,t)},useImperativeHandle:function(e,t,n){return n=null!==n&&void 0!==n?n.concat([e]):null,Lr(4,36,Xr.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Lr(4,36,e,t)},useMemo:function(e,t){var n=Wr();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Wr();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={last:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=$r.bind(null,Sr,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Wr().memoizedState=e},useState:function(e){var t=Wr();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={last:null,dispatch:null,lastRenderedReducer:Qr,lastRenderedState:e}).dispatch=$r.bind(null,Sr,e),[t.memoizedState,e]},useDebugValue:qr,useResponder:pr},Kr={readContext:Cn,useCallback:function(e,t){var n=Hr();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Fr(t,r[1])?r[0]:(n.memoizedState=[e,t],e)},useContext:Cn,useEffect:function(e,t){return Yr(516,192,e,t)},useImperativeHandle:function(e,t,n){return n=null!==n&&void 0!==n?n.concat([e]):null,Yr(4,36,Xr.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Yr(4,36,e,t)},useMemo:function(e,t){var n=Hr();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Fr(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)},useReducer:Br,useRef:function(){return Hr().memoizedState},useState:function(e){return Br(Qr)},useDebugValue:qr,useResponder:pr},Zr=null,ei=null,ti=!1;function ni(e,t){switch(e.tag){case 5:return null!==(t=ft(e.type,e.pendingProps))&&(e.stateNode=t,!0);case 6:return null!==(t=ft(e.pendingProps))&&(e.stateNode=t,!0);case 13:default:return!1}}function ri(e){if(ti){var t=ei;if(t){var n=t;if(!ni(e,t)){if(!(t=ft())||!ni(e,t))return e.effectTag|=2,ti=!1,void(Zr=e);var r=Zr,i=$l(5,null,null,0);i.elementType="DELETED",i.type="DELETED",i.stateNode=n,i.return=r,i.effectTag=8,null!==r.lastEffect?(r.lastEffect.nextEffect=i,r.lastEffect=i):r.firstEffect=r.lastEffect=i}Zr=e,ei=ft()}else e.effectTag|=2,ti=!1,Zr=e}}var ii=ze.ReactCurrentOwner,li=!1;function ai(e,t,n,r){t.child=null===e?Kn(t,null,n,r):Jn(t,e.child,n,r)}function oi(e,t,n,r,i){n=n.render;var l=t.ref;return kn(t,i),r=Or(e,t,n,r,l,i),null===e||li?(t.effectTag|=1,ai(e,t,r,i),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=i&&(e.expirationTime=0),bi(e,t,i))}function ui(e,t,n,r,i,l){if(null===e){var a=n.type;return"function"!=typeof a||Gl(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Zl(n.type,null,r,null,t.mode,l)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,ci(e,t,a,r,i,l))}return a=e.child,it)&&bl.set(e,t))}}function Cl(e,t){e.expirationTimei.firstPendingTime&&(i.firstPendingTime=t),0===(e=i.lastPendingTime)||t=t)&&(on(97,function(){return n._onComplete(),null}),!0)}function Nl(){if(null!==bl){var e=bl;bl=null,e.forEach(function(e,t){un(Ul.bind(null,t,e))}),cn()}}function Il(e,t){e.finishedWork=null,e.finishedExpirationTime=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,bt(n)),null!==nl)for(n=nl.return;null!==n;){var r=n;switch(r.tag){case 1:var i=r.type.childContextTypes;null!==i&&void 0!==i&&Ut();break;case 3:lr(),zt();break;case 5:or(r);break;case 4:lr();break;case 13:case 19:St(fr);break;case 10:wn(r)}n=n.return}tl=e,nl=Kl(e.current,null),rl=t,il=$i,al=ll=1073741823,ol=null,ul=!1}function Ul(e,t,n){if((48&el)!==Li)throw f(Error("Should not already be working."));if(e.firstPendingTime component higher in the tree to provide a loading indicator or placeholder to display."+Et(u))}il!==Zi&&(il=Gi),c=Ci(c,u),u=o;do{switch(u.tag){case 3:u.effectTag|=2048,u.expirationTime=s,zn(u,s=Wi(u,c,s));break e;case 1:if(d=c,a=u.type,o=u.stateNode,0==(64&u.effectTag)&&("function"==typeof a.getDerivedStateFromError||null!==o&&"function"==typeof o.componentDidCatch&&(null===hl||!hl.has(o)))){u.effectTag|=2048,u.expirationTime=s,zn(u,s=Hi(u,d,s));break e}}u=u.return}while(null!==u)}nl=Al(l)}if(el=r,En(),Bi.current=i,null!==nl)return Ul.bind(null,e,t)}if(e.finishedWork=e.current.alternate,e.finishedExpirationTime=t,Rl(e,t))return null;switch(tl=null,il){case $i:throw f(Error("Should have a work-in-progress."));case Gi:return(r=e.lastPendingTime)(n=r-n)&&(n=0),t<(n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Qi(n/1960))-n)&&(n=t)),10=(t=0|(i=ol).busyMinDurationMs)?t=0:(n=0|i.busyDelayMs,t=(r=nn()-(10*(1073741821-r)-(0|i.timeoutMs||5e3)))<=n?0:n+t-r),10 component."));r=mt(),u.UIManager.createView(r,"RCTRawText",l,{text:i}),Ee.set(r,t),n.stateNode=r}break;case 11:break;case 13:if(St(fr),i=t.memoizedState,0!=(64&t.effectTag)){t.expirationTime=r;break e}i=null!==i,r=!1,null!==n&&(r=null!==(l=n.memoizedState),i||null===l||null!==(l=n.child.sibling)&&(null!==(o=t.firstEffect)?(t.firstEffect=l,l.nextEffect=o):(t.firstEffect=t.lastEffect=l,l.nextEffect=null),l.effectTag=8)),i&&!r&&0!=(2&t.mode)&&(null===n&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(fr.current&cr)?il===$i&&(il=Ji):il!==$i&&il!==Ji||(il=Ki)),(i||r)&&(t.effectTag|=4);break;case 7:case 8:case 12:break;case 4:lr(),Ei(t);break;case 10:wn(t);break;case 9:case 14:break;case 17:It(t.type)&&Ut();break;case 18:break;case 19:if(St(fr),null===(i=t.memoizedState))break;if(l=0!=(64&t.effectTag),null===(o=i.rendering)){if(l)Si(i,!1);else if(il!==$i||null!==n&&0!=(64&n.effectTag))for(n=t.child;null!==n;){if(null!==(o=dr(n))){for(t.effectTag|=64,Si(i,!1),null!==(i=o.updateQueue)&&(t.updateQueue=i,t.effectTag|=4),t.firstEffect=t.lastEffect=null,i=r,n=t.child;null!==n;)l=i,(r=n).effectTag&=2,r.nextEffect=null,r.firstEffect=null,r.lastEffect=null,null===(o=r.alternate)?(r.childExpirationTime=0,r.expirationTime=l,r.child=null,r.memoizedProps=null,r.memoizedState=null,r.updateQueue=null,r.dependencies=null):(r.childExpirationTime=o.childExpirationTime,r.expirationTime=o.expirationTime,r.child=o.child,r.memoizedProps=o.memoizedProps,r.memoizedState=o.memoizedState,r.updateQueue=o.updateQueue,l=o.dependencies,r.dependencies=null===l?null:{expirationTime:l.expirationTime,firstContext:l.firstContext,responders:l.responders}),n=n.sibling;kt(fr,fr.current&ur|sr),t=t.child;break e}n=n.sibling}}else{if(!l)if(null!==(n=dr(o))){if(t.effectTag|=64,l=!0,Si(i,!0),null===i.tail&&"hidden"===i.tailMode){null!==(n=n.updateQueue)&&(t.updateQueue=n,t.effectTag|=4),null!==(t=t.lastEffect=i.lastEffect)&&(t.nextEffect=null);break}}else nn()>i.tailExpiration&&1n&&(n=l),o>n&&(n=o),r=r.sibling;i.childExpirationTime=n}if(null!==t)return t;null!==e&&0==(1024&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=nl.firstEffect),null!==nl.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=nl.firstEffect),e.lastEffect=nl.lastEffect),1i?l:i,e.firstPendingTime=i,i=n?gi(e,t,n):(kt(fr,fr.current&ur),null!==(t=bi(e,t,n))?t.sibling:null);kt(fr,fr.current&ur);break;case 19:if(r=t.childExpirationTime>=n,0!=(64&e.effectTag)){if(r)return yi(e,t,n);t.effectTag|=64}var i=t.memoizedState;if(null!==i&&(i.rendering=null,i.tail=null),kt(fr,fr.current),!r)return null}return bi(e,t,n)}}else li=!1;switch(t.expirationTime=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,i=Nt(t,_t.current),kn(t,n),i=Or(null,t,r,e,i,n),t.effectTag|=1,"object"==typeof i&&null!==i&&"function"==typeof i.render&&void 0===i.$$typeof){if(t.tag=1,jr(),It(r)){var l=!0;Dt(t)}else l=!1;t.memoizedState=null!==i.state&&void 0!==i.state?i.state:null;var a=r.getDerivedStateFromProps;"function"==typeof a&&Hn(t,r,a,e),i.updater=Qn,t.stateNode=i,i._reactInternalFiber=t,Yn(t,r,e,n),t=pi(null,t,r,!0,l,n)}else t.tag=0,ai(null,t,i,n),t=t.child;return t;case 16:switch(i=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,i=gn(i),t.type=i,l=t.tag=Jl(i),e=mn(i,e),l){case 0:t=fi(null,t,i,e,n);break;case 1:t=di(null,t,i,e,n);break;case 11:t=oi(null,t,i,e,n);break;case 14:t=ui(null,t,i,mn(i.type,e),r,n);break;default:throw f(Error("Element type is invalid. Received a promise that resolves to: "+i+". Lazy element type must resolve to a class or function."))}return t;case 0:return r=t.type,i=t.pendingProps,fi(e,t,r,i=t.elementType===r?i:mn(r,i),n);case 1:return r=t.type,i=t.pendingProps,di(e,t,r,i=t.elementType===r?i:mn(r,i),n);case 3:if(hi(t),null===(r=t.updateQueue))throw f(Error("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."));return i=null!==(i=t.memoizedState)?i.element:null,Dn(t,r,t.pendingProps,null,n),(r=t.memoizedState.element)===i?t=bi(e,t,n):(ai(e,t,r,n),t=t.child),t;case 5:return ar(t),null===e&&ri(t),r=t.pendingProps.children,si(e,t),ai(e,t,r,n),t.child;case 6:return null===e&&ri(t),null;case 13:return gi(e,t,n);case 4:return ir(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Jn(t,null,r,n):ai(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,oi(e,t,r,i=t.elementType===r?i:mn(r,i),n);case 7:return ai(e,t,t.pendingProps,n),t.child;case 8:case 12:return ai(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,a=t.memoizedProps,xn(t,l=i.value),null!==a){var o=a.value;if(0===(l=dn(o,l)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(o,l):1073741823))){if(a.children===i.children&&!Pt.current){t=bi(e,t,n);break e}}else for(null!==(o=t.child)&&(o.return=t);null!==o;){var u=o.dependencies;if(null!==u){a=o.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&l)){1===o.tag&&((c=Nn(n,null)).tag=2,Un(o,c)),o.expirationTime",lineNumber:+o[4],column:o[5]?+o[5]:null};else if(o=l.exec(c[b]))t={file:o[2],methodName:o[1]||"",lineNumber:+o[3],column:o[4]?+o[4]:null};else{if(!(o=s.exec(c[b])))continue;t={file:o[2],methodName:o[1]||"",lineNumber:+o[3],column:o[4]?+o[4]:null}}f.push(t)}return f}};m.exports=n},105,[]); -__d(function(g,r,i,a,m,e,d){'use strict';(0,r(d[0]).polyfillGlobal)('Promise',function(){return r(d[1])})},106,[107,32]); -__d(function(g,r,i,a,m,e,d){'use strict';var l=r(d[0]);function o(o,t,n){var c=Object.getOwnPropertyDescriptor(o,t),b=c||{},f=b.enumerable,u=b.writable,p=b.configurable;!c||p?l(o,t,{get:n,enumerable:!1!==f,writable:!1!==u}):console.error('Failed to set polyfill. '+t+' is not configurable.')}m.exports={polyfillObjectProperty:o,polyfillGlobal:function(l,t){o(g,l,t)}}},107,[31]); -__d(function(g,r,i,a,m,e,d){'use strict';(0,r(d[0]).polyfillGlobal)('regeneratorRuntime',function(){return delete g.regeneratorRuntime,r(d[1])})},108,[107,109]); -__d(function(g,r,i,a,m,e,d){var t=(function(t){"use strict";var n,o=Object.prototype,c=o.hasOwnProperty,u="function"==typeof Symbol?Symbol:{},h=u.iterator||"@@iterator",f=u.asyncIterator||"@@asyncIterator",s=u.toStringTag||"@@toStringTag";function l(t,n,o,c){var u=n&&n.prototype instanceof E?n:E,h=Object.create(u.prototype),f=new A(c||[]);return h._invoke=F(t,o,f),h}function p(t,n,o){try{return{type:"normal",arg:t.call(n,o)}}catch(t){return{type:"throw",arg:t}}}t.wrap=l;var y="suspendedStart",v="suspendedYield",w="executing",L="completed",x={};function E(){}function b(){}function _(){}var j={};j[h]=function(){return this};var O=Object.getPrototypeOf,k=O&&O(O(R([])));k&&k!==o&&c.call(k,h)&&(j=k);var G=_.prototype=E.prototype=Object.create(j);function N(t){["next","throw","return"].forEach(function(n){t[n]=function(t){return this._invoke(n,t)}})}function P(t){function n(o,u,h,f){var s=p(t[o],t,u);if("throw"!==s.type){var l=s.arg,y=l.value;return y&&"object"==typeof y&&c.call(y,"__await")?Promise.resolve(y.__await).then(function(t){n("next",t,h,f)},function(t){n("throw",t,h,f)}):Promise.resolve(y).then(function(t){l.value=t,h(l)},function(t){return n("throw",t,h,f)})}f(s.arg)}var o;this._invoke=function(t,c){function u(){return new Promise(function(o,u){n(t,c,o,u)})}return o=o?o.then(u,u):u()}}function F(t,n,o){var c=y;return function(u,h){if(c===w)throw new Error("Generator is already running");if(c===L){if("throw"===u)throw h;return Y()}for(o.method=u,o.arg=h;;){var f=o.delegate;if(f){var s=S(f,o);if(s){if(s===x)continue;return s}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(c===y)throw c=L,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);c=w;var l=p(t,n,o);if("normal"===l.type){if(c=o.done?L:v,l.arg===x)continue;return{value:l.arg,done:o.done}}"throw"===l.type&&(c=L,o.method="throw",o.arg=l.arg)}}}function S(t,o){var c=t.iterator[o.method];if(c===n){if(o.delegate=null,"throw"===o.method){if(t.iterator.return&&(o.method="return",o.arg=n,S(t,o),"throw"===o.method))return x;o.method="throw",o.arg=new TypeError("The iterator does not provide a 'throw' method")}return x}var u=p(c,t.iterator,o.arg);if("throw"===u.type)return o.method="throw",o.arg=u.arg,o.delegate=null,x;var h=u.arg;return h?h.done?(o[t.resultName]=h.value,o.next=t.nextLoc,"return"!==o.method&&(o.method="next",o.arg=n),o.delegate=null,x):h:(o.method="throw",o.arg=new TypeError("iterator result is not an object"),o.delegate=null,x)}function T(t){var n={tryLoc:t[0]};1 in t&&(n.catchLoc=t[1]),2 in t&&(n.finallyLoc=t[2],n.afterLoc=t[3]),this.tryEntries.push(n)}function I(t){var n=t.completion||{};n.type="normal",delete n.arg,t.completion=n}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(T,this),this.reset(!0)}function R(t){if(t){var o=t[h];if(o)return o.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var u=-1,f=function o(){for(;++u=0;--h){var f=this.tryEntries[h],s=f.completion;if("root"===f.tryLoc)return u("end");if(f.tryLoc<=this.prev){var l=c.call(f,"catchLoc"),p=c.call(f,"finallyLoc");if(l&&p){if(this.prev=0;--o){var u=this.tryEntries[o];if(u.tryLoc<=this.prev&&c.call(u,"finallyLoc")&&this.prev=0;--n){var o=this.tryEntries[n];if(o.finallyLoc===t)return this.complete(o.completion,o.afterLoc),I(o),x}},catch:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc===t){var c=o.completion;if("throw"===c.type){var u=c.arg;I(o)}return u}}throw new Error("illegal catch attempt")},delegateYield:function(t,o,c){return this.delegate={iterator:R(t),resultName:o,nextLoc:c},"next"===this.method&&(this.arg=n),x}},t})("object"==typeof m?m.exports:{});try{regeneratorRuntime=t}catch(n){Function("r","regeneratorRuntime = r")(t)}},109,[]); -__d(function(g,r,i,a,m,e,d){'use strict';if(!g.RN$Bridgeless){var l=r(d[0]).polyfillGlobal,t=function(t){l(t,function(){return r(d[1])[t]})};t('setTimeout'),t('setInterval'),t('setImmediate'),t('clearTimeout'),t('clearInterval'),t('clearImmediate'),t('requestAnimationFrame'),t('cancelAnimationFrame'),t('requestIdleCallback'),t('cancelIdleCallback')}},110,[107,111]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0])(r(d[1])),n=r(d[2]),l=(r(d[3]),r(d[4]),r(d[5])),u=null;function o(){return u||(u=r(d[6])),u()}var c=16.666666666666668,f=[],s=[],v=[],h=[],I=[],T={},b=[],p=1,w=null,k=!1;function q(){var t=v.indexOf(null);return-1===t&&(t=v.length),t}function x(t,n){var l=p++,u=q();return v[u]=l,f[u]=t,s[u]=n,l}function y(t,n,l){r(d[7])(t<=p,'Tried to call timer with ID %s but no such timer exists.',t);var u=v.indexOf(t);if(-1!==u){var h=s[u],I=f[u];if(I&&h){'setTimeout'!==h&&'setImmediate'!==h&&'requestAnimationFrame'!==h&&'requestIdleCallback'!==h||A(u);try{'setTimeout'===h||'setInterval'===h||'setImmediate'===h?I():'requestAnimationFrame'===h?I(o()):'requestIdleCallback'===h?I({timeRemaining:function(){return Math.max(0,c-(o()-n))},didTimeout:!!l}):console.error('Tried to call a callback with invalid type: '+h)}catch(t){w?w.push(t):w=[t]}}else console.error('No callback found for timerID '+t)}}function C(){if(h.length>0){var t=h.slice();h=[];for(var n=0;n0}function A(t){v[t]=null,f[t]=null,s[t]=null,b[t]=null}function D(t){if(null!=t){var n=v.indexOf(t);if(-1!==n){A(n);var l=s[n];'setImmediate'!==l&&'requestIdleCallback'!==l&&E(t)}}}var O,F={setTimeout:function(t,n){for(var l=arguments.length,u=new Array(l>2?l-2:0),o=2;o2?l-2:0),o=2;o1?n-1:0),u=1;u-1&&(I.splice(t,1),y(u,o(),!0)),delete T[u],0===I.length&&_(!1)},l);T[u]=c}return u},cancelIdleCallback:function(t){D(t);var n=I.indexOf(t);-1!==n&&I.splice(n,1);var l=T[t];l&&(F.clearTimeout(l),delete T[t]),0===I.length&&_(!1)},clearTimeout:function(t){D(t)},clearInterval:function(t){D(t)},clearImmediate:function(t){D(t);var n=h.indexOf(t);-1!==n&&h.splice(n,1)},cancelAnimationFrame:function(t){D(t)},callTimers:function(t){l(0!==t.length,'Cannot call `callTimers` with an empty list of IDs.'),w=null;for(var n=0;n1)for(var o=1;o0){var n=I.slice();I=[];for(var l=0;l=0,loaded:s,total:n})}},{key:"__didCompleteResponse",value:function(t,s,n){t===this._requestId&&(s&&(''!==this._responseType&&'text'!==this._responseType||(this._response=s),this._hasError=!0,n&&(this._timedOut=!0)),this._clearSubscriptions(),this._requestId=null,this.setReadyState(this.DONE),s?S._interceptor&&S._interceptor.loadingFailed(t,s):S._interceptor&&S._interceptor.loadingFinished(t,this._response.length))}},{key:"_clearSubscriptions",value:function(){(this._subscriptions||[]).forEach(function(t){t&&t.remove()}),this._subscriptions=[]}},{key:"getAllResponseHeaders",value:function(){if(!this.responseHeaders)return null;var t=this.responseHeaders||{};return Object.keys(t).map(function(s){return s+': '+t[s]}).join('\r\n')}},{key:"getResponseHeader",value:function(t){var s=this._lowerCaseResponseHeaders[t.toLowerCase()];return void 0!==s?s:null}},{key:"setRequestHeader",value:function(t,s){if(this.readyState!==this.OPENED)throw new Error('Request has not been opened');this._headers[t.toLowerCase()]=String(s)}},{key:"setTrackingName",value:function(t){return this._trackingName=t,this}},{key:"open",value:function(t,s,n){if(this.readyState!==this.UNSENT)throw new Error('Cannot open, already sending');if(void 0!==n&&!n)throw new Error('Synchronous http requests are not supported');if(!s)throw new Error('Cannot load an empty url');this._method=t.toUpperCase(),this._url=s,this._aborted=!1,this.setReadyState(this.OPENED)}},{key:"send",value:function(s){var n=this;if(this.readyState!==this.OPENED)throw new Error('Request has not been opened');if(this._sent)throw new Error('Request has already been sent');this._sent=!0;var o=this._incrementalEvents||!!this.onreadystatechange||!!this.onprogress;this._subscriptions.push(l.addListener('didSendNetworkData',function(s){return n.__didUploadProgress.apply(n,t(s))})),this._subscriptions.push(l.addListener('didReceiveNetworkResponse',function(s){return n.__didReceiveResponse.apply(n,t(s))})),this._subscriptions.push(l.addListener('didReceiveNetworkData',function(s){return n.__didReceiveData.apply(n,t(s))})),this._subscriptions.push(l.addListener('didReceiveNetworkIncrementalData',function(s){return n.__didReceiveIncrementalData.apply(n,t(s))})),this._subscriptions.push(l.addListener('didReceiveNetworkDataProgress',function(s){return n.__didReceiveDataProgress.apply(n,t(s))})),this._subscriptions.push(l.addListener('didCompleteNetworkResponse',function(s){return n.__didCompleteResponse.apply(n,t(s))}));var h='text';'arraybuffer'===this._responseType&&(h='base64'),'blob'===this._responseType&&(h='blob'),v(this._method,'Request method needs to be defined.'),v(this._url,'Request URL needs to be defined.'),l.sendRequest(this._method,this._trackingName,this._url,this._headers,s,h,o,this.timeout,this.__didCreateRequest.bind(this),this.withCredentials)}},{key:"abort",value:function(){this._aborted=!0,this._requestId&&l.abortRequest(this._requestId),this.readyState===this.UNSENT||this.readyState===this.OPENED&&!this._sent||this.readyState===this.DONE||(this._reset(),this.setReadyState(this.DONE)),this._reset()}},{key:"setResponseHeaders",value:function(t){this.responseHeaders=t||null;var s=t||{};this._lowerCaseResponseHeaders=Object.keys(s).reduce(function(t,n){return t[n.toLowerCase()]=s[n],t},{})}},{key:"setReadyState",value:function(t){this.readyState=t,this.dispatchEvent({type:'readystatechange'}),t===this.DONE&&(this._aborted?this.dispatchEvent({type:'abort'}):this._hasError?this._timedOut?this.dispatchEvent({type:'timeout'}):this.dispatchEvent({type:'error'}):this.dispatchEvent({type:'load'}),this.dispatchEvent({type:'loadend'}))}},{key:"addEventListener",value:function(t,n){'readystatechange'!==t&&'progress'!==t||(this._incrementalEvents=!0),s(p(S.prototype),"addEventListener",this).call(this,t,n)}},{key:"responseType",get:function(){return this._responseType},set:function(t){if(this._sent)throw new Error("Failed to set the 'responseType' property on 'XMLHttpRequest': The response type cannot be set after the request has been sent.");w.hasOwnProperty(t)?(v(w[t]||'document'===t,"The provided value '"+t+"' is unsupported in this environment."),'blob'===t&&v(_.isAvailable,'Native module BlobModule is required for blob support'),this._responseType=t):f(!1,"The provided value '"+t+"' is not a valid 'responseType'.")}},{key:"responseText",get:function(){if(''!==this._responseType&&'text'!==this._responseType)throw new Error("The 'responseText' property is only available if 'responseType' is set to '' or 'text', but it is '"+this._responseType+"'.");return this.readyState0&&void 0!==arguments[0]?arguments[0]:[],o=arguments.length>1?arguments[1]:void 0;t(this,s);var u=r(d[2]);this.data=u.createFromParts(n,o).data}return n(s,[{key:"slice",value:function(t,n){var s=r(d[2]),o=this.data,u=o.offset,l=o.size;return'number'==typeof t&&(t>l&&(t=l),u+=t,l-=t,'number'==typeof n&&(n<0&&(n=this.size+n),l=n-t)),s.createFromOptions({blobId:this.data.blobId,offset:u,size:l})}},{key:"close",value:function(){r(d[2]).release(this.data.blobId),this.data=null}},{key:"data",set:function(t){this._data=t},get:function(){if(!this._data)throw new Error('Blob has been closed and is no longer available');return this._data}},{key:"size",get:function(){return this.data.size}},{key:"type",get:function(){return this.data.type||''}}]),s})();m.exports=s},120,[25,26,118]); -__d(function(g,r,i,a,m,e,d){var n={};m.exports={register:function(t){n[t]?n[t]++:n[t]=1},unregister:function(t){n[t]&&(n[t]--,n[t]<=0&&delete n[t])},has:function(t){return n[t]&&n[t]>0}}},121,[]); -__d(function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,'__esModule',{value:!0});var t=new WeakMap,n=new WeakMap;function o(n){var o=t.get(n);return console.assert(null!=o,"'this' is expected an Event object, but got",n),o}function l(t){null==t.passiveListener?t.event.cancelable&&(t.canceled=!0,"function"==typeof t.event.preventDefault&&t.event.preventDefault()):"undefined"!=typeof console&&"function"==typeof console.error&&console.error("Unable to preventDefault inside passive event listener invocation.",t.passiveListener)}function u(n,o){t.set(this,{eventTarget:n,event:o,eventPhase:2,currentTarget:n,canceled:!1,stopped:!1,immediateStopped:!1,passiveListener:null,timeStamp:o.timeStamp||Date.now()}),Object.defineProperty(this,"isTrusted",{value:!1,enumerable:!0});for(var l=Object.keys(o),u=0;u0){for(var t=new Array(arguments.length),n=0;n0?y-4:y;var l=0;for(h=0;h>16&255,C[l++]=u>>8&255,C[l++]=255&u;2===f?(u=n[t.charCodeAt(h)]<<2|n[t.charCodeAt(h+1)]>>4,C[l++]=255&u):1===f&&(u=n[t.charCodeAt(h)]<<10|n[t.charCodeAt(h+1)]<<4|n[t.charCodeAt(h+2)]>>2,C[l++]=u>>8&255,C[l++]=255&u);return C},e.fromByteArray=function(n){for(var o,h=n.length,c=h%3,u='',A=[],C=0,y=h-c;Cy?y:C+16383));1===c?(o=n[h-1],u+=t[o>>2],u+=t[o<<4&63],u+='=='):2===c&&(o=(n[h-2]<<8)+n[h-1],u+=t[o>>10],u+=t[o>>4&63],u+=t[o<<2&63],u+='=');return A.push(u),A.join('')};for(var t=[],n=[],o='undefined'!=typeof Uint8Array?Uint8Array:Array,h='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',c=0,u=h.length;c0)throw new Error('Invalid string. Length must be a multiple of 4');return'='===t[n-2]?2:'='===t[n-1]?1:0}function f(n,o,h){for(var c,u,A=[],f=o;f>18&63]+t[u>>12&63]+t[u>>6&63]+t[63&u]);return A.join('')}n['-'.charCodeAt(0)]=62,n['_'.charCodeAt(0)]=63},128,[]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),s=r(d[2]),o=r(d[3]),p=(function(){function p(){s(this,p),this._parts=[]}return o(p,[{key:"append",value:function(t,n){this._parts.push([t,n])}},{key:"getParts",value:function(){return this._parts.map(function(s){var o=n(s,2),p=o[0],f=o[1],u={'content-disposition':'form-data; name="'+p+'"'};return'object'==typeof f&&f?('string'==typeof f.name&&(u['content-disposition']+='; filename="'+f.name+'"'),'string'==typeof f.type&&(u['content-type']=f.type),t({},f,{headers:u,fieldName:p})):{string:String(f),headers:u,fieldName:p}})}}]),p})();m.exports=p},129,[51,15,25,26]); -__d(function(g,r,i,a,m,e,d){'use strict';r(d[0]),m.exports={fetch:fetch,Headers:Headers,Request:Request,Response:Response}},130,[131]); -__d(function(g,r,i,a,m,e,d){var t,o;t=this,o=function(t){'use strict';var o={searchParams:'URLSearchParams'in self,iterable:'Symbol'in self&&'iterator'in Symbol,blob:'FileReader'in self&&'Blob'in self&&(function(){try{return new Blob,!0}catch(t){return!1}})(),formData:'FormData'in self,arrayBuffer:'ArrayBuffer'in self};if(o.arrayBuffer)var n=['[object Int8Array]','[object Uint8Array]','[object Uint8ClampedArray]','[object Int16Array]','[object Uint16Array]','[object Int32Array]','[object Uint32Array]','[object Float32Array]','[object Float64Array]'],s=ArrayBuffer.isView||function(t){return t&&n.indexOf(Object.prototype.toString.call(t))>-1};function f(t){if('string'!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(t))throw new TypeError('Invalid character in header field name');return t.toLowerCase()}function h(t){return'string'!=typeof t&&(t=String(t)),t}function u(t){var n={next:function(){var o=t.shift();return{done:void 0===o,value:o}}};return o.iterable&&(n["function"==typeof Symbol?Symbol.iterator:"@@iterator"]=function(){return n}),n}function c(t){this.map={},t instanceof c?t.forEach(function(t,o){this.append(o,t)},this):Array.isArray(t)?t.forEach(function(t){this.append(t[0],t[1])},this):t&&Object.getOwnPropertyNames(t).forEach(function(o){this.append(o,t[o])},this)}function y(t){if(t.bodyUsed)return Promise.reject(new TypeError('Already read'));t.bodyUsed=!0}function l(t){return new Promise(function(o,n){t.onload=function(){o(t.result)},t.onerror=function(){n(t.error)}})}function p(t){var o=new FileReader,n=l(o);return o.readAsArrayBuffer(t),n}function b(t){for(var o=new Uint8Array(t),n=new Array(o.length),s=0;s-1?s:n),this.mode=o.mode||this.mode||null,this.signal=o.signal||this.signal,this.referrer=null,('GET'===this.method||'HEAD'===this.method)&&f)throw new TypeError('Body not allowed for GET or HEAD requests');this._initBody(f)}function A(t){var o=new FormData;return t.trim().split('&').forEach(function(t){if(t){var n=t.split('='),s=n.shift().replace(/\+/g,' '),f=n.join('=').replace(/\+/g,' ');o.append(decodeURIComponent(s),decodeURIComponent(f))}}),o}function x(t,o){o||(o={}),this.type='default',this.status=void 0===o.status?200:o.status,this.ok=this.status>=200&&this.status<300,this.statusText='statusText'in o?o.statusText:'OK',this.headers=new c(o.headers),this.url=o.url||'',this._initBody(t)}_.prototype.clone=function(){return new _(this,{body:this._bodyInit})},v.call(_.prototype),v.call(x.prototype),x.prototype.clone=function(){return new x(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new c(this.headers),url:this.url})},x.error=function(){var t=new x(null,{status:0,statusText:''});return t.type='error',t};var B=[301,302,303,307,308];x.redirect=function(t,o){if(-1===B.indexOf(o))throw new RangeError('Invalid status code');return new x(null,{status:o,headers:{location:t}})},t.DOMException=self.DOMException;try{new t.DOMException}catch(o){t.DOMException=function(t,o){this.message=t,this.name=o;var n=Error(t);this.stack=n.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function T(n,s){return new Promise(function(f,h){var u=new _(n,s);if(u.signal&&u.signal.aborted)return h(new t.DOMException('Aborted','AbortError'));var y=new XMLHttpRequest;function l(){y.abort()}y.onload=function(){var t,o,n={status:y.status,statusText:y.statusText,headers:(t=y.getAllResponseHeaders()||'',o=new c,t.replace(/\r?\n[\t ]+/g,' ').split(/\r?\n/).forEach(function(t){var n=t.split(':'),s=n.shift().trim();if(s){var f=n.join(':').trim();o.append(s,f)}}),o)};n.url='responseURL'in y?y.responseURL:n.headers.get('X-Request-URL');var s='response'in y?y.response:y.responseText;f(new x(s,n))},y.onerror=function(){h(new TypeError('Network request failed'))},y.ontimeout=function(){h(new TypeError('Network request failed'))},y.onabort=function(){h(new t.DOMException('Aborted','AbortError'))},y.open(u.method,u.url,!0),'include'===u.credentials?y.withCredentials=!0:'omit'===u.credentials&&(y.withCredentials=!1),'responseType'in y&&o.blob&&(y.responseType='blob'),u.headers.forEach(function(t,o){y.setRequestHeader(o,t)}),u.signal&&(u.signal.addEventListener('abort',l),y.onreadystatechange=function(){4===y.readyState&&u.signal.removeEventListener('abort',l)}),y.send(void 0===u._bodyInit?null:u._bodyInit)})}T.polyfill=!0,self.fetch||(self.fetch=T,self.Headers=c,self.Request=_,self.Response=x),t.Headers=c,t.Request=_,t.Response=x,t.fetch=T,Object.defineProperty(t,'__esModule',{value:!0})},'object'==typeof e&&void 0!==m?o(e):'function'==typeof define&&define.amd?define(['exports'],o):o(t.WHATWGFetch={})},131,[]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),s=t(r(d[1])),o=t(r(d[2])),n=t(r(d[3])),c=t(r(d[4])),u=t(r(d[5])),l=t(r(d[6])),f=t(r(d[7])),h=r(d[8]),b=r(d[9]),y=r(d[10]),p=r(d[11]),v=(r(d[12]),r(d[13])),_=r(d[14]),E=r(d[15]),k=r(d[16]),I=0,S=1,N=2,w=3,O=0,C=(function(t){function y(t,n,l){var h;(0,o.default)(this,y),(h=(0,c.default)(this,(0,u.default)(y).call(this))).CONNECTING=I,h.OPEN=S,h.CLOSING=N,h.CLOSED=w,h.readyState=I,'string'==typeof n&&(n=[n]);var b=l||{},v=b.headers,_=void 0===v?{}:v,E=(0,s.default)(b,["headers"]);return E&&'string'==typeof E.origin&&(console.warn('Specifying `origin` as a WebSocket connection option is deprecated. Include it under `headers` instead.'),_.origin=E.origin,delete E.origin),Object.keys(E).length>0&&console.warn('Unrecognized WebSocket connection option(s) `'+Object.keys(E).join('`, `')+"`. Did you mean to put these under `headers`?"),Array.isArray(n)||(n=null),h._eventEmitter=new p(f.default),h._socketId=O++,h._registerEvents(),f.default.connect(t,n,{headers:_},h._socketId),h}return(0,l.default)(y,t),(0,n.default)(y,[{key:"close",value:function(t,s){this.readyState!==this.CLOSING&&this.readyState!==this.CLOSED&&(this.readyState=this.CLOSING,this._close(t,s))}},{key:"send",value:function(t){if(this.readyState===this.CONNECTING)throw new Error('INVALID_STATE_ERR');if(t instanceof h)return k(b.isAvailable,'Native module BlobModule is required for blob support'),void b.sendOverSocket(t,this._socketId);if('string'!=typeof t){if(!(t instanceof ArrayBuffer||ArrayBuffer.isView(t)))throw new Error('Unsupported data type');f.default.sendBinary(E(t),this._socketId)}else f.default.send(t,this._socketId)}},{key:"ping",value:function(){if(this.readyState===this.CONNECTING)throw new Error('INVALID_STATE_ERR');f.default.ping(this._socketId)}},{key:"_close",value:function(t,s){var o='number'==typeof t?t:1e3,n='string'==typeof s?s:'';f.default.close(o,n,this._socketId),b.isAvailable&&'blob'===this._binaryType&&b.removeWebSocketHandler(this._socketId)}},{key:"_unregisterEvents",value:function(){this._subscriptions.forEach(function(t){return t.remove()}),this._subscriptions=[]}},{key:"_registerEvents",value:function(){var t=this;this._subscriptions=[this._eventEmitter.addListener('websocketMessage',function(s){if(s.id===t._socketId){var o=s.data;switch(s.type){case'binary':o=_.toByteArray(s.data).buffer;break;case'blob':o=b.createFromOptions(s.data)}t.dispatchEvent(new v('message',{data:o}))}}),this._eventEmitter.addListener('websocketOpen',function(s){s.id===t._socketId&&(t.readyState=t.OPEN,t.protocol=s.protocol,t.dispatchEvent(new v('open')))}),this._eventEmitter.addListener('websocketClosed',function(s){s.id===t._socketId&&(t.readyState=t.CLOSED,t.dispatchEvent(new v('close',{code:s.code,reason:s.reason})),t._unregisterEvents(),t.close())}),this._eventEmitter.addListener('websocketFailed',function(s){s.id===t._socketId&&(t.readyState=t.CLOSED,t.dispatchEvent(new v('error',{message:s.message})),t.dispatchEvent(new v('close',{message:s.message})),t._unregisterEvents(),t.close())})]}},{key:"binaryType",get:function(){return this._binaryType},set:function(t){if('blob'!==t&&'arraybuffer'!==t)throw new Error("binaryType must be either 'blob' or 'arraybuffer'");'blob'!==this._binaryType&&'blob'!==t||(k(b.isAvailable,'Native module BlobModule is required for blob support'),'blob'===t?b.addWebSocketHandler(this._socketId):b.removeWebSocketHandler(this._socketId)),this._binaryType=t}}]),y})(y.apply(void 0,['close','error','message','open']));C.CONNECTING=I,C.OPEN=S,C.CLOSING=N,C.CLOSED=w,m.exports=C},132,[9,53,25,26,38,41,44,133,120,118,122,125,55,134,128,127,4]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=t(r(d[1])).getEnforcing('WebSocketModule');e.default=o},133,[11,12]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),s=r(d[1]);m.exports=function n(o,c){s(this,n),this.type=o.toString(),t(this,c)}},134,[14,25]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),s=r(d[2]),u=r(d[3]),l=r(d[4]),o=r(d[5]),c=r(d[6]),h=(function(h){function f(n,l,o){var h;return t(this,f),c(null!=n&&null!=l,'Failed to construct `File`: Must pass both `parts` and `name` arguments.'),(h=s(this,u(f).call(this,n,o))).data.name=l,h}return l(f,o),n(f,[{key:"name",get:function(){return c(null!=this.data.name,'Files must have a name set.'),this.data.name}},{key:"lastModified",get:function(){return this.data.lastModified||0}}]),f})();m.exports=h},135,[25,26,38,41,44,120,4]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),s=t(r(d[1])),n=t(r(d[2])),o=t(r(d[3])),u=t(r(d[4])),h=t(r(d[5])),_=t(r(d[6])),l=(r(d[7]),0),c=1,y=2,f=(function(t){function f(){var t;return(0,s.default)(this,f),(t=(0,o.default)(this,(0,u.default)(f).call(this))).EMPTY=l,t.LOADING=c,t.DONE=y,t._aborted=!1,t._subscriptions=[],t._reset(),t}return(0,h.default)(f,t),(0,n.default)(f,[{key:"_reset",value:function(){this._readyState=l,this._error=null,this._result=null}},{key:"_clearSubscriptions",value:function(){this._subscriptions.forEach(function(t){return t.remove()}),this._subscriptions=[]}},{key:"_setReadyState",value:function(t){this._readyState=t,this.dispatchEvent({type:'readystatechange'}),t===y&&(this._aborted?this.dispatchEvent({type:'abort'}):this._error?this.dispatchEvent({type:'error'}):this.dispatchEvent({type:'load'}),this.dispatchEvent({type:'loadend'}))}},{key:"readAsArrayBuffer",value:function(){throw new Error('FileReader.readAsArrayBuffer is not implemented')}},{key:"readAsDataURL",value:function(t){var s=this;this._aborted=!1,_.default.readAsDataURL(t.data).then(function(t){s._aborted||(s._result=t,s._setReadyState(y))},function(t){s._aborted||(s._error=t,s._setReadyState(y))})}},{key:"readAsText",value:function(t){var s=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:'UTF-8';this._aborted=!1,_.default.readAsText(t.data,n).then(function(t){s._aborted||(s._result=t,s._setReadyState(y))},function(t){s._aborted||(s._error=t,s._setReadyState(y))})}},{key:"abort",value:function(){this._aborted=!0,this._readyState!==l&&this._readyState!==y&&(this._reset(),this._setReadyState(y)),this._reset()}},{key:"readyState",get:function(){return this._readyState}},{key:"error",get:function(){return this._error}},{key:"result",get:function(){return this._result}}]),f})(r(d[8]).apply(void 0,['abort','error','load','loadstart','loadend','progress']));f.EMPTY=l,f.LOADING=c,f.DONE=y,m.exports=f},136,[9,25,26,38,41,44,137,120,122]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var u=t(r(d[1])).getEnforcing('FileReaderModule');e.default=u},137,[11,12]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.URL=e.URLSearchParams=void 0;var n=t(r(d[1])),o=t(r(d[2])),u=t(r(d[3])),s=(r(d[4]),null);if(u.default&&'string'==typeof u.default.getConstants().BLOB_URI_SCHEME){var f=u.default.getConstants();s=f.BLOB_URI_SCHEME+':','string'==typeof f.BLOB_URI_HOST&&(s+="//"+f.BLOB_URI_HOST+"/")}var l="function"==typeof Symbol?Symbol.iterator:"@@iterator",h=(function(){function t(o){var u=this;(0,n.default)(this,t),this._searchParams=[],'object'==typeof o&&Object.keys(o).forEach(function(t){return u.append(t,o[t])})}return(0,o.default)(t,[{key:"append",value:function(t,n){this._searchParams.push([t,n])}},{key:"delete",value:function(t){throw new Error('not implemented')}},{key:"get",value:function(t){throw new Error('not implemented')}},{key:"getAll",value:function(t){throw new Error('not implemented')}},{key:"has",value:function(t){throw new Error('not implemented')}},{key:"set",value:function(t,n){throw new Error('not implemented')}},{key:"sort",value:function(){throw new Error('not implemented')}},{key:l,value:function(){return this._searchParams["function"==typeof Symbol?Symbol.iterator:"@@iterator"]()}},{key:"toString",value:function(){if(0===this._searchParams.length)return'';var t=this._searchParams.length-1;return this._searchParams.reduce(function(n,o,u){return n+o.join('=')+(u===t?'':'&')},'')}}]),t})();function c(t){return/^(?:(?:(?:https?|ftp):)?\/\/)(?:(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(t)}e.URLSearchParams=h;var y=(function(){function t(o,u){(0,n.default)(this,t),this._searchParamsInstance=null;var s=null;if(!u||c(o))this._url=o,this._url.endsWith('/')||(this._url+='/');else{if('string'==typeof u){if(!c(s=u))throw new TypeError("Invalid base URL: "+s)}else'object'==typeof u&&(s=u.toString());s.endsWith('/')&&o.startsWith('/')&&(s=s.slice(0,s.length-1)),s.endsWith(o)&&(o=''),this._url=""+s+o}}return(0,o.default)(t,null,[{key:"createObjectURL",value:function(t){if(null===s)throw new Error('Cannot create URL for blob!');return""+s+t.data.blobId+"?offset="+t.data.offset+"&size="+t.size}},{key:"revokeObjectURL",value:function(t){}}]),(0,o.default)(t,[{key:"toJSON",value:function(){return this.toString()}},{key:"toString",value:function(){if(null===this._searchParamsInstance)return this._url;var t=this._url.indexOf('?')>-1?'&':'?';return this._url+t+this._searchParamsInstance.toString()}},{key:"hash",get:function(){throw new Error('not implemented')}},{key:"host",get:function(){throw new Error('not implemented')}},{key:"hostname",get:function(){throw new Error('not implemented')}},{key:"href",get:function(){return this.toString()}},{key:"origin",get:function(){throw new Error('not implemented')}},{key:"password",get:function(){throw new Error('not implemented')}},{key:"pathname",get:function(){throw new Error('not implemented')}},{key:"port",get:function(){throw new Error('not implemented')}},{key:"protocol",get:function(){throw new Error('not implemented')}},{key:"search",get:function(){throw new Error('not implemented')}},{key:"searchParams",get:function(){return null==this._searchParamsInstance&&(this._searchParamsInstance=new h),this._searchParamsInstance}},{key:"username",get:function(){throw new Error('not implemented')}}]),t})();e.URL=y},138,[9,25,26,119,120]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),o=r(d[1]),n=r(d[2]),l=r(d[3]),b=r(d[4]);Object.defineProperty(e,'__esModule',{value:!0});var u=r(d[5]),p=(function(u){function p(){throw t(this,p),n(this,l(p).call(this)),new TypeError("AbortSignal cannot be constructed directly")}return b(p,u),o(p,[{key:"aborted",get:function(){var t=y.get(this);if("boolean"!=typeof t)throw new TypeError("Expected 'this' to be an 'AbortSignal' object, but got "+(null===this?"null":typeof this));return t}}]),p})(u.EventTarget);u.defineEventAttribute(p.prototype,"abort");var y=new WeakMap;Object.defineProperties(p.prototype,{aborted:{enumerable:!0}}),"function"==typeof Symbol&&"symbol"==typeof("function"==typeof Symbol?Symbol.toStringTag:"@@toStringTag")&&Object.defineProperty(p.prototype,"function"==typeof Symbol?Symbol.toStringTag:"@@toStringTag",{configurable:!0,value:"AbortSignal"});var f=(function(){function n(){var o;t(this,n),c.set(this,(o=Object.create(p.prototype),u.EventTarget.call(o),y.set(o,!1),o))}return o(n,[{key:"abort",value:function(){var t;t=s(this),!1===y.get(t)&&(y.set(t,!0),t.dispatchEvent({type:"abort"}))}},{key:"signal",get:function(){return s(this)}}]),n})(),c=new WeakMap;function s(t){var o=c.get(t);if(null==o)throw new TypeError("Expected 'this' to be an 'AbortController' object, but got "+(null===t?"null":typeof t));return o}Object.defineProperties(f.prototype,{signal:{enumerable:!0},abort:{enumerable:!0}}),"function"==typeof Symbol&&"symbol"==typeof("function"==typeof Symbol?Symbol.toStringTag:"@@toStringTag")&&Object.defineProperty(f.prototype,"function"==typeof Symbol?Symbol.toStringTag:"@@toStringTag",{configurable:!0,value:"AbortController"}),e.AbortController=f,e.AbortSignal=p,e.default=f,m.exports=f,m.exports.AbortController=m.exports.default=f,m.exports.AbortSignal=p},139,[140,141,142,145,146,122]); -__d(function(g,r,i,a,m,e,d){m.exports=function(n,o){if(!(n instanceof o))throw new TypeError("Cannot call a class as a function")}},140,[]); -__d(function(g,r,i,a,m,e,d){function n(n,t){for(var o=0;o3&&void 0!==arguments[3]?arguments[3]:'plain-text',c=arguments.length>4?arguments[4]:void 0,f=arguments.length>5?arguments[5]:void 0;if('ios'===l.default.OS){if('function'==typeof s){console.warn("You passed a callback function as the \"type\" argument to Alert.prompt(). React Native is assuming you want to use the deprecated Alert.prompt(title, defaultValue, buttons, callback) signature. The current signature is Alert.prompt(title, message, callbackOrButtons, type, defaultValue, keyboardType) and the old syntax will be removed in a future version.");var p=s;return void u.default.alertWithArgs({title:t||'',type:'plain-text',defaultValue:n||''},function(t,n){p(n)})}var v,y,b=[],h=[];'function'==typeof o?b=[o]:Array.isArray(o)&&o.forEach(function(t,n){if(b[n]=t.onPress,'cancel'===t.style?v=String(n):'destructive'===t.style&&(y=String(n)),t.text||n<(o||[]).length-1){var l={};l[n]=t.text||'',h.push(l)}}),u.default.alertWithArgs({title:t||'',message:n||void 0,buttons:h,type:s||void 0,defaultValue:c,cancelButtonKey:v,destructiveButtonKey:y,keyboardType:f},function(t,n){var o=b[t];o&&o(n)})}}}]),t})();m.exports=c},149,[9,25,26,55,150,151]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=t(r(d[1])).get('DialogManagerAndroid');e.default=o},150,[11,12]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0])(r(d[1]));m.exports={alertWithArgs:function(l,u){null!=t.default&&t.default.alertWithArgs(l,u)}}},151,[9,152]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var u=t(r(d[1])).get('AlertManager');e.default=u},152,[11,12]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]).polyfillObjectProperty,o=g.navigator;void 0===o&&(g.navigator=o={}),t(o,'product',function(){return'ReactNative'})},153,[107]); -__d(function(g,r,i,a,m,e,d){'use strict';if(!g.RN$Bridgeless){var l=r(d[0]);l.registerLazyCallableModule('Systrace',function(){return r(d[1])}),l.registerLazyCallableModule('JSTimers',function(){return r(d[2])}),l.registerLazyCallableModule('HeapCapture',function(){return r(d[3])}),l.registerLazyCallableModule('SamplingProfiler',function(){return r(d[4])}),l.registerLazyCallableModule('RCTLog',function(){return r(d[5])}),l.registerLazyCallableModule('RCTDeviceEventEmitter',function(){return r(d[6])}),l.registerLazyCallableModule('RCTNativeAppEventEmitter',function(){return r(d[7])}),l.registerLazyCallableModule('GlobalPerformanceLogger',function(){return r(d[8])}),l.registerLazyCallableModule('JSDevSupportModule',function(){return r(d[9])}),l.registerCallableModule('HMRClient',r(d[10]))}},154,[19,28,111,155,157,159,37,160,161,164,166]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0])(r(d[1])),p={captureHeap:function(p){var u=null;try{g.nativeCaptureHeap(p),console.log('HeapCapture.captureHeap succeeded: '+p)}catch(t){console.log('HeapCapture.captureHeap error: '+t.toString()),u=t.toString()}t.default&&t.default.captureComplete(p,u)}};m.exports=p},155,[9,156]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var u=t(r(d[1])).get('HeapCapture');e.default=u},156,[11,12]); -__d(function(g,r,i,a,m,e,d){'use strict';var o={poke:function(o){var l=null,n=null;try{null===(n=g.pokeSamplingProfiler())?console.log('The JSC Sampling Profiler has started'):console.log('The JSC Sampling Profiler has stopped')}catch(o){console.log('Error occurred when restarting Sampling Profiler: '+o.toString()),l=o.toString()}var t=r(d[0]).default;t&&t.operationComplete(o,n,l)}};m.exports=o},157,[158]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var l=t(r(d[1])).get('JSCSamplingProfiler');e.default=l},158,[11,12]); -__d(function(g,r,i,a,m,e,d){'use strict';var o=r(d[0]),n={log:'log',info:'info',warn:'warn',error:'error',fatal:'error'},l=null,t={logIfNoNativeHook:function(o){for(var n=arguments.length,f=new Array(n>1?n-1:0),c=1;c1?c-1:0),s=1;s2&&void 0!==arguments[2]?arguments[2]:-1;if(0===o)return!0;if(n===f)return!1;if('function'==typeof n&&'function'==typeof f)return!1;if('object'!=typeof n||null===n)return n!==f;if('object'!=typeof f||null===f)return!0;if(n.constructor!==f.constructor)return!0;if(Array.isArray(n)){var u=n.length;if(f.length!==u)return!0;for(var c=0;c=C},u=function(){},e.unstable_forceFrameRate=function(n){0>n||125(F=lc){if(s=f,null===E)E=o.next=o.previous=o;else{u=null;var p=E;do{if(s1&&(o[u]=c)}else o[u]=f}for(var l in n)f.includes(l)||(u?n.hasOwnProperty(l)&&c(n[l],u[l],l):o[l]={});return o},e.getConfigWithoutViewProps=function(t,f){if(!t[f])return{};return Object.keys(t[f]).filter(function(t){return!n.default[f][t]}).reduce(function(n,u){return n[u]=t[f][u],n},{})},e.stringifyViewConfig=function(t){return JSON.stringify(t,function(t,n){return'function'==typeof n?"\u0192 "+n.name:n},2)},e.default=void 0;var n=t(r(d[1])),f=(r(d[2]),['transform','hitSlop']);var u=function(t,n){};e.default=u},179,[9,180,183]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),o=t(r(d[1])),s=t(r(d[2])),n={uiViewClassName:'RCTView',baseModuleName:null,Manager:'ViewManager',Commands:{},Constants:{},bubblingEventTypes:(0,o.default)({},s.default.bubblingEventTypes,{topBlur:{phasedRegistrationNames:{bubbled:'onBlur',captured:'onBlurCapture'}},topChange:{phasedRegistrationNames:{bubbled:'onChange',captured:'onChangeCapture'}},topEndEditing:{phasedRegistrationNames:{bubbled:'onEndEditing',captured:'onEndEditingCapture'}},topFocus:{phasedRegistrationNames:{bubbled:'onFocus',captured:'onFocusCapture'}},topKeyPress:{phasedRegistrationNames:{bubbled:'onKeyPress',captured:'onKeyPressCapture'}},topPress:{phasedRegistrationNames:{bubbled:'onPress',captured:'onPressCapture'}},topSubmitEditing:{phasedRegistrationNames:{bubbled:'onSubmitEditing',captured:'onSubmitEditingCapture'}},topTouchCancel:{phasedRegistrationNames:{bubbled:'onTouchCancel',captured:'onTouchCancelCapture'}},topTouchEnd:{phasedRegistrationNames:{bubbled:'onTouchEnd',captured:'onTouchEndCapture'}},topTouchMove:{phasedRegistrationNames:{bubbled:'onTouchMove',captured:'onTouchMoveCapture'}},topTouchStart:{phasedRegistrationNames:{bubbled:'onTouchStart',captured:'onTouchStartCapture'}}}),directEventTypes:(0,o.default)({},s.default.directEventTypes,{topAccessibilityAction:{registrationName:'onAccessibilityAction'},topAccessibilityEscape:{registrationName:'onAccessibilityEscape'},topAccessibilityTap:{registrationName:'onAccessibilityTap'},topLayout:{registrationName:'onLayout'},topMagicTap:{registrationName:'onMagicTap'},onGestureHandlerEvent:{registrationName:'onGestureHandlerEvent'},onGestureHandlerStateChange:{registrationName:'onGestureHandlerStateChange'}}),validAttributes:(0,o.default)({},s.default.validAttributes,{accessibilityActions:!0,accessibilityElementsHidden:!0,accessibilityHint:!0,accessibilityIgnoresInvertColors:!0,accessibilityLabel:!0,accessibilityLiveRegion:!0,accessibilityRole:!0,accessibilityStates:!0,accessibilityState:!0,accessibilityViewIsModal:!0,accessible:!0,alignContent:!0,alignItems:!0,alignSelf:!0,aspectRatio:!0,backfaceVisibility:!0,backgroundColor:{process:r(d[3])},borderBottomColor:{process:r(d[3])},borderBottomEndRadius:!0,borderBottomLeftRadius:!0,borderBottomRightRadius:!0,borderBottomStartRadius:!0,borderBottomWidth:!0,borderColor:{process:r(d[3])},borderEndColor:{process:r(d[3])},borderEndWidth:!0,borderLeftColor:{process:r(d[3])},borderLeftWidth:!0,borderRadius:!0,borderRightColor:{process:r(d[3])},borderRightWidth:!0,borderStartColor:{process:r(d[3])},borderStartWidth:!0,borderStyle:!0,borderTopColor:{process:r(d[3])},borderTopEndRadius:!0,borderTopLeftRadius:!0,borderTopRightRadius:!0,borderTopStartRadius:!0,borderTopWidth:!0,borderWidth:!0,bottom:!0,clickable:!0,collapsable:!0,direction:!0,display:!0,elevation:!0,end:!0,flex:!0,flexBasis:!0,flexDirection:!0,flexGrow:!0,flexShrink:!0,flexWrap:!0,height:!0,hitSlop:{diff:r(d[4])},importantForAccessibility:!0,justifyContent:!0,left:!0,margin:!0,marginBottom:!0,marginEnd:!0,marginHorizontal:!0,marginLeft:!0,marginRight:!0,marginStart:!0,marginTop:!0,marginVertical:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,nativeID:!0,needsOffscreenAlphaCompositing:!0,onAccessibilityAction:!0,onAccessibilityEscape:!0,onAccessibilityTap:!0,onLayout:!0,onMagicTap:!0,opacity:!0,overflow:!0,padding:!0,paddingBottom:!0,paddingEnd:!0,paddingHorizontal:!0,paddingLeft:!0,paddingRight:!0,paddingStart:!0,paddingTop:!0,paddingVertical:!0,pointerEvents:!0,position:!0,removeClippedSubviews:!0,renderToHardwareTextureAndroid:!0,right:!0,rotation:!0,scaleX:!0,scaleY:!0,shadowColor:{process:r(d[3])},shadowOffset:{diff:r(d[5])},shadowOpacity:!0,shadowRadius:!0,shouldRasterizeIOS:!0,start:!0,style:{alignContent:!0,alignItems:!0,alignSelf:!0,aspectRatio:!0,backfaceVisibility:!0,backgroundColor:{process:r(d[3])},borderBottomColor:{process:r(d[3])},borderBottomEndRadius:!0,borderBottomLeftRadius:!0,borderBottomRightRadius:!0,borderBottomStartRadius:!0,borderBottomWidth:!0,borderColor:{process:r(d[3])},borderEndColor:{process:r(d[3])},borderEndWidth:!0,borderLeftColor:{process:r(d[3])},borderLeftWidth:!0,borderRadius:!0,borderRightColor:{process:r(d[3])},borderRightWidth:!0,borderStartColor:{process:r(d[3])},borderStartWidth:!0,borderStyle:!0,borderTopColor:{process:r(d[3])},borderTopEndRadius:!0,borderTopLeftRadius:!0,borderTopRightRadius:!0,borderTopStartRadius:!0,borderTopWidth:!0,borderWidth:!0,bottom:!0,color:{process:r(d[3])},decomposedMatrix:!0,direction:!0,display:!0,elevation:!0,end:!0,flex:!0,flexBasis:!0,flexDirection:!0,flexGrow:!0,flexShrink:!0,flexWrap:!0,fontFamily:!0,fontSize:!0,fontStyle:!0,fontVariant:!0,fontWeight:!0,height:!0,includeFontPadding:!0,justifyContent:!0,left:!0,letterSpacing:!0,lineHeight:!0,margin:!0,marginBottom:!0,marginEnd:!0,marginHorizontal:!0,marginLeft:!0,marginRight:!0,marginStart:!0,marginTop:!0,marginVertical:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,opacity:!0,overflow:!0,overlayColor:{process:r(d[3])},padding:!0,paddingBottom:!0,paddingEnd:!0,paddingHorizontal:!0,paddingLeft:!0,paddingRight:!0,paddingStart:!0,paddingTop:!0,paddingVertical:!0,position:!0,resizeMode:!0,right:!0,rotation:!0,scaleX:!0,scaleY:!0,shadowColor:{process:r(d[3])},shadowOffset:{diff:r(d[5])},shadowOpacity:!0,shadowRadius:!0,start:!0,textAlign:!0,textAlignVertical:!0,textDecorationColor:{process:r(d[3])},textDecorationLine:!0,textDecorationStyle:!0,textShadowColor:{process:r(d[3])},textShadowOffset:!0,textShadowRadius:!0,textTransform:!0,tintColor:{process:r(d[3])},top:!0,transform:{diff:r(d[6])},transformMatrix:!0,translateX:!0,translateY:!0,width:!0,writingDirection:!0,zIndex:!0},testID:!0,top:!0,transform:{diff:r(d[6])},translateX:!0,translateY:!0,width:!0,zIndex:!0})};m.exports=n},180,[9,51,177,83,181,86,182]); -__d(function(g,r,i,a,m,e,d){'use strict';var t={top:void 0,left:void 0,right:void 0,bottom:void 0};m.exports=function(o,f){return(o=o||t)!==(f=f||t)&&(o.top!==f.top||o.left!==f.left||o.right!==f.right||o.bottom!==f.bottom)}},181,[]); -__d(function(g,r,i,a,m,e,d){'use strict';m.exports=function(t,n){return!(t===n||t&&n&&t[12]===n[12]&&t[13]===n[13]&&t[14]===n[14]&&t[5]===n[5]&&t[10]===n[10]&&t[1]===n[1]&&t[2]===n[2]&&t[3]===n[3]&&t[4]===n[4]&&t[6]===n[6]&&t[7]===n[7]&&t[8]===n[8]&&t[9]===n[9]&&t[11]===n[11]&&t[15]===n[15])}},182,[]); -__d(function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]),t=r(d[1]),s=r(d[2]),o=r(d[3]),u=r(d[4]),c=r(d[5]),l=r(d[6]),v=r(d[7]),b=r(d[8]),p=r(d[9]),f=r(d[10]),y=r(d[11]),C=r(d[12]);var E=!1;function T(n){var t=o.getConstants();t.ViewManagerNames||t.LazyViewManagersEnabled?n=w(n,o.getDefaultEventTypes()):(n.bubblingEventTypes=w(n.bubblingEventTypes,t.genericBubblingEventTypes),n.directEventTypes=w(n.directEventTypes,t.genericDirectEventTypes))}function w(n,t){if(!t)return n;if(!n)return t;for(var s in t)if(t.hasOwnProperty(s)){var o=t[s];if(n.hasOwnProperty(s)){var u=n[s];'object'==typeof o&&'object'==typeof u&&(o=w(u,o))}n[s]=o}return n}function I(n){switch(n){case'CATransform3D':return l;case'CGPoint':return v;case'CGSize':return y;case'UIEdgeInsets':return u}return null}function N(n){switch(n){case'CGColor':case'UIColor':return b;case'CGColorArray':case'UIColorArray':return p;case'CGImage':case'UIImage':case'RCTImageSource':return f;case'Color':return b;case'ColorArray':return p}return null}m.exports=function(u){var l=o.getViewManagerConfig(u);c(null!=l&&null!=l.NativeProps,'requireNativeComponent: "%s" was not found in the UIManager.',u);for(var v=l.baseModuleName,b=l.bubblingEventTypes,p=l.directEventTypes,f=l.NativeProps;v;){var y=o.getViewManagerConfig(v);y?(b=t({},y.bubblingEventTypes,b),p=t({},y.directEventTypes,p),f=t({},y.NativeProps,f),v=y.baseModuleName):(C(!1,'Base module "%s" does not exist',v),v=null)}var w={};for(var M in f){var P=f[M],h=I(P),A=N(P);w[M]=null==h&&null==A||{diff:h,process:A}}return w.style=s,n(l,{uiViewClassName:u,validAttributes:w,bubblingEventTypes:b,directEventTypes:p}),E||(T(l),E=!0),l}},183,[14,51,65,76,181,4,182,184,83,185,186,86,6]); -__d(function(g,r,i,a,m,e,d){'use strict';var t={x:void 0,y:void 0};m.exports=function(n,o){return(n=n||t)!==(o=o||t)&&(n.x!==o.x||n.y!==o.y)}},184,[]); -__d(function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]);m.exports=function(t){return null==t?null:t.map(n)}},185,[83]); -__d(function(g,r,i,a,m,e,d){'use strict';var t,n,s,u,o=r(d[0]),f=r(d[1]);function c(){if(u)return u;var t=g.nativeExtensions&&g.nativeExtensions.SourceCode;return t||(t=r(d[2]).default),u=t.getConstants().scriptURL}function l(){if(void 0===n){var t=c(),s=t&&t.match(/^https?:\/\/.*?\//);n=s?s[0]:null}return n}function v(t){if(t){if(t.startsWith('assets://'))return null;(t=t.substring(0,t.lastIndexOf('/')+1)).includes('://')||(t='file://'+t)}return t}m.exports=function(n){if('object'==typeof n)return n;var u=o.getAssetByID(n);if(!u)return null;var p=new f(l(),(void 0===s&&(s=v(c())),s),u);return t?t(p):p.defaultAsset()},m.exports.pickScale=f.pickScale,m.exports.setCustomSourceTransformer=function(n){t=n}},186,[187,188,190]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=[];m.exports={registerAsset:function(s){return t.push(s)},getAssetByID:function(s){return t[s-1]}}},187,[]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),s=r(d[1]),n=r(d[2]),u=(r(d[3]),r(d[4])),o=r(d[5]);function l(t){var s=h.pickScale(t.scales,n.get()),o=1===s?'':'@'+s+'x';return u.getBasePath(t)+'/'+t.name+o+'.'+t.type}function c(t){var s=h.pickScale(t.scales,n.get());return u.getAndroidResourceFolderName(t,s)+'/'+u.getAndroidResourceIdentifier(t)+'.'+t.type}var h=(function(){function h(s,n,u){t(this,h),this.serverUrl=s,this.jsbundleUrl=n,this.asset=u}return s(h,[{key:"isLoadedFromServer",value:function(){return!!this.serverUrl}},{key:"isLoadedFromFileSystem",value:function(){return!(!this.jsbundleUrl||!this.jsbundleUrl.startsWith('file://'))}},{key:"defaultAsset",value:function(){return this.isLoadedFromServer()?this.assetServerURL():this.scaledAssetURLNearBundle()}},{key:"assetServerURL",value:function(){return o(!!this.serverUrl,'need server to load from'),this.fromSource(this.serverUrl+l(this.asset)+"?platform=ios&hash="+this.asset.hash)}},{key:"scaledAssetPath",value:function(){return this.fromSource(l(this.asset))}},{key:"scaledAssetURLNearBundle",value:function(){var t=this.jsbundleUrl||'file://';return this.fromSource(t+l(this.asset))}},{key:"resourceIdentifierWithoutScale",value:function(){return o(!1,'resource identifiers work on Android'),this.fromSource(u.getAndroidResourceIdentifier(this.asset))}},{key:"drawableFolderInBundle",value:function(){var t=this.jsbundleUrl||'file://';return this.fromSource(t+c(this.asset))}},{key:"fromSource",value:function(t){return{__packager_asset:!0,width:this.asset.width,height:this.asset.height,uri:t,scale:h.pickScale(this.asset.scales,n.get())}}}],[{key:"pickScale",value:function(t,s){for(var n=0;n=s)return t[n];return t[t.length-1]||1}}]),h})();m.exports=h},188,[25,26,62,55,189,4]); -__d(function(g,r,i,a,m,e,d){'use strict';var t={.75:'ldpi',1:'mdpi',1.5:'hdpi',2:'xhdpi',3:'xxhdpi',4:'xxxhdpi'};function n(n){if(n.toString()in t)return t[n.toString()];throw new Error('no such scale '+n.toString())}var o=new Set(['gif','jpeg','jpg','png','svg','webp','xml']);function s(t){var n=t.httpServerLocation;return'/'===n[0]&&(n=n.substr(1)),n}m.exports={getAndroidAssetSuffix:n,getAndroidResourceFolderName:function(s,u){if(!o.has(s.type))return'raw';var c=n(u);if(!c)throw new Error("Don't know which android drawable suffix to use for scale: "+u+'\nAsset: '+JSON.stringify(s,null,'\t')+'\nPossible scales are:'+JSON.stringify(t,null,'\t'));return'drawable-'+c},getAndroidResourceIdentifier:function(t){return(s(t)+'/'+t.name).toLowerCase().replace(/\//g,'_').replace(/([^a-z0-9_])/g,'').replace(/^assets_/,'')},getBasePath:s}},189,[]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=t(r(d[1])).getEnforcing('SourceCode');e.default=o},190,[11,12]); -__d(function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]),t=r(d[1]);m.exports=function(u){return n(u,function(){return t(u)})}},191,[192,183]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]).ReactNativeViewConfigRegistry.register;m.exports=function(n,s){return t(n,s)}},192,[169]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=(0,t(r(d[1])).default)('ActivityIndicatorView',{paperComponentName:'RCTActivityIndicatorView'});e.default=o},193,[9,194]); -__d(function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=n(r(d[1])),t=r(d[2]);var p=function(n,p){var f=p&&p.paperComponentName?p.paperComponentName:n;if(null!=p&&null!=p.paperComponentNameDeprecated)if(t.UIManager.getViewManagerConfig(n))f=n;else{if(null==p.paperComponentNameDeprecated||!t.UIManager.getViewManagerConfig(p.paperComponentNameDeprecated))throw new Error("Failed to find native component for either "+n+" or "+(p.paperComponentNameDeprecated||'(unknown)'));f=p.paperComponentNameDeprecated}return(0,o.default)(f)};e.default=p},194,[9,191,3]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),o=r(d[2]),l=r(d[3]),u=r(d[4]),s=r(d[5]),f=r(d[6]),c=r(d[7]),h=r(d[8]),p=r(d[9]),v=r(d[10]),y=r(d[11]),b=r(d[12]),k=r(d[13]);function S(t,n){if(null==t||null==n)return!0;if(t.length!==n.length)return!0;for(var o=0;o must be a child of a '),h.createElement(W,{opacity:E(t),transform:D(t)},this.props.children)}}]),f})(h.Component);F.contextTypes={isInSurface:p.bool.isRequired};var M=(function(s){function f(){return t(this,f),o(this,l(f).apply(this,arguments))}return u(f,s),n(f,[{key:"render",value:function(){var t=this.props,n=[N(t.x,0),N(t.y,0),N(t.width,0),N(t.height,0)],o=b(t);return delete o.x,delete o.y,h.createElement(W,{clipping:n,opacity:E(t),transform:D(o)},this.props.children)}}]),f})(h.Component),P=0,X=1,Y=2,O=3;function q(t,n,o){var l=new s(t);n[o+0]=l.red/255,n[o+1]=l.green/255,n[o+2]=l.blue/255,n[o+3]=l.alpha}function j(t,n,o){var l=0;if('length'in t)for(;lT?(X-=M,Y-=b):f>0&&0!=T&&(X-=f/T*M,Y-=f/T*b),l=X*X+Y*Y,(f=(X=o-t)*M+(Y=u-n)*b)>T?(X-=M,Y-=b):f>0&&0!=T&&(X-=f/T*M,Y-=f/T*b),v=X*X+Y*Y,l<.01&&v<.01)this.onLine(t,n,p,c);else{if(isNaN(l)||isNaN(v))throw new Error('Bad input');var k=.5*(s+o),w=.5*(h+u),_=.5*(s+t),D=.5*(h+n),z=.5*(_+k),C=.5*(D+w),B=.5*(p+o),A=.5*(c+u),L=.5*(B+k),I=.5*(A+w),P=.5*(z+L),N=.5*(C+I);this.onBezierCurve(t,n,_,D,z,C,P,N),this.onBezierCurve(P,N,L,I,B,A,p,c)}},onArc:function(t,n,s,h,o,u,p,c,l,v,X,Y){var f=Y?Y*Math.PI/180:0,M=Math.cos(f),b=Math.sin(f),T=M*p,k=-b*c,w=b*p,_=M*c,D=v-l;D<0&&!X?D+=2*Math.PI:D>0&&X&&(D-=2*Math.PI);for(var z=Math.ceil(Math.abs(D/(Math.PI/2))),C=D/z,B=1.3333333333333333*Math.tan(C/4),A=Math.cos(l),L=Math.sin(l),I=0;Ithis.yy/this.xy?-1:1;return(this.xx<0?this.xy>=0:this.xy<0)&&(x=-x),this.rotate(t-180*Math.atan2(x*this.yx,x*this.xx)/Math.PI,s,h)},scaleTo:function(t,s){var h=Math.sqrt(this.xx*this.xx+this.yx*this.yx);return this.xx/=h,this.yx/=h,h=Math.sqrt(this.yy*this.yy+this.xy*this.xy),this.yy/=h,this.xy/=h,this.scale(t,s)},resizeTo:function(t,s){var h=this.width,x=this.height;return h&&x?this.scaleTo(t/h,s/x):this},inversePoint:function(t,s){var h=this.xx,x=this.yx,y=this.xy,n=this.yy,o=this.x,u=this.y,f=x*y-h*n;return 0==f?null:{x:(n*(o-t)+y*(s-u))/f,y:(h*(u-s)+x*(t-o))/f}},point:function(t,s){return{x:this.xx*t+this.xy*s+this.x,y:this.yx*t+this.yy*s+this.y}}})},200,[198]); -__d(function(g,r,i,a,m,e,d){'use strict';var s=r(d[0]),t={pointerEvents:!0,accessible:!0,accessibilityActions:!0,accessibilityLabel:!0,accessibilityLiveRegion:!0,accessibilityRole:!0,accessibilityStates:!0,accessibilityState:!0,accessibilityHint:!0,importantForAccessibility:!0,nativeID:!0,testID:!0,renderToHardwareTextureAndroid:!0,shouldRasterizeIOS:!0,onLayout:!0,onAccessibilityAction:!0,onAccessibilityTap:!0,onMagicTap:!0,onAccessibilityEscape:!0,collapsable:!0,needsOffscreenAlphaCompositing:!0,style:r(d[1])},c={UIView:t,RCTView:s({},t,{removeClippedSubviews:!0})};m.exports=c},201,[51,65]); -__d(function(g,r,i,a,m,e,d){"use strict";var t=r(d[0]);m.exports=function(n,u){var c={};return t(c,n),t(c,u),c}},202,[203]); -__d(function(g,r,i,a,m,e,d){"use strict";var t=r(d[0]),c=t.checkMergeObjectArg,n=t.checkMergeIntoObjectArg;m.exports=function(t,o){if(n(t),null!=o)for(var f in c(o),o)Object.prototype.hasOwnProperty.call(o,f)&&(t[f]=o[f])}},203,[204]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=function(t){return'object'!=typeof t||t instanceof Date||null===t},c={MAX_MERGE_DEPTH:36,isTerminal:n,normalizeMergeArg:function(t){return void 0===t||null===t?{}:t},checkMergeArrayArgs:function(n,c){t(Array.isArray(n)&&Array.isArray(c),'Tried to merge arrays, instead got %s and %s.',n,c)},checkMergeObjectArgs:function(t,n){c.checkMergeObjectArg(t),c.checkMergeObjectArg(n)},checkMergeObjectArg:function(c){t(!n(c)&&!Array.isArray(c),'Tried to merge an object, instead got %s.',c)},checkMergeIntoObjectArg:function(c){t(!(n(c)&&'function'!=typeof c||Array.isArray(c)),'Tried to merge into an object, instead got %s.',c)},checkMergeLevel:function(n){t(n<36,"Maximum deep merge depth exceeded. You may be attempting to merge circular structures in an unsupported way.")},checkArrayStrategy:function(n){t(void 0===n||n in c.ArrayStrategies,"You must provide an array strategy to deep merge functions to instruct the deep merge how to resolve merging two arrays.")},ArrayStrategies:{Clobber:'Clobber',Concat:'Concat',IndexByIndex:'IndexByIndex'}};m.exports=c},204,[4]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),s=r(d[1]),o=r(d[2]),n=r(d[3]),c=r(d[4]),u=r(d[5]),l=(r(d[6]),r(d[7])),b=r(d[8]),p=r(d[9]),x=(r(d[10]),r(d[11])),F=r(d[12]),h=r(d[13]),f=(function(t){function b(){return s(this,b),n(this,c(b).apply(this,arguments))}return u(b,t),o(b,[{key:"render",value:function(){var t=this.props,s=t.accessibilityLabel,o=t.color,n=t.onPress,c=t.touchSoundDisabled,u=t.title,b=t.hasTVPreferredFocus,f=t.nextFocusDown,y=t.nextFocusForward,v=t.nextFocusLeft,w=t.nextFocusRight,L=t.nextFocusUp,P=t.disabled,S=t.testID,E=[D.button],R=[D.text];o&&R.push({color:o});var T=[];P&&(E.push(D.buttonDisabled),R.push(D.textDisabled),T.push('disabled')),h('string'==typeof u,'The title prop of a Button must be a string');var A=u,I=x;return l.createElement(I,{accessibilityLabel:s,accessibilityRole:"button",accessibilityStates:T,hasTVPreferredFocus:b,nextFocusDown:f,nextFocusForward:y,nextFocusLeft:v,nextFocusRight:w,nextFocusUp:L,testID:S,disabled:P,onPress:n,touchSoundDisabled:c},l.createElement(F,{style:E},l.createElement(p,{style:R,disabled:P},A)))}}]),b})(l.Component),D=b.create({button:{},text:t({textAlign:'center',padding:8},{color:'#007AFF',fontSize:18}),buttonDisabled:{},textDisabled:{color:'#cdcdcd'}});m.exports=f},205,[51,25,26,38,41,44,55,57,61,206,221,222,89,4]); -__d(function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]),t=r(d[1]),o=r(d[2]),s=r(d[3]),l=r(d[4]),u=r(d[5]),p=r(d[6]),c=r(d[7]),h=r(d[8]),f=r(d[9]),R=r(d[10]),H=r(d[11]),v=r(d[12]),T=r(d[13]),b=r(d[14]),S=r(d[15]),y=r(d[16]),w={top:20,left:20,right:20,bottom:30},x={validAttributes:c({},R.UIView,{isHighlighted:!0,numberOfLines:!0,ellipsizeMode:!0,allowFontScaling:!0,maxFontSizeMultiplier:!0,disabled:!0,selectable:!0,selectionColor:!0,adjustsFontSizeToFit:!0,minimumFontScale:!0,textBreakStrategy:!0,onTextLayout:!0,onInlineViewLayout:!0,dataDetectorType:!0}),directEventTypes:{topTextLayout:{registrationName:'onTextLayout'},topInlineViewLayout:{registrationName:'onInlineViewLayout'}},uiViewClassName:'RCTText'},C=(function(h){function R(){var n,o;t(this,R);for(var u=arguments.length,h=new Array(u),f=0;f4?p-4:0),l=4;l5?b-5:0),k=5;k4?s-4:0),p=4;p0,s=R&&R.length>0;return!_&&s?R[0]:_?t[0]:E}),T=N({NOT_RESPONDER:null,RESPONDER_INACTIVE_PRESS_IN:null,RESPONDER_INACTIVE_PRESS_OUT:null,RESPONDER_ACTIVE_PRESS_IN:null,RESPONDER_ACTIVE_PRESS_OUT:null,RESPONDER_ACTIVE_LONG_PRESS_IN:null,RESPONDER_ACTIVE_LONG_PRESS_OUT:null,ERROR:null}),u={NOT_RESPONDER:!1,RESPONDER_INACTIVE_PRESS_IN:!1,RESPONDER_INACTIVE_PRESS_OUT:!1,RESPONDER_ACTIVE_PRESS_IN:!1,RESPONDER_ACTIVE_PRESS_OUT:!1,RESPONDER_ACTIVE_LONG_PRESS_IN:!1,RESPONDER_ACTIVE_LONG_PRESS_OUT:!1,ERROR:!1},P=t({},u,{RESPONDER_ACTIVE_PRESS_OUT:!0,RESPONDER_ACTIVE_PRESS_IN:!0}),O=t({},u,{RESPONDER_INACTIVE_PRESS_IN:!0,RESPONDER_ACTIVE_PRESS_IN:!0,RESPONDER_ACTIVE_LONG_PRESS_IN:!0}),D=t({},u,{RESPONDER_ACTIVE_LONG_PRESS_IN:!0}),c=N({DELAY:null,RESPONDER_GRANT:null,RESPONDER_RELEASE:null,RESPONDER_TERMINATED:null,ENTER_PRESS_RECT:null,LEAVE_PRESS_RECT:null,LONG_PRESS_DETECTED:null}),A={NOT_RESPONDER:{DELAY:T.ERROR,RESPONDER_GRANT:T.RESPONDER_INACTIVE_PRESS_IN,RESPONDER_RELEASE:T.ERROR,RESPONDER_TERMINATED:T.ERROR,ENTER_PRESS_RECT:T.ERROR,LEAVE_PRESS_RECT:T.ERROR,LONG_PRESS_DETECTED:T.ERROR},RESPONDER_INACTIVE_PRESS_IN:{DELAY:T.RESPONDER_ACTIVE_PRESS_IN,RESPONDER_GRANT:T.ERROR,RESPONDER_RELEASE:T.NOT_RESPONDER,RESPONDER_TERMINATED:T.NOT_RESPONDER,ENTER_PRESS_RECT:T.RESPONDER_INACTIVE_PRESS_IN,LEAVE_PRESS_RECT:T.RESPONDER_INACTIVE_PRESS_OUT,LONG_PRESS_DETECTED:T.ERROR},RESPONDER_INACTIVE_PRESS_OUT:{DELAY:T.RESPONDER_ACTIVE_PRESS_OUT,RESPONDER_GRANT:T.ERROR,RESPONDER_RELEASE:T.NOT_RESPONDER,RESPONDER_TERMINATED:T.NOT_RESPONDER,ENTER_PRESS_RECT:T.RESPONDER_INACTIVE_PRESS_IN,LEAVE_PRESS_RECT:T.RESPONDER_INACTIVE_PRESS_OUT,LONG_PRESS_DETECTED:T.ERROR},RESPONDER_ACTIVE_PRESS_IN:{DELAY:T.ERROR,RESPONDER_GRANT:T.ERROR,RESPONDER_RELEASE:T.NOT_RESPONDER,RESPONDER_TERMINATED:T.NOT_RESPONDER,ENTER_PRESS_RECT:T.RESPONDER_ACTIVE_PRESS_IN,LEAVE_PRESS_RECT:T.RESPONDER_ACTIVE_PRESS_OUT,LONG_PRESS_DETECTED:T.RESPONDER_ACTIVE_LONG_PRESS_IN},RESPONDER_ACTIVE_PRESS_OUT:{DELAY:T.ERROR,RESPONDER_GRANT:T.ERROR,RESPONDER_RELEASE:T.NOT_RESPONDER,RESPONDER_TERMINATED:T.NOT_RESPONDER,ENTER_PRESS_RECT:T.RESPONDER_ACTIVE_PRESS_IN,LEAVE_PRESS_RECT:T.RESPONDER_ACTIVE_PRESS_OUT,LONG_PRESS_DETECTED:T.ERROR},RESPONDER_ACTIVE_LONG_PRESS_IN:{DELAY:T.ERROR,RESPONDER_GRANT:T.ERROR,RESPONDER_RELEASE:T.NOT_RESPONDER,RESPONDER_TERMINATED:T.NOT_RESPONDER,ENTER_PRESS_RECT:T.RESPONDER_ACTIVE_LONG_PRESS_IN,LEAVE_PRESS_RECT:T.RESPONDER_ACTIVE_LONG_PRESS_OUT,LONG_PRESS_DETECTED:T.RESPONDER_ACTIVE_LONG_PRESS_IN},RESPONDER_ACTIVE_LONG_PRESS_OUT:{DELAY:T.ERROR,RESPONDER_GRANT:T.ERROR,RESPONDER_RELEASE:T.NOT_RESPONDER,RESPONDER_TERMINATED:T.NOT_RESPONDER,ENTER_PRESS_RECT:T.RESPONDER_ACTIVE_LONG_PRESS_IN,LEAVE_PRESS_RECT:T.RESPONDER_ACTIVE_LONG_PRESS_OUT,LONG_PRESS_DETECTED:T.ERROR},error:{DELAY:T.NOT_RESPONDER,RESPONDER_GRANT:T.RESPONDER_INACTIVE_PRESS_IN,RESPONDER_RELEASE:T.NOT_RESPONDER,RESPONDER_TERMINATED:T.NOT_RESPONDER,ENTER_PRESS_RECT:T.NOT_RESPONDER,LEAVE_PRESS_RECT:T.NOT_RESPONDER,LONG_PRESS_DETECTED:T.NOT_RESPONDER}},I={componentDidMount:function(){_.isTV&&(this._tvEventHandler=new n,this._tvEventHandler.enable(this,function(E,t){var R=o.findNodeHandle(E);t.dispatchConfig={},R===t.tag&&('focus'===t.eventType?E.touchableHandleFocus(t):'blur'===t.eventType?E.touchableHandleBlur(t):'select'===t.eventType&&E.touchableHandlePress&&!E.props.disabled&&E.touchableHandlePress(t))}))},componentWillUnmount:function(){this._tvEventHandler&&(this._tvEventHandler.disable(),delete this._tvEventHandler),this.touchableDelayTimeout&&clearTimeout(this.touchableDelayTimeout),this.longPressDelayTimeout&&clearTimeout(this.longPressDelayTimeout),this.pressOutDelayTimeout&&clearTimeout(this.pressOutDelayTimeout)},touchableGetInitialState:function(){return{touchable:{touchState:void 0,responderID:null}}},touchableHandleResponderTerminationRequest:function(){return!this.props.rejectResponderTermination},touchableHandleStartShouldSetResponder:function(){return!this.props.disabled},touchableLongPressCancelsPress:function(){return!0},touchableHandleResponderGrant:function(E){var t=E.currentTarget;E.persist(),this.pressOutDelayTimeout&&clearTimeout(this.pressOutDelayTimeout),this.pressOutDelayTimeout=null,this.state.touchable.touchState=T.NOT_RESPONDER,this.state.touchable.responderID=t,this._receiveSignal(c.RESPONDER_GRANT,E);var R=void 0!==this.touchableGetHighlightDelayMS?Math.max(this.touchableGetHighlightDelayMS(),0):130;0!==(R=isNaN(R)?130:R)?this.touchableDelayTimeout=setTimeout(this._handleDelay.bind(this,E),R):this._handleDelay(E);var _=void 0!==this.touchableGetLongPressDelayMS?Math.max(this.touchableGetLongPressDelayMS(),10):370;_=isNaN(_)?370:_,this.longPressDelayTimeout=setTimeout(this._handleLongDelay.bind(this,E),_+R)},touchableHandleResponderRelease:function(E){this.pressInLocation=null,this._receiveSignal(c.RESPONDER_RELEASE,E)},touchableHandleResponderTerminate:function(E){this.pressInLocation=null,this._receiveSignal(c.RESPONDER_TERMINATED,E)},touchableHandleResponderMove:function(E){if(this.state.touchable.positionOnActivate){var t=this.state.touchable.positionOnActivate,R=this.state.touchable.dimensionsOnActivate,_=this.touchableGetPressRectOffset?this.touchableGetPressRectOffset():{left:20,right:20,top:20,bottom:20},s=_.left,o=_.top,S=_.right,n=_.bottom,l=this.touchableGetHitSlop?this.touchableGetHitSlop():null;l&&(s+=l.left||0,o+=l.top||0,S+=l.right||0,n+=l.bottom||0);var N=h(E.nativeEvent),u=N&&N.pageX,P=N&&N.pageY;if(this.pressInLocation)this._getDistanceBetweenPoints(u,P,this.pressInLocation.pageX,this.pressInLocation.pageY)>10&&this._cancelLongPressDelayTimeout();if(u>t.left-s&&P>t.top-o&&u2?f-2:0),u=2;u1&&void 0!==arguments[1]?arguments[1]:{}).iterations;return V},event:function(t,n){return null},createAnimatedComponent:E,attachNativeEvent:o,forkEvent:f.forkEvent,unforkEvent:f.unforkEvent,Event:u,__PropsOnlyForTests:s}},224,[51,225,234,227,228,240,226,245,253]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),s=r(d[2]),v=r(d[3]),o=r(d[4]),c=r(d[5]),_=r(d[3]).shouldUseNativeDriver;function l(t,n,_){var l=[];c(_[0]&&_[0].nativeEvent,'Native driven events only support animated values contained inside `nativeEvent`.'),(function t(n,v){if(n instanceof s)n.__makeNative(),l.push({nativeEventPath:v,animatedValueTag:n.__getNativeTag()});else if('object'==typeof n)for(var o in n)t(n[o],v.concat(o))})(_[0].nativeEvent,[]);var h=o.findNodeHandle(t);return l.forEach(function(t){v.API.addAnimatedEventToView(h,n,t)}),{detach:function(){l.forEach(function(t){v.API.removeAnimatedEventFromView(h,n,t.animatedValueTag)})}}}var h=(function(){function v(n){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t(this,v),this._listeners=[],this._argMapping=n,s.listener&&this.__addListener(s.listener),this._callListeners=this._callListeners.bind(this),this._attachedEvent=null,this.__isNative=_(s)}return n(v,[{key:"__addListener",value:function(t){this._listeners.push(t)}},{key:"__removeListener",value:function(t){this._listeners=this._listeners.filter(function(n){return n!==t})}},{key:"__attach",value:function(t,n){c(this.__isNative,'Only native driven events need to be attached.'),this._attachedEvent=l(t,n,this._argMapping)}},{key:"__detach",value:function(t,n){c(this.__isNative,'Only native driven events need to be detached.'),this._attachedEvent&&this._attachedEvent.detach()}},{key:"__getHandler",value:function(){var t=this;return this.__isNative?this._callListeners:function(){for(var n=arguments.length,v=new Array(n),o=0;oo){if('identity'===f)return c;'clamp'===f&&(c=o)}return u===p?u:n===o?t<=n?u:p:(n===-1/0?c=-c:o===1/0?c-=n:c=(c-n)/(o-n),c=l(c),u===-1/0?c=-c:p===1/0?c+=u:c=c*(p-u)+u,c)}function x(t){var n=_(t);return null===n?t:"rgba("+((4278190080&(n=n||0))>>>24)+", "+((16711680&n)>>>16)+", "+((65280&n)>>>8)+", "+(255&n)/255+")"}var k=/[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/g;function b(t){var n=t.outputRange;s(n.length>=2,'Bad output range'),C(n=n.map(x));var o=n[0].match(k).map(function(){return[]});n.forEach(function(t){t.match(k).forEach(function(t,n){o[n].push(+t)})});var u,p=n[0].match(k).map(function(n,u){return y(h({},t,{outputRange:o[u]}))}),l='string'==typeof(u=n[0])&&u.startsWith('rgb');return function(t){var o=0;return n[0].replace(k,function(){var n=+p[o++](t);return l&&(n=o<4?Math.round(n):Math.round(1e3*n)/1e3),String(n)})}}function C(t){for(var n=t[0].replace(k,''),o=1;o=t);++o);return o-1}function N(t){s(t.length>=2,'inputRange must have at least 2 elements');for(var n=1;n=t[n-1],'inputRange must be monotonically non-decreasing '+t)}function w(t,n){s(n.length>=2,t+' must have at least 2 elements'),s(2!==n.length||n[0]!==-1/0||n[1]!==1/0,t+'cannot be ]-infinity;+infinity[ '+n)}var D=(function(h){function _(n,p){var l;return t(this,_),(l=o(this,u(_).call(this)))._parent=n,l._config=p,l._interpolation=y(p),l}return l(_,f),n(_,[{key:"__makeNative",value:function(){this._parent.__makeNative(),p(u(_.prototype),"__makeNative",this).call(this)}},{key:"__getValue",value:function(){var t=this._parent.__getValue();return s('number'==typeof t,'Cannot interpolate an input which is not a number.'),this._interpolation(t)}},{key:"interpolate",value:function(t){return new _(this,t)}},{key:"__attach",value:function(){this._parent.__addChild(this)}},{key:"__detach",value:function(){this._parent.__removeChild(this),p(u(_.prototype),"__detach",this).call(this)}},{key:"__transformDataType",value:function(t){return t.map(c.transformDataType)}},{key:"__getNativeConfig",value:function(){return{inputRange:this._config.inputRange,outputRange:this.__transformDataType(this._config.outputRange),extrapolateLeft:this._config.extrapolateLeft||this._config.extrapolate||'extend',extrapolateRight:this._config.extrapolateRight||this._config.extrapolate||'extend',type:'interpolation'}}}]),_})();D.__createInterpolation=y,m.exports=D},227,[25,26,38,41,42,44,51,228,231,229,4,68]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),s=r(d[2]),_=s.API,u=r(d[3]),o=1,v=(function(){function v(){t(this,v),this._listeners={}}return n(v,[{key:"__attach",value:function(){}},{key:"__detach",value:function(){this.__isNative&&null!=this.__nativeTag&&(s.API.dropAnimatedNode(this.__nativeTag),this.__nativeTag=void 0)}},{key:"__getValue",value:function(){}},{key:"__getAnimatedValue",value:function(){return this.__getValue()}},{key:"__addChild",value:function(t){}},{key:"__removeChild",value:function(t){}},{key:"__getChildren",value:function(){return[]}}]),n(v,[{key:"__makeNative",value:function(){if(!this.__isNative)throw new Error('This node cannot be made a "native" animated node');this.hasListeners()&&this._startListeningToNativeValueUpdates()}},{key:"addListener",value:function(t){var n=String(o++);return this._listeners[n]=t,this.__isNative&&this._startListeningToNativeValueUpdates(),n}},{key:"removeListener",value:function(t){delete this._listeners[t],this.__isNative&&!this.hasListeners()&&this._stopListeningForNativeValueUpdates()}},{key:"removeAllListeners",value:function(){this._listeners={},this.__isNative&&this._stopListeningForNativeValueUpdates()}},{key:"hasListeners",value:function(){return!!Object.keys(this._listeners).length}},{key:"_startListeningToNativeValueUpdates",value:function(){var t=this;this.__nativeAnimatedValueListener&&!this.__shouldUpdateListenersForNewNativeTag||(this.__shouldUpdateListenersForNewNativeTag&&(this.__shouldUpdateListenersForNewNativeTag=!1,this._stopListeningForNativeValueUpdates()),_.startListeningToAnimatedNodeValue(this.__getNativeTag()),this.__nativeAnimatedValueListener=s.nativeEventEmitter.addListener('onAnimatedValueUpdate',function(n){n.tag===t.__getNativeTag()&&t._onAnimatedValueUpdateReceived(n.value)}))}},{key:"_onAnimatedValueUpdateReceived",value:function(t){this.__callListeners(t)}},{key:"__callListeners",value:function(t){for(var n in this._listeners)this._listeners[n]({value:t})}},{key:"_stopListeningForNativeValueUpdates",value:function(){this.__nativeAnimatedValueListener&&(this.__nativeAnimatedValueListener.remove(),this.__nativeAnimatedValueListener=null,_.stopListeningToAnimatedNodeValue(this.__getNativeTag()))}},{key:"__getNativeTag",value:function(){if(s.assertNativeAnimatedModule(),u(this.__isNative,'Attempt to get native tag from node not marked as "native"'),null==this.__nativeTag){var t=s.generateNewNodeTag();this.__nativeTag=t,s.API.createAnimatedNode(t,this.__getNativeConfig()),this.__shouldUpdateListenersForNewNativeTag=!0}return this.__nativeTag}},{key:"__getNativeConfig",value:function(){throw new Error('This JS animated node type cannot be used as native animated node')}},{key:"toJSON",value:function(){return this.__getValue()}}]),v})();m.exports=v},228,[25,26,229,4]); -__d(function(g,r,i,a,m,e,d){'use strict';var t,n=r(d[0]),o=n(r(d[1])),l=n(r(d[2])),u=n(r(d[3])),s=1,f=1,v=!1,c=[],N={enableQueue:function(){v=!0},disableQueue:function(){(0,u.default)(l.default,'Native animated module is not available'),v=!1;for(var t=0,n=c.length;t=t.length)break;l=t[n++]}else{if((n=t.next()).done)break;l=n.value}var o=l;o.__makeNative(),c.API.connectAnimatedNodes(this.__getNativeTag(),o.__getNativeTag())}}h(s(u.prototype),"__makeNative",this).call(this)}},{key:"__addChild",value:function(t){0===this._children.length&&this.__attach(),this._children.push(t),this.__isNative&&(t.__makeNative(),c.API.connectAnimatedNodes(this.__getNativeTag(),t.__getNativeTag()))}},{key:"__removeChild",value:function(t){var _=this._children.indexOf(t);-1!==_?(this.__isNative&&t.__isNative&&c.API.disconnectAnimatedNodes(this.__getNativeTag(),t.__getNativeTag()),this._children.splice(_,1),0===this._children.length&&this.__detach()):console.warn("Trying to remove a child that doesn't exist")}},{key:"__getChildren",value:function(){return this._children}},{key:"__callListeners",value:function(t){if(h(s(u.prototype),"__callListeners",this).call(this,t),!this.__isNative){var _=this._children,n=Array.isArray(_),l=0;for(_=n?_:_["function"==typeof Symbol?Symbol.iterator:"@@iterator"]();;){var o;if(n){if(l>=_.length)break;o=_[l++]}else{if((l=_.next()).done)break;o=l.value}var c=o;c.__getValue&&c.__callListeners(c.__getValue())}}}}]),u})();m.exports=v},231,[25,26,38,41,42,44,228,229]); -__d(function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]),t=r(d[1]),o=r(d[2]),c=(r(d[3]),r(d[4])),s=r(d[5]),u=new t,l={Events:s({interactionStart:!0,interactionComplete:!0}),runAfterInteractions:function(n){var t=[],o=new Promise(function(o){k(),n&&t.push(n),t.push({run:o,name:'resolve '+(n&&n.name||'?')}),h.enqueueTasks(t)});return{then:o.then.bind(o),done:function(){if(o.done)return o.done.apply(o,arguments);console.warn('Tried to call done when not supported by current Promise implementation.')},cancel:function(){h.cancelTasks(t)}}},createInteractionHandle:function(){k();var n=++T;return p.add(n),n},clearInteractionHandle:function(n){c(!!n,'InteractionManager: Must provide a handle to clear.'),k(),p.delete(n),v.add(n)},addListener:u.addListener.bind(u),setDeadline:function(n){E=n}},f=new Set,p=new Set,v=new Set,h=new o({onMoreTasks:k}),w=0,T=0,E=-1;function k(){w||(w=E>0?setTimeout(I,0):setImmediate(I))}function I(){w=0;var t=f.size;p.forEach(function(n){return f.add(n)}),v.forEach(function(n){return f.delete(n)});var o=f.size;if(0!==t&&0===o?u.emit(l.Events.interactionComplete):0===t&&0!==o&&u.emit(l.Events.interactionStart),0===o)for(;h.hasTasksToProcess();)if(h.processNext(),E>0&&n.getEventLoopRunningTime()>=E){k();break}p.clear(),v.clear()}m.exports=l},232,[19,46,233,163,4,218]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),u=r(d[1]),s=r(d[2]),n=(r(d[3]),r(d[4])),o=(function(){function o(t){var s=t.onMoreTasks;u(this,o),this._onMoreTasks=s,this._queueStack=[{tasks:[],popable:!1}]}return s(o,[{key:"enqueue",value:function(t){this._getCurrentQueue().push(t)}},{key:"enqueueTasks",value:function(t){var u=this;t.forEach(function(t){return u.enqueue(t)})}},{key:"cancelTasks",value:function(u){this._queueStack=this._queueStack.map(function(s){return t({},s,{tasks:s.tasks.filter(function(t){return-1===u.indexOf(t)})})}).filter(function(t,u){return t.tasks.length>0||0===u})}},{key:"hasTasksToProcess",value:function(){return this._getCurrentQueue().length>0}},{key:"processNext",value:function(){var t=this._getCurrentQueue();if(t.length){var u=t.shift();try{u.gen?this._genPromise(u):u.run?u.run():(n('function'==typeof u,'Expected Function, SimpleTask, or PromiseTask, but got:\n'+JSON.stringify(u,null,2)),u())}catch(t){throw t.message='TaskQueue: Error with task '+(u.name||'')+': '+t.message,t}}}},{key:"_getCurrentQueue",value:function(){var t=this._queueStack.length-1,u=this._queueStack[t];return u.popable&&0===u.tasks.length&&this._queueStack.length>1?(this._queueStack.pop(),this._getCurrentQueue()):u.tasks}},{key:"_genPromise",value:function(t){var u=this;this._queueStack.push({tasks:[],popable:!1});var s=this._queueStack.length-1;t.gen().then(function(){u._queueStack[s].popable=!0,u.hasTasksToProcess()&&u._onMoreTasks()}).catch(function(u){throw u.message="TaskQueue: Error resolving Promise in task "+t.name+": "+u.message,u}).done()}}]),o})();m.exports=o},233,[51,25,26,163,4]); -__d(function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]),t=r(d[1]),o=t.AnimatedEvent,u=t.attachNativeEvent,s=r(d[2]),c=r(d[3]),f=r(d[4]),v=r(d[5]),p=r(d[6]),l=r(d[7]),h=r(d[8]),_=r(d[9]),N=r(d[10]),w=r(d[11]),E=r(d[12]),y=r(d[13]),D=r(d[14]),L=r(d[15]),A=r(d[16]),U=r(d[17]),k=function(n,t){return n&&t.onComplete?function(){t.onComplete&&t.onComplete.apply(t,arguments),n&&n.apply(void 0,arguments)}:n||t.onComplete},V=function(t,o,u){if(t instanceof y){var s=n({},o),c=n({},o);for(var f in o){var v=o[f],p=v.x,l=v.y;void 0!==p&&void 0!==l&&(s[f]=p,c[f]=l)}var h=u(t.x,s),_=u(t.y,c);return x([h,_],{stopTogether:!1})}return null},C=function t(o,u){var s=function(n,t,o){o=k(o,t);var u=n,s=t;u.stopTracking(),t.toValue instanceof h?u.track(new w(u,t.toValue,A,s,o)):u.animate(new A(s),o)};return V(o,u,t)||{start:function(n){s(o,u,n)},stop:function(){o.stopAnimation()},reset:function(){o.resetAnimation()},_startNativeLoop:function(t){var c=n({},u,{iterations:t});s(o,c)},_isUsingNativeDriver:function(){return u.useNativeDriver||!1}}},T=function(n){var t=0;return{start:function(o){0===n.length?o&&o({finished:!0}):n[t].start(function u(s){s.finished&&++t!==n.length?n[t].start(u):o&&o(s)})},stop:function(){t1&&void 0!==arguments[1]?arguments[1]:{},o=t.iterations,u=void 0===o?-1:o,s=t.resetBeforeIteration,c=void 0===s||s,f=!1,v=0;return{start:function(t){n&&0!==u?n._isUsingNativeDriver()?n._startNativeLoop(u):(function o(){var s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{finished:!0};f||v===u||!1===s.finished?t&&t(s):(v++,c&&n.reset(),n.start(o))})():t&&t({finished:!0})},stop:function(){f=!0,n.stop()},reset:function(){v=0,f=!1,n.reset()},_startNativeLoop:function(){throw new Error('Loops run using the native driver cannot contain Animated.loop animations')},_isUsingNativeDriver:function(){return n._isUsingNativeDriver()}}},event:function(n,t){var u=new o(n,t);return u.__isNative?u:u.__getHandler()},createAnimatedComponent:U,attachNativeEvent:u,forkEvent:function(n,t){return n?n instanceof o?(n.__addListener(t),n):function(){'function'==typeof n&&n.apply(void 0,arguments),t.apply(void 0,arguments)}:t},unforkEvent:function(n,t){n&&n instanceof o&&n.__removeListener(t)},Event:o,__PropsOnlyForTests:_}},234,[51,225,235,236,237,227,238,239,228,240,243,244,226,245,246,248,250,253]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),_=r(d[1]),n=r(d[2]),h=r(d[3]),u=r(d[4]),s=r(d[5]),o=r(d[6]),l=(r(d[7]),r(d[8])),v=r(d[9]),c=(function(c){function f(_,u){var s;return t(this,f),(s=n(this,h(f).call(this)))._a='number'==typeof _?new l(_):_,s._b='number'==typeof u?new l(u):u,s}return s(f,v),_(f,[{key:"__makeNative",value:function(){this._a.__makeNative(),this._b.__makeNative(),u(h(f.prototype),"__makeNative",this).call(this)}},{key:"__getValue",value:function(){return this._a.__getValue()+this._b.__getValue()}},{key:"interpolate",value:function(t){return new o(this,t)}},{key:"__attach",value:function(){this._a.__addChild(this),this._b.__addChild(this)}},{key:"__detach",value:function(){this._a.__removeChild(this),this._b.__removeChild(this),u(h(f.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){return{type:'addition',input:[this._a.__getNativeTag(),this._b.__getNativeTag()]}}}]),f})();m.exports=c},235,[25,26,38,41,42,44,227,228,226,231]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),_=r(d[1]),n=r(d[2]),u=r(d[3]),h=r(d[4]),s=r(d[5]),l=r(d[6]),v=(r(d[7]),r(d[8])),c=(function(c){function o(_,h,s){var l;return t(this,o),(l=n(this,u(o).call(this)))._a=_,l._min=h,l._max=s,l._value=l._lastValue=l._a.__getValue(),l}return s(o,v),_(o,[{key:"__makeNative",value:function(){this._a.__makeNative(),h(u(o.prototype),"__makeNative",this).call(this)}},{key:"interpolate",value:function(t){return new l(this,t)}},{key:"__getValue",value:function(){var t=this._a.__getValue(),_=t-this._lastValue;return this._lastValue=t,this._value=Math.min(Math.max(this._value+_,this._min),this._max),this._value}},{key:"__attach",value:function(){this._a.__addChild(this)}},{key:"__detach",value:function(){this._a.__removeChild(this),h(u(o.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){return{type:'diffclamp',input:this._a.__getNativeTag(),min:this._min,max:this._max}}}]),o})();m.exports=c},236,[25,26,38,41,42,44,227,228,231]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),_=r(d[1]),n=r(d[2]),h=r(d[3]),s=r(d[4]),o=r(d[5]),u=r(d[6]),l=(r(d[7]),r(d[8])),v=r(d[9]),c=(function(c){function f(_,s){var o;return t(this,f),(o=n(this,h(f).call(this)))._a='number'==typeof _?new l(_):_,o._b='number'==typeof s?new l(s):s,o}return o(f,v),_(f,[{key:"__makeNative",value:function(){this._a.__makeNative(),this._b.__makeNative(),s(h(f.prototype),"__makeNative",this).call(this)}},{key:"__getValue",value:function(){var t=this._a.__getValue(),_=this._b.__getValue();return 0===_&&console.error('Detected division by zero in AnimatedDivision'),t/_}},{key:"interpolate",value:function(t){return new u(this,t)}},{key:"__attach",value:function(){this._a.__addChild(this),this._b.__addChild(this)}},{key:"__detach",value:function(){this._a.__removeChild(this),this._b.__removeChild(this),s(h(f.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){return{type:'division',input:[this._a.__getNativeTag(),this._b.__getNativeTag()]}}}]),f})();m.exports=c},237,[25,26,38,41,42,44,227,228,226,231]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),u=r(d[1]),_=r(d[2]),s=r(d[3]),n=r(d[4]),h=r(d[5]),l=r(d[6]),o=(r(d[7]),r(d[8])),c=(function(c){function v(u,n){var h;return t(this,v),(h=_(this,s(v).call(this)))._a=u,h._modulus=n,h}return h(v,o),u(v,[{key:"__makeNative",value:function(){this._a.__makeNative(),n(s(v.prototype),"__makeNative",this).call(this)}},{key:"__getValue",value:function(){return(this._a.__getValue()%this._modulus+this._modulus)%this._modulus}},{key:"interpolate",value:function(t){return new l(this,t)}},{key:"__attach",value:function(){this._a.__addChild(this)}},{key:"__detach",value:function(){this._a.__removeChild(this),n(s(v.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){return{type:'modulus',input:this._a.__getNativeTag(),modulus:this._modulus}}}]),v})();m.exports=c},238,[25,26,38,41,42,44,227,228,231]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),_=r(d[1]),n=r(d[2]),h=r(d[3]),u=r(d[4]),s=r(d[5]),l=r(d[6]),o=(r(d[7]),r(d[8])),c=r(d[9]),v=(function(v){function f(_,u){var s;return t(this,f),(s=n(this,h(f).call(this)))._a='number'==typeof _?new o(_):_,s._b='number'==typeof u?new o(u):u,s}return s(f,c),_(f,[{key:"__makeNative",value:function(){this._a.__makeNative(),this._b.__makeNative(),u(h(f.prototype),"__makeNative",this).call(this)}},{key:"__getValue",value:function(){return this._a.__getValue()*this._b.__getValue()}},{key:"interpolate",value:function(t){return new l(this,t)}},{key:"__attach",value:function(){this._a.__addChild(this),this._b.__addChild(this)}},{key:"__detach",value:function(){this._a.__removeChild(this),this._b.__removeChild(this),u(h(f.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){return{type:'multiplication',input:[this._a.__getNativeTag(),this._b.__getNativeTag()]}}}]),f})();m.exports=v},239,[25,26,38,41,42,44,227,228,226,231]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),_=r(d[2]),s=r(d[3]),o=r(d[4]),c=r(d[5]),v=r(d[6]),h=r(d[7]).AnimatedEvent,l=r(d[8]),p=r(d[9]),u=r(d[10]),f=r(d[11]),N=r(d[12]),V=(function(V){function k(_,c){var v;return n(this,k),v=s(this,o(k).call(this)),_.style&&(_=t({},_,{style:new p(_.style)})),v._props=_,v._callback=c,v.__attach(),v}return v(k,l),_(k,[{key:"__getValue",value:function(){var t={};for(var n in this._props){var _=this._props[n];_ instanceof l?(!_.__isNative||_ instanceof p)&&(t[n]=_.__getValue()):t[n]=_ instanceof h?_.__getHandler():_}return t}},{key:"__getAnimatedValue",value:function(){var t={};for(var n in this._props){var _=this._props[n];_ instanceof l&&(t[n]=_.__getAnimatedValue())}return t}},{key:"__attach",value:function(){for(var t in this._props){var n=this._props[t];n instanceof l&&n.__addChild(this)}}},{key:"__detach",value:function(){for(var t in this.__isNative&&this._animatedView&&this.__disconnectAnimatedView(),this._props){var n=this._props[t];n instanceof l&&n.__removeChild(this)}c(o(k.prototype),"__detach",this).call(this)}},{key:"update",value:function(){this._callback()}},{key:"__makeNative",value:function(){if(!this.__isNative){for(var t in this.__isNative=!0,this._props){var n=this._props[t];n instanceof l&&n.__makeNative()}this._animatedView&&this.__connectAnimatedView()}}},{key:"setNativeView",value:function(t){this._animatedView!==t&&(this._animatedView=t,this.__isNative&&this.__connectAnimatedView())}},{key:"__connectAnimatedView",value:function(){N(this.__isNative,'Expected node to be marked as "native"');var t=f.findNodeHandle(this._animatedView);N(null!=t,'Unable to locate attached view in the native tree'),u.API.connectAnimatedNodeToView(this.__getNativeTag(),t)}},{key:"__disconnectAnimatedView",value:function(){N(this.__isNative,'Expected node to be marked as "native"');var t=f.findNodeHandle(this._animatedView);N(null!=t,'Unable to locate attached view in the native tree'),u.API.disconnectAnimatedNodeFromView(this.__getNativeTag(),t)}},{key:"__getNativeConfig",value:function(){var t={};for(var n in this._props){var _=this._props[n];_ instanceof l&&(_.__makeNative(),t[n]=_.__getNativeTag())}return{type:'props',props:t}}}]),k})();m.exports=V},240,[51,25,26,38,41,42,44,225,228,241,229,91,4]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),s=r(d[2]),l=r(d[3]),_=r(d[4]),y=r(d[5]),o=r(d[6]),u=r(d[7]),v=r(d[8]),f=r(d[9]),h=r(d[10]),c=r(d[11]),k=(function(k){function A(s){var y;return n(this,A),y=l(this,_(A).call(this)),(s=c(s)||{}).transform&&(s=t({},s,{transform:new v(s.transform)})),y._style=s,y}return o(A,f),s(A,[{key:"_walkStyleAndGetValues",value:function(t){var n={};for(var s in t){var l=t[s];l instanceof u?l.__isNative||(n[s]=l.__getValue()):l&&!Array.isArray(l)&&'object'==typeof l?n[s]=this._walkStyleAndGetValues(l):n[s]=l}return n}},{key:"__getValue",value:function(){return this._walkStyleAndGetValues(this._style)}},{key:"_walkStyleAndGetAnimatedValues",value:function(t){var n={};for(var s in t){var l=t[s];l instanceof u?n[s]=l.__getAnimatedValue():l&&!Array.isArray(l)&&'object'==typeof l&&(n[s]=this._walkStyleAndGetAnimatedValues(l))}return n}},{key:"__getAnimatedValue",value:function(){return this._walkStyleAndGetAnimatedValues(this._style)}},{key:"__attach",value:function(){for(var t in this._style){var n=this._style[t];n instanceof u&&n.__addChild(this)}}},{key:"__detach",value:function(){for(var t in this._style){var n=this._style[t];n instanceof u&&n.__removeChild(this)}y(_(A.prototype),"__detach",this).call(this)}},{key:"__makeNative",value:function(){for(var t in this._style){var n=this._style[t];n instanceof u&&n.__makeNative()}y(_(A.prototype),"__makeNative",this).call(this)}},{key:"__getNativeConfig",value:function(){var t={};for(var n in this._style)if(this._style[n]instanceof u){var s=this._style[n];s.__makeNative(),t[n]=s.__getNativeTag()}return h.validateStyles(t),{type:'style',style:t}}}]),A})();m.exports=k},241,[51,25,26,38,41,42,44,228,242,231,229,88]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),o=r(d[2]),s=r(d[3]),f=r(d[4]),_=r(d[5]),u=r(d[6]),c=r(d[7]),v=r(d[8]),h=(function(h){function l(n){var f;return t(this,l),(f=o(this,s(l).call(this)))._transforms=n,f}return _(l,c),n(l,[{key:"__makeNative",value:function(){this._transforms.forEach(function(t){for(var n in t){var o=t[n];o instanceof u&&o.__makeNative()}}),f(s(l.prototype),"__makeNative",this).call(this)}},{key:"__getValue",value:function(){return this._transforms.map(function(t){var n={};for(var o in t){var s=t[o];n[o]=s instanceof u?s.__getValue():s}return n})}},{key:"__getAnimatedValue",value:function(){return this._transforms.map(function(t){var n={};for(var o in t){var s=t[o];n[o]=s instanceof u?s.__getAnimatedValue():s}return n})}},{key:"__attach",value:function(){var t=this;this._transforms.forEach(function(n){for(var o in n){var s=n[o];s instanceof u&&s.__addChild(t)}})}},{key:"__detach",value:function(){var t=this;this._transforms.forEach(function(n){for(var o in n){var s=n[o];s instanceof u&&s.__removeChild(t)}}),f(s(l.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){var t=[];return this._transforms.forEach(function(n){for(var o in n){var s=n[o];s instanceof u?t.push({type:'animated',property:o,nodeTag:s.__getNativeTag()}):t.push({type:'static',property:o,value:v.transformDataType(s)})}}),v.validateTransform(t),{type:'transform',transforms:t}}}]),l})();m.exports=h},242,[25,26,38,41,42,44,228,231,229]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),_=r(d[1]),n=r(d[2]),h=r(d[3]),u=r(d[4]),s=r(d[5]),o=r(d[6]),l=(r(d[7]),r(d[8])),c=r(d[9]),v=(function(v){function f(_,u){var s;return t(this,f),(s=n(this,h(f).call(this)))._a='number'==typeof _?new l(_):_,s._b='number'==typeof u?new l(u):u,s}return s(f,c),_(f,[{key:"__makeNative",value:function(){this._a.__makeNative(),this._b.__makeNative(),u(h(f.prototype),"__makeNative",this).call(this)}},{key:"__getValue",value:function(){return this._a.__getValue()-this._b.__getValue()}},{key:"interpolate",value:function(t){return new o(this,t)}},{key:"__attach",value:function(){this._a.__addChild(this),this._b.__addChild(this)}},{key:"__detach",value:function(){this._a.__removeChild(this),this._b.__removeChild(this),u(h(f.prototype),"__detach",this).call(this)}},{key:"__getNativeConfig",value:function(){return{type:'subtraction',input:[this._a.__getNativeTag(),this._b.__getNativeTag()]}}}]),f})();m.exports=v},243,[25,26,38,41,42,44,227,228,226,231]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),_=r(d[2]),s=r(d[3]),o=r(d[4]),u=r(d[5]),l=r(d[6]),h=(r(d[7]),r(d[8])),v=r(d[9]),c=v.generateNewAnimationId,f=v.shouldUseNativeDriver,k=(function(v){function k(t,_,u,l,h){var v;return n(this,k),(v=s(this,o(k).call(this)))._value=t,v._parent=_,v._animationClass=u,v._animationConfig=l,v._useNativeDriver=f(l),v._callback=h,v.__attach(),v}return l(k,h),_(k,[{key:"__makeNative",value:function(){this.__isNative=!0,this._parent.__makeNative(),u(o(k.prototype),"__makeNative",this).call(this),this._value.__makeNative()}},{key:"__getValue",value:function(){return this._parent.__getValue()}},{key:"__attach",value:function(){this._parent.__addChild(this),this._useNativeDriver&&this.__makeNative()}},{key:"__detach",value:function(){this._parent.__removeChild(this),u(o(k.prototype),"__detach",this).call(this)}},{key:"update",value:function(){this._value.animate(new this._animationClass(t({},this._animationConfig,{toValue:this._animationConfig.toValue.__getValue()})),this._callback)}},{key:"__getNativeConfig",value:function(){var n=new this._animationClass(t({},this._animationConfig,{toValue:void 0})).__getNativeAnimationConfig();return{type:'tracking',animationId:c(),animationConfig:n,toValue:this._parent.__getNativeTag(),value:this._value.__getNativeTag()}}}]),k})();m.exports=k},244,[51,25,26,38,41,42,44,226,228,229]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),s=r(d[1]),n=r(d[2]),u=r(d[3]),l=r(d[4]),f=r(d[5]),o=r(d[6]),y=r(d[7]),h=1,x=(function(x){function c(s){var l;t(this,c),l=n(this,u(c).call(this));var o=s||{x:0,y:0};return'number'==typeof o.x&&'number'==typeof o.y?(l.x=new f(o.x),l.y=new f(o.y)):(y(o.x instanceof f&&o.y instanceof f,"AnimatedValueXY must be initialized with an object of numbers or AnimatedValues."),l.x=o.x,l.y=o.y),l._listeners={},l}return l(c,o),s(c,[{key:"setValue",value:function(t){this.x.setValue(t.x),this.y.setValue(t.y)}},{key:"setOffset",value:function(t){this.x.setOffset(t.x),this.y.setOffset(t.y)}},{key:"flattenOffset",value:function(){this.x.flattenOffset(),this.y.flattenOffset()}},{key:"extractOffset",value:function(){this.x.extractOffset(),this.y.extractOffset()}},{key:"__getValue",value:function(){return{x:this.x.__getValue(),y:this.y.__getValue()}}},{key:"resetAnimation",value:function(t){this.x.resetAnimation(),this.y.resetAnimation(),t&&t(this.__getValue())}},{key:"stopAnimation",value:function(t){this.x.stopAnimation(),this.y.stopAnimation(),t&&t(this.__getValue())}},{key:"addListener",value:function(t){var s=this,n=String(h++),u=function(n){n.value;t(s.__getValue())};return this._listeners[n]={x:this.x.addListener(u),y:this.y.addListener(u)},n}},{key:"removeListener",value:function(t){this.x.removeListener(this._listeners[t].x),this.y.removeListener(this._listeners[t].y),delete this._listeners[t]}},{key:"removeAllListeners",value:function(){this.x.removeAllListeners(),this.y.removeAllListeners(),this._listeners={}}},{key:"getLayout",value:function(){return{left:this.x,top:this.y}}},{key:"getTranslateTransform",value:function(){return[{translateX:this.x},{translateY:this.y}]}}]),c})();m.exports=x},245,[25,26,38,41,44,226,231,4]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),s=r(d[2]),o=r(d[3]),_=r(d[4]),h=r(d[5]),l=r(d[6]),c=r(d[7]).shouldUseNativeDriver,u=(function(u){function v(n){var _,h,l,u;return t(this,v),(u=s(this,o(v).call(this)))._deceleration=null!=(_=n.deceleration)?_:.998,u._velocity=n.velocity,u._useNativeDriver=c(n),u.__isInteraction=null!=(h=n.isInteraction)?h:!u._useNativeDriver,u.__iterations=null!=(l=n.iterations)?l:1,u}return h(v,l),n(v,[{key:"__getNativeAnimationConfig",value:function(){return{type:'decay',deceleration:this._deceleration,velocity:this._velocity,iterations:this.__iterations}}},{key:"start",value:function(t,n,s,o,_){this.__active=!0,this._lastValue=t,this._fromValue=t,this._onUpdate=n,this.__onEnd=s,this._startTime=Date.now(),this._useNativeDriver?this.__startNativeAnimation(_):this._animationFrame=requestAnimationFrame(this.onUpdate.bind(this))}},{key:"onUpdate",value:function(){var t=Date.now(),n=this._fromValue+this._velocity/(1-this._deceleration)*(1-Math.exp(-(1-this._deceleration)*(t-this._startTime)));this._onUpdate(n),Math.abs(this._lastValue-n)<.1?this.__debouncedOnEnd({finished:!0}):(this._lastValue=n,this.__active&&(this._animationFrame=requestAnimationFrame(this.onUpdate.bind(this))))}},{key:"stop",value:function(){_(o(v.prototype),"stop",this).call(this),this.__active=!1,g.cancelAnimationFrame(this._animationFrame),this.__debouncedOnEnd({finished:!1})}}]),v})();m.exports=u},246,[25,26,38,41,42,44,247,229]); -__d(function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]),t=r(d[1]),o=r(d[2]),_=(function(){function _(){n(this,_)}return t(_,[{key:"start",value:function(n,t,o,_,u){}},{key:"stop",value:function(){this.__nativeId&&o.API.stopAnimation(this.__nativeId)}},{key:"__getNativeAnimationConfig",value:function(){throw new Error('This animation type cannot be offloaded to native')}},{key:"__debouncedOnEnd",value:function(n){var t=this.__onEnd;this.__onEnd=null,t&&t(n)}},{key:"__startNativeAnimation",value:function(n){o.API.enableQueue(),n.__makeNative(),o.API.disableQueue(),this.__nativeId=o.generateNewAnimationId(),o.API.startAnimatingNode(this.__nativeId,n.__getNativeTag(),this.__getNativeAnimationConfig(),this.__debouncedOnEnd.bind(this))}}]),_})();m.exports=_},247,[25,26,229]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),s=r(d[1]),n=r(d[2]),o=r(d[3]),l=r(d[4]),h=r(d[5]),_=(r(d[6]),r(d[7]),r(d[8])),u=r(d[9]),f=r(d[10]),c=r(d[11]).shouldUseNativeDriver,v=(function(v){function p(s){var l,h,_,v,y,V,T,b,M,D,P,S;if(t(this,p),(M=n(this,o(p).call(this)))._overshootClamping=null!=(l=s.overshootClamping)&&l,M._restDisplacementThreshold=null!=(h=s.restDisplacementThreshold)?h:.001,M._restSpeedThreshold=null!=(_=s.restSpeedThreshold)?_:.001,M._initialVelocity=null!=(v=s.velocity)?v:0,M._lastVelocity=null!=(y=s.velocity)?y:0,M._toValue=s.toValue,M._delay=null!=(V=s.delay)?V:0,M._useNativeDriver=c(s),M.__isInteraction=null!=(T=s.isInteraction)?T:!M._useNativeDriver,M.__iterations=null!=(b=s.iterations)?b:1,void 0!==s.stiffness||void 0!==s.damping||void 0!==s.mass)f(void 0===s.bounciness&&void 0===s.speed&&void 0===s.tension&&void 0===s.friction,'You can define one of bounciness/speed, tension/friction, or stiffness/damping/mass, but not more than one'),M._stiffness=null!=(D=s.stiffness)?D:100,M._damping=null!=(P=s.damping)?P:10,M._mass=null!=(S=s.mass)?S:1;else if(void 0!==s.bounciness||void 0!==s.speed){var U,A;f(void 0===s.tension&&void 0===s.friction&&void 0===s.stiffness&&void 0===s.damping&&void 0===s.mass,'You can define one of bounciness/speed, tension/friction, or stiffness/damping/mass, but not more than one');var C=u.fromBouncinessAndSpeed(null!=(U=s.bounciness)?U:8,null!=(A=s.speed)?A:12);M._stiffness=C.stiffness,M._damping=C.damping,M._mass=1}else{var N,k,F=u.fromOrigamiTensionAndFriction(null!=(N=s.tension)?N:40,null!=(k=s.friction)?k:7);M._stiffness=F.stiffness,M._damping=F.damping,M._mass=1}return f(M._stiffness>0,'Stiffness value must be greater than 0'),f(M._damping>0,'Damping value must be greater than 0'),f(M._mass>0,'Mass value must be greater than 0'),M}return h(p,_),s(p,[{key:"__getNativeAnimationConfig",value:function(){var t;return{type:'spring',overshootClamping:this._overshootClamping,restDisplacementThreshold:this._restDisplacementThreshold,restSpeedThreshold:this._restSpeedThreshold,stiffness:this._stiffness,damping:this._damping,mass:this._mass,initialVelocity:null!=(t=this._initialVelocity)?t:this._lastVelocity,toValue:this._toValue,iterations:this.__iterations}}},{key:"start",value:function(t,s,n,o,l){var h=this;if(this.__active=!0,this._startPosition=t,this._lastPosition=this._startPosition,this._onUpdate=s,this.__onEnd=n,this._lastTime=Date.now(),this._frameTime=0,o instanceof p){var _=o.getInternalState();this._lastPosition=_.lastPosition,this._lastVelocity=_.lastVelocity,this._initialVelocity=this._lastVelocity,this._lastTime=_.lastTime}var u=function(){h._useNativeDriver?h.__startNativeAnimation(l):h.onUpdate()};this._delay?this._timeout=setTimeout(u,this._delay):u()}},{key:"getInternalState",value:function(){return{lastPosition:this._lastPosition,lastVelocity:this._lastVelocity,lastTime:this._lastTime}}},{key:"onUpdate",value:function(){var t=Date.now();t>this._lastTime+64&&(t=this._lastTime+64);var s=(t-this._lastTime)/1e3;this._frameTime+=s;var n=this._damping,o=this._mass,l=this._stiffness,h=-this._initialVelocity,_=n/(2*Math.sqrt(l*o)),u=Math.sqrt(l/o),f=u*Math.sqrt(1-_*_),c=this._toValue-this._startPosition,v=0,p=0,y=this._frameTime;if(_<1){var V=Math.exp(-_*u*y);v=this._toValue-V*((h+_*u*c)/f*Math.sin(f*y)+c*Math.cos(f*y)),p=_*u*V*(Math.sin(f*y)*(h+_*u*c)/f+c*Math.cos(f*y))-V*(Math.cos(f*y)*(h+_*u*c)-f*c*Math.sin(f*y))}else{var T=Math.exp(-u*y);v=this._toValue-T*(c+(h+u*c)*y),p=T*(h*(y*u-1)+y*c*(u*u))}if(this._lastTime=t,this._lastPosition=v,this._lastVelocity=p,this._onUpdate(v),this.__active){var b=!1;this._overshootClamping&&0!==this._stiffness&&(b=this._startPositionthis._toValue:v18&&A<=44?p(A):h(A),s(2*M-M*M,v,.01));return{stiffness:n(x),damping:t(B)}}}},249,[]); -__d(function(g,r,i,a,m,e,d){'use strict';var t,n=r(d[0]),s=r(d[1]),o=r(d[2]),_=r(d[3]),u=r(d[4]),h=r(d[5]),l=(r(d[6]),r(d[7]),r(d[8])),v=r(d[9]).shouldUseNativeDriver;function c(){if(!t){var n=r(d[10]);t=n.inOut(n.ease)}return t}var f=(function(t){function f(t){var s,u,h,l,p,V;return n(this,f),(V=o(this,_(f).call(this)))._toValue=t.toValue,V._easing=null!=(s=t.easing)?s:c(),V._duration=null!=(u=t.duration)?u:500,V._delay=null!=(h=t.delay)?h:0,V.__iterations=null!=(l=t.iterations)?l:1,V._useNativeDriver=v(t),V.__isInteraction=null!=(p=t.isInteraction)?p:!V._useNativeDriver,V}return h(f,l),s(f,[{key:"__getNativeAnimationConfig",value:function(){for(var t=[],n=Math.round(this._duration/16.666666666666668),s=0;s=this._startTime+this._duration)return 0===this._duration?this._onUpdate(this._toValue):this._onUpdate(this._fromValue+this._easing(1)*(this._toValue-this._fromValue)),void this.__debouncedOnEnd({finished:!0});this._onUpdate(this._fromValue+this._easing((t-this._startTime)/this._duration)*(this._toValue-this._fromValue)),this.__active&&(this._animationFrame=requestAnimationFrame(this.onUpdate.bind(this)))}},{key:"stop",value:function(){u(_(f.prototype),"stop",this).call(this),this.__active=!1,clearTimeout(this._timeout),g.cancelAnimationFrame(this._animationFrame),this.__debouncedOnEnd({finished:!1})}}]),f})();m.exports=f},250,[25,26,38,41,42,44,226,245,247,229,251]); -__d(function(g,r,i,a,m,e,d){'use strict';var n,u=r(d[0]),t=r(d[1]),o=(function(){function o(){u(this,o)}return t(o,null,[{key:"step0",value:function(n){return n>0?1:0}},{key:"step1",value:function(n){return n>=1?1:0}},{key:"linear",value:function(n){return n}},{key:"ease",value:function(u){return n||(n=o.bezier(.42,0,1,1)),n(u)}},{key:"quad",value:function(n){return n*n}},{key:"cubic",value:function(n){return n*n*n}},{key:"poly",value:function(n){return function(u){return Math.pow(u,n)}}},{key:"sin",value:function(n){return 1-Math.cos(n*Math.PI/2)}},{key:"circle",value:function(n){return 1-Math.sqrt(1-n*n)}},{key:"exp",value:function(n){return Math.pow(2,10*(n-1))}},{key:"elastic",value:function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:1)*Math.PI;return function(u){return 1-Math.pow(Math.cos(u*Math.PI/2),3)*Math.cos(u*n)}}},{key:"back",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1.70158;return function(u){return u*u*((n+1)*u-n)}}},{key:"bounce",value:function(n){if(n<.36363636363636365)return 7.5625*n*n;if(n<.7272727272727273){var u=n-.5454545454545454;return 7.5625*u*u+.75}if(n<.9090909090909091){var t=n-.8181818181818182;return 7.5625*t*t+.9375}var o=n-.9545454545454546;return 7.5625*o*o+.984375}},{key:"bezier",value:function(n,u,t,o){return r(d[2])(n,u,t,o)}},{key:"in",value:function(n){return n}},{key:"out",value:function(n){return function(u){return 1-n(1-u)}}},{key:"inOut",value:function(n){return function(u){return u<.5?n(2*u)/2:1-n(2*(1-u))/2}}}]),o})();m.exports=o},251,[25,26,252]); -__d(function(g,r,i,a,m,e,d){'use strict';var n=4,t=.001,u=1e-7,o=10,f=.1,c='function'==typeof Float32Array;function v(n,t){return 1-3*t+3*n}function s(n,t){return 3*t-6*n}function w(n){return 3*n}function l(n,t,u){return((v(t,u)*n+s(t,u))*n+w(t))*n}function y(n,t,u){return 3*v(t,u)*n*n+2*s(t,u)*n+w(t)}function b(n,t,f,c,v){var s,w,y=0,b=t,h=f;do{(s=l(w=b+(h-b)/2,c,v)-n)>0?h=w:b=w}while(Math.abs(s)>u&&++y=0&&n<=1&&o>=0&&o<=1))throw new Error('bezier x values must be in [0, 1] range');var s=c?new Float32Array(11):new Array(11);if(n!==u||o!==v)for(var w=0;w<11;++w)s[w]=l(w*f,n,o);function A(u){for(var c=0,v=1;10!==v&&s[v]<=u;++v)c+=f;var w=c+(u-s[--v])/(s[v+1]-s[v])*f,l=y(w,n,o);return l>=t?h(u,w,n,o):0===l?w:b(u,c,c+f,n,o)}return function(t){return n===u&&o===v?t:0===t?0:1===t?1:l(A(t),u,v)}}},252,[]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),o=r(d[2]),s=r(d[3]),p=r(d[4]),c=r(d[5]),_=r(d[6]).AnimatedEvent,h=r(d[7]),l=r(d[8]),v=r(d[9]),u=r(d[10]);m.exports=function(f,N){u('function'!=typeof f||f.prototype&&f.prototype.isReactComponent,"`createAnimatedComponent` does not support stateless functional components; use a class component instead.");var k=(function(v){function u(t){var o;return n(this,u),(o=s(this,p(u).call(this,t)))._invokeAnimatedPropsCallbackOnMount=!1,o._eventDetachers=[],o._animatedPropsCallback=function(){if(null==o._component)o._invokeAnimatedPropsCallbackOnMount=!0;else if(u.__skipSetNativeProps_FOR_TESTS_ONLY||'function'!=typeof o._component.setNativeProps)o.forceUpdate();else{if(o._propsAnimated.__isNative)throw new Error("Attempting to run JS driven animation on animated node that has been moved to \"native\" earlier by starting an animation with `useNativeDriver: true`");o._component.setNativeProps(o._propsAnimated.__getAnimatedValue())}},o._setComponentRef=function(t){o._prevComponent=o._component,o._component=t},o}return c(u,v),o(u,[{key:"componentWillUnmount",value:function(){this._propsAnimated&&this._propsAnimated.__detach(),this._detachNativeEvents()}},{key:"setNativeProps",value:function(t){this._component.setNativeProps(t)}},{key:"UNSAFE_componentWillMount",value:function(){this._attachProps(this.props)}},{key:"componentDidMount",value:function(){this._invokeAnimatedPropsCallbackOnMount&&(this._invokeAnimatedPropsCallbackOnMount=!1,this._animatedPropsCallback()),this._propsAnimated.setNativeView(this._component),this._attachNativeEvents()}},{key:"_attachNativeEvents",value:function(){var t,n=this,o=(null==(t=this._component)?void 0:t.getScrollableNode)?this._component.getScrollableNode():this._component,s=function(t){var s=n.props[t];s instanceof _&&s.__isNative&&(s.__attach(o,t),n._eventDetachers.push(function(){return s.__detach(o,t)}))};for(var p in this.props)s(p)}},{key:"_detachNativeEvents",value:function(){this._eventDetachers.forEach(function(t){return t()}),this._eventDetachers=[]}},{key:"_attachProps",value:function(t){var n=this._propsAnimated;this._propsAnimated=new h(t,this._animatedPropsCallback),n&&n.__detach()}},{key:"UNSAFE_componentWillReceiveProps",value:function(t){this._attachProps(t)}},{key:"componentDidUpdate",value:function(t){this._component!==this._prevComponent&&this._propsAnimated.setNativeView(this._component),this._component===this._prevComponent&&t===this.props||(this._detachNativeEvents(),this._attachNativeEvents())}},{key:"render",value:function(){var n=this._propsAnimated.__getValue();return l.createElement(f,t({},N,n,{ref:this._setComponentRef,collapsable:!this._propsAnimated.__isNative&&n.collapsable}))}},{key:"getNode",value:function(){return this._component}}]),u})(l.Component);k.__skipSetNativeProps_FOR_TESTS_ONLY=!1;var y=f.propTypes;return k.propTypes={style:function(t,n,o){if(y)for(var s in v)y[s]||void 0===t[s]||console.warn('You are setting the style `{ '+s+": ... }` as a prop. You should nest it in a style object. E.g. `{ style: { "+s+': ... } }`')}},k}},253,[14,25,26,38,41,44,225,240,57,82,4]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),o=r(d[1]);m.exports=o(t,{scrollEventThrottle:1e-4})},254,[255,253]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),o=r(d[2]),s=r(d[3]),l=r(d[4]),u=r(d[5]),c=r(d[6]),f=r(d[7]),p=(r(d[8]),r(d[9])),h=r(d[10]),C=r(d[11]),v=r(d[12]),y=r(d[13]),b=r(d[14]),_=f({},v.defaultProps,{numColumns:1,removeClippedSubviews:!1}),w=(function(_){function w(t){var u;return o(this,w),(u=s(this,l(w).call(this,t)))._virtualizedListPairs=[],u._captureRef=function(t){u._listRef=t},u._getItem=function(t,n){var o=u.props.numColumns;if(o>1){for(var s=[],l=0;l1?(b(Array.isArray(t),"FlatList: Encountered internal consistency error, expected each item to consist of an array with 1-%s columns; instead, received a single item.",l),t.map(function(t,o){return s(t,n*l+o)}).join(':')):s(t,n)},u._renderer=function(){var t=u.props,o=t.ListItemComponent,s=t.renderItem,l=t.numColumns,c=t.columnWrapperStyle,f=function(t){return o?h.createElement(o,t):s?s(t):null};return n({},o?'ListItemComponent':'renderItem',function(t){if(l>1){var n=t.item,o=t.index;return b(Array.isArray(n),'Expected array of items with numColumns > 1'),h.createElement(C,{style:y.compose(I.row,c)},n.map(function(n,s){var u=f({item:n,index:o*l+s,separators:t.separators});return null!=u?h.createElement(h.Fragment,{key:s},u):null}))}return f(t)})},u._checkProps(u.props),u.props.viewabilityConfigCallbackPairs?u._virtualizedListPairs=u.props.viewabilityConfigCallbackPairs.map(function(t){return{viewabilityConfig:t.viewabilityConfig,onViewableItemsChanged:u._createOnViewableItemsChanged(t.onViewableItemsChanged)}}):u.props.onViewableItemsChanged&&u._virtualizedListPairs.push({viewabilityConfig:u.props.viewabilityConfig,onViewableItemsChanged:u._createOnViewableItemsChanged(u.props.onViewableItemsChanged)}),u}return c(w,_),u(w,[{key:"scrollToEnd",value:function(t){this._listRef&&this._listRef.scrollToEnd(t)}},{key:"scrollToIndex",value:function(t){this._listRef&&this._listRef.scrollToIndex(t)}},{key:"scrollToItem",value:function(t){this._listRef&&this._listRef.scrollToItem(t)}},{key:"scrollToOffset",value:function(t){this._listRef&&this._listRef.scrollToOffset(t)}},{key:"recordInteraction",value:function(){this._listRef&&this._listRef.recordInteraction()}},{key:"flashScrollIndicators",value:function(){this._listRef&&this._listRef.flashScrollIndicators()}},{key:"getScrollResponder",value:function(){if(this._listRef)return this._listRef.getScrollResponder()}},{key:"getScrollableNode",value:function(){if(this._listRef)return this._listRef.getScrollableNode()}},{key:"setNativeProps",value:function(t){this._listRef&&this._listRef.setNativeProps(t)}}]),u(w,[{key:"componentDidUpdate",value:function(t){b(t.numColumns===this.props.numColumns,"Changing numColumns on the fly is not supported. Change the key prop on FlatList when changing the number of columns to force a fresh render of the component."),b(t.onViewableItemsChanged===this.props.onViewableItemsChanged,'Changing onViewableItemsChanged on the fly is not supported'),b(!p(t.viewabilityConfig,this.props.viewabilityConfig),'Changing viewabilityConfig on the fly is not supported'),b(t.viewabilityConfigCallbackPairs===this.props.viewabilityConfigCallbackPairs,'Changing viewabilityConfigCallbackPairs on the fly is not supported'),this._checkProps(this.props)}},{key:"_checkProps",value:function(t){var n=t.getItem,o=t.getItemCount,s=t.horizontal,l=t.numColumns,u=t.columnWrapperStyle,c=t.onViewableItemsChanged,f=t.viewabilityConfigCallbackPairs;b(!n&&!o,'FlatList does not support custom data formats.'),l>1?b(!s,'numColumns does not support horizontal.'):b(!u,'columnWrapperStyle not supported for single column lists'),b(!(c&&f),"FlatList does not support setting both onViewableItemsChanged and viewabilityConfigCallbackPairs.")}},{key:"_pushMultiColumnViewable",value:function(t,n){var o=this.props,s=o.numColumns,l=o.keyExtractor;n.item.forEach(function(o,u){b(null!=n.index,'Missing index!');var c=n.index*s+u;t.push(f({},n,{item:o,key:l(o,c),index:c}))})}},{key:"_createOnViewableItemsChanged",value:function(t){var n=this;return function(o){var s=n.props.numColumns;if(t)if(s>1){var l=[],u=[];o.viewableItems.forEach(function(t){return n._pushMultiColumnViewable(u,t)}),o.changed.forEach(function(t){return n._pushMultiColumnViewable(l,t)}),t({viewableItems:u,changed:l})}else t(o)}}},{key:"render",value:function(){return h.createElement(v,t({},this.props,{getItem:this._getItem,getItemCount:this._getItemCount,keyExtractor:this._keyExtractor,ref:this._captureRef,viewabilityConfigCallbackPairs:this._virtualizedListPairs},this._renderer()))}}]),w})(h.PureComponent);w.defaultProps=_;var I=y.create({row:{flexDirection:'row'}});m.exports=w},255,[14,52,25,38,41,26,44,51,55,173,57,89,256,61,4]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),s=r(d[1]),o=r(d[2]),n=r(d[3]),l=r(d[4]),h=r(d[5]),c=r(d[6]),p=r(d[7]),u=r(d[8]),f=r(d[9]),_=r(d[10]),v=r(d[11]),y=r(d[12]),C=r(d[13]),L=r(d[14]),S=r(d[15]),b=r(d[16]),M=r(d[17]),I=r(d[18]),x=(r(d[19]),r(d[20])),R=r(d[21]),k=(r(d[22]),r(d[23]).computeWindowedRenderLimits),E=!1,w='',T=(function(v){function T(t,c){var p;n(this,T),(p=l(this,h(T).call(this,t,c)))._getScrollMetrics=function(){return p._scrollMetrics},p._getOutermostParentListRef=function(){return p._isNestedWithSameOrientation()?p.context.virtualizedList.getOutermostParentListRef():u(u(p))},p._getNestedChildState=function(t){var s=p._nestedChildLists.get(t);return s&&s.state},p._registerAsNestedChild=function(t){var s=p._cellKeysToChildListKeys.get(t.cellKey)||new Set;s.add(t.key),p._cellKeysToChildListKeys.set(t.cellKey,s);var o=p._nestedChildLists.get(t.key);o&&null!==o.ref&&console.error("A VirtualizedList contains a cell which itself contains more than one VirtualizedList of the same orientation as the parent list. You must pass a unique listKey prop to each sibling list."),p._nestedChildLists.set(t.key,{ref:t.ref,state:null}),p._hasInteracted&&t.ref.recordInteraction()},p._unregisterAsNestedChild=function(t){p._nestedChildLists.set(t.key,{ref:null,state:t.state})},p._onUpdateSeparators=function(t,s){t.forEach(function(t){var o=null!=t&&p._cellRefs[t];o&&o.updateSeparatorProps(s)})},p._averageCellLength=0,p._cellKeysToChildListKeys=new Map,p._cellRefs={},p._frames={},p._footerLength=0,p._hasDataChangedSinceEndReached=!0,p._hasDoneInitialScroll=!1,p._hasInteracted=!1,p._hasMore=!1,p._hasWarned={},p._headerLength=0,p._hiPriInProgress=!1,p._highestMeasuredFrameIndex=0,p._indicesToKeys=new Map,p._nestedChildLists=new Map,p._offsetFromParentVirtualizedList=0,p._prevParentOffset=0,p._scrollMetrics={contentLength:0,dOffset:0,dt:10,offset:0,timestamp:0,velocity:0,visibleLength:0},p._scrollRef=null,p._sentEndForContentLength=0,p._totalCellLength=0,p._totalCellsMeasured=0,p._viewabilityTuples=[],p._captureScrollRef=function(t){p._scrollRef=t},p._defaultRenderScrollComponent=function(t){var o=t.onRefresh;return p._isNestedWithSameOrientation()?y.createElement(M,t):o?(R('boolean'==typeof t.refreshing,'`refreshing` prop must be set as a boolean in order to use `onRefresh`, but got `'+JSON.stringify(t.refreshing)+'`'),y.createElement(S,s({},t,{refreshControl:null==t.refreshControl?y.createElement(L,{refreshing:t.refreshing,onRefresh:o,progressViewOffset:t.progressViewOffset}):t.refreshControl}))):y.createElement(S,t)},p._onCellUnmount=function(t){var s=p._frames[t];s&&(p._frames[t]=o({},s,{inLayout:!1}))},p._onLayout=function(t){p._isNestedWithSameOrientation()?p.measureLayoutRelativeToContainingList():p._scrollMetrics.visibleLength=p._selectLength(t.nativeEvent.layout),p.props.onLayout&&p.props.onLayout(t),p._scheduleCellsToRenderUpdate(),p._maybeCallOnEndReached()},p._onLayoutEmpty=function(t){p.props.onLayout&&p.props.onLayout(t)},p._onLayoutFooter=function(t){p._footerLength=p._selectLength(t.nativeEvent.layout)},p._onLayoutHeader=function(t){p._headerLength=p._selectLength(t.nativeEvent.layout)},p._onContentSizeChange=function(t,s){t>0&&s>0&&null!=p.props.initialScrollIndex&&p.props.initialScrollIndex>0&&!p._hasDoneInitialScroll&&(p.scrollToIndex({animated:!1,index:p.props.initialScrollIndex}),p._hasDoneInitialScroll=!0),p.props.onContentSizeChange&&p.props.onContentSizeChange(t,s),p._scrollMetrics.contentLength=p._selectLength({height:s,width:t}),p._scheduleCellsToRenderUpdate(),p._maybeCallOnEndReached()},p._convertParentScrollMetrics=function(t){var s=t.offset-p._offsetFromParentVirtualizedList,o=t.visibleLength,n=s-p._scrollMetrics.offset;return{visibleLength:o,contentLength:p._scrollMetrics.contentLength,offset:s,dOffset:n}},p._onScroll=function(t){p._nestedChildLists.forEach(function(s){s.ref&&s.ref._onScroll(t)}),p.props.onScroll&&p.props.onScroll(t);var s=t.timeStamp,o=p._selectLength(t.nativeEvent.layoutMeasurement),n=p._selectLength(t.nativeEvent.contentSize),l=p._selectOffset(t.nativeEvent.contentOffset),h=l-p._scrollMetrics.offset;if(p._isNestedWithSameOrientation()){if(0===p._scrollMetrics.contentLength)return;var c=p._convertParentScrollMetrics({visibleLength:o,offset:l});o=c.visibleLength,n=c.contentLength,l=c.offset,h=c.dOffset}var u=p._scrollMetrics.timestamp?Math.max(1,s-p._scrollMetrics.timestamp):1,f=h/u;u>500&&p._scrollMetrics.dt>500&&n>5*o&&!p._hasWarned.perf&&(x("VirtualizedList: You have a large list that is slow to update - make sure your renderItem function renders components that follow React performance best practices like PureComponent, shouldComponentUpdate, etc.",{dt:u,prevDt:p._scrollMetrics.dt,contentLength:n}),p._hasWarned.perf=!0),p._scrollMetrics={contentLength:n,dt:u,dOffset:h,offset:l,timestamp:s,velocity:f,visibleLength:o},p._updateViewableItems(p.props.data),p.props&&(p._maybeCallOnEndReached(),0!==f&&p._fillRateHelper.activate(),p._computeBlankness(),p._scheduleCellsToRenderUpdate())},p._onScrollBeginDrag=function(t){p._nestedChildLists.forEach(function(s){s.ref&&s.ref._onScrollBeginDrag(t)}),p._viewabilityTuples.forEach(function(t){t.viewabilityHelper.recordInteraction()}),p._hasInteracted=!0,p.props.onScrollBeginDrag&&p.props.onScrollBeginDrag(t)},p._onScrollEndDrag=function(t){var s=t.nativeEvent.velocity;s&&(p._scrollMetrics.velocity=p._selectOffset(s)),p._computeBlankness(),p.props.onScrollEndDrag&&p.props.onScrollEndDrag(t)},p._onMomentumScrollEnd=function(t){p._scrollMetrics.velocity=0,p._computeBlankness(),p.props.onMomentumScrollEnd&&p.props.onMomentumScrollEnd(t)},p._updateCellsToRender=function(){var t=p.props,s=t.data,o=t.getItemCount,n=t.onEndReachedThreshold,l=p._isVirtualizationDisabled();p._updateViewableItems(s),s&&p.setState(function(t){var h;if(l){var c=p._scrollMetrics,u=c.contentLength,f=c.offset,_=c.visibleLength,v=u-_-f0)for(var y=h.first,C=h.last,L=y;L<=C;L++){var S=p._indicesToKeys.get(L),b=S&&p._cellKeysToChildListKeys.get(S);if(b){var M=!1,I=b,x=Array.isArray(I),R=0;for(I=x?I:I["function"==typeof Symbol&&"function"==typeof Symbol?Symbol.iterator:"@@iterator"]();;){var E;if(x){if(R>=I.length)break;E=I[R++]}else{if((R=I.next()).done)break;E=R.value}var w=E,T=p._nestedChildLists.get(w);if(T&&T.ref&&T.ref.hasMore()){M=!0;break}}if(M){h.last=L;break}}}return h})},p._createViewToken=function(t,s){var o=p.props,n=o.data,l=o.getItem,h=o.keyExtractor,c=l(n,t);return{index:t,item:c,key:h(c,t),isViewable:s}},p._getFrameMetricsApprox=function(t){var s=p._getFrameMetrics(t);if(s&&s.index===t)return s;var o=p.props.getItemLayout;return R(!o,'Should not have to estimate frames when a measurement metrics function is provided'),{length:p._averageCellLength,offset:p._averageCellLength*t}},p._getFrameMetrics=function(t){var s=p.props,o=s.data,n=s.getItem,l=s.getItemCount,h=s.getItemLayout,c=s.keyExtractor;R(l(o)>t,'Tried to get frame for out of range index '+t);var u=n(o,t),f=u&&p._frames[c(u,t)];return f&&f.index===t||h&&(f=h(o,t)),f},R(!t.onScroll||!t.onScroll.__isNative,"Components based on VirtualizedList must be wrapped with Animated.createAnimatedComponent to support native onScroll events with useNativeDriver"),R(t.windowSize>0,'VirtualizedList: The windowSize prop must be present and set to a value greater than 0.'),p._fillRateHelper=new _(p._getFrameMetrics),p._updateCellsToRenderBatcher=new f(p._updateCellsToRender,p.props.updateCellsBatchingPeriod),p.props.viewabilityConfigCallbackPairs?p._viewabilityTuples=p.props.viewabilityConfigCallbackPairs.map(function(t){return{viewabilityHelper:new I(t.viewabilityConfig),onViewableItemsChanged:t.onViewableItemsChanged}}):p.props.onViewableItemsChanged&&p._viewabilityTuples.push({viewabilityHelper:new I(p.props.viewabilityConfig),onViewableItemsChanged:p.props.onViewableItemsChanged});var v={first:p.props.initialScrollIndex||0,last:Math.min(p.props.getItemCount(p.props.data),(p.props.initialScrollIndex||0)+p.props.initialNumToRender)-1};if(p._isNestedWithSameOrientation()){var C=p.context.virtualizedList.getNestedChildState(p.props.listKey||p._getCellKey());C&&(v=C,p.state=C,p._frames=C.frames)}return p.state=v,p}return p(T,v),c(T,[{key:"scrollToEnd",value:function(t){var s=!t||t.animated,o=this.props.getItemCount(this.props.data)-1,n=this._getFrameMetricsApprox(o),l=Math.max(0,n.offset+n.length+this._footerLength-this._scrollMetrics.visibleLength);this._scrollRef.scrollTo(this.props.horizontal?{x:l,animated:s}:{y:l,animated:s})}},{key:"scrollToIndex",value:function(t){var s=this.props,o=s.data,n=s.horizontal,l=s.getItemCount,h=s.getItemLayout,c=s.onScrollToIndexFailed,p=t.animated,u=t.index,f=t.viewOffset,_=t.viewPosition;if(R(u>=0&&uthis._highestMeasuredFrameIndex)return R(!!c,"scrollToIndex should be used in conjunction with getItemLayout or onScrollToIndexFailed, otherwise there is no way to know the location of offscreen indices or handle failures."),void c({averageItemLength:this._averageCellLength,highestMeasuredFrameIndex:this._highestMeasuredFrameIndex,index:u});var v=this._getFrameMetricsApprox(u),y=Math.max(0,v.offset-(_||0)*(this._scrollMetrics.visibleLength-v.length))-(f||0);this._scrollRef.scrollTo(n?{x:y,animated:p}:{y:y,animated:p})}},{key:"scrollToItem",value:function(t){for(var s=t.item,n=this.props,l=n.data,h=n.getItem,c=(0,n.getItemCount)(l),p=0;p0){E=!1,w='';var R=f?'width':'height',k=this.props.initialScrollIndex?-1:this.props.initialNumToRender-1,T=this.state,z=T.first,F=T.last;this._pushCells(C,S,L,0,k,v);var K=Math.max(k+1,z);if(!_&&z>k+1){var N=!1;if(L.size>0)for(var V=c?1:0,A=K-1;A>k;A--)if(L.has(A+V)){var D=this._getFrameMetricsApprox(k),B=this._getFrameMetricsApprox(A),H=B.offset-D.offset-(this.props.initialScrollIndex?0:D.length);C.push(y.createElement(M,{key:"$sticky_lead",style:t({},R,H)})),this._pushCells(C,S,L,A,A,v);var U=this._getFrameMetricsApprox(z).offset-(B.offset+B.length);C.push(y.createElement(M,{key:"$sticky_trail",style:t({},R,U)})),N=!0;break}if(!N){var W=this._getFrameMetricsApprox(k),$=this._getFrameMetricsApprox(z).offset-(W.offset+W.length);C.push(y.createElement(M,{key:"$lead_spacer",style:t({},R,$)}))}}if(this._pushCells(C,S,L,K,F,v),!this._hasWarned.keys&&E&&(console.warn("VirtualizedList: missing keys for items, make sure to specify a key or id property on each item or provide a custom keyExtractor.",w),this._hasWarned.keys=!0),!_&&F=p.length)break;_=p[f++]}else{if((f=p.next()).done)break;_=f.value}var v=_,y=this._nestedChildLists.get(v);y&&y.ref&&y.ref.measureLayoutRelativeToContainingList()}}this._computeBlankness(),this._updateViewableItems(this.props.data)}},{key:"measureLayoutRelativeToContainingList",value:function(){var t=this;try{if(!this._scrollRef)return;this._scrollRef.measureLayout(this.context.virtualizedList.getOutermostParentListRef().getScrollRef().getNativeScrollRef(),function(s,o,n,l){t._offsetFromParentVirtualizedList=t._selectOffset({x:s,y:o}),t._scrollMetrics.contentLength=t._selectLength({width:n,height:l});var h=t._convertParentScrollMetrics(t.context.virtualizedList.getScrollMetrics());t._scrollMetrics.visibleLength=h.visibleLength,t._scrollMetrics.offset=h.offset},function(t){console.warn("VirtualizedList: Encountered an error while measuring a list's offset from its containing VirtualizedList.")})}catch(t){console.warn('measureLayoutRelativeToContainingList threw an error',t.stack)}}},{key:"_renderDebugOverlay",value:function(){for(var t=this._scrollMetrics.visibleLength/(this._scrollMetrics.contentLength||1),s=[],o=this.props.getItemCount(this.props.data),n=0;n0){var _=l-this._getFrameMetricsApprox(s).offset;u=u||_<0||c<-2&&_2&&v0&&void 0!==arguments[0]?arguments[0]:{abort:!1};this._taskHandle&&(this._taskHandle.cancel(),t.abort||this._callback(),this._taskHandle=null)}},{key:"schedule",value:function(){var t=this;if(!this._taskHandle){var n=setTimeout(function(){t._taskHandle=l.runAfterInteractions(function(){t._taskHandle=null,t._callback()})},this._delay);this._taskHandle={cancel:function(){return clearTimeout(n)}}}}}]),s})();m.exports=s},257,[25,26,232]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),s=r(d[2]),l=r(d[3]),_=r(d[4]),h=function t(){s(this,t),this.any_blank_count=0,this.any_blank_ms=0,this.any_blank_speed_sum=0,this.mostly_blank_count=0,this.mostly_blank_ms=0,this.pixels_blank=0,this.pixels_sampled=0,this.pixels_scrolled=0,this.total_time_spent=0,this.sample_count=0},o=[],u=10,f=null,c=(function(){function c(t){s(this,c),this._anyBlankStartTime=null,this._enabled=!1,this._info=new h,this._mostlyBlankStartTime=null,this._samplesStartTime=null,this._getFrameMetrics=t,this._enabled=(f||0)>Math.random(),this._resetData()}return n(c,null,[{key:"addListener",value:function(t){return _(null!==f,'Call `FillRateHelper.setSampleRate` before `addListener`.'),o.push(t),{remove:function(){o=o.filter(function(n){return t!==n})}}}},{key:"setSampleRate",value:function(t){f=t}},{key:"setMinSampleCount",value:function(t){u=t}}]),n(c,[{key:"activate",value:function(){this._enabled&&null==this._samplesStartTime&&(this._samplesStartTime=l())}},{key:"deactivateAndFlush",value:function(){if(this._enabled){var n=this._samplesStartTime;if(null!=n)if(this._info.sample_count0&&(k=Math.min(u,Math.max(0,p.offset-h)));for(var b=0,v=n.last,S=this._getFrameMetrics(v);v>=n.first&&(!S||!S.inLayout);)S=this._getFrameMetrics(v),v--;if(S&&v0?(this._anyBlankStartTime=c,this._info.any_blank_speed_sum+=f,this._info.any_blank_count++,this._info.pixels_blank+=T,B>.5&&(this._mostlyBlankStartTime=c,this._info.mostly_blank_count++)):(f<.01||Math.abs(_)<1)&&this.deactivateAndFlush(),B}},{key:"enabled",value:function(){return this._enabled}},{key:"_resetData",value:function(){this._anyBlankStartTime=null,this._info=new h,this._mostlyBlankStartTime=null,this._samplesStartTime=null}}]),c})();m.exports=c},258,[51,26,25,113,6]); -__d(function(g,r,i,a,m,e,d){'use strict';var s,t=r(d[0]),n=t(r(d[1])),o=t(r(d[2])),f=t(r(d[3])),h=t(r(d[4])),p=t(r(d[5])),l=t(r(d[6])),u=t(r(d[7])),c=(t(r(d[8])),t(r(d[9]))),v=(r(d[10]),r(d[11]));r(d[12]);s={SIZE:{}};var R=(function(s){function t(){var s,n;(0,f.default)(this,t);for(var o=arguments.length,h=new Array(o),u=0;u0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;console.warn('`scrollWithoutAnimationTo` is deprecated. Use `scrollTo` instead'),this.scrollTo({x:n,y:t,animated:!1})}},{key:"flashScrollIndicators",value:function(){this._scrollResponder.scrollResponderFlashScrollIndicators()}},{key:"_getKeyForIndex",value:function(t,n){var o=n[t];return o&&o.key}},{key:"_updateAnimatedNodeAttachment",value:function(){this._scrollAnimatedValueAttachment&&this._scrollAnimatedValueAttachment.detach(),this.props.stickyHeaderIndices&&this.props.stickyHeaderIndices.length>0&&(this._scrollAnimatedValueAttachment=R.attachNativeEvent(this._scrollViewRef,'onScroll',[{nativeEvent:{contentOffset:{y:this._scrollAnimatedValue}}}]))}},{key:"_setStickyHeaderRef",value:function(t,n){n?this._stickyHeaderRefs.set(t,n):this._stickyHeaderRefs.delete(t)}},{key:"_onStickyHeaderLayout",value:function(t,n,o){var l=this.props.stickyHeaderIndices;if(l){var s=_.Children.toArray(this.props.children);if(o===this._getKeyForIndex(t,s)){var c=n.nativeEvent.layout.y;this._headerLayoutYs.set(o,c);var p=l[l.indexOf(t)-1];if(null!=p){var h=this._stickyHeaderRefs.get(this._getKeyForIndex(p,s));h&&h.setNextHeaderY&&h.setNextHeaderY(c)}}}}},{key:"render",value:function(){var l,s,c=this;s=n,V(void 0!==(l=t),'ScrollViewClass must not be undefined'),V(void 0!==s,'ScrollContentContainerViewClass must not be undefined');var p=[!0===this.props.horizontal&&b.contentContainerHorizontal,this.props.contentContainerStyle],h={};this.props.onContentSizeChange&&(h={onLayout:this._handleContentOnLayout});var u=this.props.stickyHeaderIndices,R=this.props.children;if(null!=u&&u.length>0){var v=_.Children.toArray(this.props.children);R=v.map(function(t,n){var o=t?u.indexOf(n):-1;if(o>-1){var l=t.key,s=u[o+1],p=c.props.StickyHeaderComponent||H;return _.createElement(p,{key:l,ref:function(t){return c._setStickyHeaderRef(l,t)},nextHeaderLayoutY:c._headerLayoutYs.get(c._getKeyForIndex(s,v)),onLayout:function(t){return c._onStickyHeaderLayout(n,t,l)},scrollAnimatedValue:c._scrollAnimatedValue,inverted:c.props.invertStickyHeaders,scrollViewHeight:c.state.layoutHeight},t)}return t})}R=_.createElement(E.Provider,{value:!0===this.props.horizontal?x:M},R);var S=Array.isArray(u)&&u.length>0,w=_.createElement(s,o({},h,{ref:this._setInnerViewRef,style:p,removeClippedSubviews:this.props.removeClippedSubviews,collapsable:!1}),R),C=void 0!==this.props.alwaysBounceHorizontal?this.props.alwaysBounceHorizontal:this.props.horizontal,A=void 0!==this.props.alwaysBounceVertical?this.props.alwaysBounceVertical:!this.props.horizontal,I=!!this.props.DEPRECATED_sendUpdatedChildFrames,z=!0===this.props.horizontal?b.baseHorizontal:b.baseVertical,L=f({},this.props,{alwaysBounceHorizontal:C,alwaysBounceVertical:A,style:[z,this.props.style],onContentSizeChange:null,onLayout:this._handleLayout,onMomentumScrollBegin:this._scrollResponder.scrollResponderHandleMomentumScrollBegin,onMomentumScrollEnd:this._scrollResponder.scrollResponderHandleMomentumScrollEnd,onResponderGrant:this._scrollResponder.scrollResponderHandleResponderGrant,onResponderReject:this._scrollResponder.scrollResponderHandleResponderReject,onResponderRelease:this._scrollResponder.scrollResponderHandleResponderRelease,onResponderTerminate:this._scrollResponder.scrollResponderHandleTerminate,onResponderTerminationRequest:this._scrollResponder.scrollResponderHandleTerminationRequest,onScrollBeginDrag:this._scrollResponder.scrollResponderHandleScrollBeginDrag,onScrollEndDrag:this._scrollResponder.scrollResponderHandleScrollEndDrag,onScrollShouldSetResponder:this._scrollResponder.scrollResponderHandleScrollShouldSetResponder,onStartShouldSetResponder:this._scrollResponder.scrollResponderHandleStartShouldSetResponder,onStartShouldSetResponderCapture:this._scrollResponder.scrollResponderHandleStartShouldSetResponderCapture,onTouchEnd:this._scrollResponder.scrollResponderHandleTouchEnd,onTouchMove:this._scrollResponder.scrollResponderHandleTouchMove,onTouchStart:this._scrollResponder.scrollResponderHandleTouchStart,onTouchCancel:this._scrollResponder.scrollResponderHandleTouchCancel,onScroll:this._handleScroll,scrollBarThumbImage:T(this.props.scrollBarThumbImage),scrollEventThrottle:S?1:this.props.scrollEventThrottle,sendMomentumEvents:!(!this.props.onMomentumScrollBegin&&!this.props.onMomentumScrollEnd),DEPRECATED_sendUpdatedChildFrames:I,snapToStart:!1!==this.props.snapToStart,snapToEnd:!1!==this.props.snapToEnd,pagingEnabled:!0===this.props.pagingEnabled&&null==this.props.snapToInterval&&null==this.props.snapToOffsets}),N=this.props.decelerationRate;null!=N&&(L.decelerationRate=k(N));var B=this.props.refreshControl;return B?_.createElement(l,o({},L,{ref:this._setScrollViewRef}),y.isTV?null:B,w):_.createElement(l,o({},L,{ref:this._setScrollViewRef}),w)}}]),C})(_.Component);I.Context=E;var b=w.create({baseVertical:{flexGrow:1,flexShrink:1,flexDirection:'column',overflow:'scroll'},baseHorizontal:{flexGrow:1,flexShrink:1,flexDirection:'row',overflow:'scroll'},contentContainerHorizontal:{flexDirection:'row'}});m.exports=I},262,[14,25,26,38,41,44,40,51,234,55,57,91,263,270,61,89,269,88,4,271,191,186,272]); -__d(function(g,r,i,a,m,e,d){'use strict';var o=r(d[0]),s=r(d[1]),n=r(d[2]),l=r(d[3]),t=r(d[4]),c=r(d[5]),p=r(d[6]),h=r(d[7]),u=r(d[8]),S=r(d[9]),b=r(d[10]).ScrollViewManager,R={Mixin:{_subscriptionKeyboardWillShow:null,_subscriptionKeyboardWillHide:null,_subscriptionKeyboardDidShow:null,_subscriptionKeyboardDidHide:null,scrollResponderMixinGetInitialState:function(){return{isTouching:!1,lastMomentumScrollBeginTime:0,lastMomentumScrollEndTime:0,observedScrollSinceBecomingResponder:!1,becameResponderWhileAnimating:!1}},scrollResponderHandleScrollShouldSetResponder:function(){return!0!==this.props.disableScrollViewPanResponder&&this.state.isTouching},scrollResponderHandleStartShouldSetResponder:function(o){if(!0===this.props.disableScrollViewPanResponder)return!1;var s=t.currentlyFocusedField();return'handled'===this.props.keyboardShouldPersistTaps&&null!=s&&o.target!==s},scrollResponderHandleStartShouldSetResponderCapture:function(o){if(this.scrollResponderIsAnimating())return!0;if(!0===this.props.disableScrollViewPanResponder)return!1;var s=t.currentlyFocusedField(),n=this.props.keyboardShouldPersistTaps;return!(n&&'never'!==n||null==s||!o.target||t.isTextInput(o.target))},scrollResponderHandleResponderReject:function(){},scrollResponderHandleTerminationRequest:function(){return!this.state.observedScrollSinceBecomingResponder},scrollResponderHandleTouchEnd:function(o){var s=o.nativeEvent;this.state.isTouching=0!==s.touches.length,this.props.onTouchEnd&&this.props.onTouchEnd(o)},scrollResponderHandleTouchCancel:function(o){this.state.isTouching=!1,this.props.onTouchCancel&&this.props.onTouchCancel(o)},scrollResponderHandleResponderRelease:function(o){this.props.onResponderRelease&&this.props.onResponderRelease(o);var s=t.currentlyFocusedField();!0===this.props.keyboardShouldPersistTaps||'always'===this.props.keyboardShouldPersistTaps||null==s||o.target===s||this.state.observedScrollSinceBecomingResponder||this.state.becameResponderWhileAnimating||(this.props.onScrollResponderKeyboardDismissed&&this.props.onScrollResponderKeyboardDismissed(o),t.blurTextInput(s))},scrollResponderHandleScroll:function(o){this.state.observedScrollSinceBecomingResponder=!0,this.props.onScroll&&this.props.onScroll(o)},scrollResponderHandleResponderGrant:function(o){this.state.observedScrollSinceBecomingResponder=!1,this.props.onResponderGrant&&this.props.onResponderGrant(o),this.state.becameResponderWhileAnimating=this.scrollResponderIsAnimating()},scrollResponderHandleScrollBeginDrag:function(o){s.beginScroll(),this.props.onScrollBeginDrag&&this.props.onScrollBeginDrag(o)},scrollResponderHandleScrollEndDrag:function(o){var n=o.nativeEvent.velocity;this.scrollResponderIsAnimating()||n&&(0!==n.x||0!==n.y)||s.endScroll(),this.props.onScrollEndDrag&&this.props.onScrollEndDrag(o)},scrollResponderHandleMomentumScrollBegin:function(o){this.state.lastMomentumScrollBeginTime=u(),this.props.onMomentumScrollBegin&&this.props.onMomentumScrollBegin(o)},scrollResponderHandleMomentumScrollEnd:function(o){s.endScroll(),this.state.lastMomentumScrollEndTime=u(),this.props.onMomentumScrollEnd&&this.props.onMomentumScrollEnd(o)},scrollResponderHandleTouchStart:function(o){this.state.isTouching=!0,this.props.onTouchStart&&this.props.onTouchStart(o)},scrollResponderHandleTouchMove:function(o){this.props.onTouchMove&&this.props.onTouchMove(o)},scrollResponderIsAnimating:function(){return u()-this.state.lastMomentumScrollEndTime<16||this.state.lastMomentumScrollEndTime0){v.push(H),L.push(0),v.push(H+1),L.push(1);var Y=(y||0)-l-o;Y>H&&(v.push(Y,Y+1),L.push(Y-H,Y-H))}}}else{v.push(h),L.push(0);var x=(y||0)-l;x>=h?(v.push(x,x+1),L.push(x-h,x-h)):(v.push(h+1),L.push(1))}var C=this.props.scrollAnimatedValue.interpolate({inputRange:v,outputRange:L}),E=p.Children.only(this.props.children);return p.createElement(c,{collapsable:!1,onLayout:this._onLayout,style:[E.props.style,f.header,{transform:[{translateY:C}]}]},p.cloneElement(E,{style:f.fill,onLayout:void 0}))}}]),h})(p.Component),f=h.create({header:{zIndex:10},fill:{flex:1}});m.exports=v},270,[25,26,38,41,44,234,57,61,89]); -__d(function(g,r,i,a,m,e,d){'use strict';r(d[0]);m.exports=function(t){return'normal'===t?.998:'fast'===t?.99:t}},271,[55]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0])(Object.create(null),{margin:!0,marginHorizontal:!0,marginVertical:!0,marginBottom:!0,marginTop:!0,marginLeft:!0,marginRight:!0,flex:!0,flexGrow:!0,flexShrink:!0,flexBasis:!0,alignSelf:!0,height:!0,minHeight:!0,maxHeight:!0,width:!0,minWidth:!0,maxWidth:!0,position:!0,left:!0,right:!0,bottom:!0,top:!0,transform:!0});m.exports=function(n){var o={},f={};return n&&Object.keys(n).forEach(function(h){var l=n[h];t[h]?f[h]=l:o[h]=l}),{outer:f,inner:o}}},272,[14]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),s=r(d[2]),o=r(d[3]),l=r(d[4]),h=(function(){function h(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{viewAreaCoveragePercentThreshold:0};s(this,h),this._hasInteracted=!1,this._timers=new Set,this._viewableIndices=[],this._viewableItems=new Map,this._config=t}return o(h,[{key:"dispose",value:function(){this._timers.forEach(clearTimeout)}},{key:"computeViewableItems",value:function(t,n,s,o,h){var c=this._config,f=c.itemVisiblePercentThreshold,v=c.viewAreaCoveragePercentThreshold,b=null!=v,_=b?v:f;l(null!=_&&null!=f!=(null!=v),'Must set exactly one of itemVisiblePercentThreshold or viewAreaCoveragePercentThreshold');var w=[];if(0===t)return w;var y=-1,I=h||{first:0,last:t-1},p=I.first,k=I.last;if(k>=t)return console.warn('Invalid render range computing viewability '+JSON.stringify({renderRange:h,itemCount:t})),[];for(var S=p;S<=k;S++){var T=o(S);if(T){var A=T.offset-n,V=A+T.length;if(A0)y=S,u(b,_,A,V,s,T.length)&&w.push(S);else if(y>=0)break}}return w}},{key:"onUpdate",value:function(t,n,s,o,l,h,u){var c=this;if((!this._config.waitForInteraction||this._hasInteracted)&&0!==t&&o(0)){var f=[];if(t&&(f=this.computeViewableItems(t,n,s,o,u)),this._viewableIndices.length!==f.length||!this._viewableIndices.every(function(t,n){return t===f[n]}))if(this._viewableIndices=f,this._config.minimumViewTime){var v=setTimeout(function(){c._timers.delete(v),c._onUpdateSync(f,h,l)},this._config.minimumViewTime);this._timers.add(v)}else this._onUpdateSync(f,h,l)}}},{key:"resetViewableIndices",value:function(){this._viewableIndices=[]}},{key:"recordInteraction",value:function(){this._hasInteracted=!0}},{key:"_onUpdateSync",value:function(s,o,l){var h=this;s=s.filter(function(t){return h._viewableIndices.includes(t)});var u=this._viewableItems,c=new Map(s.map(function(t){var n=l(t,!0);return[n.key,n]})),f=[],v=c,b=Array.isArray(v),_=0;for(v=b?v:v["function"==typeof Symbol?Symbol.iterator:"@@iterator"]();;){var w;if(b){if(_>=v.length)break;w=v[_++]}else{if((_=v.next()).done)break;w=_.value}var y=n(w,2),I=y[0],p=y[1];u.has(I)||f.push(p)}var k=u,S=Array.isArray(k),T=0;for(k=S?k:k["function"==typeof Symbol?Symbol.iterator:"@@iterator"]();;){var A;if(S){if(T>=k.length)break;A=k[T++]}else{if((T=k.next()).done)break;A=T.value}var V=n(A,2),x=V[0],M=V[1];c.has(x)||f.push(t({},M,{isViewable:!1}))}f.length>0&&(this._viewableItems=c,o({viewableItems:Array.from(c.values()),changed:f,viewabilityConfig:this._config}))}}]),h})();function u(t,n,s,o,l,h){if(f(s,o,l))return!0;var u=c(s,o,l);return 100*(t?u/l:u/h)>=n}function c(t,n,s){var o=Math.min(n,s)-Math.max(t,0);return Math.max(0,o)}function f(t,n,s){return t>=0&&n<=s&&n>t}m.exports=h},273,[51,15,25,26,4]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]);function s(t,s,f){for(var l=[],o=0,u=0;u=t[c]&&(l[c]=u,o++,c===t.length-1))return n(o===t.length,'bad offsets input, should be in increasing order: %s',JSON.stringify(t)),l;return l}function f(t,n){return n.last-n.first+1-Math.max(0,1+Math.min(n.last,t.last)-Math.max(n.first,t.first))}var l={computeWindowedRenderLimits:function(n,l,o,u){var h=n.data,v=n.getItemCount,c=n.maxToRenderPerBatch,x=n.windowSize,M=v(h);if(0===M)return l;var w=u.offset,b=u.velocity,p=u.visibleLength,C=Math.max(0,w),O=C+p,y=(x-1)*p,L=b>1?'after':b<-1?'before':'none',R=Math.max(0,C-.5*y),S=Math.max(0,O+.5*y);if(o(M-1).offset=_);){var E=z>=c,F=N<=l.first||N>l.last,P=N>J&&(!E||!F),W=T>=l.last||T=N&&N>=0&&T=J&&T<=_&&N<=k.first&&T>=k.last))throw new Error('Bad window calculation '+JSON.stringify({first:N,last:T,itemCount:M,overscanFirst:J,overscanLast:_,visible:k}));return{first:N,last:T}},elementsThatOverlapOffsets:s,newRangeCount:f};m.exports=l},274,[15,4]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),s=r(d[1]);m.exports=s(t)},275,[276,253]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),o=r(d[2]),s=r(d[3]),c=r(d[4]),u=(r(d[5]),r(d[6])),h=r(d[7]),l=r(d[8]),f=r(d[9]),p=s.ImageViewManager,w=l('RCTImageView');var v=function(n,o){var s,u,l=f(n.source)||{uri:void 0,width:void 0,height:void 0};if(Array.isArray(l))u=h([y.base,n.style])||{},s=l;else{var p=l.width,v=l.height,z=l.uri;u=h([{width:p,height:v},y.base,n.style])||{},s=[l],''===z&&console.warn('source.uri should not be an empty string')}var I=n.resizeMode||u.resizeMode||'cover',b=u.tintColor;if(null!=n.src&&console.warn('The component requires a `source` property rather than `src`.'),null!=n.children)throw new Error('The component cannot contain children. If you want to render content on top of the image, consider using the component or absolute positioning.');return c.createElement(w,t({},n,{ref:o,style:u,resizeMode:I,tintColor:b,source:s}))};(v=c.forwardRef(v)).displayName='Image',v.getSize=function(t,n,o){p.getSize(t,n,o||function(){console.warn('Failed to get size for image: '+t)})},v.getSizeWithHeaders=function(t,n,o,s){return p.getSizeWithHeaders({uri:t,headers:n}).then(function(t){o(t.width,t.height)}).catch(s||function(){console.warn('Failed to get size for image: '+t)})},v.prefetch=function(t){return p.prefetchImage(t)},v.queryCache=function(t){return n.async(function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,n.awrap(p.queryCache(t));case 2:return o.abrupt("return",o.sent);case 3:case"end":return o.stop()}})},v.resolveAssetSource=f,v.propTypes=o;var y=u.create({base:{overflow:'hidden'}});m.exports=v},276,[14,277,280,13,57,91,61,88,191,186]); -__d(function(g,r,i,a,m,e,d){m.exports=r(d[0])},277,[278]); -__d(function(g,r,i,a,m,e,d){var t=(function(){return this||"object"==typeof self&&self})()||Function("return this")(),n=t.regeneratorRuntime&&Object.getOwnPropertyNames(t).indexOf("regeneratorRuntime")>=0,o=n&&t.regeneratorRuntime;if(t.regeneratorRuntime=void 0,m.exports=r(d[0]),n)t.regeneratorRuntime=o;else try{delete t.regeneratorRuntime}catch(n){t.regeneratorRuntime=void 0}},278,[279]); -__d(function(g,r,i,a,m,e,d){!(function(t){"use strict";var n,o=Object.prototype,c=o.hasOwnProperty,u="function"==typeof Symbol?Symbol:{},h=u.iterator||"@@iterator",f=u.asyncIterator||"@@asyncIterator",s=u.toStringTag||"@@toStringTag",l="object"==typeof m,p=t.regeneratorRuntime;if(p)l&&(m.exports=p);else{(p=t.regeneratorRuntime=l?m.exports:{}).wrap=O;var y="suspendedStart",v="suspendedYield",w="executing",L="completed",x={},E={};E[h]=function(){return this};var b=Object.getPrototypeOf,_=b&&b(b(q([])));_&&_!==o&&c.call(_,h)&&(E=_);var j=P.prototype=G.prototype=Object.create(E);N.prototype=j.constructor=P,P.constructor=N,P[s]=N.displayName="GeneratorFunction",p.isGeneratorFunction=function(t){var n="function"==typeof t&&t.constructor;return!!n&&(n===N||"GeneratorFunction"===(n.displayName||n.name))},p.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,P):(t.__proto__=P,s in t||(t[s]="GeneratorFunction")),t.prototype=Object.create(j),t},p.awrap=function(t){return{__await:t}},F(S.prototype),S.prototype[f]=function(){return this},p.AsyncIterator=S,p.async=function(t,n,o,c){var u=new S(O(t,n,o,c));return p.isGeneratorFunction(n)?u:u.next().then(function(t){return t.done?t.value:u.next()})},F(j),j[s]="Generator",j[h]=function(){return this},j.toString=function(){return"[object Generator]"},p.keys=function(t){var n=[];for(var o in t)n.push(o);return n.reverse(),function o(){for(;n.length;){var c=n.pop();if(c in t)return o.value=c,o.done=!1,o}return o.done=!0,o}},p.values=q,Y.prototype={constructor:Y,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(R),!t)for(var o in this)"t"===o.charAt(0)&&c.call(this,o)&&!isNaN(+o.slice(1))&&(this[o]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var o=this;function u(c,u){return s.type="throw",s.arg=t,o.next=c,u&&(o.method="next",o.arg=n),!!u}for(var h=this.tryEntries.length-1;h>=0;--h){var f=this.tryEntries[h],s=f.completion;if("root"===f.tryLoc)return u("end");if(f.tryLoc<=this.prev){var l=c.call(f,"catchLoc"),p=c.call(f,"finallyLoc");if(l&&p){if(this.prev=0;--o){var u=this.tryEntries[o];if(u.tryLoc<=this.prev&&c.call(u,"finallyLoc")&&this.prev=0;--n){var o=this.tryEntries[n];if(o.finallyLoc===t)return this.complete(o.completion,o.afterLoc),R(o),x}},catch:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc===t){var c=o.completion;if("throw"===c.type){var u=c.arg;R(o)}return u}}throw new Error("illegal catch attempt")},delegateYield:function(t,o,c){return this.delegate={iterator:q(t),resultName:o,nextLoc:c},"next"===this.method&&(this.arg=n),x}}}function O(t,n,o,c){var u=n&&n.prototype instanceof G?n:G,h=Object.create(u.prototype),f=new Y(c||[]);return h._invoke=T(t,o,f),h}function k(t,n,o){try{return{type:"normal",arg:t.call(n,o)}}catch(t){return{type:"throw",arg:t}}}function G(){}function N(){}function P(){}function F(t){["next","throw","return"].forEach(function(n){t[n]=function(t){return this._invoke(n,t)}})}function S(t){function n(o,u,h,f){var s=k(t[o],t,u);if("throw"!==s.type){var l=s.arg,p=l.value;return p&&"object"==typeof p&&c.call(p,"__await")?Promise.resolve(p.__await).then(function(t){n("next",t,h,f)},function(t){n("throw",t,h,f)}):Promise.resolve(p).then(function(t){l.value=t,h(l)},function(t){return n("throw",t,h,f)})}f(s.arg)}var o;this._invoke=function(t,c){function u(){return new Promise(function(o,u){n(t,c,o,u)})}return o=o?o.then(u,u):u()}}function T(t,n,o){var c=y;return function(u,h){if(c===w)throw new Error("Generator is already running");if(c===L){if("throw"===u)throw h;return z()}for(o.method=u,o.arg=h;;){var f=o.delegate;if(f){var s=I(f,o);if(s){if(s===x)continue;return s}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(c===y)throw c=L,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);c=w;var l=k(t,n,o);if("normal"===l.type){if(c=o.done?L:v,l.arg===x)continue;return{value:l.arg,done:o.done}}"throw"===l.type&&(c=L,o.method="throw",o.arg=l.arg)}}}function I(t,o){var c=t.iterator[o.method];if(c===n){if(o.delegate=null,"throw"===o.method){if(t.iterator.return&&(o.method="return",o.arg=n,I(t,o),"throw"===o.method))return x;o.method="throw",o.arg=new TypeError("The iterator does not provide a 'throw' method")}return x}var u=k(c,t.iterator,o.arg);if("throw"===u.type)return o.method="throw",o.arg=u.arg,o.delegate=null,x;var h=u.arg;return h?h.done?(o[t.resultName]=h.value,o.next=t.nextLoc,"return"!==o.method&&(o.method="next",o.arg=n),o.delegate=null,x):h:(o.method="throw",o.arg=new TypeError("iterator result is not an object"),o.delegate=null,x)}function A(t){var n={tryLoc:t[0]};1 in t&&(n.catchLoc=t[1]),2 in t&&(n.finallyLoc=t[2],n.afterLoc=t[3]),this.tryEntries.push(n)}function R(t){var n=t.completion||{};n.type="normal",delete n.arg,t.completion=n}function Y(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(A,this),this.reset(!0)}function q(t){if(t){var o=t[h];if(o)return o.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var u=-1,f=function o(){for(;++u0&&this.props.stickySectionHeadersEnabled&&(l+=this._listRef._getFrameMetricsApprox(o-t.itemIndex).length);var p=n({},t,{viewOffset:l,index:o});this._listRef.scrollToIndex(p)}},{key:"getListRef",value:function(){return this._listRef}}]),p(I,[{key:"UNSAFE_componentWillReceiveProps",value:function(t){this.setState(this._computeState(t))}},{key:"_computeState",value:function(t){var o=t.ListHeaderComponent?1:0,s=[],l=t.sections?t.sections.reduce(function(n,l){return s.push(n+o),n+t.getItemCount(l.data)+2},0):0;return{childProps:n({},t,{renderItem:this._renderItem,ItemSeparatorComponent:void 0,data:t.sections,getItemCount:function(){return l},getItem:function(n,o){return x(t,n,o)},keyExtractor:this._keyExtractor,onViewableItemsChanged:t.onViewableItemsChanged?this._onViewableItemsChanged:void 0,stickyHeaderIndices:t.stickySectionHeadersEnabled?s:void 0})}}},{key:"render",value:function(){return h.createElement(S,t({},this.state.childProps,{ref:this._captureRef}))}},{key:"_subExtractor",value:function(t){for(var n=t,o=this.props,s=o.getItem,l=o.getItemCount,p=o.keyExtractor,c=o.sections,u=0;u=l(f)+1)n-=l(f)+1;else return-1===n?{section:h,key:S+':header',index:null,header:!0,trailingSection:c[u+1]}:n===l(f)?{section:h,key:S+':footer',index:null,header:!1,trailingSection:c[u+1]}:{section:h,key:S+':'+(h.keyExtractor||p)(s(f,n),n),index:n,leadingItem:s(f,n-1),leadingSection:c[u-1],trailingItem:s(f,n+1),trailingSection:c[u+1]}}}},{key:"_getSeparatorComponent",value:function(t,n){if(!(n=n||this._subExtractor(t)))return null;var o=n.section.ItemSeparatorComponent||this.props.ItemSeparatorComponent,s=this.props.SectionSeparatorComponent,l=t===this.state.childProps.getItemCount()-1,p=n.index===this.props.getItemCount(n.section.data)-1;return s&&p?s:!o||p||l?null:o}}]),I})(h.PureComponent);I.defaultProps=n({},S.defaultProps,{data:[]});var _=(function(t){function u(){var t,p;o(this,u);for(var c=arguments.length,h=new Array(c),f=0;f10?o:10,update:{duration:o>10?o:10,type:f.Types[s]||'keyboard'}}),n.setState({bottom:u}))}else n.setState({bottom:0})},n._onLayout=function(t){n._frame=t.nativeEvent.layout,n._initialFrameHeight||(n._initialFrameHeight=n._frame.height)},n.state={bottom:0},n.viewRef=y.createRef(),n}return h(p,_),s(p,[{key:"_relativeKeyboardHeight",value:function(t){var n=this._frame;if(!n||!t)return 0;var o=t.screenY-this.props.keyboardVerticalOffset;return Math.max(n.y+n.height-o,0)}},{key:"componentDidMount",value:function(){this._subscriptions=[c.addListener('keyboardWillChangeFrame',this._onKeyboardChange)]}},{key:"componentWillUnmount",value:function(){this._subscriptions.forEach(function(t){t.remove()})}},{key:"render",value:function(){var o=this.props,s=o.behavior,l=o.children,u=o.contentContainerStyle,h=o.enabled,c=(o.keyboardVerticalOffset,o.style),f=n(o,["behavior","children","contentContainerStyle","enabled","keyboardVerticalOffset","style"]),_=h?this.state.bottom:0;switch(s){case'height':var p;return null!=this._frame&&this.state.bottom>0&&(p={height:this._initialFrameHeight-_,flex:0}),y.createElement(v,t({ref:this.viewRef,style:b.compose(c,p),onLayout:this._onLayout},f),l);case'position':return y.createElement(v,t({ref:this.viewRef,style:c,onLayout:this._onLayout},f),y.createElement(v,{style:b.compose(u,{bottom:_})},l));case'padding':return y.createElement(v,t({ref:this.viewRef,style:b.compose(c,{paddingBottom:_}),onLayout:this._onLayout},f),l);default:return y.createElement(v,t({ref:this.viewRef,onLayout:this._onLayout,style:c},f),l)}}}]),p})(y.Component);_.defaultProps={enabled:!0,keyboardVerticalOffset:0},m.exports=_},304,[14,53,25,26,38,41,44,266,268,55,57,61,89]); -__d(function(g,r,i,a,m,e,d){var n=r(d[0]),t=n(r(d[1])),l=n(r(d[2])),s=n(r(d[3])),o=n(r(d[4])),u=n(r(d[5])),c=n(r(d[6])),f=n(r(d[7])),h=r(d[8]),p=r(d[9]),k=r(d[10]),v=(function(n){function v(){var n,t;(0,l.default)(this,v);for(var s=arguments.length,c=new Array(s),f=0;f=1&&(l=_.createElement(y,{style:o.style,allowFontScaling:o.allowFontScaling,maxFontSizeMultiplier:o.maxFontSizeMultiplier},l)),o.inputView&&(l=[l,o.inputView]),o.style.unshift(L.multilineInput),s=_.createElement(t,u({ref:this._setNativeRef},o,{children:l,onFocus:this._onFocus,onBlur:this._onBlur,onChange:this._onChange,onContentSizeChange:this.props.onContentSizeChange,onSelectionChange:this._onSelectionChange,onTextInput:this._onTextInput,onSelectionChangeShouldSetResponder:N,text:this._getText(),dataDetectorTypes:this.props.dataDetectorTypes,onScroll:this._onScroll}))}else s=_.createElement(n,u({ref:this._setNativeRef},o,{onFocus:this._onFocus,onBlur:this._onBlur,onChange:this._onChange,onSelectionChange:this._onSelectionChange,onSelectionChangeShouldSetResponder:N,text:this._getText()}));return _.createElement(I,{onLayout:o.onLayout,onPress:this._onPress,rejectResponderTermination:!0,accessible:o.accessible,accessibilityLabel:o.accessibilityLabel,accessibilityRole:o.accessibilityRole,accessibilityStates:o.accessibilityStates,accessibilityState:o.accessibilityState,nativeID:this.props.nativeID,testID:o.testID},s)},_renderIOS:function(){var s=u({},this.props);s.style=[this.props.style],s.selection&&null==s.selection.end&&(s.selection={start:s.selection.start,end:s.selection.start});var o=s.multiline?t:n;s.multiline&&s.style.unshift(L.multilineInput);var l=_.createElement(o,u({ref:this._setNativeRef},s,{onFocus:this._onFocus,onBlur:this._onBlur,onChange:this._onChange,onContentSizeChange:this.props.onContentSizeChange,onSelectionChange:this._onSelectionChange,onTextInput:this._onTextInput,onSelectionChangeShouldSetResponder:N,text:this._getText(),dataDetectorTypes:this.props.dataDetectorTypes,onScroll:this._onScroll}));return _.createElement(I,{onLayout:s.onLayout,onPress:this._onPress,rejectResponderTermination:s.rejectResponderTermination,accessible:s.accessible,accessibilityLabel:s.accessibilityLabel,accessibilityRole:s.accessibilityRole,accessibilityStates:s.accessibilityStates,accessibilityState:s.accessibilityState,nativeID:this.props.nativeID,testID:s.testID},l)},_renderAndroid:function(){var t=u({},this.props);t.style=[this.props.style],t.autoCapitalize=t.autoCapitalize||'sentences';var n=this.props.children,s=0;_.Children.forEach(n,function(){return++s}),R(!(this.props.value&&s),'Cannot specify both value and children.'),s>1&&(n=_.createElement(y,null,n)),t.selection&&null==t.selection.end&&(t.selection={start:t.selection.start,end:t.selection.start});var o=_.createElement(void 0,u({ref:this._setNativeRef},t,{mostRecentEventCount:0,onFocus:this._onFocus,onBlur:this._onBlur,onChange:this._onChange,onSelectionChange:this._onSelectionChange,onTextInput:this._onTextInput,text:this._getText(),children:n,disableFullscreenUI:this.props.disableFullscreenUI,textBreakStrategy:this.props.textBreakStrategy,onScroll:this._onScroll}));return _.createElement(I,{onLayout:t.onLayout,onPress:this._onPress,accessible:this.props.accessible,accessibilityLabel:this.props.accessibilityLabel,accessibilityRole:this.props.accessibilityRole,accessibilityStates:this.props.accessibilityStates,accessibilityState:this.props.accessibilityState,nativeID:this.props.nativeID,testID:this.props.testID},o)},_onFocus:function(t){this.props.onFocus&&this.props.onFocus(t),this.props.selectionState&&this.props.selectionState.focus()},_onPress:function(t){(this.props.editable||void 0===this.props.editable)&&this.focus()},_onChange:function(t){this._inputRef&&this._inputRef.setNativeProps&&S.setNativeProps(this._inputRef,{mostRecentEventCount:t.nativeEvent.eventCount});var n=t.nativeEvent.text;this.props.onChange&&this.props.onChange(t),this.props.onChangeText&&this.props.onChangeText(n),this._inputRef&&(this._lastNativeText=n,this.forceUpdate())},_onSelectionChange:function(t){this.props.onSelectionChange&&this.props.onSelectionChange(t),this._inputRef&&(this._lastNativeSelection=t.nativeEvent.selection,(this.props.selection||this.props.selectionState)&&this.forceUpdate())},componentDidUpdate:function(){var t={};this._lastNativeText!==this.props.value&&'string'==typeof this.props.value&&(t.text=this.props.value);var n=this.props.selection;this._lastNativeSelection&&n&&(this._lastNativeSelection.start!==n.start||this._lastNativeSelection.end!==n.end)&&(t.selection=this.props.selection),Object.keys(t).length>0&&this._inputRef&&this._inputRef.setNativeProps&&S.setNativeProps(this._inputRef,t),this.props.selectionState&&n&&this.props.selectionState.update(n.start,n.end)},_onBlur:function(t){this.blur(),this.props.onBlur&&this.props.onBlur(t),this.props.selectionState&&this.props.selectionState.blur()},_onTextInput:function(t){this.props.onTextInput&&this.props.onTextInput(t)},_onScroll:function(t){this.props.onScroll&&this.props.onScroll(t)}}),E=((function(t){function n(){return s(this,n),l(this,c(n).apply(this,arguments))}p(n,t),o(n,[{key:"clear",value:function(){}},{key:"isFocused",value:function(){}}])})(S.NativeComponent),D),L=v.create({multilineInput:{paddingTop:5}});m.exports=E},332,[25,26,38,41,44,14,333,336,288,55,57,91,61,206,211,172,289,76,290,4,191,6]); -__d(function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]),o=r(d[1]),t=r(d[2]),l=r(d[3]),s=r(d[4]),c=r(d[5]),u=['phoneNumber','link','address','calendarEvent','none','all'];m.exports=n({},l,{autoCapitalize:o.oneOf(['none','sentences','words','characters']),autoCompleteType:o.oneOf(['cc-csc','cc-exp','cc-exp-month','cc-exp-year','cc-number','email','name','password','postal-code','street-address','tel','username','off']),autoCorrect:o.bool,spellCheck:o.bool,autoFocus:o.bool,allowFontScaling:o.bool,maxFontSizeMultiplier:o.number,editable:o.bool,keyboardType:o.oneOf(['default','email-address','numeric','phone-pad','number-pad','ascii-capable','numbers-and-punctuation','url','name-phone-pad','decimal-pad','twitter','web-search','visible-password']),keyboardAppearance:o.oneOf(['default','light','dark']),returnKeyType:o.oneOf(['done','go','next','search','send','none','previous','default','emergency-call','google','join','route','yahoo']),returnKeyLabel:o.string,maxLength:o.number,numberOfLines:o.number,disableFullscreenUI:o.bool,enablesReturnKeyAutomatically:o.bool,multiline:o.bool,textBreakStrategy:o.oneOf(['simple','highQuality','balanced']),onBlur:o.func,onFocus:o.func,onChange:o.func,onChangeText:o.func,onContentSizeChange:o.func,onTextInput:o.func,onEndEditing:o.func,onSelectionChange:o.func,onSubmitEditing:o.func,onKeyPress:o.func,onLayout:o.func,onScroll:o.func,placeholder:o.string,placeholderTextColor:t,scrollEnabled:o.bool,secureTextEntry:o.bool,selectionColor:t,selectionState:o.instanceOf(s),selection:o.shape({start:o.number.isRequired,end:o.number}),value:o.string,defaultValue:o.string,clearButtonMode:o.oneOf(['never','while-editing','unless-editing','always']),clearTextOnFocus:o.bool,selectTextOnFocus:o.bool,blurOnSubmit:o.bool,style:c.propTypes.style,underlineColorAndroid:t,inlineImageLeft:o.string,inlineImagePadding:o.number,rejectResponderTermination:o.bool,dataDetectorTypes:o.oneOfType([o.oneOf(u),o.arrayOf(o.oneOf(u))]),caretHidden:o.bool,contextMenuHidden:o.bool,inputAccessoryViewID:o.string,textContentType:o.oneOf(['none','URL','addressCity','addressCityAndState','addressState','countryName','creditCardNumber','emailAddress','familyName','fullStreetAddress','givenName','jobTitle','location','middleName','name','namePrefix','nameSuffix','nickname','organizationName','postalCode','streetAddressLine1','streetAddressLine2','sublocality','telephoneNumber','username','password','newPassword','oneTimeCode']),showSoftInputOnFocus:o.bool})},333,[51,70,67,334,336,206]); -__d(function(g,r,i,a,m,e,d){'use strict';var o=r(d[0]),n=r(d[1]),s=r(d[2]),t=r(d[3]),c=r(d[4]),l=r(d[5]),b=r(d[6]),u=b.DeprecatedAccessibilityRoles,p=b.DeprecatedAccessibilityStates,f=s(t);m.exports=o({accessible:l.bool,accessibilityLabel:l.node,accessibilityHint:l.string,accessibilityActions:l.arrayOf(l.string),accessibilityIgnoresInvertColors:l.bool,accessibilityRole:l.oneOf(u),accessibilityStates:l.arrayOf(l.oneOf(p)),accessibilityState:l.object,accessibilityLiveRegion:l.oneOf(['none','polite','assertive']),importantForAccessibility:l.oneOf(['auto','yes','no','no-hide-descendants']),accessibilityViewIsModal:l.bool,accessibilityElementsHidden:l.bool,onAccessibilityAction:l.func,onAccessibilityTap:l.func,onMagicTap:l.func,testID:l.string,nativeID:l.string,onResponderGrant:l.func,onResponderMove:l.func,onResponderReject:l.func,onResponderRelease:l.func,onResponderTerminate:l.func,onResponderTerminationRequest:l.func,onStartShouldSetResponder:l.func,onStartShouldSetResponderCapture:l.func,onMoveShouldSetResponder:l.func,onMoveShouldSetResponderCapture:l.func,hitSlop:n,onLayout:l.func,pointerEvents:l.oneOf(['box-none','none','box-only','auto']),style:f,removeClippedSubviews:l.bool,renderToHardwareTextureAndroid:l.bool,shouldRasterizeIOS:l.bool,collapsable:l.bool,needsOffscreenAlphaCompositing:l.bool},c)},334,[51,208,209,82,335,70,295]); -__d(function(g,r,i,a,m,e,d){'use strict'},335,[]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),s=r(d[1]),f=r(d[2]),u=(function(){function f(s,u){t(this,f),this._anchorOffset=s,this._focusOffset=u,this._hasFocus=!1}return s(f,[{key:"update",value:function(t,s){this._anchorOffset===t&&this._focusOffset===s||(this._anchorOffset=t,this._focusOffset=s,this.emit('update'))}},{key:"constrainLength",value:function(t){this.update(Math.min(this._anchorOffset,t),Math.min(this._focusOffset,t))}},{key:"focus",value:function(){this._hasFocus||(this._hasFocus=!0,this.emit('focus'))}},{key:"blur",value:function(){this._hasFocus&&(this._hasFocus=!1,this.emit('blur'))}},{key:"hasFocus",value:function(){return this._hasFocus}},{key:"isCollapsed",value:function(){return this._anchorOffset===this._focusOffset}},{key:"isBackward",value:function(){return this._anchorOffset>this._focusOffset}},{key:"getAnchorOffset",value:function(){return this._hasFocus?this._anchorOffset:null}},{key:"getFocusOffset",value:function(){return this._hasFocus?this._focusOffset:null}},{key:"getStartOffset",value:function(){return this._hasFocus?Math.min(this._anchorOffset,this._focusOffset):null}},{key:"getEndOffset",value:function(){return this._hasFocus?Math.max(this._anchorOffset,this._focusOffset):null}},{key:"overlaps",value:function(t,s){return this.hasFocus()&&this.getStartOffset()<=s&&t<=this.getEndOffset()}}]),f})();f(u,{blur:!0,focus:!0,update:!0}),m.exports=u},336,[25,26,337]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),s=r(d[2]),_=r(d[3]),o=r(d[4]),v=r(d[5])({__types:!0});var E={emit:function(t,n,s,_,o,v,E){return this.__getEventEmitter().emit(t,n,s,_,o,v,E)},emitAndHold:function(t,n,s,_,o,v,E){return this.__getEventEmitter().emitAndHold(t,n,s,_,o,v,E)},addListener:function(t,n,s){return this.__getEventEmitter().addListener(t,n,s)},once:function(t,n,s){return this.__getEventEmitter().once(t,n,s)},addRetroactiveListener:function(t,n,s){return this.__getEventEmitter().addRetroactiveListener(t,n,s)},addListenerMap:function(t,n){return this.__getEventEmitter().addListenerMap(t,n)},addRetroactiveListenerMap:function(t,n){return this.__getEventEmitter().addListenerMap(t,n)},removeAllListeners:function(){this.__getEventEmitter().removeAllListeners()},removeCurrentListener:function(){this.__getEventEmitter().removeCurrentListener()},releaseHeldEventType:function(t){this.__getEventEmitter().releaseHeldEventType(t)},__getEventEmitter:function(){if(!this.__eventEmitter){var t=new n,o=new _;this.__eventEmitter=new s(t,o)}return this.__eventEmitter}};m.exports=function(n,s){o(s,'Must supply set of valid event types');var _=n.prototype||n;o(!_.__eventEmitter,'An active emitter is already mixed in');var u=n.constructor;u&&o(u===Object||u===Function,'Mix EventEmitter into a class, not an instance'),_.hasOwnProperty(v)?t(_.__types,s):_.__types?_.__types=t({},_.__types,s):_.__types=s,t(_,E)}},337,[14,46,338,339,4,340]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),s=(function(){function s(n,l){t(this,s),this._emitter=n,this._eventHolder=l,this._currentEventToken=null,this._emittingHeldEvents=!1}return n(s,[{key:"addListener",value:function(t,n,s){return this._emitter.addListener(t,n,s)}},{key:"once",value:function(t,n,s){return this._emitter.once(t,n,s)}},{key:"addRetroactiveListener",value:function(t,n,s){var l=this._emitter.addListener(t,n,s);return this._emittingHeldEvents=!0,this._eventHolder.emitToListener(t,n,s),this._emittingHeldEvents=!1,l}},{key:"removeAllListeners",value:function(t){this._emitter.removeAllListeners(t)}},{key:"removeCurrentListener",value:function(){this._emitter.removeCurrentListener()}},{key:"listeners",value:function(t){return this._emitter.listeners(t)}},{key:"emit",value:function(t){for(var n,s=arguments.length,l=new Array(s>1?s-1:0),o=1;o1?l-1:0),u=1;u1?v-1:0),u=1;u=n.length)break;_=n[x++]}else{if((x=n.next()).done)break;_=x.value}var b=_,y=(0,u.default)(b,2),S=y[0],v=y[1];l[S]=v()}var p={},k=t._fileSources,D=Array.isArray(k),E=0;for(k=D?k:k["function"==typeof Symbol?Symbol.iterator:"@@iterator"]();;){var h;if(D){if(E>=k.length)break;h=k[E++]}else{if((E=k.next()).done)break;h=E.value}var B=h,A=(0,u.default)(B,2),R=A[0],w=A[1];p[R]=w()}return f('BugReporting extraData:',l),null!=o.default&&null!=o.default.setExtraData&&o.default.setExtraData(l,p),null!=c.default&&null!=c.default.setExtraData&&c.default.setExtraData(l,'From BugReporting.js'),{extras:l,files:p}}}]),t})();_._extraSources=new Map,_._fileSources=new Map,_._subscription=null,_._redboxSubscription=null,m.exports=_},347,[9,15,25,26,348,349,37,163,350]); -__d(function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var u=t(r(d[1])).get('BugReporting');e.default=u},348,[11,12]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var u=t(r(d[1])).get('RedBox');e.default=u},349,[11,12]); -__d(function(g,r,i,a,m,e,d){'use strict';m.exports=function(){try{return"React tree dumps have been temporarily disabled while React is upgraded to Fiber."}catch(t){return'Failed to dump react tree: '+t}}},350,[]); -__d(function(g,r,i,a,m,e,d){'use strict';var n=[],t={name:'default'},c={setActiveScene:function(c){t=c,n.forEach(function(n){return n(t)})},getActiveScene:function(){return t},addActiveSceneChangedListener:function(t){return n.push(t),{remove:function(){n=n.filter(function(n){return t!==n})}}}};m.exports=c},351,[]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=t(r(d[1])),l=t(r(d[2])),o=t(r(d[3])),c=r(d[4]),p=r(d[5]),u=r(d[6]),s=r(d[7]);r(d[8]),m.exports=function(t,f,v,_,E,T,x){var A;s(v,'Expect to have a valid rootTag, instead got ',v);var R=p.createElement(o.default.Provider,{value:null!=(A=x)?A:l.default},p.createElement(c,{rootTag:v,WrapperComponent:_},p.createElement(t,(0,n.default)({},f,{rootTag:v})),!0===E&&!0===T?p.createElement(u,null):null));l.default.startTimespan('renderApplication_React_render'),E?r(d[9]).render(R,v):r(d[10]).render(R,v),l.default.stopTimespan('renderApplication_React_render')}},352,[9,14,161,353,310,57,354,4,355,356,91]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),c=r(d[1])(r(d[2])),n=t(r(d[3])),o=c.createContext(n.default);m.exports=o},353,[9,11,57,161]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),o=r(d[2]),c=r(d[3]);var f=n.create({container:{alignItems:'center',justifyContent:'center',backgroundColor:'rgba(0,0,0, 0.25)',position:'absolute',top:0,right:0,padding:2},text:{fontSize:6,color:'#ffffff'}});m.exports=function(){return t.createElement(c,{style:f.container},t.createElement(o,{style:f.text},"FABRIC"))}},354,[57,61,206,89]); -__d(function(g,r,i,a,m,e,d){'use strict';var n,t=r(d[0]),o=r(d[1]);function v(){}if(t.isTV){var u=new o,f=new Set;u.enable(this,function(t,o){if(o&&'menu'===o.eventType){for(var v=!0,u=Array.from(f.values()).reverse(),s=0;sthis.eventPool.length&&this.eventPool.push(e)}function G(e){e.eventPool=[],e.getPooled=q,e.release=$}o(X.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=Y)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=Y)},persist:function(){this.isPersistent=Y},isPersistent:V,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=V,this._dispatchInstances=this._dispatchListeners=null}}),X.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},X.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var i=new t;return o(i,n.prototype),n.prototype=i,n.prototype.constructor=n,n.Interface=o({},r.Interface,e),n.extend=r.extend,G(n),n},G(X);var J=X.extend({touchHistory:function(){return null}});function K(e){return"topTouchStart"===e}function Z(e){return"topTouchMove"===e}var ee=["topTouchStart"],te=["topTouchMove"],ne=["topTouchCancel","topTouchEnd"],re=[],ie={touchBank:re,numberActiveTouches:0,indexOfSingleActiveTouch:-1,mostRecentTimeStamp:0};function le(e){return e.timeStamp||e.timestamp}function ae(e){if(null==(e=e.identifier))throw f(Error("Touch object is missing identifier."));return e}function oe(e){var t=ae(e),n=re[t];n?(n.touchActive=!0,n.startPageX=e.pageX,n.startPageY=e.pageY,n.startTimeStamp=le(e),n.currentPageX=e.pageX,n.currentPageY=e.pageY,n.currentTimeStamp=le(e),n.previousPageX=e.pageX,n.previousPageY=e.pageY,n.previousTimeStamp=le(e)):(n={touchActive:!0,startPageX:e.pageX,startPageY:e.pageY,startTimeStamp:le(e),currentPageX:e.pageX,currentPageY:e.pageY,currentTimeStamp:le(e),previousPageX:e.pageX,previousPageY:e.pageY,previousTimeStamp:le(e)},re[t]=n),ie.mostRecentTimeStamp=le(e)}function ue(e){var t=re[ae(e)];t?(t.touchActive=!0,t.previousPageX=t.currentPageX,t.previousPageY=t.currentPageY,t.previousTimeStamp=t.currentTimeStamp,t.currentPageX=e.pageX,t.currentPageY=e.pageY,t.currentTimeStamp=le(e),ie.mostRecentTimeStamp=le(e)):console.warn("Cannot record touch move without a touch start.\nTouch Move: %s\n","Touch Bank: %s",se(e),fe())}function ce(e){var t=re[ae(e)];t?(t.touchActive=!1,t.previousPageX=t.currentPageX,t.previousPageY=t.currentPageY,t.previousTimeStamp=t.currentTimeStamp,t.currentPageX=e.pageX,t.currentPageY=e.pageY,t.currentTimeStamp=le(e),ie.mostRecentTimeStamp=le(e)):console.warn("Cannot record touch end without a touch start.\nTouch End: %s\n","Touch Bank: %s",se(e),fe())}function se(e){return JSON.stringify({identifier:e.identifier,pageX:e.pageX,pageY:e.pageY,timestamp:le(e)})}function fe(){var e=JSON.stringify(re.slice(0,20));return 20 component."));return n=St,St+=2,{node:ct(n,"RCTRawText",t,{text:e},r)}}var Pt=setTimeout,Ct=clearTimeout;function _t(e){var t=e.node,n=Ke(null,Ye,{style:{display:"none"}},e.canonical.viewConfig.validAttributes);return{node:pt(t,n),canonical:e.canonical}}var Rt=/^(.*)[\\\/]/;function Nt(e){var t="";do{e:switch(e.tag){case 3:case 4:case 6:case 7:case 10:case 9:var n="";break e;default:var r=e._debugOwner,i=e._debugSource,l=Oe(e.type);n=null,r&&(n=Oe(r.type)),r=l,l="",i?l=" (at "+i.fileName.replace(Rt,"")+":"+i.lineNumber+")":n&&(l=" (created by "+n+")"),n="\n in "+(r||"Unknown")+l}t+=n,e=e.return}while(e);return t}new Set;var It=[],zt=-1;function Ut(e){0>zt||(e.current=It[zt],It[zt]=null,zt--)}function Mt(e,t){It[++zt]=e.current,e.current=t}var At={},Dt={current:At},Ft={current:!1},jt=At;function Ot(e,t){var n=e.type.contextTypes;if(!n)return At;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i,l={};for(i in n)l[i]=t[i];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function Wt(e){return null!==(e=e.childContextTypes)&&void 0!==e}function Ht(e){Ut(Ft),Ut(Dt)}function Bt(e){Ut(Ft),Ut(Dt)}function Qt(e,t,n){if(Dt.current!==At)throw f(Error("Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue."));Mt(Dt,t),Mt(Ft,n)}function Lt(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var i in r=r.getChildContext())if(!(i in e))throw f(Error((Oe(t)||"Unknown")+'.getChildContext(): key "'+i+'" is not defined in childContextTypes.'));return o({},n,r)}function Yt(e){var t=e.stateNode;return t=t&&t.__reactInternalMemoizedMergedChildContext||At,jt=Dt.current,Mt(Dt,t),Mt(Ft,Ft.current),!0}function Vt(e,t,n){var r=e.stateNode;if(!r)throw f(Error("Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue."));n?(t=Lt(e,t,jt),r.__reactInternalMemoizedMergedChildContext=t,Ut(Ft),Ut(Dt),Mt(Dt,t)):Ut(Ft),Mt(Ft,n)}var Xt=s.unstable_runWithPriority,qt=s.unstable_scheduleCallback,$t=s.unstable_cancelCallback,Gt=s.unstable_shouldYield,Jt=s.unstable_requestPaint,Kt=s.unstable_now,Zt=s.unstable_getCurrentPriorityLevel,en=s.unstable_ImmediatePriority,tn=s.unstable_UserBlockingPriority,nn=s.unstable_NormalPriority,rn=s.unstable_LowPriority,ln=s.unstable_IdlePriority,an={},on=void 0!==Jt?Jt:function(){},un=null,cn=null,sn=!1,fn=Kt(),dn=1e4>fn?Kt:function(){return Kt()-fn};function pn(){switch(Zt()){case en:return 99;case tn:return 98;case nn:return 97;case rn:return 96;case ln:return 95;default:throw f(Error("Unknown priority level."))}}function hn(e){switch(e){case 99:return en;case 98:return tn;case 97:return nn;case 96:return rn;case 95:return ln;default:throw f(Error("Unknown priority level."))}}function mn(e,t){return e=hn(e),Xt(e,t)}function gn(e,t,n){return e=hn(e),qt(e,t,n)}function yn(e){return null===un?(un=[e],cn=qt(en,bn)):un.push(e),an}function vn(){null!==cn&&$t(cn),bn()}function bn(){if(!sn&&null!==un){sn=!0;var e=0;try{var t=un;mn(99,function(){for(;e=(e=10*(1073741821-t)-10*(1073741821-e))?99:250>=e?98:5250>=e?97:95}function En(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t}var xn=Object.prototype.hasOwnProperty;function Sn(e,t){if(En(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r=t&&(hi=!0),e.firstContext=null)}function An(e,t){if(Rn!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(Rn=e,t=1073741823),t={context:e,observedBits:t,next:null},null===_n){if(null===Cn)throw f(Error("Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo()."));_n=t,Cn.dependencies={expirationTime:0,firstContext:t,responders:null}}else _n=_n.next=t;return e._currentValue2}var Dn=!1;function Fn(e){return{baseState:e,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function jn(e){return{baseState:e.baseState,firstUpdate:e.firstUpdate,lastUpdate:e.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function On(e,t){return{expirationTime:e,suspenseConfig:t,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function Wn(e,t){null===e.lastUpdate?e.firstUpdate=e.lastUpdate=t:(e.lastUpdate.next=t,e.lastUpdate=t)}function Hn(e,t){var n=e.alternate;if(null===n){var r=e.updateQueue,i=null;null===r&&(r=e.updateQueue=Fn(e.memoizedState))}else r=e.updateQueue,i=n.updateQueue,null===r?null===i?(r=e.updateQueue=Fn(e.memoizedState),i=n.updateQueue=Fn(n.memoizedState)):r=e.updateQueue=jn(i):null===i&&(i=n.updateQueue=jn(r));null===i||r===i?Wn(r,t):null===r.lastUpdate||null===i.lastUpdate?(Wn(r,t),Wn(i,t)):(Wn(r,t),i.lastUpdate=t)}function Bn(e,t){var n=e.updateQueue;null===(n=null===n?e.updateQueue=Fn(e.memoizedState):Qn(e,n)).lastCapturedUpdate?n.firstCapturedUpdate=n.lastCapturedUpdate=t:(n.lastCapturedUpdate.next=t,n.lastCapturedUpdate=t)}function Qn(e,t){var n=e.alternate;return null!==n&&t===n.updateQueue&&(t=e.updateQueue=jn(t)),t}function Ln(e,t,n,r,i,l){switch(n.tag){case 1:return"function"==typeof(e=n.payload)?e.call(l,r,i):e;case 3:e.effectTag=-2049&e.effectTag|64;case 0:if(null===(i="function"==typeof(e=n.payload)?e.call(l,r,i):e)||void 0===i)break;return o({},r,i);case 2:Dn=!0}return r}function Yn(e,t,n,r,i){Dn=!1;for(var l=(t=Qn(e,t)).baseState,a=null,o=0,u=t.firstUpdate,c=l;null!==u;){var s=u.expirationTime;sm?(g=f,f=null):g=f.sibling;var y=p(i,f,o[m],u);if(null===y){null===f&&(f=g);break}e&&f&&null===y.alternate&&t(i,f),a=l(y,a,m),null===s?c=y:s.sibling=y,s=y,f=g}if(m===o.length)return n(i,f),c;if(null===f){for(;mg?(y=m,m=null):y=m.sibling;var b=p(i,m,v.value,u);if(null===b){null===m&&(m=y);break}e&&m&&null===b.alternate&&t(i,m),a=l(b,a,g),null===s?c=b:s.sibling=b,s=b,m=y}if(v.done)return n(i,m),c;if(null===m){for(;!v.done;g++,v=o.next())null!==(v=d(i,v.value,u))&&(a=l(v,a,g),null===s?c=v:s.sibling=v,s=v);return c}for(m=r(i,m);!v.done;g++,v=o.next())null!==(v=h(m,i,g,v.value,u))&&(e&&null!==v.alternate&&m.delete(null===v.key?g:v.key),a=l(v,a,g),null===s?c=v:s.sibling=v,s=v);return e&&m.forEach(function(e){return t(i,e)}),c}return function(e,r,l,o){var u="object"==typeof l&&null!==l&&l.type===Pe&&null===l.key;u&&(l=l.props.children);var c="object"==typeof l&&null!==l;if(c)switch(l.$$typeof){case we:e:{for(c=l.key,u=r;null!==u;){if(u.key===c){if(7===u.tag?l.type===Pe:u.elementType===l.type){n(e,u.sibling),(r=i(u,l.type===Pe?l.props.children:l.props)).ref=rr(e,u,l),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}l.type===Pe?((r=oa(l.props.children,e.mode,o,l.key)).return=e,e=r):((o=aa(l.type,l.key,l.props,null,e.mode,o)).ref=rr(e,r,l),o.return=e,e=o)}return a(e);case ke:e:{for(u=l.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===l.containerInfo&&r.stateNode.implementation===l.implementation){n(e,r.sibling),(r=i(r,l.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=ca(l,e.mode,o)).return=e,e=r}return a(e)}if("string"==typeof l||"number"==typeof l)return l=""+l,null!==r&&6===r.tag?(n(e,r.sibling),(r=i(r,l)).return=e,e=r):(n(e,r),(r=ua(l,e.mode,o)).return=e,e=r),a(e);if(nr(l))return m(e,r,l,o);if(je(l))return g(e,r,l,o);if(c&&ir(e,l),void 0===l&&!u)switch(e.tag){case 1:case 0:throw e=e.type,f(Error((e.displayName||e.name||"Component")+"(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null."))}return n(e,r)}}var ar=lr(!0),or=lr(!1),ur={},cr={current:ur},sr={current:ur},fr={current:ur};function dr(e){if(e===ur)throw f(Error("Expected host context to exist. This error is likely caused by a bug in React. Please file an issue."));return e}function pr(e,t){Mt(fr,t),Mt(sr,e),Mt(cr,ur),Ut(cr),Mt(cr,{isInAParentText:!1})}function hr(e){Ut(cr),Ut(sr),Ut(fr)}function mr(e){dr(fr.current);var t=dr(cr.current),n=e.type;n="AndroidTextInput"===n||"RCTMultilineTextInputView"===n||"RCTSinglelineTextInputView"===n||"RCTText"===n||"RCTVirtualText"===n,t!==(n=t.isInAParentText!==n?{isInAParentText:n}:t)&&(Mt(sr,e),Mt(cr,n))}function gr(e){sr.current===e&&(Ut(cr),Ut(sr))}var yr=1,vr=1,br=2,Tr={current:0};function Er(e){for(var t=e;null!==t;){if(13===t.tag){if(null!==t.memoizedState)return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.effectTag))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function xr(e,t){return{responder:e,props:t}}var Sr=0,wr=2,kr=4,Pr=8,Cr=16,_r=32,Rr=64,Nr=128,Ir=xe.ReactCurrentDispatcher,zr=0,Ur=null,Mr=null,Ar=null,Dr=null,Fr=null,jr=null,Or=0,Wr=null,Hr=0,Br=!1,Qr=null,Lr=0;function Yr(){throw f(Error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem."))}function Vr(e,t){if(null===t)return!1;for(var n=0;nOr&&(Or=s)):(Wl(s,u.suspenseConfig),l=u.eagerReducer===e?u.eagerState:e(l,u.action)),a=u,u=u.next}while(null!==u&&u!==r);c||(o=a,i=l),En(l,t.memoizedState)||(hi=!0),t.memoizedState=l,t.baseUpdate=o,t.baseState=i,n.lastRenderedState=l}return[t.memoizedState,n.dispatch]}function Zr(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===Wr?(Wr={lastEffect:null}).lastEffect=e.next=e:null===(t=Wr.lastEffect)?Wr.lastEffect=e.next=e:(n=t.next,t.next=e,e.next=n,Wr.lastEffect=e),e}function ei(e,t,n,r){var i=$r();Hr|=e,i.memoizedState=Zr(t,n,void 0,void 0===r?null:r)}function ti(e,t,n,r){var i=Gr();r=void 0===r?null:r;var l=void 0;if(null!==Mr){var a=Mr.memoizedState;if(l=a.destroy,null!==r&&Vr(r,a.deps))return void Zr(Sr,n,l,r)}Hr|=e,i.memoizedState=Zr(t,n,l,r)}function ni(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!==t&&void 0!==t?(e=e(),t.current=e,function(){t.current=null}):void 0}function ri(){}function ii(e,t,n){if(!(25>Lr))throw f(Error("Too many re-renders. React limits the number of renders to prevent an infinite loop."));var r=e.alternate;if(e===Ur||null!==r&&r===Ur)if(Br=!0,e={expirationTime:zr,suspenseConfig:null,action:n,eagerReducer:null,eagerState:null,next:null},null===Qr&&(Qr=new Map),void 0===(n=Qr.get(t)))Qr.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}else{var i=Nl(),l=qn.suspense;l={expirationTime:i=Il(i,e,l),suspenseConfig:l,action:n,eagerReducer:null,eagerState:null,next:null};var a=t.last;if(null===a)l.next=l;else{var o=a.next;null!==o&&(l.next=o),a.next=l}if(t.last=l,0===e.expirationTime&&(null===r||0===r.expirationTime)&&null!==(r=t.lastRenderedReducer))try{var u=t.lastRenderedState,c=r(u,n);if(l.eagerReducer=r,l.eagerState=c,En(c,u))return}catch(e){}zl(e,i)}}var li={readContext:An,useCallback:Yr,useContext:Yr,useEffect:Yr,useImperativeHandle:Yr,useLayoutEffect:Yr,useMemo:Yr,useReducer:Yr,useRef:Yr,useState:Yr,useDebugValue:Yr,useResponder:Yr},ai={readContext:An,useCallback:function(e,t){return $r().memoizedState=[e,void 0===t?null:t],e},useContext:An,useEffect:function(e,t){return ei(516,192,e,t)},useImperativeHandle:function(e,t,n){return n=null!==n&&void 0!==n?n.concat([e]):null,ei(4,36,ni.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ei(4,36,e,t)},useMemo:function(e,t){var n=$r();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=$r();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={last:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=ii.bind(null,Ur,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},$r().memoizedState=e},useState:function(e){var t=$r();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={last:null,dispatch:null,lastRenderedReducer:Jr,lastRenderedState:e}).dispatch=ii.bind(null,Ur,e),[t.memoizedState,e]},useDebugValue:ri,useResponder:xr},oi={readContext:An,useCallback:function(e,t){var n=Gr();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Vr(t,r[1])?r[0]:(n.memoizedState=[e,t],e)},useContext:An,useEffect:function(e,t){return ti(516,192,e,t)},useImperativeHandle:function(e,t,n){return n=null!==n&&void 0!==n?n.concat([e]):null,ti(4,36,ni.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ti(4,36,e,t)},useMemo:function(e,t){var n=Gr();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Vr(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)},useReducer:Kr,useRef:function(){return Gr().memoizedState},useState:function(e){return Kr(Jr)},useDebugValue:ri,useResponder:xr},ui=null,ci=null,si=!1;function fi(e,t){switch(e.tag){case 5:return null!==(t=ot(e.type,e.pendingProps))&&(e.stateNode=t,!0);case 6:return null!==(t=ot(e.pendingProps))&&(e.stateNode=t,!0);case 13:default:return!1}}function di(e){if(si){var t=ci;if(t){var n=t;if(!fi(e,t)){if(!(t=ot())||!fi(e,t))return e.effectTag|=2,si=!1,void(ui=e);var r=ui,i=na(5,null,null,0);i.elementType="DELETED",i.type="DELETED",i.stateNode=n,i.return=r,i.effectTag=8,null!==r.lastEffect?(r.lastEffect.nextEffect=i,r.lastEffect=i):r.firstEffect=r.lastEffect=i}ui=e,ci=ot()}else e.effectTag|=2,si=!1,ui=e}}var pi=xe.ReactCurrentOwner,hi=!1;function mi(e,t,n,r){t.child=null===e?or(t,null,n,r):ar(t,e.child,n,r)}function gi(e,t,n,r,i){n=n.render;var l=t.ref;return Mn(t,i),r=Xr(e,t,n,r,l,i),null===e||hi?(t.effectTag|=1,mi(e,t,r,i),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=i&&(e.expirationTime=0),_i(e,t,i))}function yi(e,t,n,r,i,l){if(null===e){var a=n.type;return"function"!=typeof a||ra(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=aa(n.type,null,r,null,t.mode,l)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,vi(e,t,a,r,i,l))}return a=e.child,it)&&Pl.set(e,t))}}function Ul(e,t){e.expirationTimei.firstPendingTime&&(i.firstPendingTime=t),0===(e=i.lastPendingTime)||t=t)&&(gn(97,function(){return n._onComplete(),null}),!0)}function Fl(){if(null!==Pl){var e=Pl;Pl=null,e.forEach(function(e,t){yn(Ol.bind(null,t,e))}),vn()}}function jl(e,t){e.finishedWork=null,e.finishedExpirationTime=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Ct(n)),null!==cl)for(n=cl.return;null!==n;){var r=n;switch(r.tag){case 1:var i=r.type.childContextTypes;null!==i&&void 0!==i&&Ht();break;case 3:hr(),Bt();break;case 5:gr(r);break;case 4:hr();break;case 13:case 19:Ut(Tr);break;case 10:zn(r)}n=n.return}ul=e,cl=la(e.current,null),sl=t,fl=nl,pl=dl=1073741823,hl=null,ml=!1}function Ol(e,t,n){if((48&ol)!==Ki)throw f(Error("Should not already be working."));if(e.firstPendingTime component higher in the tree to provide a loading indicator or placeholder to display."+Nt(u))}fl!==al&&(fl=rl),c=Di(c,u),u=o;do{switch(u.tag){case 3:u.effectTag|=2048,u.expirationTime=s,Bn(u,s=Xi(u,c,s));break e;case 1:if(d=c,a=u.type,o=u.stateNode,0==(64&u.effectTag)&&("function"==typeof a.getDerivedStateFromError||null!==o&&"function"==typeof o.componentDidCatch&&(null===El||!El.has(o)))){u.effectTag|=2048,u.expirationTime=s,Bn(u,s=qi(u,d,s));break e}}u=u.return}while(null!==u)}cl=Bl(l)}if(ol=r,Nn(),Gi.current=i,null!==cl)return Ol.bind(null,e,t)}if(e.finishedWork=e.current.alternate,e.finishedExpirationTime=t,Dl(e,t))return null;switch(ul=null,fl){case nl:throw f(Error("Should have a work-in-progress."));case rl:return(r=e.lastPendingTime)(n=r-n)&&(n=0),t<(n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*$i(n/1960))-n)&&(n=t)),10=(t=0|(i=hl).busyMinDurationMs)?t=0:(n=0|i.busyDelayMs,t=(r=dn()-(10*(1073741821-r)-(0|i.timeoutMs||5e3)))<=n?0:n+t-r),10i.tailExpiration&&1r&&(r=l),a>r&&(r=a),i=i.sibling;n.childExpirationTime=r}if(null!==t)return t;null!==e&&0==(1024&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=cl.firstEffect),null!==cl.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=cl.firstEffect),e.lastEffect=cl.lastEffect),1i?l:i,e.firstPendingTime=i,i=n?ki(e,t,n):(Mt(Tr,Tr.current&yr),null!==(t=_i(e,t,n))?t.sibling:null);Mt(Tr,Tr.current&yr);break;case 19:if(r=t.childExpirationTime>=n,0!=(64&e.effectTag)){if(r)return Ci(e,t,n);t.effectTag|=64}var i=t.memoizedState;if(null!==i&&(i.rendering=null,i.tail=null),Mt(Tr,Tr.current),!r)return null}return _i(e,t,n)}}else hi=!1;switch(t.expirationTime=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,i=Ot(t,Dt.current),Mn(t,n),i=Xr(null,t,r,e,i,n),t.effectTag|=1,"object"==typeof i&&null!==i&&"function"==typeof i.render&&void 0===i.$$typeof){if(t.tag=1,qr(),Wt(r)){var l=!0;Yt(t)}else l=!1;t.memoizedState=null!==i.state&&void 0!==i.state?i.state:null;var a=r.getDerivedStateFromProps;"function"==typeof a&&Gn(t,r,a,e),i.updater=Jn,t.stateNode=i,i._reactInternalFiber=t,tr(t,r,e,n),t=xi(null,t,r,!0,l,n)}else t.tag=0,mi(null,t,i,n),t=t.child;return t;case 16:switch(i=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,i=kn(i),t.type=i,l=t.tag=ia(i),e=wn(i,e),l){case 0:t=Ti(null,t,i,e,n);break;case 1:t=Ei(null,t,i,e,n);break;case 11:t=gi(null,t,i,e,n);break;case 14:t=yi(null,t,i,wn(i.type,e),r,n);break;default:throw f(Error("Element type is invalid. Received a promise that resolves to: "+i+". Lazy element type must resolve to a class or function."))}return t;case 0:return r=t.type,i=t.pendingProps,Ti(e,t,r,i=t.elementType===r?i:wn(r,i),n);case 1:return r=t.type,i=t.pendingProps,Ei(e,t,r,i=t.elementType===r?i:wn(r,i),n);case 3:if(Si(t),null===(r=t.updateQueue))throw f(Error("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."));return i=null!==(i=t.memoizedState)?i.element:null,Yn(t,r,t.pendingProps,null,n),(r=t.memoizedState.element)===i?t=_i(e,t,n):(mi(e,t,r,n),t=t.child),t;case 5:return mr(t),null===e&&di(t),r=t.pendingProps.children,bi(e,t),mi(e,t,r,n),t.child;case 6:return null===e&&di(t),null;case 13:return ki(e,t,n);case 4:return pr(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=ar(t,null,r,n):mi(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,gi(e,t,r,i=t.elementType===r?i:wn(r,i),n);case 7:return mi(e,t,t.pendingProps,n),t.child;case 8:case 12:return mi(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,a=t.memoizedProps,In(t,l=i.value),null!==a){var o=a.value;if(0===(l=En(o,l)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(o,l):1073741823))){if(a.children===i.children&&!Ft.current){t=_i(e,t,n);break e}}else for(null!==(o=t.child)&&(o.return=t);null!==o;){var u=o.dependencies;if(null!==u){a=o.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&l)){1===o.tag&&((c=On(n,null)).tag=2,Hn(o,c)),o.expirationTimeo&&(s+=c&&u?v.currentPageX:c&&!u?v.currentPageY:!c&&u?v.previousPageX:v.previousPageY,h=1);else for(var C=0;C=o){s+=c&&u?l.currentPageX:c&&!u?l.currentPageY:!c&&u?l.previousPageX:l.previousPageY,h++}}return h>0?s/h:n.noCentroid},currentCentroidXOfTouchesChangedAfter:function(t,o){return n.centroidDimension(t,o,!0,!0)},currentCentroidYOfTouchesChangedAfter:function(t,o){return n.centroidDimension(t,o,!1,!0)},previousCentroidXOfTouchesChangedAfter:function(t,o){return n.centroidDimension(t,o,!0,!1)},previousCentroidYOfTouchesChangedAfter:function(t,o){return n.centroidDimension(t,o,!1,!1)},currentCentroidX:function(t){return n.centroidDimension(t,0,!0,!0)},currentCentroidY:function(t){return n.centroidDimension(t,0,!1,!0)},noCentroid:-1};m.exports=n},372,[]); -__d(function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]),s=n(r(d[1])),o=n(r(d[2])),t=n(r(d[3])),E=n(r(d[4])),A=n(r(d[5])),u=n(r(d[6])),_=n(r(d[7])),S=(r(d[8]),Object.freeze({GRANTED:'granted',DENIED:'denied',NEVER_ASK_AGAIN:'never_ask_again'})),l=Object.freeze({READ_CALENDAR:'android.permission.READ_CALENDAR',WRITE_CALENDAR:'android.permission.WRITE_CALENDAR',CAMERA:'android.permission.CAMERA',READ_CONTACTS:'android.permission.READ_CONTACTS',WRITE_CONTACTS:'android.permission.WRITE_CONTACTS',GET_ACCOUNTS:'android.permission.GET_ACCOUNTS',ACCESS_FINE_LOCATION:'android.permission.ACCESS_FINE_LOCATION',ACCESS_COARSE_LOCATION:'android.permission.ACCESS_COARSE_LOCATION',RECORD_AUDIO:'android.permission.RECORD_AUDIO',READ_PHONE_STATE:'android.permission.READ_PHONE_STATE',CALL_PHONE:'android.permission.CALL_PHONE',READ_CALL_LOG:'android.permission.READ_CALL_LOG',WRITE_CALL_LOG:'android.permission.WRITE_CALL_LOG',ADD_VOICEMAIL:'com.android.voicemail.permission.ADD_VOICEMAIL',USE_SIP:'android.permission.USE_SIP',PROCESS_OUTGOING_CALLS:'android.permission.PROCESS_OUTGOING_CALLS',BODY_SENSORS:'android.permission.BODY_SENSORS',SEND_SMS:'android.permission.SEND_SMS',RECEIVE_SMS:'android.permission.RECEIVE_SMS',READ_SMS:'android.permission.READ_SMS',RECEIVE_WAP_PUSH:'android.permission.RECEIVE_WAP_PUSH',RECEIVE_MMS:'android.permission.RECEIVE_MMS',READ_EXTERNAL_STORAGE:'android.permission.READ_EXTERNAL_STORAGE',WRITE_EXTERNAL_STORAGE:'android.permission.WRITE_EXTERNAL_STORAGE'}),R=(function(){function n(){(0,t.default)(this,n),this.PERMISSIONS=l,this.RESULTS=S}return(0,E.default)(n,[{key:"checkPermission",value:function(n){return console.warn('"PermissionsAndroid.checkPermission" is deprecated. Use "PermissionsAndroid.check" instead'),console.warn('"PermissionsAndroid" module works only for Android platform.'),Promise.resolve(!1)}},{key:"check",value:function(n){return console.warn('"PermissionsAndroid" module works only for Android platform.'),Promise.resolve(!1)}},{key:"requestPermission",value:function(n,s){var t;return o.default.async(function(E){for(;;)switch(E.prev=E.next){case 0:return console.warn('"PermissionsAndroid.requestPermission" is deprecated. Use "PermissionsAndroid.request" instead'),console.warn('"PermissionsAndroid" module works only for Android platform.'),E.abrupt("return",Promise.resolve(!1));case 4:return E.next=6,o.default.awrap(this.request(n,s));case 6:return t=E.sent,E.abrupt("return",t===this.RESULTS.GRANTED);case 8:case"end":return E.stop()}},null,this)}},{key:"request",value:function(n,t){return o.default.async(function(E){for(;;)switch(E.prev=E.next){case 0:return console.warn('"PermissionsAndroid" module works only for Android platform.'),E.abrupt("return",Promise.resolve(this.RESULTS.DENIED));case 3:if((0,_.default)(u.default,'PermissionsAndroid is not installed correctly.'),!t){E.next=10;break}return E.next=7,o.default.awrap(u.default.shouldShowRequestPermissionRationale(n));case 7:if(!E.sent||!A.default){E.next=10;break}return E.abrupt("return",new Promise(function(o,E){var _=(0,s.default)({},t);A.default.showAlert(_,function(){return E(new Error('Error showing rationale'))},function(){return o(u.default.requestPermission(n))})}));case 10:return E.abrupt("return",u.default.requestPermission(n));case 11:case"end":return E.stop()}},null,this)}},{key:"requestMultiple",value:function(n){return console.warn('"PermissionsAndroid" module works only for Android platform.'),Promise.resolve({})}}]),n})();R=new R,m.exports=R},373,[9,51,277,25,26,150,374,4,55]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=t(r(d[1])).get('PermissionsAndroid');e.default=o},374,[11,12]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),o=t(r(d[1])),n=t(r(d[2])),l=t(r(d[3])),u=r(d[4]),c=r(d[5]),s=new u(l.default),f=new Map,v=(function(){function t(n){var l=this;(0,o.default)(this,t),this._data={},this._remoteNotificationCompleteCallbackCalled=!1,this._isRemote=n.remote,this._isRemote&&(this._notificationId=n.notificationId),n.remote?Object.keys(n).forEach(function(t){var o=n[t];'aps'===t?(l._alert=o.alert,l._sound=o.sound,l._badgeCount=o.badge,l._category=o.category,l._contentAvailable=o['content-available'],l._threadID=o['thread-id']):l._data[t]=o}):(this._badgeCount=n.applicationIconBadgeNumber,this._sound=n.soundName,this._alert=n.alertBody,this._data=n.userInfo,this._category=n.category)}return(0,n.default)(t,null,[{key:"presentLocalNotification",value:function(t){c(l.default,'PushNotificationManager is not available.'),l.default.presentLocalNotification(t)}},{key:"scheduleLocalNotification",value:function(t){c(l.default,'PushNotificationManager is not available.'),l.default.scheduleLocalNotification(t)}},{key:"cancelAllLocalNotifications",value:function(){c(l.default,'PushNotificationManager is not available.'),l.default.cancelAllLocalNotifications()}},{key:"removeAllDeliveredNotifications",value:function(){c(l.default,'PushNotificationManager is not available.'),l.default.removeAllDeliveredNotifications()}},{key:"getDeliveredNotifications",value:function(t){c(l.default,'PushNotificationManager is not available.'),l.default.getDeliveredNotifications(t)}},{key:"removeDeliveredNotifications",value:function(t){c(l.default,'PushNotificationManager is not available.'),l.default.removeDeliveredNotifications(t)}},{key:"setApplicationIconBadgeNumber",value:function(t){c(l.default,'PushNotificationManager is not available.'),l.default.setApplicationIconBadgeNumber(t)}},{key:"getApplicationIconBadgeNumber",value:function(t){c(l.default,'PushNotificationManager is not available.'),l.default.getApplicationIconBadgeNumber(t)}},{key:"cancelLocalNotifications",value:function(t){c(l.default,'PushNotificationManager is not available.'),l.default.cancelLocalNotifications(t)}},{key:"getScheduledLocalNotifications",value:function(t){c(l.default,'PushNotificationManager is not available.'),l.default.getScheduledLocalNotifications(t)}},{key:"addEventListener",value:function(o,n){var l;c('notification'===o||'register'===o||'registrationError'===o||'localNotification'===o,'PushNotificationIOS only supports `notification`, `register`, `registrationError`, and `localNotification` events'),'notification'===o?l=s.addListener("remoteNotificationReceived",function(o){n(new t(o))}):'localNotification'===o?l=s.addListener("localNotificationReceived",function(o){n(new t(o))}):'register'===o?l=s.addListener("remoteNotificationsRegistered",function(t){n(t.deviceToken)}):'registrationError'===o&&(l=s.addListener("remoteNotificationRegistrationError",function(t){n(t)})),f.set(o,l)}},{key:"removeEventListener",value:function(t,o){c('notification'===t||'register'===t||'registrationError'===t||'localNotification'===t,'PushNotificationIOS only supports `notification`, `register`, `registrationError`, and `localNotification` events');var n=f.get(t);n&&(n.remove(),f.delete(t))}},{key:"requestPermissions",value:function(t){var o={};return o=t?{alert:!!t.alert,badge:!!t.badge,sound:!!t.sound}:{alert:!0,badge:!0,sound:!0},c(l.default,'PushNotificationManager is not available.'),l.default.requestPermissions(o)}},{key:"abandonPermissions",value:function(){c(l.default,'PushNotificationManager is not available.'),l.default.abandonPermissions()}},{key:"checkPermissions",value:function(t){c('function'==typeof t,'Must provide a valid callback'),c(l.default,'PushNotificationManager is not available.'),l.default.checkPermissions(t)}},{key:"getInitialNotification",value:function(){return c(l.default,'PushNotificationManager is not available.'),l.default.getInitialNotification().then(function(o){return o&&new t(o)})}}]),(0,n.default)(t,[{key:"finish",value:function(t){this._isRemote&&this._notificationId&&!this._remoteNotificationCompleteCallbackCalled&&(this._remoteNotificationCompleteCallbackCalled=!0,c(l.default,'PushNotificationManager is not available.'),l.default.onFinishRemoteNotification(this._notificationId,t))}},{key:"getMessage",value:function(){return this._alert}},{key:"getSound",value:function(){return this._sound}},{key:"getCategory",value:function(){return this._category}},{key:"getAlert",value:function(){return this._alert}},{key:"getContentAvailable",value:function(){return this._contentAvailable}},{key:"getBadgeCount",value:function(){return this._badgeCount}},{key:"getData",value:function(){return this._data}},{key:"getThreadID",value:function(){return this._threadID}}]),t})();v.FetchResult={NewData:'UIBackgroundFetchResultNewData',NoData:'UIBackgroundFetchResultNoData',ResultFailed:'UIBackgroundFetchResultFailed'},m.exports=v},375,[9,25,26,376,125,4]); -__d(function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=t(r(d[1])).get('PushNotificationManager');e.default=o},376,[11,12]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),s=t(r(d[1])),n=t(r(d[2])),c=r(d[3]),l=r(d[4]),u=[],o={_settings:n.default&&n.default.getConstants().settings,get:function(t){return this._settings[t]},set:function(t){this._settings=(0,s.default)(this._settings,t),n.default.setValues(t)},watchKeys:function(t,s){'string'==typeof t&&(t=[t]),l(Array.isArray(t),'keys should be a string or array of strings');var n=u.length;return u.push({keys:t,callback:s}),n},clearWatch:function(t){t1&&void 0!==arguments[1]?arguments[1]:{};return u('object'==typeof t&&null!==t,'Content to share must be a valid object'),u('string'==typeof t.url||'string'==typeof t.message,'At least one of URL and message is required'),u('object'==typeof n&&null!==n,'Options must be a valid object'),new Promise(function(o,l){var f=c(n.tintColor);u(s.default,'NativeActionSheetManager is not registered on iOS, but it should be.'),s.default.showShareActionSheetWithOptions({message:'string'==typeof t.message?t.message:void 0,url:'string'==typeof t.url?t.url:void 0,subject:n.subject,tintColor:null!=f?f:void 0,excludedActivityTypes:n.excludedActivityTypes},function(t){return l(t)},function(t,n){o(t?{action:'sharedAction',activityType:n}:{action:'dismissedAction'})})})}}]),t})();l.sharedAction='sharedAction',l.dismissedAction='dismissedAction',m.exports=l},379,[9,25,26,343,380,55,4,83]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var u=t(r(d[1])).get('ShareModule');e.default=u},380,[11,12]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),u=t(r(d[1])),n=t(r(d[2])),f=t(r(d[3])),l=t(r(d[4])),s=t(r(d[5])),c=(function(t){function s(){return(0,u.default)(this,s),(0,n.default)(this,(0,f.default)(s).apply(this,arguments))}return(0,l.default)(s,t),s})(r(d[6]));m.exports=new c(s.default)},381,[9,25,38,41,44,331,125]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=t(r(d[1])),s=t(r(d[2])),u=t(r(d[3])),o=t(r(d[4])),c=(function(){function t(){(0,s.default)(this,t)}return(0,u.default)(t,null,[{key:"open",value:function(t){return n.default.async(function(n){for(;;)switch(n.prev=n.next){case 0:if(!o.default){n.next=4;break}return n.abrupt("return",o.default.open(t));case 4:return n.abrupt("return",Promise.reject({message:'TimePickerAndroid is not supported on this platform.'}));case 5:case"end":return n.stop()}})}}]),t})();c.timeSetAction='timeSetAction',c.dismissedAction='dismissedAction',m.exports=c},382,[9,277,25,26,383]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var u=t(r(d[1])).get('TimePickerAndroid');e.default=u},383,[11,12]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),o={show:function(o,s){t(!1,'ToastAndroid is not supported on this platform.')},showWithGravity:function(o,s,n){t(!1,'ToastAndroid is not supported on this platform.')},showWithGravityAndOffset:function(o,s,n,p,f){t(!1,'ToastAndroid is not supported on this platform.')}};m.exports=o},384,[6]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){var t=u.default.get('window'),n=f.useState(!1)[1].bind(null,function(t){return!t}),c=f.useState(t)[0];return f.useEffect(function(){return u.default.addEventListener('change',n),u.default.get('window')!==c&&n(),function(){u.default.removeEventListener('change',n)}},[n,c]),t};var u=n(r(d[2])),f=t(r(d[3]))},385,[11,9,63,57]); -__d(function(g,r,i,a,m,e,d){'use strict';var A=r(d[0])({BOM:"\ufeff",BULLET:"\u2022",BULLET_SP:"\xa0\u2022\xa0",MIDDOT:"\xb7",MIDDOT_SP:"\xa0\xb7\xa0",MIDDOT_KATAKANA:"\u30fb",MDASH:"\u2014",MDASH_SP:"\xa0\u2014\xa0",NDASH:"\u2013",NDASH_SP:"\xa0\u2013\xa0",NBSP:"\xa0",PIZZA:"\ud83c\udf55",TRIANGLE_LEFT:"\u25c0",TRIANGLE_RIGHT:"\u25b6"});m.exports=A},386,[29]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0])(r(d[1])),n=(r(d[2]),!1),o=0;function u(u){var l=arguments.length>1&&void 0!==arguments[1]&&arguments[1];n||(n=!0,0===u[0]&&(t.default.vibrate(),u=u.slice(1)),0!==u.length?setTimeout(function(){return f(++o,u,l,1)},u[0]):n=!1)}function f(u,l,v,c){if(n&&u===o){if(t.default.vibrate(),c>=l.length){if(!v)return void(n=!1);c=0}setTimeout(function(){return f(u,l,v,c+1)},l[c])}}var l={vibrate:function(){var o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:400,f=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!n)if('number'==typeof o)t.default.vibrate();else{if(!Array.isArray(o))throw new Error('Vibration pattern should be a number or array');u(o,f)}},cancel:function(){n=!1}};m.exports=l},387,[9,388,55]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(r(d[1])).getEnforcing('Vibration');e.default=n},388,[11,12]); -__d(function(g,r,i,a,m,e,d){'use strict';var n,t=r(d[0]),u=r(d[1]),l=r(d[2]),o=r(d[3]),s=r(d[4]);n=(function(n){function c(){return t(this,c),l(this,o(c).apply(this,arguments))}return s(c,n),u(c,[{key:"render",value:function(){return null}}],[{key:"ignoreWarnings",value:function(n){}},{key:"install",value:function(){}},{key:"uninstall",value:function(){}}]),c})(r(d[5]).Component),m.exports=n},389,[25,26,38,41,44,57]); -__d(function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]),s=n.shape({x:n.number,y:n.number});m.exports=s},390,[70]); -__d(function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},391,[392]); -__d(function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.Sentry=e.SentryLog=e.SentrySeverity=void 0;var n=t(r(d[1])),l=t(r(d[2])),o=r(d[3]),s=r(d[4]),v=r(d[5]),c=o.NativeModules.RNSentry,u=o.NativeModules.RNSentryEventEmitter;e.SentrySeverity={Fatal:'fatal',Error:'error',Warning:'warning',Info:'info',Debug:'debug',Critical:'critical'};var _={None:0,Error:1,Debug:2,Verbose:3};e.SentryLog=_;var C={install:function(){C._ravenClient=new s.RavenClient(C._dsn,C.options),c&&c.nativeClientAvailable&&!1===C.options.disableNativeIntegration&&(C._nativeClient=new v.NativeClient(C._dsn,C.options),C.eventEmitter=new o.NativeEventEmitter(u),C.eventEmitter.addListener(u.EVENT_SENT_SUCCESSFULLY,function(t){C._lastEvent=t,C._eventSentSuccessfully&&C._eventSentSuccessfully(t)}),C.eventEmitter.addListener(u.EVENT_STORED,function(){C._internalEventStored&&C._internalEventStored()})),C._ravenClient.install()},config:function(t,n){if(t.constructor!==String)throw new Error('Sentry: A DSN must be provided');return C._dsn=t,C.options={logLevel:_.None,instrument:!1,disableNativeIntegration:!1,handlePromiseRejection:!0},(0,l.default)(C.options,n),C},isNativeClientAvailable:function(){return void 0!==C._nativeClient&&!1===C.options.disableNativeIntegration},_log:function(){if(C.options.logLevel>=2){for(var t=arguments.length,n=new Array(t),l=0;l=s.SentryLog.Debug&&(o.default.debug=!0)}return(0,u.default)(t,[{key:"install",value:function(){if(s.Sentry.isNativeClientAvailable()&&void 0!==this.options.sampleRate&&(o.default._globalOptions.sampleRate=1),o.default.install(),o.default.addPlugin(r(d[6]),{nativeClientAvailable:s.Sentry.isNativeClientAvailable(),handlePromiseRejection:this.options.handlePromiseRejection},function(t){s.Sentry.options.internal&&(t.dist=s.Sentry.options.internal.dist)}),s.Sentry.isNativeClientAvailable()){o.default.setTransport(function(t){delete t.data.breadcrumbs,s.Sentry._captureEvent(t.data)}),o.default.setBreadcrumbCallback(s.Sentry._breadcrumbCallback);var t=o.default.captureBreadcrumb;o.default.captureBreadcrumb=function(l){return l.data&&'object'==typeof l.data&&(l.data=(0,n.default)({},l.data)),t.apply(this,arguments)}}}},{key:"setDataCallback",value:function(t){o.default.setDataCallback(t)}},{key:"setShouldSendCallback",value:function(t){o.default.setShouldSendCallback(t)}},{key:"setUserContext",value:function(t){o.default.setUserContext(t)}},{key:"setTagsContext",value:function(t){o.default.setTagsContext(t)}},{key:"setExtraContext",value:function(t){o.default.setExtraContext(t)}},{key:"captureException",value:function(t,n){o.default.captureException(t,n)}},{key:"captureBreadcrumb",value:function(t){o.default.captureBreadcrumb(t)}},{key:"captureMessage",value:function(t,n){o.default.captureMessage(t,n)}},{key:"setRelease",value:function(t){o.default.setRelease(t)}},{key:"clearContext",value:function(){return o.default.clearContext()}},{key:"context",value:function(t,n,l){return o.default.context(t,n,l)}},{key:"wrap",value:function(t,n,l){return o.default.wrap(t,n,l)}}]),t})();e.RavenClient=c},394,[1,60,140,141,395,392,403]); -__d(function(g,r,i,a,m,e,d){var n=r(d[0]),o='undefined'!=typeof window?window:void 0!==g?g:'undefined'!=typeof self?self:{},f=o.Raven,t=new n;t.noConflict=function(){return o.Raven=f,t},t.afterLoad(),m.exports=t,m.exports.Client=n},395,[396]); -__d(function(g,r,i,a,m,e,d){var t=r(d[0]),n=r(d[1]),s=r(d[2]),o=r(d[3]),l=r(d[4]),c=l.isErrorEvent,u=l.isDOMError,h=l.isDOMException,p=l.isError,_=l.isObject,f=l.isPlainObject,v=l.isUndefined,b=l.isFunction,y=l.isString,E=l.isArray,k=l.isEmptyObject,S=l.each,x=l.objectMerge,O=l.truncate,w=l.objectFrozen,C=l.hasKey,R=l.joinRegExp,T=l.urlencode,D=l.uuid4,H=l.htmlTreeAsString,B=l.isSameException,j=l.isSameStacktrace,L=l.parseUrl,P=l.fill,F=l.supportsFetch,U=l.supportsReferrerPolicy,I=l.serializeKeysForMessage,M=l.serializeException,N=l.sanitize,q=r(d[5]).wrapMethod,A='source protocol user pass host port path'.split(' '),K=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;function X(){return+new Date}var z='undefined'!=typeof window?window:void 0!==g?g:'undefined'!=typeof self?self:{},W=z.document,J=z.navigator;function G(t,n){return b(n)?function(s){return n(s,t)}:n}function V(){for(var t in this._hasJSON=!('object'!=typeof JSON||!JSON.stringify),this._hasDocument=!v(W),this._hasNavigator=!v(J),this._lastCapturedException=null,this._lastData=null,this._lastEventId=null,this._globalServer=null,this._globalKey=null,this._globalProject=null,this._globalContext={},this._globalOptions={release:z.SENTRY_RELEASE&&z.SENTRY_RELEASE.id,logger:'javascript',ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this._fetchDefaults={method:'POST',referrerPolicy:U()?'origin':''},this._ignoreOnError=0,this._isRavenInstalled=!1,this._originalErrorStackTraceLimit=Error.stackTraceLimit,this._originalConsole=z.console||{},this._originalConsoleMethods={},this._plugins=[],this._startTime=X(),this._wrappedBuiltIns=[],this._breadcrumbs=[],this._lastCapturedEvent=null,this._keypressTimeout,this._location=z.location,this._lastHref=this._location&&this._location.href,this._resetBackoff(),this._originalConsole)this._originalConsoleMethods[t]=this._originalConsole[t]}V.prototype={VERSION:'3.27.0',debug:!1,TraceKit:t,config:function(n,s){var o=this;if(o._globalServer)return this._logDebug('error','Error: Raven has already been configured'),o;if(!n)return o;var l=o._globalOptions;s&&S(s,function(t,n){'tags'===t||'extra'===t||'user'===t?o._globalContext[t]=n:l[t]=n}),o.setDSN(n),l.ignoreErrors.push(/^Script error\.?$/),l.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),l.ignoreErrors=R(l.ignoreErrors),l.ignoreUrls=!!l.ignoreUrls.length&&R(l.ignoreUrls),l.whitelistUrls=!!l.whitelistUrls.length&&R(l.whitelistUrls),l.includePaths=R(l.includePaths),l.maxBreadcrumbs=Math.max(0,Math.min(l.maxBreadcrumbs||100,100));var c={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},u=l.autoBreadcrumbs;'[object Object]'==={}.toString.call(u)?u=x(c,u):!1!==u&&(u=c),l.autoBreadcrumbs=u;var h={tryCatch:!0},p=l.instrument;return'[object Object]'==={}.toString.call(p)?p=x(h,p):!1!==p&&(p=h),l.instrument=p,t.collectWindowErrors=!!l.collectWindowErrors,o},install:function(){var n=this;return n.isSetup()&&!n._isRavenInstalled&&(t.report.subscribe(function(){n._handleOnErrorStackInfo.apply(n,arguments)}),n._globalOptions.captureUnhandledRejections&&n._attachPromiseRejectionHandler(),n._patchFunctionToString(),n._globalOptions.instrument&&n._globalOptions.instrument.tryCatch&&n._instrumentTryCatch(),n._globalOptions.autoBreadcrumbs&&n._instrumentBreadcrumbs(),n._drainPlugins(),n._isRavenInstalled=!0),Error.stackTraceLimit=n._globalOptions.stackTraceLimit,this},setDSN:function(t){var n=this._parseDSN(t),s=n.path.lastIndexOf('/'),o=n.path.substr(1,s);this._dsn=t,this._globalKey=n.user,this._globalSecret=n.pass&&n.pass.substr(1),this._globalProject=n.path.substr(s+1),this._globalServer=this._getGlobalServer(n),this._globalEndpoint=this._globalServer+'/'+o+'api/'+this._globalProject+'/store/',this._resetBackoff()},context:function(t,n,s){return b(t)&&(s=n||[],n=t,t={}),this.wrap(t,n).apply(this,s)},wrap:function(t,n,s){var o=this;if(v(n)&&!b(t))return t;if(b(t)&&(n=t,t=void 0),!b(n))return n;try{if(n.__raven__)return n;if(n.__raven_wrapper__)return n.__raven_wrapper__}catch(t){return n}function l(){var l=[],c=arguments.length,u=!t||t&&!1!==t.deep;for(s&&b(s)&&s.apply(this,arguments);c--;)l[c]=u?o.wrap(t,arguments[c]):arguments[c];try{return n.apply(this,l)}catch(n){throw o._ignoreNextOnError(),o.captureException(n,t),n}}for(var c in n)C(n,c)&&(l[c]=n[c]);return l.prototype=n.prototype,n.__raven_wrapper__=l,l.__raven__=!0,l.__orig__=n,l},uninstall:function(){return t.report.uninstall(),this._detachPromiseRejectionHandler(),this._unpatchFunctionToString(),this._restoreBuiltIns(),this._restoreConsole(),Error.stackTraceLimit=this._originalErrorStackTraceLimit,this._isRavenInstalled=!1,this},_promiseRejectionHandler:function(t){this._logDebug('debug','Raven caught unhandled promise rejection:',t),this.captureException(t.reason,{mechanism:{type:'onunhandledrejection',handled:!1}})},_attachPromiseRejectionHandler:function(){return this._promiseRejectionHandler=this._promiseRejectionHandler.bind(this),z.addEventListener&&z.addEventListener('unhandledrejection',this._promiseRejectionHandler),this},_detachPromiseRejectionHandler:function(){return z.removeEventListener&&z.removeEventListener('unhandledrejection',this._promiseRejectionHandler),this},captureException:function(n,s){if(s=x({trimHeadFrames:0},s||{}),c(n)&&n.error)n=n.error;else{if(u(n)||h(n)){var o=n.name||(u(n)?'DOMError':'DOMException'),l=n.message?o+': '+n.message:o;return this.captureMessage(l,x(s,{stacktrace:!0,trimHeadFrames:s.trimHeadFrames+1}))}if(p(n))n=n;else{if(!f(n))return this.captureMessage(n,x(s,{stacktrace:!0,trimHeadFrames:s.trimHeadFrames+1}));s=this._getCaptureExceptionOptionsFromPlainObject(s,n),n=new Error(s.message)}}this._lastCapturedException=n;try{var _=t.computeStackTrace(n);this._handleStackInfo(_,s)}catch(t){if(n!==t)throw t}return this},_getCaptureExceptionOptionsFromPlainObject:function(t,n){var o=Object.keys(n).sort(),l=x(t,{message:'Non-Error exception captured with keys: '+I(o),fingerprint:[s(o)],extra:t.extra||{}});return l.extra.__serialized__=M(n),l},captureMessage:function(n,s){if(!this._globalOptions.ignoreErrors.test||!this._globalOptions.ignoreErrors.test(n)){var o,l=x({message:n+=''},s=s||{});try{throw new Error(n)}catch(t){o=t}o.name=null;var c=t.computeStackTrace(o),u=E(c.stack)&&c.stack[1];u&&'Raven.captureException'===u.func&&(u=c.stack[2]);var h=u&&u.url||'';if((!this._globalOptions.ignoreUrls.test||!this._globalOptions.ignoreUrls.test(h))&&(!this._globalOptions.whitelistUrls.test||this._globalOptions.whitelistUrls.test(h))){if(this._globalOptions.stacktrace||s.stacktrace||''===l.message){l.fingerprint=null==l.fingerprint?n:l.fingerprint,(s=x({trimHeadFrames:0},s)).trimHeadFrames+=1;var p=this._prepareFrames(c,s);l.stacktrace={frames:p.reverse()}}return l.fingerprint&&(l.fingerprint=E(l.fingerprint)?l.fingerprint:[l.fingerprint]),this._send(l),this}}},captureBreadcrumb:function(t){var n=x({timestamp:X()/1e3},t);if(b(this._globalOptions.breadcrumbCallback)){var s=this._globalOptions.breadcrumbCallback(n);if(_(s)&&!k(s))n=s;else if(!1===s)return this}return this._breadcrumbs.push(n),this._breadcrumbs.length>this._globalOptions.maxBreadcrumbs&&this._breadcrumbs.shift(),this},addPlugin:function(t){var n=[].slice.call(arguments,1);return this._plugins.push([t,n]),this._isRavenInstalled&&this._drainPlugins(),this},setUserContext:function(t){return this._globalContext.user=t,this},setExtraContext:function(t){return this._mergeContext('extra',t),this},setTagsContext:function(t){return this._mergeContext('tags',t),this},clearContext:function(){return this._globalContext={},this},getContext:function(){return JSON.parse(n(this._globalContext))},setEnvironment:function(t){return this._globalOptions.environment=t,this},setRelease:function(t){return this._globalOptions.release=t,this},setDataCallback:function(t){var n=this._globalOptions.dataCallback;return this._globalOptions.dataCallback=G(n,t),this},setBreadcrumbCallback:function(t){var n=this._globalOptions.breadcrumbCallback;return this._globalOptions.breadcrumbCallback=G(n,t),this},setShouldSendCallback:function(t){var n=this._globalOptions.shouldSendCallback;return this._globalOptions.shouldSendCallback=G(n,t),this},setTransport:function(t){return this._globalOptions.transport=t,this},lastException:function(){return this._lastCapturedException},lastEventId:function(){return this._lastEventId},isSetup:function(){return!!this._hasJSON&&(!!this._globalServer||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this._logDebug('error','Error: Raven has not been configured.')),!1))},afterLoad:function(){var t=z.RavenConfig;t&&this.config(t.dsn,t.config).install()},showReportDialog:function(t){if(W){if(!(t=x({eventId:this.lastEventId(),dsn:this._dsn,user:this._globalContext.user||{}},t)).eventId)throw new o('Missing eventId');if(!t.dsn)throw new o('Missing DSN');var n=encodeURIComponent,s=[];for(var l in t)if('user'===l){var c=t.user;c.name&&s.push('name='+n(c.name)),c.email&&s.push('email='+n(c.email))}else s.push(n(l)+'='+n(t[l]));var u=this._getGlobalServer(this._parseDSN(t.dsn)),h=W.createElement('script');h.async=!0,h.src=u+'/api/embed/error-page/?'+s.join('&'),(W.head||W.body).appendChild(h)}},_ignoreNextOnError:function(){var t=this;this._ignoreOnError+=1,setTimeout(function(){t._ignoreOnError-=1})},_triggerEvent:function(t,n){var s,o;if(this._hasDocument){for(o in n=n||{},t='raven'+t.substr(0,1).toUpperCase()+t.substr(1),W.createEvent?(s=W.createEvent('HTMLEvents')).initEvent(t,!0,!0):(s=W.createEventObject()).eventType=t,n)C(n,o)&&(s[o]=n[o]);if(W.createEvent)W.dispatchEvent(s);else try{W.fireEvent('on'+s.eventType.toLowerCase(),s)}catch(t){}}},_breadcrumbEventHandler:function(t){var n=this;return function(s){if(n._keypressTimeout=null,n._lastCapturedEvent!==s){var o;n._lastCapturedEvent=s;try{o=H(s.target)}catch(t){o=''}n.captureBreadcrumb({category:'ui.'+t,message:o})}}},_keypressEventHandler:function(){var t=this;return function(n){var s;try{s=n.target}catch(t){return}var o=s&&s.tagName;if(o&&('INPUT'===o||'TEXTAREA'===o||s.isContentEditable)){var l=t._keypressTimeout;l||t._breadcrumbEventHandler('input')(n),clearTimeout(l),t._keypressTimeout=setTimeout(function(){t._keypressTimeout=null},1e3)}}},_captureUrlChange:function(t,n){var s=L(this._location.href),o=L(n),l=L(t);this._lastHref=n,s.protocol===o.protocol&&s.host===o.host&&(n=o.relative),s.protocol===l.protocol&&s.host===l.host&&(t=l.relative),this.captureBreadcrumb({category:'navigation',data:{to:n,from:t}})},_patchFunctionToString:function(){var t=this;t._originalFunctionToString=Function.prototype.toString,Function.prototype.toString=function(){return'function'==typeof this&&this.__raven__?t._originalFunctionToString.apply(this.__orig__,arguments):t._originalFunctionToString.apply(this,arguments)}},_unpatchFunctionToString:function(){this._originalFunctionToString&&(Function.prototype.toString=this._originalFunctionToString)},_instrumentTryCatch:function(){var t=this,n=t._wrappedBuiltIns;function s(n){return function(s,o){for(var l=new Array(arguments.length),c=0;c'}}},u)),n.apply?n.apply(this,l):n(l[0],l[1])}}var o=this._globalOptions.autoBreadcrumbs;function l(s){var l=z[s]&&z[s].prototype;l&&l.hasOwnProperty&&l.hasOwnProperty('addEventListener')&&(P(l,'addEventListener',function(n){return function(l,c,u,h){try{c&&c.handleEvent&&(c.handleEvent=t.wrap({mechanism:{type:'instrument',data:{target:s,function:'handleEvent',handler:c&&c.name||''}}},c.handleEvent))}catch(t){}var p,_,f;return o&&o.dom&&('EventTarget'===s||'Node'===s)&&(_=t._breadcrumbEventHandler('click'),f=t._keypressEventHandler(),p=function(t){if(t){var n;try{n=t.type}catch(t){return}return'click'===n?_(t):'keypress'===n?f(t):void 0}}),n.call(this,l,t.wrap({mechanism:{type:'instrument',data:{target:s,function:'addEventListener',handler:c&&c.name||''}}},c,p),u,h)}},n),P(l,'removeEventListener',function(t){return function(n,s,o,l){try{s=s&&(s.__raven_wrapper__?s.__raven_wrapper__:s)}catch(t){}return t.call(this,n,s,o,l)}},n))}P(z,'setTimeout',s,n),P(z,'setInterval',s,n),z.requestAnimationFrame&&P(z,'requestAnimationFrame',function(n){return function(s){return n(t.wrap({mechanism:{type:'instrument',data:{function:'requestAnimationFrame',handler:n&&n.name||''}}},s))}},n);for(var c=['EventTarget','Window','Node','ApplicationCache','AudioTrackList','ChannelMergerNode','CryptoOperation','EventSource','FileReader','HTMLUnknownElement','IDBDatabase','IDBRequest','IDBTransaction','KeyOperation','MediaController','MessagePort','ModalWindow','Notification','SVGElementInstance','Screen','TextTrack','TextTrackCue','TextTrackList','WebSocket','WebSocketWorker','Worker','XMLHttpRequest','XMLHttpRequestEventTarget','XMLHttpRequestUpload'],u=0;u'}}},s)})}if(n.xhr&&'XMLHttpRequest'in z){var l=z.XMLHttpRequest&&z.XMLHttpRequest.prototype;P(l,'open',function(n){return function(s,o){return y(o)&&-1===o.indexOf(t._globalKey)&&(this.__raven_xhr={method:s,url:o,status_code:null}),n.apply(this,arguments)}},s),P(l,'send',function(n){return function(){var s=this;function l(){if(s.__raven_xhr&&4===s.readyState){try{s.__raven_xhr.status_code=s.status}catch(t){}t.captureBreadcrumb({type:'http',category:'xhr',data:s.__raven_xhr})}}for(var c=['onload','onerror','onprogress'],u=0;u'}}},n,l)}):s.onreadystatechange=l,n.apply(this,arguments)}},s)}n.xhr&&F()&&P(z,'fetch',function(n){return function(){for(var s=new Array(arguments.length),o=0;o2?arguments[2]:void 0;return s&&t._captureUrlChange(t._lastHref,s+''),n.apply(this,arguments)}};P(z.history,'pushState',p,s),P(z.history,'replaceState',p,s)}if(n.console&&'console'in z&&console.log){var _=function(n,s){t.captureBreadcrumb({message:n,level:s.level,category:'console'})};S(['debug','info','warn','error','log'],function(t,n){q(console,n,_)})}},_restoreBuiltIns:function(){for(var t;this._wrappedBuiltIns.length;){var n=(t=this._wrappedBuiltIns.shift())[0],s=t[1],o=t[2];n[s]=o}},_restoreConsole:function(){for(var t in this._originalConsoleMethods)this._originalConsole[t]=this._originalConsoleMethods[t]},_drainPlugins:function(){var t=this;S(this._plugins,function(n,s){var o=s[0],l=s[1];o.apply(t,[t].concat(l))})},_parseDSN:function(t){var n=K.exec(t),s={},l=7;try{for(;l--;)s[A[l]]=n[l]||''}catch(n){throw new o('Invalid DSN: '+t)}if(s.pass&&!this._globalOptions.allowSecretKey)throw new o('Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key');return s},_getGlobalServer:function(t){var n='//'+t.host+(t.port?':'+t.port:'');return t.protocol&&(n=t.protocol+':'+n),n},_handleOnErrorStackInfo:function(t,n){(n=n||{}).mechanism=n.mechanism||{type:'onerror',handled:!1},this._ignoreOnError||this._handleStackInfo(t,n)},_handleStackInfo:function(t,n){var s=this._prepareFrames(t,n);this._triggerEvent('handle',{stackInfo:t,options:n}),this._processException(t.name,t.message,t.url,t.lineno,s,n)},_prepareFrames:function(t,n){var s=this,o=[];if(t.stack&&t.stack.length&&(S(t.stack,function(n,l){var c=s._normalizeFrame(l,t.url);c&&o.push(c)}),n&&n.trimHeadFrames))for(var l=0;l0&&(t.breadcrumbs={values:[].slice.call(this._breadcrumbs,0)}),this._globalContext.user&&(t.user=this._globalContext.user),n.environment&&(t.environment=n.environment),n.release&&(t.release=n.release),n.serverName&&(t.server_name=n.serverName),t=this._sanitizeData(t),Object.keys(t).forEach(function(n){(null==t[n]||''===t[n]||k(t[n]))&&delete t[n]}),b(n.dataCallback)&&(t=n.dataCallback(t)||t),t&&!k(t)&&(b(n.shouldSendCallback)&&!n.shouldSendCallback(t)||(this._shouldBackoff()?this._logDebug('warn','Raven dropped error due to backoff: ',t):'number'==typeof n.sampleRate?Math.random()=0;--t)v[t]===n&&v.splice(t,1)},S.uninstall=function(){p&&(l.onerror=f,p=!1,f=void 0),v=[]},S})(),t.computeStackTrace=(function(){function n(n){if(void 0!==n.stack&&n.stack){for(var t,l,c,o=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,f=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,p=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,v=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,h=/\((\S*)(?::(\d+))(?::(\d+))\)/,b=n.stack.split('\n'),k=[],x=(/^(.*) is undefined$/.exec(n.message),0),w=b.length;x eval')>-1&&(t=v.exec(l[3]))?(l[3]=t[1],l[4]=t[2],l[5]=null):0!==x||l[5]||void 0===n.columnNumber||(k[0].column=n.columnNumber+1),c={url:l[3],func:l[1]||u,args:l[2]?l[2].split(','):[],line:l[4]?+l[4]:null,column:l[5]?+l[5]:null}}if(!c.func&&c.line&&(c.func=u),c.url&&'blob:'===c.url.substr(0,5)){var S=new XMLHttpRequest;if(S.open('GET',c.url,!1),S.send(null),200===S.status){var E=S.responseText||'',T=(E=E.slice(-300)).match(/\/\/# sourceMappingURL=(.*)$/);if(T){var F=T[1];'~'===F.charAt(0)&&(F=('undefined'==typeof document||null==document.location?'':document.location.origin?document.location.origin:document.location.protocol+'//'+document.location.hostname+(document.location.port?':'+document.location.port:''))+F.slice(1)),c.url=F.slice(0,-4)}}}k.push(c)}return k.length?{name:n.name,message:n.message,url:s(),stack:k}:null}}function l(n,t,l,c){var o={url:t,line:l};if(o.url&&o.line){if(n.incomplete=!1,o.func||(o.func=u),n.stack.length>0&&n.stack[0].url===o.url){if(n.stack[0].line===o.line)return!1;if(!n.stack[0].line&&n.stack[0].func===o.func)return n.stack[0].line=o.line,!1}return n.stack.unshift(o),n.partial=!0,!0}return n.incomplete=!0,!1}function c(n,f){for(var p,v,h=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,b=[],k={},x=!1,w=c.caller;w&&!x;w=w.caller)if(w!==o&&w!==t.report){if(v={url:null,func:u,line:null,column:null},w.name?v.func=w.name:(p=h.exec(w.toString()))&&(v.func=p[1]),void 0===v.func)try{v.func=p.input.substring(0,p.input.indexOf('{'))}catch(n){}k[''+w]?x=!0:k[''+w]=!0,b.push(v)}f&&b.splice(0,f);var y={name:n.name,message:n.message,url:s(),stack:b};return l(y,n.sourceURL||n.fileName,n.line||n.lineNumber,n.message||n.description),y}function o(l,u){var o=null;u=null==u?0:+u;try{if(o=n(l))return o}catch(n){if(t.debug)throw n}try{if(o=c(l,u+1))return o}catch(n){if(t.debug)throw n}return{name:l.name,message:l.message,url:s()}}return o.augmentStackTraceWithInitialElement=l,o.computeStackTraceFromStackProp=n,o})(),m.exports=t},397,[398]); -__d(function(g,r,i,a,m,e,d){var t=r(d[0]),n='undefined'!=typeof window?window:void 0!==g?g:'undefined'!=typeof self?self:{};function o(t){return void 0===t}function u(t){return'[object Object]'===Object.prototype.toString.call(t)}function c(t){return'[object String]'===Object.prototype.toString.call(t)}function f(t){return'[object Array]'===Object.prototype.toString.call(t)}function s(){if(!('fetch'in n))return!1;try{return new Headers,new Request(''),new Response,!0}catch(t){return!1}}function l(t,n){var u,c;if(o(t.length))for(u in t)y(t,u)&&n.call(null,u,t[u]);else if(c=t.length)for(u=0;u ".length;t&&u++<5&&!('html'===(n=b(t))||u>1&&c+o.length*f+n.length>=80);)o.push(n),c+=n.length,t=t.parentNode;return o.reverse().join(" > ")},htmlElementAsString:b,isSameException:function(t,n){return!v(t,n)&&(t=t.values[0],n=n.values[0],t.type===n.type&&t.value===n.value&&(u=t.stacktrace,c=n.stacktrace,(!o(u)||!o(c))&&j(t.stacktrace,n.stacktrace)));var u,c},isSameStacktrace:j,parseUrl:function(t){if('string'!=typeof t)return{};var n=t.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/),o=n[6]||'',u=n[8]||'';return{protocol:n[2],host:n[4],path:n[5],relative:n[5]+o+u}},fill:function(t,n,o,u){if(null!=t){var c=t[n];t[n]=o(c),t[n].__raven__=!0,t[n].__orig__=c,u&&u.push([t,n,c])}},safeJoin:function(t,n){if(!f(t))return'';for(var o=[],u=0;uf?n(o,c-1):l},serializeKeysForMessage:function(t,n){if('number'==typeof t||'string'==typeof t)return t.toString();if(!Array.isArray(t))return'';if(0===(t=t.filter(function(t){return'string'==typeof t})).length)return'[object has no keys]';if(n='number'!=typeof n?E:n,t[0].length>=n)return t[0];for(var o=t.length;o>0;o--){var u=t.slice(0,o).join(', ');if(!(u.length>n))return o===t.length?u:u+"\u2026"}return''},sanitize:function(n,o){if(!f(o)||f(o)&&0===o.length)return n;var c,s=h(o),l='********';try{c=JSON.parse(t(n))}catch(t){return n}return(function t(n){return f(n)?n.map(function(n){return t(n)}):u(n)?Object.keys(n).reduce(function(o,u){return s.test(u)?o[u]=l:o[u]=t(n[u]),o},{}):n})(c)}}},398,[399]); -__d(function(g,r,i,a,m,e,d){function n(n,t){for(var s=0;s0){var h=n(c,this);~h?c.splice(h+1):c.push(this),~h?l.splice(h,1/0,o):l.push(o),~n(c,f)&&(f=u.call(this,o,f))}else c.push(f);return null==s?f instanceof Error?t(f):f:s.call(this,o,f)}}(m.exports=function(n,t,u,c){return JSON.stringify(n,s(t,c),u)}).getSerialize=s},399,[]); -__d(function(g,r,i,a,m,e,d){function n(n,t){var o=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(o>>16)<<16|65535&o}function t(t,o,u,c,f,h){return n((v=n(n(o,t),n(c,h)))<<(l=f)|v>>>32-l,u);var v,l}function o(n,o,u,c,f,h,v){return t(o&u|~o&c,n,o,f,h,v)}function u(n,o,u,c,f,h,v){return t(o&c|u&~c,n,o,f,h,v)}function c(n,o,u,c,f,h,v){return t(o^u^c,n,o,f,h,v)}function f(n,o,u,c,f,h,v){return t(u^(o|~c),n,o,f,h,v)}function h(t,h){var v,l,C,A,p;t[h>>5]|=128<>>9<<4)]=h;var b=1732584193,s=-271733879,_=-1732584194,x=271733878;for(v=0;v>5]>>>t%32&255);return o}function l(n){var t,o=[];for(o[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(c=h(c,8*n.length)),o=0;o<16;o+=1)f[o]=909522486^c[o],C[o]=1549556828^c[o];return u=h(f.concat(l(t)),512+8*t.length),v(h(C.concat(u),640))}function p(n){var t,o,u='';for(o=0;o>>4&15)+"0123456789abcdef".charAt(15&t);return u}function b(n){return unescape(encodeURIComponent(n))}function s(n){return C(b(n))}function _(n,t){return A(b(n),b(t))}m.exports=function(n,t,o){return t?o?_(t,n):p(_(t,n)):o?s(n):p(s(n))}},400,[]); -__d(function(g,r,i,a,m,e,d){function o(o){this.name='RavenConfigError',this.message=o}o.prototype=new Error,o.prototype.constructor=o,m.exports=o},401,[]); -__d(function(g,r,i,a,m,e,d){var n=r(d[0]);m.exports={wrapMethod:function(o,s,t){var l=o[s],c=o;if(s in o){var f='warn'===s?'warning':s;o[s]=function(){var o=[].slice.call(arguments),p=n.safeJoin(o,' '),u={level:f,logger:'console',extra:{arguments:o}};'assert'===s?!1===o[0]&&(p='Assertion failed: '+(n.safeJoin(o.slice(1),' ')||'console.assert'),u.extra.arguments=o.slice(1),t&&t(p,u)):t&&t(p,u),l&&Function.prototype.apply.call(l,c,o)}}}}},402,[398]); -__d(function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]);function o(t){return function(n,o){var l=t(n)||n;return o&&o(l)||l}}var l=/^.*\/[^\.]+(\.app|CodePush|.*(?=\/))/,c='--rn-fatal--';function s(t,n){return'app://'+t.replace(/^file\:\/\//,'').replace(n,'')}function u(t){var n=[];for(var o in t)({}).hasOwnProperty.call(t,o)&&n.push(encodeURIComponent(o)+'='+encodeURIComponent(t[o]));return n.join('&')}function f(t,l,s){l=l||{},t.setDataCallback(o(function(t){t=f._normalizeData(t,l.pathStrip),s&&s(t)})),!1===l.nativeClientAvailable&&(t.setTransport(f._transport),f._restorePayload().then(function(n){l.onInitialize&&l.onInitialize(n),n&&t._sendProcessedPayload(n,function(t){t||f._clearPayload()})}).catch(function(){}),t.setShouldSendCallback(function(t,n){if(!(c in t))return!n||n.call(this,t);var o=t[c];return delete t[c],f._persistPayload(t).then(function(){return p(o,!0),u=!1,null}).catch(function(){}),!1}));var u=!1,p=ErrorUtils.getGlobalHandler&&ErrorUtils.getGlobalHandler()||ErrorUtils._globalHandler;if(l.handlePromiseRejection){var v=r(d[2]);v.disable(),v.enable({allRejections:!0,onUnhandled:function(n,o){var l={timestamp:new Date/1e3,type:'Unhandled Promise Rejection'};t.captureException(o,l)},onHandled:function(){}})}ErrorUtils.setGlobalHandler(function(o,s){var f={timestamp:new Date/1e3};o=arguments[0];if(s&&(f.level='fatal'),s&&!g.__DEV__){if(u)return void console.log('Encountered multiple fatals in a row. The latest:',o);u=!0,f[c]=o}t.captureException(o,f),l.nativeClientAvailable?n.Sentry._setInternalEventStored(function(){p(o,s)}):p(o,s)})}f._persistPayload=function(t){return r(d[0]).AsyncStorage.setItem("--raven-js-global-error-payload--",JSON.stringify(t)).catch(function(){return null})},f._restorePayload=function(){var n=r(d[0]).AsyncStorage,o=n.getItem("--raven-js-global-error-payload--").then(function(t){return JSON.parse(t)}).catch(function(){return null}),l=t.NativeModules.AsyncSQLiteDBStorage,c=t.NativeModules.AsyncRocksDBStorage,s=t.NativeModules.AsyncLocalStorage;return(c||l||s).multiGet&&n.flushGetRequests(),o},f._clearPayload=function(){return r(d[0]).AsyncStorage.removeItem("--raven-js-global-error-payload--").catch(function(){return null})},f._transport=function(t){var n=new XMLHttpRequest;n.onreadystatechange=function(o){if(4===n.readyState)if(200===n.status)t.onSuccess&&t.onSuccess();else if(t.onError){var l=new Error('Sentry error code: '+n.status);l.request=n,t.onError(l)}},n.open('POST',t.url+'?'+u(t.auth)),n.setRequestHeader('Content-type','application/json'),n.setRequestHeader('Origin','react-native://'),n.send(JSON.stringify(t.data))},f._normalizeData=function(t,n){n||(n=l),t.culprit&&(t.culprit=s(t.culprit,n));var o=t.stacktrace||t.exception&&t.exception.values[0].stacktrace;return o&&o.frames.forEach(function(t){'[native code]'!==t.filename&&(t.filename=s(t.filename,n))}),t},m.exports=f},403,[3,392,404]); -__d(function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]),o=[ReferenceError,TypeError,RangeError],l=!1;function s(){l=!1,n._37=null,n._87=null}function t(n,o){console.warn('Possible Unhandled Promise Rejection (id: '+n+'):'),((o&&(o.stack||o))+'').split('\n').forEach(function(n){console.warn(' '+n)})}function c(n,o){return o.some(function(o){return n instanceof o})}e.disable=s,e.enable=function(u){u=u||{},l&&s();l=!0;var f=0,_=0,h={};function p(n){(u.allRejections||c(h[n].error,u.whitelist||o))&&(h[n].displayId=_++,u.onUnhandled?(h[n].logged=!0,u.onUnhandled(h[n].displayId,h[n].error)):(h[n].logged=!0,t(h[n].displayId,h[n].error)))}function y(n){h[n].logged&&(u.onHandled?u.onHandled(h[n].displayId,h[n].error):h[n].onUnhandled||(console.warn('Promise Rejection Handled (id: '+h[n].displayId+'):'),console.warn(' This means you can ignore any previous messages of the form "Possible Unhandled Promise Rejection" with id '+h[n].displayId+'.')))}n._37=function(n){2===n._65&&h[n._51]&&(h[n._51].logged?y(n._51):clearTimeout(h[n._51].timeout),delete h[n._51])},n._87=function(n,l){0===n._40&&(n._51=f++,h[n._51]={displayId:null,error:l,timeout:setTimeout(p.bind(null,n._51),c(l,o)?100:2e3),logged:!1})}}},404,[34]); -__d(function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.NativeClient=void 0;var n=t(r(d[1])),o=t(r(d[2])),u=t(r(d[3])),s=t(r(d[4])),l=r(d[5]),c=l.NativeModules.RNSentry,v=l.NativeModules.RNSentryEventEmitter,M=['AccessibilityManager','ActionSheetManager','AlertManager','AppState','AsyncLocalStorage','Clipboard','DevLoadingView','DevMenu','ExceptionsManager','I18nManager','ImageEditingManager','ImageStoreManager','ImageViewManager','IOSConstants','JSCExecutor','JSCSamplingProfiler','KeyboardObserver','LinkingManager','LocationObserver','NativeAnimatedModule','NavigatorManager','NetInfo','Networking','RedBox','ScrollViewManager','SettingsManager','SourceCode','StatusBarManager','Timing','UIManager','Vibration','WebSocketModule','WebViewManager'],f=(function(){function t(s,M){var f=this;if((0,u.default)(this,t),this._activateStacktraceMerging=function(){return o.default.async(function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",c.activateStacktraceMerging().then(function(t){if(!f._activatedMerging){f._ignoredModules={};var n=r(d[6]);if('undefined'!=typeof __fbBatchedBridgeConfig)__fbBatchedBridgeConfig.remoteModuleConfig.forEach(function(t,n){null!==t&&f._addIgnoredModule(n,t[0])});else if(n._remoteModuleTable)for(var o in n._remoteModuleTable)if(n._remoteModuleTable.hasOwnProperty(o)){var u=n._remoteModuleTable[o];f._addIgnoredModule(o,u)}f._activatedMerging=!0,f._overwriteEnqueueNativeCall()}}).catch(function(t){console.log(t)}));case 1:case"end":return t.stop()}})},s.constructor!==String)throw new Error('Sentry: A DSN must be provided');if(!c)throw new Error('Sentry: There is no native client installed.');(this._dsn=s,this._activatedMerging=!1,this.options={ignoreModulesExclude:[],ignoreModulesInclude:[],deactivateStacktraceMerging:!0},(0,n.default)(this.options,M),c.startWithDsnString(this._dsn,this.options),!1===this.options.deactivateStacktraceMerging)&&(this._activateStacktraceMerging(),new l.NativeEventEmitter(v).addListener(v.MODULE_TABLE,function(t){try{f._updateIgnoredModules(JSON.parse(t.payload))}catch(t){}}));c.setLogLevel(M.logLevel)}return(0,s.default)(t,[{key:"nativeCrash",value:function(){c.crash()}},{key:"captureEvent",value:function(t){c.captureEvent(t)}},{key:"setUserContext",value:function(t){c.setUser(t)}},{key:"setTagsContext",value:function(t){c.setTags(t)}},{key:"setExtraContext",value:function(t){c.setExtra(t)}},{key:"addExtraContext",value:function(t,n){c.addExtra(t,n)}},{key:"captureBreadcrumb",value:function(t){c.captureBreadcrumb(t)}},{key:"clearContext",value:function(){c.clearContext()}},{key:"_updateIgnoredModules",value:function(t){for(var n=Object.values(t),o=Object.keys(t),u=0;u=0||this.options.ignoreModulesInclude.indexOf(n)>=0)&&(this._ignoredModules[t]=!0)}},{key:"_overwriteEnqueueNativeCall",value:function(){var t=r(d[6]),n=t.enqueueNativeCall,o=this;t.enqueueNativeCall=function(t,u,s,l,c){return o._ignoredModules[t]?n.apply(this,arguments):(s.push({__sentry_stack:(new Error).stack,__sentry_moduleID:t}),n.apply(this,arguments))}}}]),t})();e.NativeClient=f},405,[1,60,393,140,141,3,19]); -__d(function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var l=r(d[1]),u=t(r(d[2])),f=t(r(d[3])),o=t(r(d[4])),n=t(r(d[5])),s=r(d[6]),y=t(r(d[7])),C=t(r(d[8])),v=t(r(d[9])),w=t(r(d[10])),F=t(r(d[11])),L=t(r(d[12])),P=t(r(d[13])),_=t(r(d[14])),c=t(r(d[15])),k=t(r(d[16])),A=t(r(d[17])),M=t(r(d[18])),S={Artist:F.default,Artwork:l.ArtworkContainer,BidFlow:L.default,CitySavedList:o.default,CityBMWList:u.default,CitySectionList:n.default,Conversation:P.default,CityFairList:f.default,Gene:_.default,Fair:y.default,Home:C.default,Inbox:c.default,Inquiry:k.default,MyProfile:v.default,Partner:s.PartnerContainer,RegistrationFlow:A.default,Show:w.default,WorksForYou:M.default};e.default=S},406,[1,407,1302,1316,1319,1322,1325,1362,1469,1731,1736,1529,1560,1632,1675,1692,1689,1622,1486]); -__d(function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"ArtworkContainer",{enumerable:!0,get:function(){return n.ArtworkContainer}}),Object.defineProperty(e,"ArtworkRenderer",{enumerable:!0,get:function(){return n.ArtworkRenderer}});var n=r(d[0])},407,[408]); -__d(function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.ArtworkRenderer=e.ArtworkContainer=e.Artwork=void 0;var n,l,o,u,c=t(r(d[1])),s=t(r(d[2])),f=t(r(d[3])),h=t(r(d[4])),p=t(r(d[5])),k=t(r(d[6])),w=t(r(d[7])),v=t(r(d[8])),b=t(r(d[9])),y=r(d[10]),E=r(d[11]),A=r(d[12]),x=r(d[13]),F=r(d[14]),T=r(d[15]),C=r(d[16]),R=t(r(d[17])),_=r(d[18]),P=r(d[19]),S=r(d[20]),D=r(d[21]),I=r(d[22]),V=r(d[23]),W=r(d[24]),B=r(d[25]),H=r(d[26]),O=r(d[27]),q=r(d[28]),M=r(d[29]),Q=(0,T.screenTrack)(function(t){return{context_screen:T.Schema.PageNames.ArtworkPage,context_screen_owner_type:T.Schema.OwnerEntityTypes.Artwork,context_screen_owner_slug:t.artworkAboveTheFold.slug,context_screen_owner_id:t.artworkAboveTheFold.internalID,availability:t.artworkAboveTheFold.availability,acquireable:t.artworkAboveTheFold.is_acquireable,inquireable:t.artworkAboveTheFold.is_inquireable,offerable:t.artworkAboveTheFold.is_offerable,biddable:t.artworkAboveTheFold.is_biddable}})(u=(function(t){function o(){var t,l;(0,p.default)(this,o);for(var u=arguments.length,c=new Array(u),s=0;s0)},l.onRefresh=function(){return h.default.async(function(t){for(;;)switch(t.prev=t.next){case 0:if(!l.state.refreshing){t.next=2;break}return t.abrupt("return");case 2:return l.setState({refreshing:!0}),t.prev=3,t.next=6,h.default.awrap(l.loadFullArtwork());case 6:t.next=11;break;case 8:t.prev=8,t.t0=t.catch(3),P.Sentry.captureMessage("failed to refresh artwork",{slug:l.props.artworkAboveTheFold.slug});case 11:l.setState({refreshing:!1});case 12:case"end":return t.stop()}},null,null,[[3,8]])},l.markArtworkAsRecentlyViewed=function(){(0,S.commitMutation)(l.props.relay.environment,{mutation:n||(n=function(){var t=r(d[30]);return t.hash&&"4ddb094d53cb9316e9302947e1ff20c3"!==t.hash&&console.error("The definition of 'ArtworkMarkAsRecentlyViewedQuery' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."),r(d[30])}),variables:{input:{artwork_id:l.props.artworkAboveTheFold.slug}}})},l}return(0,b.default)(o,t),(0,k.default)(o,[{key:"componentDidMount",value:function(){this.markArtworkAsRecentlyViewed(),this.loadFullArtwork()}},{key:"componentDidUpdate",value:function(t){var n=this;this.props.isVisible&&!t.isVisible&&this.loadFullArtwork().then(function(){n.markArtworkAsRecentlyViewed()})}},{key:"sections",value:function(){var t=this.state.artworkFull,n=this.props.artworkAboveTheFold,l=[];if(l.push({key:"header",element:R.default.createElement(W.ArtworkHeaderFragmentContainer,{artwork:n}),excludePadding:!0}),l.push({key:"commercialInformation",element:R.default.createElement(H.CommercialInformationFragmentContainer,{artwork:n})}),!t)return l.push({key:"belowTheFoldPlaceholder",element:R.default.createElement(G,null)}),l;var o=t.artist,u=t.context;return(t.description||t.additional_information)&&l.push({key:"aboutWork",element:R.default.createElement(I.AboutWorkFragmentContainer,{artwork:t})}),this.shouldRenderDetails()&&l.push({key:"artworkDetails",element:R.default.createElement(V.ArtworkDetailsFragmentContainer,{artwork:t})}),(t.provenance||t.exhibition_history||t.literature)&&l.push({key:"history",element:R.default.createElement(B.ArtworkHistoryFragmentContainer,{artwork:t})}),o&&o.biography_blurb&&l.push({key:"aboutArtist",element:R.default.createElement(D.AboutArtistFragmentContainer,{artwork:t})}),this.shouldRenderPartner()&&l.push({key:"partnerCard",element:R.default.createElement(M.PartnerCardFragmentContainer,{artwork:t})}),u&&"Sale"===u.__typename&&u.isAuction&&l.push({key:"contextCard",element:R.default.createElement(O.ContextCardFragmentContainer,{artwork:t})}),this.shouldRenderOtherWorks()&&l.push({key:"otherWorks",element:R.default.createElement(q.OtherWorksFragmentContainer,{artwork:t})}),l}},{key:"loadFullArtwork",value:function(){var t;return h.default.async(function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,h.default.awrap((0,S.fetchQuery)(this.props.relay.environment,l||(l=function(){var t=r(d[31]);return t.hash&&"0104972b5f030fa8c5d5817132b2e140"!==t.hash&&console.error("The definition of 'ArtworkFullQuery' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."),r(d[31])}),{artworkID:this.props.artworkAboveTheFold.internalID},{force:!0}));case 2:t=n.sent,this.setState({artworkFull:t.artwork});case 4:case"end":return n.stop()}},null,this)}},{key:"render",value:function(){return R.default.createElement(_.FlatList,{data:this.sections(),ItemSeparatorComponent:function(){return R.default.createElement(y.Box,{px:2,mx:2,my:3},R.default.createElement(y.Separator,null))},refreshControl:R.default.createElement(_.RefreshControl,{refreshing:this.state.refreshing,onRefresh:this.onRefresh}),contentInset:{bottom:40},renderItem:function(t){var n=t.item;return n.excludePadding?n.element:R.default.createElement(y.Box,{px:2},n.element)}})}}]),o})(R.default.Component))||u;e.Artwork=Q;var L=(0,S.createFragmentContainer)(Q,{artworkAboveTheFold:function(){var t=r(d[32]);return t.hash&&"09df973254733240758245f8a1ce5857"!==t.hash&&console.error("The definition of 'Artwork_artworkAboveTheFold' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."),r(d[32])}});e.ArtworkContainer=L;e.ArtworkRenderer=function(t){var n=t.artworkID,l=(0,f.default)(t,["artworkID"]);return R.default.createElement(E.RetryErrorBoundary,{render:function(t){var u=t.isRetry;return R.default.createElement(y.Theme,null,R.default.createElement(C.ProvideScreenDimensions,null,R.default.createElement(S.QueryRenderer,{environment:A.defaultEnvironment,query:o||(o=function(){var t=r(d[33]);return t.hash&&"4eafa95c9788af843b033b40a78a396f"!==t.hash&&console.error("The definition of 'ArtworkAboveTheFoldQuery' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."),r(d[33])}),variables:{artworkID:n},cacheConfig:(0,s.default)({},u&&{force:!0}),render:(0,F.renderWithPlaceholder)({Container:L,initialProps:l,renderPlaceholder:function(){return R.default.createElement(z,null)}})})))}})};var z=function(t){(0,c.default)(t);var n=(0,C.useScreenDimensions)().width>=375?340:290;return R.default.createElement(_.View,{style:{flex:1,padding:(0,y.space)(2)}},R.default.createElement(x.PlaceholderBox,{height:n}),R.default.createElement(y.Spacer,{mb:2}),R.default.createElement(_.View,{style:{flexDirection:"row",justifyContent:"center"}},R.default.createElement(x.PlaceholderText,{width:50,marginHorizontal:(0,y.space)(1)}),R.default.createElement(x.PlaceholderText,{width:50,marginHorizontal:(0,y.space)(1)}),R.default.createElement(x.PlaceholderText,{width:50,marginHorizontal:(0,y.space)(1)})),R.default.createElement(y.Spacer,{mb:2}),R.default.createElement(x.PlaceholderText,{width:100}),R.default.createElement(y.Spacer,{mb:2}),R.default.createElement(_.View,{style:{width:130}},R.default.createElement(x.PlaceholderRaggedText,{numLines:4})),R.default.createElement(y.Spacer,{mb:3}),R.default.createElement(y.Separator,null),R.default.createElement(y.Spacer,{mb:3}),R.default.createElement(x.PlaceholderRaggedText,{numLines:3}),R.default.createElement(y.Spacer,{mb:2}),R.default.createElement(x.PlaceholderBox,{height:60}))},G=function(t){return(0,c.default)(t),R.default.createElement(x.ProvidePlaceholderContext,null,R.default.createElement(y.Separator,null),R.default.createElement(y.Spacer,{mb:3}),R.default.createElement(x.PlaceholderText,{width:60}),R.default.createElement(y.Spacer,{mb:2}),R.default.createElement(x.PlaceholderRaggedText,{numLines:4}),R.default.createElement(y.Spacer,{mb:3}),R.default.createElement(y.Separator,null),R.default.createElement(y.Spacer,{mb:3}),R.default.createElement(_.ActivityIndicator,null),R.default.createElement(y.Spacer,{mb:3}))}},408,[1,409,410,412,393,140,141,142,145,146,414,851,853,969,1031,1032,1156,57,3,391,1157,1180,1194,1196,1205,1245,1247,1281,1284,1294,1298,1299,1300,1301]); -__d(function(g,r,i,a,m,e,d){m.exports=function(n){if(null==n)throw new TypeError("Cannot destructure undefined")}},409,[]); -__d(function(g,r,i,a,m,e,d){var t=r(d[0]);m.exports=function(n){for(var o=1;o=0||Object.prototype.propertyIsEnumerable.call(n,l)&&(b[l]=n[l])}return b}},412,[413]); -__d(function(g,r,i,a,m,e,d){m.exports=function(n,t){if(null==n)return{};var f,u,o={},c=Object.keys(n);for(u=0;u=0||(o[f]=n[f]);return o}},413,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t={AllIcons:!0};e.AllIcons=void 0;var o=r(d[0]);Object.keys(o).forEach(function(n){"default"!==n&&"__esModule"!==n&&(Object.prototype.hasOwnProperty.call(t,n)||Object.defineProperty(e,n,{enumerable:!0,get:function(){return o[n]}}))});var n=r(d[1]);Object.keys(n).forEach(function(o){"default"!==o&&"__esModule"!==o&&(Object.prototype.hasOwnProperty.call(t,o)||Object.defineProperty(e,o,{enumerable:!0,get:function(){return n[o]}}))});var c=(function(t){if(t&&t.__esModule)return t;var o={};if(null!=t)for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var c=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(t,n):{};c.get||c.set?Object.defineProperty(o,n,c):o[n]=t[n]}return o.default=t,o})(r(d[2]));Object.keys(c).forEach(function(o){"default"!==o&&"__esModule"!==o&&(Object.prototype.hasOwnProperty.call(t,o)||Object.defineProperty(e,o,{enumerable:!0,get:function(){return c[o]}}))});var l=r(d[3]);Object.keys(l).forEach(function(o){"default"!==o&&"__esModule"!==o&&(Object.prototype.hasOwnProperty.call(t,o)||Object.defineProperty(e,o,{enumerable:!0,get:function(){return l[o]}}))});var u=c;e.AllIcons=u},414,[415,468,567,420]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})});var n=r(d[1]);Object.keys(n).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return n[t]}})});var u=r(d[2]);Object.keys(u).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return u[t]}})});var c=r(d[3]);Object.keys(c).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return c[t]}})});var o=r(d[4]);Object.keys(o).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return o[t]}})});var f=r(d[5]);Object.keys(f).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return f[t]}})});var l=r(d[6]);Object.keys(l).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return l[t]}})});var b=r(d[7]);Object.keys(b).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return b[t]}})});var _=r(d[8]);Object.keys(_).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return _[t]}})});var s=r(d[9]);Object.keys(s).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return s[t]}})});var j=r(d[10]);Object.keys(j).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return j[t]}})});var y=r(d[11]);Object.keys(y).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return y[t]}})});var O=r(d[12]);Object.keys(O).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return O[t]}})});var p=r(d[13]);Object.keys(p).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return p[t]}})});var v=r(d[14]);Object.keys(v).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return v[t]}})});var M=r(d[15]);Object.keys(M).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return M[t]}})});var P=r(d[16]);Object.keys(P).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return P[t]}})});var h=r(d[17]);Object.keys(h).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return h[t]}})});var k=r(d[18]);Object.keys(k).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return k[t]}})});var E=r(d[19]);Object.keys(E).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return E[t]}})});var q=r(d[20]);Object.keys(q).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return q[t]}})});var w=r(d[21]);Object.keys(w).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return w[t]}})});var x=r(d[22]);Object.keys(x).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return x[t]}})});var z=r(d[23]);Object.keys(z).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return z[t]}})});var A=r(d[24]);Object.keys(A).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return A[t]}})});var B=r(d[25]);Object.keys(B).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return B[t]}})});var C=r(d[26]);Object.keys(C).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return C[t]}})});var D=r(d[27]);Object.keys(D).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return D[t]}})});var F=r(d[28]);Object.keys(F).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return F[t]}})});var G=r(d[29]);Object.keys(G).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return G[t]}})});var H=r(d[30]);Object.keys(H).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return H[t]}})});var I=r(d[31]);Object.keys(I).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return I[t]}})});var J=r(d[32]);Object.keys(J).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return J[t]}})});var K=r(d[33]);Object.keys(K).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return K[t]}})});var L=r(d[34]);Object.keys(L).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return L[t]}})});var N=r(d[35]);Object.keys(N).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return N[t]}})});var Q=r(d[36]);Object.keys(Q).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return Q[t]}})});var R=r(d[37]);Object.keys(R).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return R[t]}})});var S=r(d[38]);Object.keys(S).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return S[t]}})});var T=r(d[39]);Object.keys(T).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return T[t]}})});var U=r(d[40]);Object.keys(U).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return U[t]}})});var V=r(d[41]);Object.keys(V).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return V[t]}})});var W=r(d[42]);Object.keys(W).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return W[t]}})});var X=r(d[43]);Object.keys(X).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return X[t]}})});var Y=r(d[44]);Object.keys(Y).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return Y[t]}})});var Z=r(d[45]);Object.keys(Z).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return Z[t]}})});var $=r(d[46]);Object.keys($).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return $[t]}})});var ee=r(d[47]);Object.keys(ee).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return ee[t]}})})},415,[416,460,462,465,472,474,485,487,489,491,493,495,497,499,454,501,503,506,508,510,512,514,516,518,520,522,524,526,528,530,532,534,536,538,540,542,544,481,546,548,550,552,554,556,558,563,565,457]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},416,[417]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Avatar=void 0;var t,n=(t=r(d[0]))&&t.__esModule?t:{default:t},s=r(d[1]),u=r(d[2]);function o(){return(o=Object.assign||function(t){for(var n=1;n4?"left":"center";return n.default.createElement(p,{width:b,height:b,justifyContent:x,alignItems:"center",size:o},n.default.createElement(c.Serif,{size:h,color:"black60",weight:"semibold",lineHeight:parseInt(b,10)},s))}return null};var p=(0,s.styledWrapper)(u.Flex)(o(),(0,l.color)("black10"),function(t){return z(t.size).diameter});e.InitialsHolder=p,p.displayName="InitialsHolder"},418,[57,419,424,454,457]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.color=void 0;var o=r(d[0]);e.color=function(t){return o.themeProps.colors[t]}},419,[420]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Theme=e.themeProps=e.breakpoints=void 0;var t,n=(t=r(d[0]))&&t.__esModule?t:{default:t},l=r(d[1]),o=r(d[2]),h=r(d[3]);var f={xl:1192,lg:1024,md:900,sm:768,xs:767};e.breakpoints=f;var c={borders:["1px solid","2px solid"],breakpoints:[f.sm,f.md,f.lg,f.xl],colors:{black100:"#000",black80:"#333",black60:"#666",black30:"#C2C2C2",black10:"#E5E5E5",black5:"#F8F8F8",purple100:"#6E1EFF",purple30:"#D3BBFF",purple5:"#F8F3FF",green100:"#0EDA83",red100:"#F7625A",yellow100:"#F1AF1B",yellow30:"#FAE7BA",yellow10:"#FDF7E8",white100:"#FFF"},fontFamily:o.fontFamily,mediaQueries:{xl:"(min-width: ".concat(f.xl,"px)"),lg:"(min-width: ".concat(f.lg,"px) and (max-width: ").concat(f.xl-1,"px)"),md:"(min-width: ".concat(f.md,"px) and (max-width: ").concat(f.lg-1,"px)"),sm:"(min-width: ".concat(f.sm,"px) and (max-width: ").concat(f.md-1,"px)"),xs:"(max-width: ".concat(f.sm-1,"px)"),hover:"not all and (pointer: coarse), not all and (-moz-touch-enabled: 1)"},grid:{breakpoints:f,container:{padding:0},row:{padding:0},col:{padding:0}},space:{.3:3,.5:5,1:10,2:20,3:30,4:40,6:60,9:90,12:120,18:180},typeSizes:{sans:{0:{fontSize:8,lineHeight:8},1:{fontSize:10,lineHeight:14},2:{fontSize:12,lineHeight:16},3:{fontSize:14,lineHeight:24},"3t":{fontSize:14,lineHeight:20},4:{fontSize:16,lineHeight:26},"4t":{fontSize:16,lineHeight:22},5:{fontSize:18,lineHeight:30},"5t":{fontSize:18,lineHeight:26},6:{fontSize:22,lineHeight:30},8:{fontSize:28,lineHeight:36},10:{fontSize:42,lineHeight:50},12:{fontSize:60,lineHeight:66},14:{fontSize:80,lineHeight:84},16:{fontSize:100,lineHeight:104}},serif:{1:{fontSize:12,lineHeight:16},2:{fontSize:14,lineHeight:18},3:{fontSize:16,lineHeight:24},"3t":{fontSize:16,lineHeight:20},4:{fontSize:18,lineHeight:26},"4t":{fontSize:18,lineHeight:22},5:{fontSize:22,lineHeight:32},"5t":{fontSize:22,lineHeight:28},6:{fontSize:26,lineHeight:32},8:{fontSize:32,lineHeight:38},10:{fontSize:44,lineHeight:50},12:{fontSize:60,lineHeight:70}},display:{2:{fontSize:10,lineHeight:12},"3t":{fontSize:12,lineHeight:16},"4t":{fontSize:14,lineHeight:18},"5t":{fontSize:16,lineHeight:20},6:{fontSize:18,lineHeight:22},8:{fontSize:22,lineHeight:24}}}};e.themeProps=c;var z=function(t){var o=t.children;if((0,l.isReactNative)())return o;var h=r(d[4]);return n.default.createElement(h.GridThemeProvider,{gridTheme:c.grid},o)},S=function(t){return n.default.createElement(h.ThemeProvider,{theme:c},n.default.createElement(z,null,t.children))};e.Theme=S,S.displayName="Theme"},420,[57,421,422,424,442]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isReactNative=function(){return"undefined"!=typeof navigator&&"ReactNative"===navigator.product}},421,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"fontFamily",{enumerable:!0,get:function(){return t.fontFamily}});var t=r(d[0])},422,[423]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.fontFamily=void 0;e.fontFamily={sans:{regular:"Unica77LL-Regular",italic:"Unica77LL-Italic",medium:"Unica77LL-Medium",mediumItalic:"Unica77LL-MediumItalic"},serif:{regular:"ReactNativeAGaramondPro-Regular",italic:"ReactNativeAGaramondPro-Italic",semibold:"ReactNativeAGaramondPro-Semibold"},display:{regular:"AvantGardeGothicITC"}}},423,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.styledWrapper=e.ThemeProvider=e.Image=e.Text=e.View=e.styled=void 0;var t=(function(t){if(t&&t.__esModule)return t;var o={};if(null!=t)for(var l in t)if(Object.prototype.hasOwnProperty.call(t,l)){var f=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(t,l):{};f.get||f.set?Object.defineProperty(o,l,f):o[l]=t[l]}return o.default=t,o})(r(d[0]));var o={Image:t.default.Image,Text:t.default.Text,View:t.default.View};e.styled=o;e.View="View";e.Text="Text";e.Image="Image";var l=t.ThemeProvider;e.ThemeProvider=l;var f=t.default;e.styledWrapper=f},424,[425]); -__d(function(e,t,r,n,o,i,s){'use strict';function a(e){return e&&'object'==typeof e&&'default'in e?e.default:e}Object.defineProperty(i,'__esModule',{value:!0});var c=a(t(s[0])),u=a(t(s[1])),h=t(s[2]),p=a(h),l=a(t(s[3])),f=t(s[4]),d=a(t(s[5])),v=a(t(s[6])),m=a(t(s[7])),y=a(t(s[8]));function w(e){for(var t,r=0|e.length,n=0|r,o=0;r>=4;)t=1540483477*(65535&(t=255&e.charCodeAt(o)|(255&e.charCodeAt(++o))<<8|(255&e.charCodeAt(++o))<<16|(255&e.charCodeAt(++o))<<24))+((1540483477*(t>>>16)&65535)<<16),n=1540483477*(65535&n)+((1540483477*(n>>>16)&65535)<<16)^(t=1540483477*(65535&(t^=t>>>24))+((1540483477*(t>>>16)&65535)<<16)),r-=4,++o;switch(r){case 3:n^=(255&e.charCodeAt(o+2))<<16;case 2:n^=(255&e.charCodeAt(o+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(o)))+((1540483477*(n>>>16)&65535)<<16)}return((n=1540483477*(65535&(n^=n>>>13))+((1540483477*(n>>>16)&65535)<<16))^n>>>15)>>>0}function g(e){return e.displayName||e.name||'Component'}function b(e){return'function'==typeof e}var k="function"==typeof Symbol&&"symbol"==typeof("function"==typeof Symbol?Symbol.iterator:"@@iterator")?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==("function"==typeof Symbol?Symbol.prototype:"@@prototype")?"symbol":typeof e},C=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},S=(function(){function e(e,t){for(var r=0;r=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r},O=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},N=function(e){return'object'===(void 0===e?'undefined':k(e))&&e.constructor===Object};function E(e){return e&&'string'==typeof e.styledComponentId}var I='undefined'!=typeof process&&process.env.SC_ATTR||'data-styled',j='undefined'!=typeof window&&'HTMLElement'in window,T='boolean'==typeof SC_DISABLE_SPEEDY&&SC_DISABLE_SPEEDY||!1,P=(function(e){function t(r){C(this,t);for(var n=arguments.length,o=Array(n>1?n-1:0),i=1;i0&&-1!==r.slice(0,t).indexOf(void 0)&&void 0!==r.slice(t-(void 0).length,t)?".undefined":e};B.use([function(e,t,r){2===e&&r.length&&r[0].lastIndexOf(void 0)>0&&(r[0]=r[0].replace(void 0,L))},V,D]),_.use([V,D]);var z=function(){return'undefined'!=typeof __webpack_nonce__?__webpack_nonce__:null},$=function(e,t,r){r&&((e[t]||(e[t]=Object.create(null)))[r]=!0)},W=function(e,t){e[t]=Object.create(null)},H=function(e){return function(t,r){return void 0!==e[t]&&e[t][r]}},J=function(e){var t='';for(var r in e)t+=Object.keys(e[r]).join(' ')+' ';return t.trim()},Y=function(e){var t=Object.create(null);for(var r in e)t[r]=x({},e[r]);return t},q=function(e){if(e.sheet)return e.sheet;for(var t=document.styleSheets.length,r=0;rn;o-=1)e.deleteRule(o)},G=function(e){return'\n/* sc-component-id: '+e+' */\n'},Q=function(e,t){for(var r=0,n=0;n<=t;n+=1)r+=e[n];return r},X=function(e,t,r){var n=document.createElement('style');n.setAttribute(I,''),n.setAttribute("data-styled-version","4.2.0");var o=z();if(o&&n.setAttribute('nonce',o),n.appendChild(document.createTextNode('')),e&&!t)e.appendChild(n);else{if(!t||!e||!t.parentNode)throw new P(6);t.parentNode.insertBefore(n,r?t:t.nextSibling)}return n},ee=function(e,t){return function(r){var n=z();return''}},te=function(e,t){return function(){var r,n=((r={})[I]=J(t),r["data-styled-version"]="4.2.0",r),o=z();return o&&(n.nonce=o),p.createElement('style',x({},n,{dangerouslySetInnerHTML:{__html:e()}}))}},re=function(e){return function(){return Object.keys(e)}},ne=function(e,t){var r=Object.create(null),n=Object.create(null),o=[],i=void 0!==t,s=!1,a=function(e){var t=n[e];return void 0!==t?t:(n[e]=o.length,o.push(0),W(r,e),n[e])},c=function(){var t=q(e).cssRules,r='';for(var i in n){r+=G(i);for(var s=n[i],a=Q(o,s),c=a-o[s];c0&&(s=!0,t().insertRules(n+'-import',d)),o[h]+=f,$(r,n,u)},removeRules:function(a){var c=n[a];if(void 0!==c){var u=o[c],h=q(e),p=Q(o,c)-1;Z(h,p,u),o[c]=0,W(r,a),i&&s&&t().removeRules(a+'-import')}},sealed:!1,styleTag:e,toElement:te(c,r),toHTML:ee(c,r)}},oe=function(e){return document.createTextNode(G(e))},ie=function(e,t){var r=Object.create(null),n=Object.create(null),o=void 0!==t,i=!1,s=function(t){var o=n[t];return void 0!==o?o:(n[t]=oe(t),e.appendChild(n[t]),r[t]=Object.create(null),n[t])},a=function(){var e='';for(var t in n)e+=n[t].data;return e};return{clone:function(){throw new P(5)},css:a,getIds:re(n),hasNameForId:H(r),insertMarker:s,insertRules:function(e,n,a){for(var c=s(e),u=[],h=n.length,p=0;p0&&(i=!0,t().insertRules(e+'-import',u))},removeRules:function(s){var a=n[s];if(void 0!==a){var c=oe(s);e.replaceChild(c,a),n[s]=c,W(r,s),o&&i&&t().removeRules(s+'-import')}},sealed:!1,styleTag:e,toElement:te(a,r),toHTML:ee(a,r)}},se=function e(t,r){var n=void 0===t?Object.create(null):t,o=void 0===r?Object.create(null):r,i=function(e){var t=o[e];return void 0!==t?t:o[e]=['']},s=function(){var e='';for(var t in o){var r=o[t][0];r&&(e+=G(t)+r)}return e};return{clone:function(){var t=Y(n),r=Object.create(null);for(var i in o)r[i]=[o[i][0]];return e(t,r)},css:s,getIds:re(o),hasNameForId:H(n),insertMarker:i,insertRules:function(e,t,r){i(e)[0]+=t.join(' '),$(n,e,r)},removeRules:function(e){var t=o[e];void 0!==t&&(t[0]='',W(n,e))},sealed:!1,styleTag:null,toElement:te(s,n),toHTML:ee(s,n)}},ae=function(e,t,r,n,o){if(j&&!r){var i=X(e,t,n);return T?ie(i,o):ne(i,o)}return se()},ce=function(e,t,r){for(var n=0,o=r.length;n0&&void 0!==arguments[0]?arguments[0]:j?document.head:null,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];C(this,e),this.getImportRuleTag=function(){var e=t.importRuleTag;if(void 0!==e)return e;var r=t.tags[0];return t.importRuleTag=ae(t.target,r?r.styleTag:null,t.forceServer,!0)},pe+=1,this.id=pe,this.forceServer=n,this.target=n?null:r,this.tagMap={},this.deferred={},this.rehydratedNames={},this.ignoreRehydratedNames={},this.tags=[],this.capacity=1,this.clones=[]}e.prototype.rehydrate=function(){if(!j||this.forceServer)return this;var e=[],t=[],r=!1,n=document.querySelectorAll('style['+I+"][data-styled-version=\"4.2.0\"]"),o=n.length;if(!o)return this;for(var i=0;i0&&void 0!==arguments[0]&&arguments[0];le=new e(void 0,t).rehydrate()},e.prototype.clone=function(){var t=new e(this.target,this.forceServer);return this.clones.push(t),t.tags=this.tags.map(function(e){for(var r=e.getIds(),n=e.clone(),o=0;o1&&void 0!==arguments[1]?arguments[1]:{},r=[],n=e.css.valueOf(),o=t.ignoreErrors,i=void 0,s=void 0,a=void 0,c=void 0,u=void 0,h=void 0,p=void 0,l=void 0,f=void 0,d=void 0,v=void 0,m=void 0,y=void 0,w=n.length,g=-1,b=1,k=0;function C(t){throw e.error('Unclosed '+t,b,k-g)}for(;k0?(l=b+u,f=s-c[u].length):(l=b,f=g),r.push(['string',n.slice(k,s+1),b,k-g,l,s-f]),g=f,b=l,k=s;break;case De:Ve.lastIndex=k+1,Ve.test(n),s=0===Ve.lastIndex?n.length-1:Ve.lastIndex-2,r.push(['at-word',n.slice(k,s+1),b,k-g,b,s-g]),k=s;break;case Se:for(s=k,p=!0;n.charCodeAt(s+1)===Se;)s+=1,p=!p;i=n.charCodeAt(s+1),p&&i!==xe&&i!==Re&&i!==Ae&&i!==Ne&&i!==Ee&&i!==Oe&&(s+=1),r.push(['word',n.slice(k,s+1),b,k-g,b,s-g]),k=s;break;default:i===xe&&n.charCodeAt(k+1)===Be?(0===(s=n.indexOf('*/',k+2)+1)&&(o?s=n.length:C('comment')),(u=(c=(h=n.slice(k,s+1)).split('\n')).length-1)>0?(l=b+u,f=s-c[u].length):(l=b,f=g),r.push(['comment',h,b,k-g,l,s-f]),g=f,b=l,k=s):(Le.lastIndex=k+1,Le.test(n),s=0===Le.lastIndex?n.length-1:Le.lastIndex-2,r.push(['word',n.slice(k,s+1),b,k-g,b,s-g]),k=s)}k++}return r}var We={brackets:[36,39],string:[31,39],'at-word':[31,39],comment:[90,39],'{':[32,39],'}':[32,39],':':[1,22],';':[1,22],'(':[1,22],')':[1,22]};function He(e){return'\x1b['+e+'m'}function Je(e){var t=[];return $e(new vt(e),{ignoreErrors:!0}).forEach(function(e){var r=We[e[0]];r?t.push(e[1].split(/\r?\n/).map(function(e){return He(r[0])+e+He(r[1])}).join('\n')):t.push(e[1])}),t.join('')}var Ye=(function(){function e(t,r,n,o,i,s){C(this,e),this.name='CssSyntaxError',this.reason=t,i&&(this.file=i),o&&(this.source=o),s&&(this.plugin=s),void 0!==r&&void 0!==n&&(this.line=r,this.column=n),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,e)}return e.prototype.setMessage=function(){this.message=this.plugin?this.plugin+': ':'',this.message+=this.file?this.file:'',void 0!==this.line&&(this.message+=':'+this.line+':'+this.column),this.message+=': '+this.reason},e.prototype.showSourceCode=function(e){var t=this;if(!this.source)return'';var r=this.source;void 0===e&&(e=d),e&&(r=Je(r));var n=r.split(/\r?\n/),o=Math.max(this.line-3,0),i=Math.min(this.line+2,n.length),s=String(i).length;return n.slice(o,i).map(function(e,r){var n=o+1+r,i=' '+(' '+n).slice(-s)+' | ';return n===t.line?'>'+i+e+'\n '+(i.replace(/\d/g,' ')+e.slice(0,t.column-1).replace(/[^\t]/g,' '))+'^':' '+i+e}).join('\n')},e.prototype.toString=function(){var e=this.showSourceCode();return e&&(e='\n\n'+e+'\n'),this.name+': '+this.message+e},S(e,[{key:'generated',get:function(){return be('CssSyntaxError#generated is deprecated. Use input instead.'),this.input}}]),e})(),qe={colon:': ',indent:' ',beforeDecl:'\n',beforeRule:'\n',beforeOpen:' ',beforeClose:'\n',beforeComment:'\n',after:'\n',emptyBody:'',commentLeft:' ',commentRight:' '};var Ke=(function(){function e(t){C(this,e),this.builder=t}return e.prototype.stringify=function(e,t){this[e.type](e,t)},e.prototype.root=function(e){this.body(e),e.raws.after&&this.builder(e.raws.after)},e.prototype.comment=function(e){var t=this.raw(e,'left','commentLeft'),r=this.raw(e,'right','commentRight');this.builder('/*'+t+e.text+r+'*/',e)},e.prototype.decl=function(e,t){var r=this.raw(e,'between','colon'),n=e.prop+r+this.rawValue(e,'value');e.important&&(n+=e.raws.important||' !important'),t&&(n+=';'),this.builder(n,e)},e.prototype.rule=function(e){this.block(e,this.rawValue(e,'selector'))},e.prototype.atrule=function(e,t){var r='@'+e.name,n=e.params?this.rawValue(e,'params'):'';if(void 0!==e.raws.afterName?r+=e.raws.afterName:n&&(r+=' '),e.nodes)this.block(e,r+n);else{var o=(e.raws.between||'')+(t?';':'');this.builder(r+n+o,e)}},e.prototype.body=function(e){for(var t=e.nodes.length-1;t>0&&'comment'===e.nodes[t].type;)t-=1;for(var r=this.raw(e,'semicolon'),n=0;n0&&void 0!==e.raws.after)return-1!==(t=e.raws.after).indexOf('\n')&&(t=t.replace(/[^\n]+$/,'')),!1}),t},e.prototype.rawBeforeOpen=function(e){var t=void 0;return e.walk(function(e){if('decl'!==e.type&&void 0!==(t=e.raws.between))return!1}),t},e.prototype.rawColon=function(e){var t=void 0;return e.walkDecls(function(e){if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,''),!1}),t},e.prototype.beforeAfter=function(e,t){var r=void 0;r='decl'===e.type?this.raw(e,null,'beforeDecl'):'comment'===e.type?this.raw(e,null,'beforeComment'):'before'===t?this.raw(e,null,'beforeRule'):this.raw(e,null,'beforeClose');for(var n=e.parent,o=0;n&&'root'!==n.type;)o+=1,n=n.parent;if(-1!==r.indexOf('\n')){var i=this.raw(e,null,'indent');if(i.length)for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:{};for(var r in C(this,e),this.raws={},t)this[r]=t[r]}return e.prototype.error=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.source){var r=this.positionBy(t);return this.source.input.error(e,r.line,r.column,t)}return new Ye(e)},e.prototype.warn=function(e,t,r){var n={node:this};for(var o in r)n[o]=r[o];return e.warn(t,n)},e.prototype.remove=function(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this},e.prototype.toString=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Ze;e.stringify&&(e=e.stringify);var t='';return e(this,function(e){t+=e}),t},e.prototype.clone=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Ge(this);for(var r in e)t[r]=e[r];return t},e.prototype.cloneBefore=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.clone(e);return this.parent.insertBefore(this,t),t},e.prototype.cloneAfter=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.clone(e);return this.parent.insertAfter(this,t),t},e.prototype.replaceWith=function(){var e=this;if(this.parent){for(var t=arguments.length,r=Array(t),n=0;n0&&this.unclosedBracket(o),t&&n){for(;this.pos>s&&('space'===(e=this.tokens[this.pos][0])||'comment'===e);)this.pos-=1;this.decl(this.tokens.slice(s,this.pos+1))}else this.unknownWord(s)},e.prototype.rule=function(e){e.pop();var t=new at;this.init(t,e[0][2],e[0][3]),t.raws.between=this.spacesFromEnd(e),this.raw(t,'selector',e),this.current=t},e.prototype.decl=function(e){var t=new Xe;this.init(t);var r=e[e.length-1];for(';'===r[0]&&(this.semicolon=!0,e.pop()),r[4]?t.source.end={line:r[4],column:r[5]}:t.source.end={line:r[2],column:r[3]};'word'!==e[0][0];)t.raws.before+=e.shift()[1];for(t.source.start={line:e[0][2],column:e[0][3]},t.prop='';e.length;){var n=e[0][0];if(':'===n||'space'===n||'comment'===n)break;t.prop+=e.shift()[1]}t.raws.between='';for(var o=void 0;e.length;){if(':'===(o=e.shift())[0]){t.raws.between+=o[1];break}t.raws.between+=o[1]}'_'!==t.prop[0]&&'*'!==t.prop[0]||(t.raws.before+=t.prop[0],t.prop=t.prop.slice(1)),t.raws.between+=this.spacesFromStart(e),this.precheckMissedSemicolon(e);for(var i=e.length-1;i>0;i--){if('!important'===(o=e[i])[1]){t.important=!0;var s=this.stringFrom(e,i);' !important'!==(s=this.spacesFromEnd(e)+s)&&(t.raws.important=s);break}if('important'===o[1]){for(var a=e.slice(0),c='',u=i;u>0;u--){var h=a[u][0];if(0===c.trim().indexOf('!')&&'space'!==h)break;c=a.pop()[1]+c}0===c.trim().indexOf('!')&&(t.important=!0,t.raws.important=c,e=a)}if('space'!==o[0]&&'comment'!==o[0])break}this.raw(t,'value',e),-1!==t.value.indexOf(':')&&this.checkMissedSemicolon(e)},e.prototype.atrule=function(e){var t=new it;t.name=e[1].slice(1),''===t.name&&this.unnamedAtrule(t,e),this.init(t,e[2],e[3]);var r=!1,n=!1,o=[];for(this.pos+=1;this.pos=0&&('space'===(n=e[o])[0]||2!==(r+=1));o--);throw this.input.error('Missed semicolon',n[2],n[3])}},e})();function rt(e,t){if(t&&t.safe)throw new Error("Option safe was removed. Use parser: require(\"postcss-safe-parser\")");var r=new vt(e,t),n=new tt(r);try{n.tokenize(),n.loop()}catch(e){throw'CssSyntaxError'===e.name&&t&&t.from&&(/\.scss$/i.test(t.from)?e.message+="\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser":/\.less$/i.test(t.from)&&(e.message+="\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser")),e}return n.root}function nt(e){return e.map(function(e){return e.nodes&&(e.nodes=nt(e.nodes)),delete e.source,e})}var ot=(function(e){function t(){return C(this,t),O(this,e.apply(this,arguments))}return A(t,e),t.prototype.push=function(e){return e.parent=this,this.nodes.push(e),this},t.prototype.each=function(e){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;var t=this.lastEach;if(this.indexes[t]=0,this.nodes){for(var r=void 0,n=void 0;this.indexes[t]=e&&(this.indexes[r]=t-1);return this},t.prototype.removeAll=function(){return this.nodes.forEach(function(e){return e.parent=void 0}),this.nodes=[],this},t.prototype.replaceValues=function(e,t,r){return r||(r=t,t={}),this.walkDecls(function(n){t.props&&-1===t.props.indexOf(n.prop)||t.fast&&-1===n.value.indexOf(t.fast)||(n.value=n.value.replace(e,r))}),this},t.prototype.every=function(e){return this.nodes.every(e)},t.prototype.some=function(e){return this.nodes.some(e)},t.prototype.index=function(e){return'number'==typeof e?e:this.nodes.indexOf(e)},t.prototype.normalize=function(e,t){var r=this;if('string'==typeof e)e=nt(rt(e).nodes);else if(!Array.isArray(e))if('root'===e.type)e=e.nodes;else if(e.type)e=[e];else if(e.prop){if(void 0===e.value)throw new Error('Value field is missed in node creation');'string'!=typeof e.value&&(e.value=String(e.value)),e=[new Xe(e)]}else if(e.selector)e=[new at(e)];else if(e.name)e=[new it(e)];else{if(!e.text)throw new Error('Unknown node type in node creation');e=[new et(e)]}return e.map(function(e){return void 0===e.raws&&(e=r.rebuild(e)),e.parent&&(e=e.clone()),void 0===e.raws.before&&t&&void 0!==t.raws.before&&(e.raws.before=t.raws.before.replace(/[^\s]/g,'')),e.parent=r,e})},t.prototype.rebuild=function(e,t){var r=this,n=void 0;for(var o in'root'===e.type?n=new ft:'atrule'===e.type?n=new it:'rule'===e.type?n=new at:'decl'===e.type?n=new Xe:'comment'===e.type&&(n=new et),e)'nodes'===o?n.nodes=e.nodes.map(function(e){return r.rebuild(e,n)}):'parent'===o&&t?n.parent=t:e.hasOwnProperty(o)&&(n[o]=e[o]);return n},t.prototype.eachInside=function(e){return be("Container#eachInside is deprecated. Use Container#walk instead."),this.walk(e)},t.prototype.eachDecl=function(e,t){return be("Container#eachDecl is deprecated. Use Container#walkDecls instead."),this.walkDecls(e,t)},t.prototype.eachRule=function(e,t){return be("Container#eachRule is deprecated. Use Container#walkRules instead."),this.walkRules(e,t)},t.prototype.eachAtRule=function(e,t){return be("Container#eachAtRule is deprecated. Use Container#walkAtRules instead."),this.walkAtRules(e,t)},t.prototype.eachComment=function(e){return be("Container#eachComment is deprecated. Use Container#walkComments instead."),this.walkComments(e)},S(t,[{key:'first',get:function(){if(this.nodes)return this.nodes[0]}},{key:'last',get:function(){if(this.nodes)return this.nodes[this.nodes.length-1]}},{key:'semicolon',get:function(){return be('Node#semicolon is deprecated. Use Node#raws.semicolon'),this.raws.semicolon},set:function(e){be('Node#semicolon is deprecated. Use Node#raws.semicolon'),this.raws.semicolon=e}},{key:'after',get:function(){return be('Node#after is deprecated. Use Node#raws.after'),this.raws.after},set:function(e){be('Node#after is deprecated. Use Node#raws.after'),this.raws.after=e}}]),t})(Qe),it=(function(e){function t(r){C(this,t);var n=O(this,e.call(this,r));return n.type='atrule',n}return A(t,e),t.prototype.append=function(){var t;this.nodes||(this.nodes=[]);for(var r=arguments.length,n=Array(r),o=0;o0&&(s-=1):0===s&&-1!==t.indexOf(h)&&(i=!0),i?(''!==o&&n.push(o.trim()),o='',i=!1):o+=h}return(r||''!==o)&&n.push(o.trim()),n},space:function(e){return st.split(e,[' ','\n','\t'])},comma:function(e){return st.split(e,[','],!0)}},at=(function(e){function t(r){C(this,t);var n=O(this,e.call(this,r));return n.type='rule',n.nodes||(n.nodes=[]),n}return A(t,e),S(t,[{key:'selectors',get:function(){return st.comma(this.selector)},set:function(e){var t=this.selector?this.selector.match(/,\s*/):null,r=t?t[0]:','+this.raw('between','beforeOpen');this.selector=e.join(r)}},{key:'_selector',get:function(){return be('Rule#_selector is deprecated. Use Rule#raws.selector'),this.raws.selector},set:function(e){be('Rule#_selector is deprecated. Use Rule#raws.selector'),this.raws.selector=e}}]),t})(ot),ct=(function(){function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(C(this,e),this.type='warning',this.text=t,r.node&&r.node.source){var n=r.node.positionBy(r);this.line=n.line,this.column=n.column}for(var o in r)this[o]=r[o]}return e.prototype.toString=function(){return this.node?this.node.error(this.text,{plugin:this.plugin,index:this.index,word:this.word}).message:this.plugin?this.plugin+': '+this.text:this.text},e})(),ut=(function(){function e(t,r,n){C(this,e),this.processor=t,this.messages=[],this.root=r,this.opts=n,this.css=void 0,this.map=void 0}return e.prototype.toString=function(){return this.css},e.prototype.warn=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);var r=new ct(e,t);return this.messages.push(r),r},e.prototype.warnings=function(){return this.messages.filter(function(e){return'warning'===e.type})},S(e,[{key:'content',get:function(){return this.css}}]),e})();function ht(e){return'object'===(void 0===e?'undefined':k(e))&&'function'==typeof e.then}var pt=(function(){function e(t,r,n){C(this,e),this.stringified=!1,this.processed=!1;var o=void 0;if('object'===(void 0===r?'undefined':k(r))&&'root'===r.type)o=r;else if(r instanceof e||r instanceof ut)o=r.root,r.map&&(void 0===n.map&&(n.map={}),n.map.inline||(n.map.inline=!1),n.map.prev=r.map);else{var i=rt;n.syntax&&(i=n.syntax.parse),n.parser&&(i=n.parser),i.parse&&(i=i.parse);try{o=i(r,n)}catch(e){this.error=e}}this.result=new ut(t,o,n)}return e.prototype.warnings=function(){return this.sync().warnings()},e.prototype.toString=function(){return this.css},e.prototype.then=function(e,t){return this.async().then(e,t)},e.prototype.catch=function(e){return this.async().catch(e)},e.prototype.handleError=function(e,t){try{if(this.error=e,'CssSyntaxError'!==e.name||e.plugin){if(t.postcssVersion){var r=t.postcssPlugin,n=t.postcssVersion,o=this.result.processor.version,i=n.split('.'),s=o.split('.');(i[0]!==s[0]||parseInt(i[1])>parseInt(s[1]))&&be("Your current PostCSS version is "+o+', but '+r+" uses "+n+". Perhaps this is the source of the error below.")}}else e.plugin=t.postcssPlugin,e.setMessage()}catch(e){console&&console.error&&console.error(e)}},e.prototype.asyncTick=function(e,t){var r=this;if(this.plugin>=this.processor.plugins.length)return this.processed=!0,e();try{var n=this.processor.plugins[this.plugin],o=this.run(n);this.plugin+=1,ht(o)?o.then(function(){r.asyncTick(e,t)}).catch(function(e){r.handleError(e,n),r.processed=!0,t(e)}):this.asyncTick(e,t)}catch(e){this.processed=!0,t(e)}},e.prototype.async=function(){var e=this;return this.processed?new Promise(function(t,r){e.error?r(e.error):t(e.stringify())}):this.processing?this.processing:(this.processing=new Promise(function(t,r){if(e.error)return r(e.error);e.plugin=0,e.asyncTick(t,r)}).then(function(){return e.processed=!0,e.stringify()}),this.processing)},e.prototype.sync=function(){var e=this;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw new Error('Use process(css).then(cb) to work with async plugins');if(this.error)throw this.error;return this.result.processor.plugins.forEach(function(t){if(ht(e.run(t)))throw new Error('Use process(css).then(cb) to work with async plugins')}),this.result},e.prototype.run=function(e){this.result.lastPlugin=e;try{return e(this.result.root,this.result)}catch(t){throw this.handleError(t,e),t}},e.prototype.stringify=function(){if(this.stringified)return this.result;this.stringified=!0,this.sync();var e=this.result.opts,t=Ze;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);var r='';return t(this.root,function(e){r+=e}),this.result.css=r,this.result},S(e,[{key:'processor',get:function(){return this.result.processor}},{key:'opts',get:function(){return this.result.opts}},{key:'css',get:function(){return this.stringify().css}},{key:'content',get:function(){return this.stringify().content}},{key:'map',get:function(){return this.stringify().map}},{key:'root',get:function(){return this.sync().root}},{key:'messages',get:function(){return this.sync().messages}}]),e})(),lt=(function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];C(this,e),this.version='5.2.0',this.plugins=this.normalize(t)}return e.prototype.use=function(e){return this.plugins=this.plugins.concat(this.normalize([e])),this},e.prototype.process=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new pt(this,e,t)},e.prototype.normalize=function(e){var t=[];return e.forEach(function(e){if(e.postcss&&(e=e.postcss),'object'===(void 0===e?'undefined':k(e))&&Array.isArray(e.plugins))t=t.concat(e.plugins);else{if('function'!=typeof e)throw new Error(e+' is not a PostCSS plugin');t.push(e)}}),t},e})(),ft=(function(e){function t(r){C(this,t);var n=O(this,e.call(this,r));return n.type='root',n.nodes||(n.nodes=[]),n}return A(t,e),t.prototype.removeChild=function(t){return 0===(t=this.index(t))&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[t].raws.before),e.prototype.removeChild.call(this,t)},t.prototype.normalize=function(t,r,n){var o=e.prototype.normalize.call(this,t);return r&&('prepend'===n?this.nodes.length>1?r.raws.before=this.nodes[1].raws.before:delete r.raws.before:this.first!==r&&o.forEach(function(e){e.raws.before=r.raws.before})),o},t.prototype.toResult=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new pt(new lt,this,e).stringify()},t.prototype.remove=function(e){be('Root#remove is deprecated. Use Root#removeChild'),this.removeChild(e)},t.prototype.prevMap=function(){return be('Root#prevMap is deprecated. Use Root#source.input.map'),this.source.input.map},t})(ot),dt=0,vt=(function(){function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};C(this,e),this.css=t.toString(),"\ufeff"!==this.css[0]&&"\ufffe"!==this.css[0]||(this.css=this.css.slice(1)),r.from&&(/^\w+:\/\//.test(r.from)?this.file=r.from:this.file=path.resolve(r.from)),this.file||(dt+=1,this.id=''),this.map&&(this.map.file=this.from)}return e.prototype.error=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=void 0,i=this.origin(t,r);return(o=i?new Ye(e,i.line,i.column,i.source,i.file,n.plugin):new Ye(e,t,r,this.css,this.file,n.plugin)).input={line:t,column:r,source:this.css},this.file&&(o.input.file=this.file),o},e.prototype.origin=function(e,t){if(!this.map)return!1;var r=this.map.consumer(),n=r.originalPositionFor({line:e,column:t});if(!n.source)return!1;var o={file:this.mapResolve(n.source),line:n.line,column:n.column},i=r.sourceContentFor(n.source);return i&&(o.source=i),o},e.prototype.mapResolve=function(e){return/^\w+:\/\//.test(e)?e:path.resolve(this.map.consumer().sourceRoot||'.',e)},S(e,[{key:'from',get:function(){return this.file||this.id}}]),e})(),mt=(function(e){function t(){return C(this,t),O(this,e.apply(this,arguments))}return A(t,e),t.prototype.tokenize=function(){this.tokens=$e(this.input,{ignoreErrors:!0})},t.prototype.comment=function(e){var t=new et;this.init(t,e[2],e[3]),t.source.end={line:e[4],column:e[5]};var r=e[1].slice(2);if('*/'===r.slice(-2)&&(r=r.slice(0,-2)),/^\s*$/.test(r))t.text='',t.raws.left=r,t.raws.right='';else{var n=r.match(/^(\s*)([^]*[^\s])(\s*)$/);t.text=n[2],t.raws.left=n[1],t.raws.right=n[3]}},t.prototype.unclosedBracket=function(){},t.prototype.unknownWord=function(e){var t=this.tokens.slice(e,this.pos+1);this.spaces+=t.map(function(e){return e[1]}).join('')},t.prototype.unexpectedClose=function(){this.current.raws.after+='}'},t.prototype.doubleColon=function(){},t.prototype.unnamedAtrule=function(e){e.name=''},t.prototype.precheckMissedSemicolon=function(e){var t=this.colon(e);if(!1!==t){var r=void 0;for(r=t-1;r>=0&&'word'!==e[r][0];r--);for(r-=1;r>=0;r--)if('space'!==e[r][0]){r+=1;break}var n=e.splice(r,e.length-r);this.decl(n)}},t.prototype.checkMissedSemicolon=function(){},t.prototype.endFile=function(){for(this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||'')+this.spaces;this.current.parent;)this.current=this.current.parent,this.current.raws.after=''},t})(tt);var yt,wt={},gt=Object.freeze([]),bt=Object.freeze({}),kt=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:bt,n=!!r&&e.theme===r.theme;return e.theme&&!n?e.theme:t||r.theme};function Ct(e){return'string'==typeof e&&!0}function St(e){return Ct(e)?'styled.'+e:'Styled('+g(e)+')'}var xt={childContextTypes:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDerivedStateFromProps:!0,propTypes:!0,type:!0},At={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},Rt=((yt={})[f.ForwardRef]={$$typeof:!0,render:!0},yt),Ot=Object.defineProperty,Nt=Object.getOwnPropertyNames,Et=Object.getOwnPropertySymbols,It=void 0===Et?function(){return[]}:Et,jt=Object.getOwnPropertyDescriptor,Tt=Object.getPrototypeOf,Pt=Object.prototype,Ut=Array.prototype;function Mt(e,t,r){if('string'!=typeof t){var n=Tt(t);n&&n!==Pt&&Mt(e,n,r);for(var o=Ut.concat(Nt(t),It(t)),i=Rt[e.$$typeof]||xt,s=Rt[t.$$typeof]||xt,a=o.length,c=void 0,u=void 0;a--;)if(u=o[a],!(At[u]||r&&r[u]||s&&s[u]||i&&i[u])&&(c=jt(t,u)))try{Ot(e,u,c)}catch(e){}return e}return e}var _t=h.createContext(),Bt=_t.Consumer,Ft=(function(e){function t(r){C(this,t);var n=O(this,e.call(this,r));return n.getContext=m(n.getContext.bind(n)),n.renderInner=n.renderInner.bind(n),n}return A(t,e),t.prototype.render=function(){return this.props.children?p.createElement(_t.Consumer,null,this.renderInner):null},t.prototype.renderInner=function(e){var t=this.getContext(this.props.theme,e);return p.createElement(_t.Provider,{value:t},p.Children.only(this.props.children))},t.prototype.getTheme=function(e,t){if(b(e))return e(t);if(null===e||Array.isArray(e)||'object'!==(void 0===e?'undefined':k(e)))throw new P(8);return x({},t,e)},t.prototype.getContext=function(e,t){return this.getTheme(e,t)},t})(h.Component),Dt=(function(e){function t(r){C(this,t);var n=O(this,e.call(this,r));return n.attrs={},n}return A(t,e),t.prototype.render=function(){var e=this;return p.createElement(Bt,null,function(t){var r=e.props,n=r.as,o=r.forwardedComponent,i=r.forwardedRef,s=(r.innerRef,r.style),a=void 0===s?[]:s,c=R(r,['as','forwardedComponent','forwardedRef','innerRef','style']),u=o.defaultProps,p=(o.displayName,o.target),l=void 0;if(void 0!==t){var f=kt(e.props,t,u);l=e.generateAndInjectStyles(f,e.props)}else l=e.generateAndInjectStyles(t||bt,e.props);var d=x({},e.attrs,c,{style:[l].concat(a)});return i&&(d.ref=i),h.createElement(n||p,d)})},t.prototype.buildExecutionContext=function(e,t,r){var n=this,o=x({},t,{theme:e});return r.length?(this.attrs={},r.forEach(function(e){var t,r=e,i=!1,s=void 0,a=void 0;for(a in b(r)&&(r=r(o),i=!0),r)s=r[a],i||!b(s)||(t=s)&&t.prototype&&t.prototype.isReactComponent||E(s)||(s=s(o)),n.attrs[a]=s,o[a]=s}),o):o},t.prototype.generateAndInjectStyles=function(e,t){var r=t.forwardedComponent.inlineStyle,n=this.buildExecutionContext(e,t,t.forwardedComponent.attrs);return r.generateStyleObject(n)},t.prototype.setNativeProps=function(e){void 0!==this.root&&this.root.setNativeProps(e)},t})(h.Component),Vt=function(e,t){for(var r=[e[0]],n=0,o=t.length;n1?t-1:0),n=1;n2&&void 0!==arguments[2]?arguments[2]:bt;if(!f.isValidElementType(t))throw new P(1,String(t));var n=function(){return e(t,r,Lt.apply(void 0,arguments))};return n.withConfig=function(n){return zt(e,t,x({},r,n))},n.attrs=function(n){return zt(e,t,x({},r,{attrs:Array.prototype.concat(r.attrs,n).filter(Boolean)}))},n}var $t,Wt=(function(e){return function t(r,n,o){var i=n.attrs,s=void 0===i?gt:i,a=n.displayName,c=void 0===a?St(r):a,u=n.ParentComponent,h=void 0===u?Dt:u,l=!Ct(r),f=E(r),d=p.forwardRef(function(e,t){return p.createElement(h,x({},e,{forwardedComponent:d,forwardedRef:t}))}),v=f&&r.attrs?Array.prototype.concat(r.attrs,s).filter(Boolean):s;return d.attrs=v,d.displayName=c,d.inlineStyle=new e(f?r.inlineStyle.rules.concat(o):o),d.styledComponentId='StyledNativeComponent',d.target=f?r.target:r,d.withComponent=function(e){n.displayName,n.componentId;var r=R(n,['displayName','componentId']),i=x({},r,{attrs:v,ParentComponent:h});return t(e,i,o)},l&&Mt(d,r,{attrs:!0,displayName:!0,inlineStyle:!0,styledComponentId:!0,target:!0,withComponent:!0}),d}})(($t=y.StyleSheet,(function(){function e(t){C(this,e),this.rules=t}return e.prototype.generateStyleObject=function(e){var t,r,n,o=we(this.rules,e).join(''),i=w(o);if(!wt[i]){var s=[];(r=new vt(o,t),(n=new mt(r)).tokenize(),n.loop(),n.root).each(function(e){'decl'===e.type&&s.push([e.prop,e.value])});var a=v(s,['borderRadius','borderWidth','borderColor','borderStyle']),c=$t.create({generated:a});wt[i]=c.generated}return wt[i]},e})())),Ht=function(e){return zt(Wt,e)};'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'.split(/\s+/m).forEach(function(e){return Object.defineProperty(Ht,e,{enumerable:!0,configurable:!1,get:function(){return Ht(y[e])}})}),i.css=Lt,i.isStyledComponent=E,i.ThemeProvider=Ft,i.ThemeConsumer=Bt,i.ThemeContext=_t,i.withTheme=function(e){var t=p.forwardRef(function(t,r){return p.createElement(Bt,null,function(n){var o=e.defaultProps,i=kt(t,n,o);return p.createElement(e,x({},t,{theme:i,ref:r}))})});return Mt(t,e),t.displayName='WithTheme('+g(e)+')',t},i.default=Ht},425,[426,427,57,428,429,431,432,441,3]); -__d(function(g,r,i,a,m,e,d){var c;c=function c(s){"use strict";var t=/^\0+/g,n=/[\0\r\f]/g,l=/: */g,f=/zoo|gra/,o=/([,: ])(transform)/g,h=/,+\s*(?![^(]*[)])/g,u=/ +\s*(?![^(]*[)])/g,b=/ *[\0] */g,k=/,\r+?/g,p=/([\t\r\n ])*\f?&/g,A=/:global\(((?:[^\(\)\[\]]*|\[.*\]|\([^\(\)]*\))*)\)/g,w=/\W+/g,C=/@(k\w+)\s*(\S*)\s*/,v=/::(place)/g,x=/:(read-only)/g,$=/\s+(?=[{\];=:>])/g,y=/([[}=:>])\s+/g,O=/(\{[^{]+?);(?=\})/g,j=/\s{2,}/g,z=/([^\(])(:+) */g,N=/[svh]\w+-[tblr]{2}/,S=/\(\s*(.*)\s*\)/g,_=/([\s\S]*?);/g,F=/-self|flex-/g,W=/[^]*?(:[rp][el]a[\w-]+)[^]*/,q=/stretch|:\s*\w+\-(?:conte|avail)/,B=/([^-])(image-set\()/,D="-webkit-",E="-moz-",G="-ms-",H=59,I=125,J=123,K=40,L=41,M=91,P=93,Q=10,R=13,T=9,U=64,V=32,X=38,Y=45,Z=95,ee=42,ae=44,ce=58,re=39,se=34,te=47,ie=62,ne=43,le=126,fe=0,oe=12,he=11,ue=107,de=109,be=115,ke=112,pe=111,ge=105,Ae=99,we=100,Ce=112,ve=1,me=1,xe=0,$e=1,ye=1,Oe=1,je=0,ze=0,Ne=0,Se=[],_e=[],Fe=0,We=null,qe=-2,Be=-1,De=0,Ee=1,Ge=2,He=3,Ie=0,Je=1,Ke="",Le="",Me="";function Pe(c,s,l,f,o){for(var h,u,k=0,p=0,A=0,w=0,$=0,y=0,O=0,j=0,N=0,_=0,F=0,W=0,q=0,B=0,D=0,E=0,G=0,Z=0,je=0,_e=l.length,We=_e-1,qe="",Be="",Re="",Ze="",ea="",aa="";D<_e;){if(O=l.charCodeAt(D),D===We&&p+w+A+k!==0&&(0!==p&&(O=p===te?Q:te),w=A=k=0,_e++,We++),p+w+A+k===0){if(D===We&&(E>0&&(Be=Be.replace(n,"")),Be.trim().length>0)){switch(O){case V:case T:case H:case R:case Q:break;default:Be+=l.charAt(D)}O=H}if(1===G)switch(O){case J:case I:case H:case se:case re:case K:case L:case ae:G=0;case T:case R:case Q:case V:break;default:for(G=0,je=D,$=O,D--,O=H;je<_e;)switch(l.charCodeAt(je++)){case Q:case R:case H:++D,O=$,je=_e;break;case ce:E>0&&(++D,O=$);case J:je=_e}}switch(O){case J:for($=(Be=Be.trim()).charCodeAt(0),F=1,je=++D;D<_e;){switch(O=l.charCodeAt(D)){case J:F++;break;case I:F--;break;case te:switch(y=l.charCodeAt(D+1)){case ee:case te:D=Ye(y,D,We,l)}break;case M:O++;case K:O++;case se:case re:for(;D++0&&(Be=Be.replace(n,"")),y=Be.charCodeAt(1)){case we:case de:case be:case Y:h=s;break;default:h=Se}if(je=(Re=Pe(s,h,Re,y,o+1)).length,Ne>0&&0===je&&(je=Be.length),Fe>0&&(h=Qe(Se,Be,Z),u=Xe(He,Re,h,s,me,ve,je,y,o,f),Be=h.join(""),void 0!==u&&0===(je=(Re=u.trim()).length)&&(y=0,Re="")),je>0)switch(y){case be:Be=Be.replace(S,Ve);case we:case de:case Y:Re=Be+"{"+Re+"}";break;case ue:Re=(Be=Be.replace(C,"$1 $2"+(Je>0?Ke:"")))+"{"+Re+"}",Re=1===ye||2===ye&&Ue("@"+Re,3)?"@-webkit-"+Re+"@"+Re:"@"+Re;break;default:Re=Be+Re,f===Ce&&(Ze+=Re,Re="")}else Re="";break;default:Re=Pe(s,Qe(s,Be,Z),Re,f,o+1)}ea+=Re,W=0,G=0,B=0,E=0,Z=0,q=0,Be="",Re="",O=l.charCodeAt(++D);break;case I:case H:if((je=(Be=(E>0?Be.replace(n,""):Be).trim()).length)>1)switch(0===B&&(($=Be.charCodeAt(0))===Y||$>96&&$<123)&&(je=(Be=Be.replace(" ",":")).length),Fe>0&&void 0!==(u=Xe(Ee,Be,s,c,me,ve,Ze.length,f,o,f))&&0===(je=(Be=u.trim()).length)&&(Be="\0\0"),$=Be.charCodeAt(0),y=Be.charCodeAt(1),$){case fe:break;case U:if(y===ge||y===Ae){aa+=Be+l.charAt(D);break}default:if(Be.charCodeAt(je-1)===ce)break;Ze+=Te(Be,$,y,Be.charCodeAt(2))}W=0,G=0,B=0,E=0,Z=0,Be="",O=l.charCodeAt(++D)}}switch(O){case R:case Q:if(p+w+A+k+ze===0)switch(_){case L:case re:case se:case U:case le:case ie:case ee:case ne:case te:case Y:case ce:case ae:case H:case J:case I:break;default:B>0&&(G=1)}p===te?p=0:$e+W===0&&f!==ue&&Be.length>0&&(E=1,Be+="\0"),Fe*Ie>0&&Xe(De,Be,s,c,me,ve,Ze.length,f,o,f),ve=1,me++;break;case H:case I:if(p+w+A+k===0){ve++;break}default:switch(ve++,qe=l.charAt(D),O){case T:case V:if(w+k+p===0)switch(j){case ae:case ce:case T:case V:qe="";break;default:O!==V&&(qe=" ")}break;case fe:qe="\\0";break;case oe:qe="\\f";break;case he:qe="\\v";break;case X:w+p+k===0&&$e>0&&(Z=1,E=1,qe="\f"+qe);break;case 108:if(w+p+k+xe===0&&B>0)switch(D-B){case 2:j===ke&&l.charCodeAt(D-3)===ce&&(xe=j);case 8:N===pe&&(xe=N)}break;case ce:w+p+k===0&&(B=D);break;case ae:p+A+w+k===0&&(E=1,qe+="\r");break;case se:case re:0===p&&(w=w===O?0:0===w?O:w);break;case M:w+p+A===0&&k++;break;case P:w+p+A===0&&k--;break;case L:w+p+k===0&&A--;break;case K:if(w+p+k===0){if(0===W)switch(2*j+3*N){case 533:break;default:F=0,W=1}A++}break;case U:p+A+w+k+B+q===0&&(q=1);break;case ee:case te:if(w+k+A>0)break;switch(p){case 0:switch(2*O+3*l.charCodeAt(D+1)){case 235:p=te;break;case 220:je=D,p=ee}break;case ee:O===te&&j===ee&&je+2!==D&&(33===l.charCodeAt(je+2)&&(Ze+=l.substring(je,D+1)),qe="",p=0)}}if(0===p){if($e+w+k+q===0&&f!==ue&&O!==H)switch(O){case ae:case le:case ie:case ne:case L:case K:if(0===W){switch(j){case T:case V:case Q:case R:qe+="\0";break;default:qe="\0"+qe+(O===ae?"":"\0")}E=1}else switch(O){case K:B+7===D&&108===j&&(B=0),W=++F;break;case L:0==(W=--F)&&(E=1,qe+="\0")}break;case T:case V:switch(j){case fe:case J:case I:case H:case ae:case oe:case T:case V:case Q:case R:break;default:0===W&&(E=1,qe+="\0")}}Be+=qe,O!==V&&O!==T&&(_=O)}}N=j,j=O,D++}if(je=Ze.length,Ne>0&&0===je&&0===ea.length&&0===s[0].length==0&&(f!==de||1===s.length&&($e>0?Le:Me)===s[0])&&(je=s.join(",").length+2),je>0){if(h=0===$e&&f!==ue?(function(c){for(var s,t,l=0,f=c.length,o=Array(f);l1)){if(A=u.charCodeAt(u.length-1),w=t.charCodeAt(0),s="",0!==k)switch(A){case ee:case le:case ie:case ne:case V:case K:break;default:s=" "}switch(w){case X:t=s+Le;case le:case ie:case ne:case V:case L:case K:break;case M:t=s+t+Le;break;case ce:switch(2*t.charCodeAt(1)+3*t.charCodeAt(2)){case 530:if(Oe>0){t=s+t.substring(8,p-1);break}default:(k<1||h[k-1].length<1)&&(t=s+Le+t)}break;case ae:s="";default:t=p>1&&t.indexOf(":")>0?s+t.replace(z,"$1"+Le+"$2"):s+t+Le}u+=t}o[l]=u.replace(n,"").trim()}return o})(s):s,Fe>0&&void 0!==(u=Xe(Ge,Ze,h,c,me,ve,je,f,o,f))&&0===(Ze=u).length)return aa+Ze+ea;if(Ze=h.join(",")+"{"+Ze+"}",ye*xe!=0){switch(2!==ye||Ue(Ze,2)||(xe=0),xe){case pe:Ze=Ze.replace(x,":-moz-$1")+Ze;break;case ke:Ze=Ze.replace(v,"::-webkit-input-$1")+Ze.replace(v,"::-moz-$1")+Ze.replace(v,":-ms-input-$1")+Ze}xe=0}}return aa+Ze+ea}function Qe(c,s,t){var n=s.trim().split(k),l=n,f=n.length,o=c.length;switch(o){case 0:case 1:for(var h=0,u=0===o?"":c[0]+" ";h0&&$e>0)return l.replace(A,"$1").replace(p,"$1"+Me);break;default:return c.trim()+l.replace(p,"$1"+c.trim())}default:if(t*$e>0&&l.indexOf("\f")>0)return l.replace(p,(c.charCodeAt(0)===ce?"":"$1")+c.trim())}return c+l}function Te(c,s,t,n){var b,k=0,p=c+";",A=2*s+3*t+4*n;if(944===A)return(function(c){var s=c.length,t=c.indexOf(":",9)+1,n=c.substring(0,t).trim(),l=c.substring(t,s-1).trim();switch(c.charCodeAt(9)*Je){case 0:break;case Y:if(110!==c.charCodeAt(10))break;default:var f=l.split((l="",h)),o=0;for(t=0,s=f.length;oU&&p<90||p>96&&p<123||p===Z||p===Y&&b.charCodeAt(1)!==Y))switch(isNaN(parseFloat(b))+(-1!==b.indexOf("("))){case 1:switch(b){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:b+=Ke}}k[t++]=b}l+=(0===o?"":",")+k.join(" ")}}return l=n+l+";",1===ye||2===ye&&Ue(l,1)?D+l+l:l})(p);if(0===ye||2===ye&&!Ue(p,1))return p;switch(A){case 1015:return 97===p.charCodeAt(10)?D+p+p:p;case 951:return 116===p.charCodeAt(3)?D+p+p:p;case 963:return 110===p.charCodeAt(5)?D+p+p:p;case 1009:if(100!==p.charCodeAt(4))break;case 969:case 942:return D+p+p;case 978:return D+p+E+p+p;case 1019:case 983:return D+p+E+p+G+p+p;case 883:return p.charCodeAt(8)===Y?D+p+p:p.indexOf("image-set(",11)>0?p.replace(B,"$1-webkit-$2")+p:p;case 932:if(p.charCodeAt(4)===Y)switch(p.charCodeAt(5)){case 103:return"-webkit-box-"+p.replace("-grow","")+D+p+G+p.replace("grow","positive")+p;case 115:return D+p+G+p.replace("shrink","negative")+p;case 98:return D+p+G+p.replace("basis","preferred-size")+p}return D+p+G+p+p;case 964:return D+p+G+"flex-"+p+p;case 1023:if(99!==p.charCodeAt(8))break;return"-webkit-box-pack"+(b=p.substring(p.indexOf(":",15)).replace("flex-","").replace("space-between","justify"))+D+p+G+"flex-pack"+b+p;case 1005:return f.test(p)?p.replace(l,":-webkit-")+p.replace(l,":-moz-")+p:p;case 1e3:switch(k=(b=p.substring(13).trim()).indexOf("-")+1,b.charCodeAt(0)+b.charCodeAt(k)){case 226:b=p.replace(N,"tb");break;case 232:b=p.replace(N,"tb-rl");break;case 220:b=p.replace(N,"lr");break;default:return p}return D+p+G+b+p;case 1017:if(-1===p.indexOf("sticky",9))return p;case 975:switch(k=(p=c).length-10,A=(b=(33===p.charCodeAt(k)?p.substring(0,k):p).substring(c.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|b.charCodeAt(7))){case 203:if(b.charCodeAt(8)<111)break;case 115:p=p.replace(b,D+b)+";"+p;break;case 207:case 102:p=p.replace(b,D+(A>102?"inline-":"")+"box")+";"+p.replace(b,D+b)+";"+p.replace(b,G+b+"box")+";"+p}return p+";";case 938:if(p.charCodeAt(5)===Y)switch(p.charCodeAt(6)){case 105:return b=p.replace("-items",""),D+p+D+"box-"+b+G+"flex-"+b+p;case 115:return D+p+G+"flex-item-"+p.replace(F,"")+p;default:return D+p+G+"flex-line-pack"+p.replace("align-content","").replace(F,"")+p}break;case 973:case 989:if(p.charCodeAt(3)!==Y||122===p.charCodeAt(4))break;case 931:case 953:if(!0===q.test(c))return 115===(b=c.substring(c.indexOf(":")+1)).charCodeAt(0)?Te(c.replace("stretch","fill-available"),s,t,n).replace(":fill-available",":stretch"):p.replace(b,D+b)+p.replace(b,E+b.replace("fill-",""))+p;break;case 962:if(p=D+p+(102===p.charCodeAt(5)?G+p:"")+p,t+n===211&&105===p.charCodeAt(13)&&p.indexOf("transform",10)>0)return p.substring(0,p.indexOf(";",27)+1).replace(o,"$1-webkit-$2")+p}return p}function Ue(c,s){var t=c.indexOf(1===s?":":"{"),n=c.substring(0,3!==s?t:10),l=c.substring(t+1,c.length-1);return We(2!==s?n:n.replace(W,"$1"),l,s)}function Ve(c,s){var t=Te(s,s.charCodeAt(0),s.charCodeAt(1),s.charCodeAt(2));return t!==s+";"?t.replace(_," or ($1)").substring(4):"("+s+")"}function Xe(c,s,t,n,l,f,o,h,u,b){for(var k,p=0,A=s;p0&&(Ke=l.replace(w,f===M?"":"-")),f=1,1===$e?Me=l:Le=l;var o,h=[Me];Fe>0&&void 0!==(o=Xe(Be,t,h,h,me,ve,0,0,0,0))&&"string"==typeof o&&(t=o);var u=Pe(Se,h,t,0,0);return Fe>0&&void 0!==(o=Xe(qe,u,h,h,me,ve,u.length,0,0,0))&&"string"!=typeof(u=o)&&(f=0),Ke="",Me="",Le="",xe=0,me=1,ve=1,je*f==0?u:u.replace(n,"").replace($,"").replace(y,"$1").replace(O,"$1").replace(j," ")}return ea.use=function c(s){switch(s){case void 0:case null:Fe=_e.length=0;break;default:if("function"==typeof s)_e[Fe++]=s;else if("object"==typeof s)for(var t=0,n=s.length;t':null}},T=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:String;return function(o){if('word'!==o.type)return null;var u=o.value.match(t);return null===u?null:n(u[1])}},N={SPACE:E(function(t){return'space'===t.type}),SLASH:E(function(t){return'div'===t.type&&'/'===t.value}),COMMA:E(function(t){return'div'===t.type&&','===t.value}),WORD:(f='word',function(t){return t.type===f?t.value:null}),NONE:T(/^(none)$/i),AUTO:T(/^(auto)$/i),NUMBER:T(/^([+-]?(?:\d*\.)?\d+(?:[Ee][+-]?\d+)?)$/,Number),LENGTH:T(/^(0$|(?:[+-]?(?:\d*\.)?\d+(?:[Ee][+-]?\d+)?)(?=px$))/,Number),UNSUPPORTED_LENGTH_UNIT:T(/^([+-]?(?:\d*\.)?\d+(?:[Ee][+-]?\d+)?(ch|em|ex|rem|vh|vw|vmin|vmax|cm|mm|in|pc|pt))$/),ANGLE:T(/^([+-]?(?:\d*\.)?\d+(?:[Ee][+-]?\d+)?(?:deg|rad))$/),PERCENT:T(/^([+-]?(?:\d*\.)?\d+(?:[Ee][+-]?\d+)?%)$/),IDENT:T(/(^-?[_a-z][_a-z0-9-]*$)/i),STRING:function(t){return'string'!==t.type?null:t.value.replace(/\\([0-9a-f]{1,6})(?:\s|$)/gi,function(t,n){return String.fromCharCode(parseInt(n,16))}).replace(/\\/g,'')},COLOR:function(t){return'word'===t.type&&(y.test(t.value)||t.value in p||'transparent'===t.value)?t.value:'function'===t.type&&w.test(t.value)?h.stringify(t):null},LINE:T(/^(none|underline|line-through)$/i)},b=N.NONE,S=N.COLOR,k=N.LENGTH,O=N.UNSUPPORTED_LENGTH_UNIT,C=N.SPACE,L=T(/^(solid|dashed|dotted)$/),R=N.LENGTH,P=N.UNSUPPORTED_LENGTH_UNIT,A=N.PERCENT,V=N.COLOR,U=N.SPACE,$=N.NONE,G=function(t){var n=t.types,o=void 0===n?[R,P,A]:n,u=t.directions,c=void 0===u?['Top','Right','Bottom','Left']:u,f=t.prefix,h=void 0===f?'':f,v=t.suffix,p=void 0===v?'':v;return function(t){var n,u=[];for(u.push(t.expect.apply(t,l(o)));u.length<4&&t.hasTokens();)t.expect(U),u.push(t.expect.apply(t,l(o)));t.expectEmpty();var f=u[0],v=u[1],x=void 0===v?f:v,y=u[2],w=void 0===y?f:y,E=u[3],T=void 0===E?x:E,N=function(t){return''+h+c[t]+p};return s(n={},N(0),f),s(n,N(1),x),s(n,N(2),w),s(n,N(3),T),n}},I=function(t){var n=t.expect(R),o=t.matches(U)?t.expect(R):n;return t.expectEmpty(),{width:n,height:o}},_=function(t){var n=void 0,o=void 0,u=void 0,s=void 0;if(t.matches($))return t.expectEmpty(),{offset:{width:0,height:0},radius:0,color:'black'};for(var l=!1;t.hasTokens();)l&&t.expect(U),void 0===n&&t.matches(R,P)?(n=t.lastValue,t.expect(U),o=t.expect(R,P),t.saveRewindPoint(),t.matches(U)&&t.matches(R,P)?u=t.lastValue:t.rewind()):void 0===s&&t.matches(V)?s=t.lastValue:t.throw(),l=!0;return void 0===n&&t.throw(),{offset:{width:n,height:o},radius:void 0!==u?u:0,color:void 0!==s?s:'black'}},H=N.NONE,D=N.AUTO,M=N.NUMBER,B=N.LENGTH,F=N.SPACE,W=N.SPACE,Y=T(/(nowrap|wrap|wrap-reverse)/),j=T(/(row|row-reverse|column|column-reverse)/),X=N.SPACE,z=N.IDENT,Z=N.STRING,q=function(t){var n=void 0;if(t.matches(Z))n=t.lastValue;else for(n=t.expect(z);t.hasTokens();){t.expect(X),n+=' '+t.expect(z)}return t.expectEmpty(),{fontFamily:n}},J=N.SPACE,K=N.LENGTH,Q=N.UNSUPPORTED_LENGTH_UNIT,ee=N.NUMBER,te=N.SLASH,ne=T(/^(normal)$/),re=T(/^(italic)$/),oe=T(/^([1-9]00|bold)$/),ie=T(/^(small-caps)$/),ae=[],ue=N.SPACE,se=N.LINE,le=N.COLOR,ce=T(/^(solid|double|dotted|dashed)$/),de=N.SPACE,fe=N.LINE,he=N.SPACE,ve=N.COMMA,pe=N.LENGTH,me=N.NUMBER,xe=N.ANGLE,ye=function(t){return function(n){var o=n.expect(t);return n.expectEmpty(),o}},we=ye(me),Ee=ye(pe),Te=ye(xe),Ne=function(t){return function(n,o){return function(u){var l=u.expect(t),c=void 0;if(u.hasTokens())u.expect(ve),c=u.expect(t);else{if(void 0===o)return l;c=o}return u.expectEmpty(),[s({},n+'Y',c),s({},n+'X',l)]}}},be=Ne(me),Se=Ne(pe),ke=Ne(xe),ge={perspective:we,scale:be('scale'),scaleX:we,scaleY:we,translate:Se('translate',0),translateX:Ee,translateY:Ee,rotate:Te,rotateX:Te,rotateY:Te,rotateZ:Te,skewX:Te,skewY:Te,skew:ke('skew','0deg')},Oe=N.IDENT,Ce=N.WORD,Le=N.COLOR,Re=N.LENGTH,Pe=N.UNSUPPORTED_LENGTH_UNIT,Ae=N.PERCENT,Ve=N.AUTO,Ue=G({types:[Ce],prefix:'border',suffix:'Color'}),$e=G({directions:['TopLeft','TopRight','BottomRight','BottomLeft'],prefix:'border',suffix:'Radius'}),Ge=G({prefix:'border',suffix:'Width'}),Ie=G({types:[Re,Pe,Ae,Ve],prefix:'margin'}),_e=G({prefix:'padding'}),He={background:function(t){return{backgroundColor:t.expect(Le)}},border:function(t){var n=void 0,o=void 0,u=void 0;if(t.matches(b))return t.expectEmpty(),{borderWidth:0,borderColor:'black',borderStyle:'solid'};for(var s=0;s<3&&t.hasTokens();)0!==s&&t.expect(C),void 0===n&&t.matches(k)||t.matches(O)?n=t.lastValue:void 0===o&&t.matches(S)?o=t.lastValue:void 0===u&&t.matches(L)?u=t.lastValue:t.throw(),s+=1;return t.expectEmpty(),void 0===n&&(n=1),void 0===o&&(o="black"),void 0===u&&(u="solid"),{borderWidth:n,borderColor:o,borderStyle:u}},borderColor:Ue,borderRadius:$e,borderWidth:Ge,boxShadow:function(t){var n=_(t);return{shadowOffset:n.offset,shadowRadius:n.radius,shadowColor:n.color,shadowOpacity:1}},flex:function(t){var n=void 0,o=void 0,u=void 0;if(t.matches(H))return t.expectEmpty(),{flexGrow:0,flexShrink:0,flexBasis:'auto'};if(t.saveRewindPoint(),t.matches(D)&&!t.hasTokens())return{flexGrow:1,flexShrink:1,flexBasis:'auto'};t.rewind();for(var s=0;s<2&&t.hasTokens();)0!==s&&t.expect(F),void 0===n&&t.matches(M)?(n=t.lastValue,t.saveRewindPoint(),t.matches(F)&&t.matches(M)?o=t.lastValue:t.rewind()):void 0===u&&t.matches(B)?u=t.lastValue:void 0===u&&t.matches(D)?u='auto':t.throw(),s+=1;return t.expectEmpty(),void 0===n&&(n=1),void 0===o&&(o=1),void 0===u&&(u=0),{flexGrow:n,flexShrink:o,flexBasis:u}},flexFlow:function(t){for(var n=void 0,o=void 0,u=0;u<2&&t.hasTokens();)0!==u&&t.expect(W),void 0===n&&t.matches(Y)?n=t.lastValue:void 0===o&&t.matches(j)?o=t.lastValue:t.throw(),u+=1;return t.expectEmpty(),void 0===n&&(n="nowrap"),void 0===o&&(o="row"),{flexWrap:n,flexDirection:o}},font:function(t){for(var n=void 0,o=void 0,u=void 0,s=void 0,l=0;l<3&&t.hasTokens();){if(t.matches(ne));else if(void 0===n&&t.matches(re))n=t.lastValue;else if(void 0===o&&t.matches(oe))o=t.lastValue;else{if(void 0!==u||!t.matches(ie))break;u=[t.lastValue]}t.expect(J),l+=1}var c=t.expect(K,Q);t.matches(te)&&(s=t.matches(ee)?c*t.lastValue:t.expect(K,Q)),t.expect(J);var f=q(t).fontFamily;void 0===n&&(n="normal"),void 0===o&&(o="normal"),void 0===u&&(u=ae);var h={fontStyle:n,fontWeight:o,fontVariant:u,fontSize:c,fontFamily:f};return void 0!==s&&(h.lineHeight=s),h},fontFamily:q,fontVariant:function(t){return{fontVariant:[t.expect(Oe)]}},fontWeight:function(t){return{fontWeight:t.expect(Ce)}},margin:Ie,padding:_e,shadowOffset:function(t){return{shadowOffset:I(t)}},textShadow:function(t){var n=_(t);return{textShadowOffset:n.offset,textShadowRadius:n.radius,textShadowColor:n.color}},textShadowOffset:function(t){return{textShadowOffset:I(t)}},textDecoration:function(t){for(var n=void 0,o=void 0,u=void 0,s=!1;t.hasTokens();){if(s&&t.expect(ue),void 0===n&&t.matches(se)){var l=[t.lastValue.toLowerCase()];t.saveRewindPoint(),'none'!==l[0]&&t.matches(ue)&&t.matches(se)?(l.push(t.lastValue.toLowerCase()),l.sort().reverse()):t.rewind(),n=l.join(' ')}else void 0===o&&t.matches(ce)?o=t.lastValue:void 0===u&&t.matches(le)?u=t.lastValue:t.throw();s=!0}return{textDecorationLine:void 0!==n?n:"none",textDecorationColor:void 0!==u?u:"black",textDecorationStyle:void 0!==o?o:"solid"}},textDecorationLine:function(t){for(var n=[],o=!1;t.hasTokens();)o&&t.expect(de),n.push(t.expect(fe).toLowerCase()),o=!0;return n.sort().reverse(),{textDecorationLine:n.join(' ')}},transform:function(t){for(var n=[],o=!1;t.hasTokens();){o&&t.expect(he);var u=t.expectFunction(),l=u.functionName,c=ge[l](u);Array.isArray(c)||(c=[s({},l,c)]),n=c.concat(n),o=!0}return{transform:n}}},De=(function(){function t(n,o){u(this,t),this.index=0,this.nodes=n,this.functionName=null!=o?o.value:null,this.lastValue=null,this.rewindIndex=-1}return n(t,[{key:'hasTokens',value:function(){return this.index<=this.nodes.length-1}},{key:"SYMBOL_MATCH",value:function(){if(!this.hasTokens())return null;for(var t=this.nodes[this.index],n=0;n1&&void 0!==arguments[1]?arguments[1]:[];return n.reduce(function(n,u){var s=ze(u[0]),l=u[1],c=-1===o.indexOf(s);return t(n,Xe(s,l,c))},{})}},432,[60,433,438,440]); -__d(function(g,r,i,a,m,e,d){var t=r(d[0]),n=r(d[1]),o=r(d[2]);function s(n){return this instanceof s?(this.nodes=t(n),this):new s(n)}s.prototype.toString=function(){return Array.isArray(this.nodes)?o(this.nodes):''},s.prototype.walk=function(t,o){return n(this.nodes,t,o),this},s.unit=r(d[3]),s.walk=n,s.stringify=o,m.exports=s},433,[434,435,436,437]); -__d(function(g,r,i,a,m,e,d){var o='('.charCodeAt(0),t=')'.charCodeAt(0),c='\''.charCodeAt(0),s='"'.charCodeAt(0),h='\\'.charCodeAt(0),l='/'.charCodeAt(0),n=','.charCodeAt(0),u=':'.charCodeAt(0),f='*'.charCodeAt(0);m.exports=function(p){for(var A,C,v,x,y,w,I,O,b=[],_=p,q=0,j=_.charCodeAt(q),k=_.length,z=[{nodes:b}],B=0,D='',E='',F='';q=48&&c<=57)s+=o[h],l=!0;else if(c===n){if(b)break;b=!0,s+=o[h]}else{if(c!==f&&c!==t)break;if(0!==h)break;s+=o[h]}h+=1}return!!l&&{number:s,unit:o.slice(h)}}},437,[]); -__d(function(g,r,i,a,m,e,d){'use strict';m.exports=r(d[0])},438,[439]); -__d(function(e,f,a,d,r,l,i){r.exports={black:"#000000",silver:"#c0c0c0",gray:"#808080",white:"#ffffff",maroon:"#800000",red:"#ff0000",purple:"#800080",fuchsia:"#ff00ff",green:"#008000",lime:"#00ff00",olive:"#808000",yellow:"#ffff00",navy:"#000080",blue:"#0000ff",teal:"#008080",aqua:"#00ffff",orange:"#ffa500",aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",blanchedalmond:"#ffebcd",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",limegreen:"#32cd32",linen:"#faf0e6",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",oldlace:"#fdf5e6",olivedrab:"#6b8e23",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",whitesmoke:"#f5f5f5",yellowgreen:"#9acd32",rebeccapurple:"#663399"}},439,[]); -__d(function(g,r,i,a,m,e,d){function t(p){return p&&'object'==typeof p?u(p)||c(p)?p:o(p)?l(p,t):y(f(p),function(o,u){return o[n(u)]=t(p[u]),o},{}):p}function n(t){return t.replace(/[_.-](\w|$)/g,function(t,n){return n.toUpperCase()})}m.exports=function(o){return'string'==typeof o?n(o):t(o)};var o=Array.isArray||function(t){return'[object Array]'===Object.prototype.toString.call(t)},u=function(t){return'[object Date]'===Object.prototype.toString.call(t)},c=function(t){return'[object RegExp]'===Object.prototype.toString.call(t)},p=Object.prototype.hasOwnProperty,f=Object.keys||function(t){var n=[];for(var o in t)p.call(t,o)&&n.push(o);return n};function l(t,n){if(t.map)return t.map(n);for(var o=[],u=0;u=0||Object.prototype.hasOwnProperty.call(n,u)&&(l[u]=n[u]);return l}var c=function(l){var o=l.fluid,c=l.children,p=f(l,['fluid','children']);return o?t.default.createElement(u.ContainerFluid,n({'data-name':'container-fluid'},p),c):t.default.createElement(u.Container,n({'data-name':'container'},p),c)};c.propTypes={children:l.default.any,fluid:l.default.bool.isRequired},c.defaultProps={children:null,fluid:!1},e.default=c},444,[57,70,445]); -__d(function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.defineProperty(e,'media',{enumerable:!0,get:function(){return l(t).default}});var n=r(d[1]);Object.defineProperty(e,'Container',{enumerable:!0,get:function(){return l(n).default}});var u=r(d[2]);Object.defineProperty(e,'ContainerFluid',{enumerable:!0,get:function(){return l(u).default}});var f=r(d[3]);Object.defineProperty(e,'Row',{enumerable:!0,get:function(){return l(f).default}});var o=r(d[4]);function l(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,'Col',{enumerable:!0,get:function(){return l(o).default}})},445,[443,446,447,448,449]); -__d(function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0});var t=x(['\n width: 100%;\n padding-right: ','px;\n padding-left: ','px;\n margin-right: auto;\n margin-left: auto;\n\n ','\n\n ','\n\n ','\n\n ','\n'],['\n width: 100%;\n padding-right: ','px;\n padding-left: ','px;\n margin-right: auto;\n margin-left: auto;\n\n ','\n\n ','\n\n ','\n\n ','\n']),n=x(['\n max-width: 540px;\n '],['\n max-width: 540px;\n ']),o=x(['\n max-width: 720px;\n '],['\n max-width: 720px;\n ']),p=x(['\n max-width: 960px;\n '],['\n max-width: 960px;\n ']),u=x(['\n max-width: 1140px;\n '],['\n max-width: 1140px;\n ']),h=f(r(d[0])),l=f(r(d[1]));function f(t){return t&&t.__esModule?t:{default:t}}function x(t,n){return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(n)}}))}var s=h.default.div(t,function(t){return t.theme&&t.theme.styledBootstrapGrid&&t.theme.styledBootstrapGrid.getContainerPadding?t.theme.styledBootstrapGrid.getContainerPadding():15},function(t){return t.theme&&t.theme.styledBootstrapGrid&&t.theme.styledBootstrapGrid.getContainerPadding?t.theme.styledBootstrapGrid.getContainerPadding():15},l.default.phone(n),l.default.tablet(o),l.default.desktop(p),l.default.giant(u));e.default=s},446,[425,443]); -__d(function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0});var t,n,o=(t=['\n width: 100%;\n padding-right: ','px;\n padding-left: ','px;\n margin-right: auto;\n margin-left: auto;\n'],n=['\n width: 100%;\n padding-right: ','px;\n padding-left: ','px;\n margin-right: auto;\n margin-left: auto;\n'],Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(n)}}))),u=l(r(d[0]));l(r(d[1]));function l(t){return t&&t.__esModule?t:{default:t}}var s=u.default.div(o,function(t){return t.theme&&t.theme.styledBootstrapGrid&&t.theme.styledBootstrapGrid.getContainerPadding?t.theme.styledBootstrapGrid.getContainerPadding():15},function(t){return t.theme&&t.theme.styledBootstrapGrid&&t.theme.styledBootstrapGrid.getContainerPadding?t.theme.styledBootstrapGrid.getContainerPadding():15});e.default=s},447,[425,443]); -__d(function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0});var t=f(['\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -','px;\n margin-left: -','px;\n\n ','\n ','\n ','\n ','\n ','\n ','\n\n ','\n ','\n ','\n ','\n ','\n ','\n'],['\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-right: -','px;\n margin-left: -','px;\n\n ','\n ','\n ','\n ','\n ','\n ','\n\n ','\n ','\n ','\n ','\n ','\n ','\n']),n=f(['',''],['','']),s=l(r(d[0])),o=l(r(d[1]));function l(t){return t&&t.__esModule?t:{default:t}}function f(t,n){return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(n)}}))}var u={alignItems:{start:'\n -webkit-box-align: start !important;\n -ms-flex-align: start !important;\n align-items: flex-start !important;\n ',end:'\n -webkit-box-align: end !important;\n -ms-flex-align: end !important;\n align-items: flex-end !important;\n ',center:'\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important;\n ',baseline:'\n -webkit-box-align: baseline !important;\n -ms-flex-align: baseline !important;\n align-items: baseline !important;\n ',stretch:'\n -webkit-box-align: stretch !important;\n -ms-flex-align: stretch !important;\n align-items: stretch !important;\n '},justifyContent:{start:'\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n ',end:'\n -webkit-box-pack: end !important;\n -ms-flex-pack: end !important;\n justify-content: flex-end !important;\n ',center:'\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important;\n ',between:'\n -webkit-box-pack: justify !important;\n -ms-flex-pack: justify !important;\n justify-content: space-between !important;\n ',around:'\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n '}},p=s.default.div(t,function(t){return t.theme&&t.theme.styledBootstrapGrid&&t.theme.styledBootstrapGrid.getRowPadding?t.theme.styledBootstrapGrid.getRowPadding():15},function(t){return t.theme&&t.theme.styledBootstrapGrid&&t.theme.styledBootstrapGrid.getRowPadding?t.theme.styledBootstrapGrid.getRowPadding():15},function(t){return t.alignItems&&u.alignItems[t.alignItems]},function(t){return t.smAlignItems&&o.default.xs(n,u.alignItems[t.xsAlignItems])},function(t){return t.smAlignItems&&o.default.sm(n,u.alignItems[t.smAlignItems])},function(t){return t.mdAlignItems&&o.default.md(n,u.alignItems[t.mdAlignItems])},function(t){return t.lgAlignItems&&o.default.lg(n,u.alignItems[t.lgAlignItems])},function(t){return t.xlAlignItems&&o.default.xl(n,u.alignItems[t.xlAlignItems])},function(t){return t.justifyContent&&u.justifyContent[t.justifyContent]},function(t){return t.smJustifyContent&&o.default.xs(n,u.justifyContent[t.xsJustifyContent])},function(t){return t.smJustifyContent&&o.default.sm(n,u.justifyContent[t.smJustifyContent])},function(t){return t.mdJustifyContent&&o.default.md(n,u.justifyContent[t.mdJustifyContent])},function(t){return t.lgJustifyContent&&o.default.lg(n,u.justifyContent[t.lgJustifyContent])},function(t){return t.xlJustifyContent&&o.default.xl(n,u.justifyContent[t.xlJustifyContent])});e.default=p},448,[425,443]); -__d(function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0});var n=x(['\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: ','px;\n padding-left: ','px;\n\n ','\n\n ','\n ','\n ','\n ','\n ','\n\n ','\n ','\n ','\n ','\n ','\n\n ','\n ','\n ','\n ','\n ','\n\n ','\n ','\n ','\n ','\n ','\n\n ','\n ','\n ','\n ','\n ','\n\n ','\n ','\n ','\n ','\n ','\n'],['\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: ','px;\n padding-left: ','px;\n\n ','\n\n ','\n ','\n ','\n ','\n ','\n\n ','\n ','\n ','\n ','\n ','\n\n ','\n ','\n ','\n ','\n ','\n\n ','\n ','\n ','\n ','\n ','\n\n ','\n ','\n ','\n ','\n ','\n\n ','\n ','\n ','\n ','\n ','\n']),t=x(['',''],['','']),l=f(r(d[0])),o=f(r(d[1]));function f(n){return n&&n.__esModule?n:{default:n}}function x(n,t){return Object.freeze(Object.defineProperties(n,{raw:{value:Object.freeze(t)}}))}var u={col:{true:'\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 100%;\n ',auto:'\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n ',1:'\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.333333%;\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n ',2:'\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.666667%;\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n ',3:'\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n ',4:'\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.333333%;\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n ',5:'\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.666667%;\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n ',6:'\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n ',7:'\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.333333%;\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n ',8:'\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.666667%;\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n ',9:'\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n ',10:'\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.333333%;\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n ',11:'\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.666667%;\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n ',12:'\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n '},offset:{0:'margin-left: 0;',1:'margin-left: 8.333333%;',2:'margin-left: 16.666667%;',3:'margin-left: 25%;',4:'margin-left: 33.333333%;',5:'margin-left: 41.666667%;',6:'margin-left: 50%;',7:'margin-left: 58.333333%;',8:'margin-left: 66.666667%;',9:'margin-left: 75%;',10:'margin-left: 83.333333%;',11:'margin-left: 91.666667%;'},order:{first:'\n -webkit-box-ordinal-group: 0;\n -ms-flex-order: -1;\n order: -1;\n ',last:'\n -webkit-box-ordinal-group: 14;\n -ms-flex-order: 13;\n order: 13;\n ',0:'\n -webkit-box-ordinal-group: 1;\n -ms-flex-order: 0;\n order: 0;\n ',1:'\n -webkit-box-ordinal-group: 2;\n -ms-flex-order: 1;\n order: 1;\n ',2:'\n -webkit-box-ordinal-group: 3;\n -ms-flex-order: 2;\n order: 2;\n ',3:'\n -webkit-box-ordinal-group: 4;\n -ms-flex-order: 3;\n order: 3;\n ',4:'\n -webkit-box-ordinal-group: 5;\n -ms-flex-order: 4;\n order: 4;\n ',5:'\n -webkit-box-ordinal-group: 6;\n -ms-flex-order: 5;\n order: 5;\n ',6:'\n -webkit-box-ordinal-group: 7;\n -ms-flex-order: 6;\n order: 6;\n ',7:'\n -webkit-box-ordinal-group: 8;\n -ms-flex-order: 7;\n order: 7;\n ',8:'\n -webkit-box-ordinal-group: 9;\n -ms-flex-order: 8;\n order: 8;\n ',9:'\n -webkit-box-ordinal-group: 10;\n -ms-flex-order: 9;\n order: 9;\n ',10:'\n -webkit-box-ordinal-group: 11;\n -ms-flex-order: 10;\n order: 10;\n ',11:'\n -webkit-box-ordinal-group: 12;\n -ms-flex-order: 11;\n order: 11;\n ',12:'\n -webkit-box-ordinal-group: 13;\n -ms-flex-order: 12;\n order: 12;\n '},alignSelf:{auto:'\n -ms-flex-item-align: auto !important;\n align-self: auto !important;\n ',start:'\n -ms-flex-item-align: start !important;\n align-self: flex-start !important;\n ',end:'\n -ms-flex-item-align: end !important;\n align-self: flex-end !important;\n ',center:'\n -ms-flex-item-align: center !important;\n align-self: center !important;\n ',baseline:'\n -ms-flex-item-align: baseline !important;\n align-self: baseline !important;\n ',stretch:'\n -ms-flex-item-align: stretch !important;\n align-self: stretch !important;\n '},noGutter:'\n margin-right: 0;\n margin-left: 0;\n '},s=l.default.div(n,function(n){return n.theme&&n.theme.styledBootstrapGrid&&n.theme.styledBootstrapGrid.getColPadding?n.theme.styledBootstrapGrid.getColPadding():15},function(n){return n.theme&&n.theme.styledBootstrapGrid&&n.theme.styledBootstrapGrid.getColPadding?n.theme.styledBootstrapGrid.getColPadding():15},function(n){return n.noGutter&&u.noGutter},function(n){return n.col&&u.col[n.col]},function(n){return n.offset&&u.offset[n.offset]},function(n){return n.auto&&u.col.auto},function(n){return n.alignSelf&&u.alignSelf[n.alignSelf]},function(n){return n.order&&u.order[n.order]},function(n){return n.xs&&o.default.xs(t,u.col[n.xs])},function(n){return!isNaN(parseInt(n.xsOffset,10))&&o.default.xs(t,u.offset[n.xsOffset])},function(n){return n.xsAuto&&o.default.xs(t,u.col.auto)},function(n){return n.xsAlignSelf&&o.default.xs(t,u.alignSelf[n.xsAlignSelf])},function(n){return n.xsOrder&&o.default.xs(t,u.order[n.xsOrder])},function(n){return n.sm&&o.default.sm(t,u.col[n.sm])},function(n){return!isNaN(parseInt(n.smOffset,10))&&o.default.sm(t,u.offset[n.smOffset])},function(n){return n.smAuto&&o.default.sm(t,u.col.auto)},function(n){return n.smAlignSelf&&o.default.sm(t,u.alignSelf[n.smAlignSelf])},function(n){return n.smOrder&&o.default.sm(t,u.order[n.smOrder])},function(n){return n.md&&o.default.md(t,u.col[n.md])},function(n){return!isNaN(parseInt(n.mdOffset,10))&&o.default.md(t,u.offset[n.mdOffset])},function(n){return n.mdAuto&&o.default.md(t,u.col.auto)},function(n){return n.mdAlignSelf&&o.default.md(t,u.alignSelf[n.mdAlignSelf])},function(n){return n.mdOrder&&o.default.md(t,u.order[n.mdOrder])},function(n){return n.lg&&o.default.lg(t,u.col[n.lg])},function(n){return!isNaN(parseInt(n.lgOffset,10))&&o.default.lg(t,u.offset[n.lgOffset])},function(n){return n.lgAuto&&o.default.lg(t,u.col.auto)},function(n){return n.lgAlignSelf&&o.default.lg(t,u.alignSelf[n.lgAlignSelf])},function(n){return n.lgOrder&&o.default.lg(t,u.order[n.lgOrder])},function(n){return n.xl&&o.default.xl(t,u.col[n.xl])},function(n){return!isNaN(parseInt(n.xlOffset,10))&&o.default.xl(t,u.offset[n.xlOffset])},function(n){return n.xlAuto&&o.default.xl(t,u.col.auto)},function(n){return n.xlAlignSelf&&o.default.xl(t,u.alignSelf[n.xlAlignSelf])},function(n){return n.xlOrder&&o.default.xl(t,u.order[n.xlOrder])});e.default=s},449,[425,443]); -__d(function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0});var t=Object.assign||function(t){for(var n=1;n=0||Object.prototype.hasOwnProperty.call(t,l)&&(s[l]=t[l]);return s}var o=function(s){var u=s.children,o=s.alignItems,y=s.smAlignItems,c=s.mdAlignItems,C=s.lgAlignItems,I=s.xlAlignItems,A=s.justifyContent,J=s.smJustifyContent,j=s.mdJustifyContent,p=s.lgJustifyContent,x=s.xlJustifyContent,v=f(s,['children','alignItems','smAlignItems','mdAlignItems','lgAlignItems','xlAlignItems','justifyContent','smJustifyContent','mdJustifyContent','lgJustifyContent','xlJustifyContent']),h='row';return o&&(h=h+' align-items-'+o),y&&(h=h+' align-items-sm-'+y),c&&(h=h+' align-items-md-'+c),C&&(h=h+' align-items-lg-'+C),I&&(h=h+' align-items-xl-'+I),A&&(h=h+' justify-content-'+A),J&&(h=h+' justify-content-sm-'+J),j&&(h=h+' justify-content-md-'+j),p&&(h=h+' justify-content-lg-'+p),x&&(h=h+' justify-content-xl-'+x),h=h.trim(),n.default.createElement(l.Row,t({alignItems:o,smAlignItems:y,mdAlignItems:c,lgAlignItems:C,xlAlignItems:I,justifyContent:A,smJustifyContent:J,mdJustifyContent:j,lgJustifyContent:p,xlJustifyContent:x,'data-name':h},v),u)};o.propTypes={children:s.default.any,alignItems:s.default.string,smAlignItems:s.default.string,mdAlignItems:s.default.string,lgAlignItems:s.default.string,xlAlignItems:s.default.string,justifyContent:s.default.string,smJustifyContent:s.default.string,mdJustifyContent:s.default.string,lgJustifyContent:s.default.string,xlJustifyContent:s.default.string},o.defaultProps={children:null},e.default=o},450,[57,70,445]); -__d(function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0});var l=Object.assign||function(l){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(l,f)&&(s[f]=l[f]);return s}var u=function(s){var o=s.col,u=s.offset,x=s.auto,O=s.alignSelf,A=s.order,c=s.xs,N=s.xsOffset,p=s.xsAuto,S=s.xsAlignSelf,I=s.xsOrder,b=s.sm,v=s.smOffset,y=s.smAuto,h=s.smAlignSelf,_=s.smOrder,j=s.md,G=s.mdOffset,P=s.mdAuto,T=s.mdAlignSelf,w=s.mdOrder,M=s.lg,C=s.lgOffset,E=s.lgAuto,k=s.lgAlignSelf,q=s.lgOrder,z=s.xl,B=s.xlOffset,D=s.xlAuto,F=s.xlAlignSelf,H=s.xlOrder,J=s.noGutter,K=s.children,L=n(s,['col','offset','auto','alignSelf','order','xs','xsOffset','xsAuto','xsAlignSelf','xsOrder','sm','smOffset','smAuto','smAlignSelf','smOrder','md','mdOffset','mdAuto','mdAlignSelf','mdOrder','lg','lgOffset','lgAuto','lgAlignSelf','lgOrder','xl','xlOffset','xlAuto','xlAlignSelf','xlOrder','noGutter','children']),Q='';o&&(isNaN(parseInt(o,10))?Q+=' col':Q=Q+' col-'+o),isNaN(parseInt(u,10))||(Q=Q+' offset-'+u),x&&(Q+=' col-auto'),O&&(Q=Q+' align-self-'+O),isNaN(parseInt(A,10))&&'first'!==A&&'last'!==A||(Q=Q+' order-'+A),c&&(isNaN(parseInt(c,10))?Q+=' col-xs':Q=Q+' col-xs-'+c),isNaN(parseInt(N,10))||(Q=Q+' offset-xs-'+N),p&&(Q+=' col-xs-auto'),S&&(Q=Q+' align-self-xs-'+S),isNaN(parseInt(I,10))&&'first'!==I&&'last'!==I||(Q=Q+' order-xs-'+I),b&&(isNaN(parseInt(b,10))?Q+=' col-sm':Q=Q+' col-sm-'+b),isNaN(parseInt(v,10))||(Q=Q+' offset-sm-'+v),y&&(Q+=' col-sm-auto'),h&&(Q=Q+' align-self-sm-'+h),isNaN(parseInt(_,10))&&'first'!==_&&'last'!==_||(Q=Q+' order-sm-'+_),j&&(isNaN(parseInt(j,10))?Q+=' col-md':Q=Q+' col-md-'+j),isNaN(parseInt(G,10))||(Q=Q+' offset-md-'+G),P&&(Q+=' col-md-auto'),T&&(Q=Q+' align-self-md-'+T),isNaN(parseInt(w,10))&&'first'!==w&&'last'!==w||(Q=Q+' order-md-'+w),M&&(isNaN(parseInt(M,10))?Q+=' col-lg':Q=Q+' col-lg-'+M),isNaN(parseInt(C,10))||(Q=Q+' offset-lg-'+C),E&&(Q+=' col-lg-auto'),k&&(Q=Q+' align-self-lg-'+k),isNaN(parseInt(q,10))&&'first'!==q&&'last'!==q||(Q=Q+' order-lg-'+q),z&&(isNaN(parseInt(z,10))?Q+=' col-xl':Q=Q+' col-xl-'+z),isNaN(parseInt(B,10))||(Q=Q+' offset-xl-'+B),D&&(Q+=' col-xl-auto'),F&&(Q=Q+' align-self-xl-'+F),isNaN(parseInt(H,10))&&'first'!==H&&'last'!==H||(Q=Q+' order-xl-'+H),J&&(Q+=' no-gutter'),Q=Q.trim();var R=l({col:o,offset:u,auto:x,alignSelf:O,order:A,xs:c,xsOffset:N,xsAuto:p,xsAlignSelf:S,xsOrder:I,sm:b,smOffset:v,smAuto:y,smAlignSelf:h,smOrder:_,md:j,mdOffset:G,mdAuto:P,mdAlignSelf:T,mdOrder:w,lg:M,lgOffset:C,lgAuto:E,lgAlignSelf:k,lgOrder:q,xl:z,xlOffset:B,xlAuto:D,xlAlignSelf:F,xlOrder:H,noGutter:J,'data-name':Q},L);return t.default.createElement(f.Col,R,K)},x=s.default.oneOfType([s.default.string,s.default.number]),O=s.default.oneOfType([s.default.string,s.default.number,s.default.bool]);u.propTypes={children:s.default.any,noGutter:s.default.bool,col:O,auto:s.default.bool,alignSelf:s.default.string,order:x,xs:O,xsOffset:x,xsAuto:s.default.bool,xsAlignSelf:s.default.string,xsOrder:x,sm:O,smOffset:x,smAuto:s.default.bool,smAlignSelf:s.default.string,smOrder:x,md:O,mdOffset:x,mdAuto:s.default.bool,mdAlignSelf:s.default.string,mdOrder:x,lg:O,lgOffset:x,lgAuto:s.default.bool,lgAlignSelf:s.default.string,lgOrder:x,xl:O,xlOffset:x,xlAuto:s.default.bool,xlAlignSelf:s.default.string,xlOrder:x},u.defaultProps={children:null},e.default=u},451,[57,70,445]); -__d(function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0});var n=b(['',''],['','']),t=b(['\n ','\n ','\n '],['\n ','\n ','\n ']),o=r(d[0]);function b(n,t){return Object.freeze(Object.defineProperties(n,{raw:{value:Object.freeze(t)}}))}var l='\n @-ms-viewport {\n width: device-width;\n }\n\n html {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n -ms-overflow-style: scrollbar;\n }\n\n *,\n *::before,\n *::after {\n -webkit-box-sizing: inherit;\n box-sizing: inherit;\n }\n';e.default=function(){var b=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return null==b?(0,o.injectGlobal)(n,l):(0,o.injectGlobal)(t,l,b)}},452,[425]); -__d(function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0});var n,t=Object.assign||function(n){for(var t=1;t1?t-1:0),p=1;p1?v(o):100*o+'%'};e.getWidth=A;var C=function(o){var t,n=o.key,p=o.prop,s=void 0===p?'variant':p,l=function(o){return y(o.theme,n,o[s])||null};return l.propTypes=((t={})[s]=u.numberOrString,t),l};e.variant=C;var T={propTypes:u,defaultBreakpoints:l,is:f,num:c,px:v,get:y,themeGet:b,cloneFunc:h,merge:k,compose:x,createMediaQuery:S,style:w};e.util=T;var R=function(o){return o<0},V=/^[mp][trblxy]?$/,z={m:'margin',p:'padding'},W={t:'Top',r:'Right',b:'Bottom',l:'Left',x:['Left','Right'],y:['Top','Bottom']},j=function(o){var t=o.split(''),n=t[0],p=t[1],s=z[n],u=W[p]||'';return Array.isArray(u)?u.map(function(o){return s+o}):[s+u]},H=function(o){return function(t){if(!c(t))return v(o[t]||t);var n=Math.abs(t),p=R(t),s=o[n]||n;return c(s)?v(s*(p?-1:1)):p?'-'+s:s}},I=[0,4,8,16,32,64,128,256,512],B=function(o){var t=Object.keys(o).filter(function(o){return V.test(o)}).sort(),p=y(o.theme,'space')||I,s=H(p);return t.map(function(t){var p=o[t],u=j(t),c=function(o){return f(o)?u.reduce(function(t,p){var u;return(0,n.default)({},t,((u={})[p]=s(o),u))},{}):null};if(!Array.isArray(p))return c(p);for(var v=[null].concat((y(o.theme,'breakpoints')||l).map(S)),b={},h=0;h0?o+'px solid':o},zr=w({prop:'border',key:'borders',transformValue:Vr});e.border=zr;var Wr=w({prop:'borderTop',key:'borders',transformValue:Vr});e.borderTop=Wr;var jr=w({prop:'borderRight',key:'borders',transformValue:Vr});e.borderRight=jr;var Hr=w({prop:'borderBottom',key:'borders',transformValue:Vr});e.borderBottom=Hr;var Ir=w({prop:'borderLeft',key:'borders',transformValue:Vr});e.borderLeft=Ir;var Br=x(zr,Wr,jr,Hr,Ir);e.borders=Br;var Gr=w({prop:'borderColor',key:'colors'});e.borderColor=Gr;var Pr=w({prop:'borderRadius',key:'radii',transformValue:v});e.borderRadius=Pr;var Fr=w({prop:'boxShadow',key:'shadows'});e.boxShadow=Fr;var Or=w({prop:'opacity'});e.opacity=Or;var Lr=w({prop:'overflow'});e.overflow=Lr;var Mr=w({prop:'background'});e.background=Mr;var Dr=w({prop:'backgroundImage'});e.backgroundImage=Dr;var _r=w({prop:'backgroundSize'});e.backgroundSize=_r;var Qr=w({prop:'backgroundPosition'});e.backgroundPosition=Qr;var Kr=w({prop:'backgroundRepeat'});e.backgroundRepeat=Kr;var Nr=w({prop:'position'});e.position=Nr;var Er=w({prop:'zIndex'});e.zIndex=Er;var $r=w({prop:'top',transformValue:v});e.top=$r;var qr=w({prop:'right',transformValue:v});e.right=qr;var Jr=w({prop:'bottom',transformValue:v});e.bottom=Jr;var Ur=w({prop:'left',transformValue:v});e.left=Ur;var Xr=C({prop:'textStyle',key:'textStyles'});e.textStyle=Xr;var Yr=C({prop:'colors',key:'colorStyles'});e.colorStyle=Yr;var Zr=C({key:'buttons'});e.buttonStyle=Zr;var re={space:B,width:P,fontSize:F,textColor:O,bgColor:L,color:M,fontFamily:D,textAlign:_,lineHeight:Q,fontWeight:K,fontStyle:N,letterSpacing:E,display:$,maxWidth:q,minWidth:J,height:U,maxHeight:X,minHeight:Y,sizeWidth:Z,sizeHeight:rr,size:er,ratioPadding:or,ratio:tr,verticalAlign:nr,alignItems:ar,alignContent:ir,justifyItems:pr,justifyContent:sr,flexWrap:ur,flexBasis:lr,flexDirection:dr,flex:fr,justifySelf:gr,alignSelf:mr,order:cr,gridGap:vr,gridColumnGap:yr,gridRowGap:br,gridColumn:hr,gridRow:kr,gridAutoFlow:xr,gridAutoColumns:Sr,gridAutoRows:wr,gridTemplateColumns:Ar,gridTemplateRows:Cr,gridTemplateAreas:Tr,gridArea:Rr,border:zr,borderTop:Wr,borderRight:jr,borderBottom:Hr,borderLeft:Ir,borders:Br,borderColor:Gr,borderRadius:Pr,boxShadow:Fr,opacity:Or,overflow:Lr,background:Mr,backgroundImage:Dr,backgroundPosition:Qr,backgroundRepeat:Kr,backgroundSize:_r,position:Nr,zIndex:Er,top:$r,right:qr,bottom:Jr,left:Ur,textStyle:Xr,colorStyle:Yr,buttonStyle:Zr};e.styles=re;var ee=function(o,t){var n={};for(var p in o)t.indexOf(p)>-1||(n[p]=o[p]);return n},oe=Object.keys(re).map(function(o){return re[o]}).filter(function(o){return'function'==typeof o}),te=oe.reduce(function(o,t){return o.concat(Object.keys(t.propTypes||{}))},['theme']);e.mixed=function(o){return oe.map(function(t){return t(o)}).reduce(k,ee(o,te))}},456,[60,1,70]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},457,[458]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Display=e.Serif=e.Sans=e.Text=e.renderFontValue=void 0;var t,n=(t=r(d[0]))&&t.__esModule?t:{default:t},o=r(d[1]),l=r(d[2]),f=r(d[3]),c=r(d[4]);function u(){return(u=Object.assign||function(t){for(var n=1;n=0||Object.prototype.propertyIsEnumerable.call(t,o)&&(f[o]=t[o])}return f}function y(t,n){if(null==t)return{};var o,l,f={},c=Object.keys(t);for(l=0;l=0||(f[o]=t[o]);return f}function p(){var t=h([""]);return p=function(){return t},t}function v(){var t=h(["\n ",";\n ",";\n ",";\n ",";\n ",";\n ",";\n ",";\n ",";\n ",";\n"]);return v=function(){return t},t}function h(t,n){return n||(n=t.slice(0)),Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(n)}}))}var O=(0,f.style)({prop:"verticalAlign"}),b=function(t){return"string"==typeof t?"font-family: ".concat(t):["font-family: ".concat(t.fontFamily)].concat(t.fontStyle?"font-style: ".concat(t.fontStyle):[]).concat(t.fontWeight?"font-weight: ".concat(t.fontWeight):[]).join(";\n")};e.renderFontValue=b;var w=o.styled.Text(v(),function(t){var n=t.fontFamily;return n&&b(n)},f.fontSize,f.lineHeight,f.color,f.display,f.maxWidth,f.space,f.textAlign,O);function S(t){if(null!==t)return t||"regular"}function j(t,n){return n?"italic":t}function x(t){var f=arguments.length>1&&void 0!==arguments[1]?arguments[1]:j;return(0,o.styledWrapper)(function(o){var y=o.size,p=o.weight,v=o.italic,h=o.element,O=s(o,["size","weight","italic","element"]),b=f(S(p),v);if(null===b)throw new Error("Did not expect `fontType` to be `null`.");return n.default.createElement(w,u({fontFamily:b&&l.themeProps.fontFamily[t][b]},(0,c.determineFontSizes)(t,y),h?{as:h}:{},O))})(p())}e.Text=w;var F=x("sans",function(t,n){return n&&"medium"===t?"mediumItalic":j(t,n)});e.Sans=F;var z=x("serif",function(t,n){if(n&&t&&"regular"!==t)throw new Error("The serif font does not have an italic font with weight `".concat(t,"`"));return j(t,n)});e.Serif=z;var P=x("display");e.Display=P,F.displayName="Sans",z.displayName="Serif",P.displayName="Display"},458,[57,424,420,456,459]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.determineFontSizes=function(o,c){if(!Array.isArray(c)){var f=t.themeProps.typeSizes[o][c];return{fontSize:"".concat(f.fontSize,"px"),lineHeight:"".concat(f.lineHeight,"px")}}return c.map(function(n){return t.themeProps.typeSizes[o][n]}).reduce(function(t,o){return{fontSize:[].concat(n(t.fontSize),["".concat(o.fontSize,"px")]),lineHeight:[].concat(n(t.lineHeight),["".concat(o.lineHeight,"px")])}},{fontSize:[],lineHeight:[]})};var t=r(d[0]);function n(t){return f(t)||c(t)||o()}function o(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function c(t){if(("function"==typeof Symbol?Symbol.iterator:"@@iterator")in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}function f(t){if(Array.isArray(t)){for(var n=0,o=new Array(t.length);n links */\n\n "," {\n a {\n color: inherit;\n &:hover {\n color: ",";\n }\n &:active {\n color: ",";\n }\n &.noUnderline {\n ",";\n }\n &.colorLink {\n ",";\n ",";\n }\n }\n }\n\n /* links */\n\n "," {\n a {\n color: inherit;\n &:hover {\n color: ",";\n }\n &:active {\n color: ",";\n }\n &.noUnderline {\n ",";\n }\n &.colorLink {\n ",";\n ",";\n }\n }\n }\n\n /* links */\n\n "," {\n a {\n color: ",";\n &:hover {\n text-decoration: underline;\n }\n }\n }\n\n h1, h2, h3, h4, h5, h6 {\n font-style: inherit;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit;\n margin: 0;\n }\n \n ",";\n "]);return l=function(){return n},n}function c(n,o){return o||(o=n.slice(0)),Object.freeze(Object.defineProperties(n,{raw:{value:Object.freeze(o)}}))}var s=(0,n.css)(["text-decoration:none;&:hover{text-decoration:underline;}"]),h=(0,n.css)(["color:",";"],(0,t.color)("purple100"))},469,[425,457,419]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.media=void 0;var t=r(d[0]),n=r(d[1]);function o(t){for(var n=1;n1?o-1:0),c=1;c=0||Object.prototype.propertyIsEnumerable.call(t,o)&&(u[o]=t[o])}return u}function S(t,n){if(null==t)return{};var o,l,u={},s=Object.keys(t);for(l=0;l=0||(u[o]=t[o]);return u}function j(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function _(t,n){for(var o=0;oo){if('identity'===f)return h;'clamp'===f&&(h=o)}return s===u?s:n===o?t<=n?s:u:(n===-1/0?h=-h:o===1/0?h-=n:h=(h-n)/(o-n),h=l(h),s===-1/0?h=-h:u===1/0?h+=s:h=h*(u-s)+s,h)}function O(t,n){for(var o=1;o=t);++o);return o-1}var q=(function(t){function n(s,u,l){var c;return(c=t.call(this)||this).getValue=function(){var t;return(t=c).calc.apply(t,c.payload.map(function(t){return t.getValue()}))},c.updateConfig=function(t,n){return c.calc=M.create(t,n)},c.interpolate=function(t,s){return new n(o(c),t,s)},c.payload=s instanceof T&&!s.updateConfig?s.payload:Array.isArray(s)?s:[s],c.calc=M.create(u,l),c}return s(n,t),n})(T);function D(t,n){'function'==typeof t.update?n.add(t):t.getChildren().forEach(function(t){return D(t,n)})}var _=(function(t){function n(n){var s;return(s=t.call(this)||this).setValue=function(t,n){void 0===n&&(n=!0),s.value=t,n&&s.flush()},s.getValue=function(){return s.value},s.updateStyles=function(){return D(o(s),s.animatedStyles)},s.updateValue=function(t){return s.flush(s.value=t)},s.interpolate=function(t,n){return new q(o(s),t,n)},s.value=n,s.animatedStyles=new Set,s.done=!1,s.startPosition=n,s.lastPosition=n,s.lastVelocity=void 0,s.lastTime=void 0,s.controller=void 0,s}s(n,t);var u=n.prototype;return u.flush=function(){0===this.animatedStyles.size&&this.updateStyles(),this.animatedStyles.forEach(function(t){return t.update()})},u.prepare=function(t){void 0===this.controller&&(this.controller=t),this.controller===t&&(this.startPosition=this.value,this.lastPosition=this.value,this.lastVelocity=t.isActive?this.lastVelocity:void 0,this.lastTime=t.isActive?this.lastTime:void 0,this.done=!1,this.animatedStyles.clear())},n})(F),K=(function(t){function n(n){var s;return(s=t.call(this)||this).setValue=function(t,n){void 0===n&&(n=!0),Array.isArray(t)?t.length===s.payload.length&&t.forEach(function(t,o){return s.payload[o].setValue(t,n)}):s.payload.forEach(function(o,u){return s.payload[u].setValue(t,n)})},s.getValue=function(){return s.payload.map(function(t){return t.getValue()})},s.interpolate=function(t,n){return new q(o(s),t,n)},s.payload=n.map(function(t){return new _(t)}),s}return s(n,t),n})(T),N=!1,W=new Set,z=function t(){var n=b(),o=W,s=Array.isArray(o),u=0;for(o=s?o:o["function"==typeof Symbol?Symbol.iterator:"@@iterator"]();;){var l;if(s){if(u>=o.length)break;l=o[u++]}else{if((u=o.next()).done)break;l=u.value}for(var c=l,f=!0,p=!0,h=0;h=c.startTime+y.delay+y.duration;else if(y.decay)j=P+E/.0020000000000000018*(1-Math.exp(-.0020000000000000018*(n-c.startTime))),(w=Math.abs(V.lastPosition-j)<.1)&&(x=j);else{A=void 0!==V.lastTime?V.lastTime:n,E=void 0!==V.lastVelocity?V.lastVelocity:y.initialVelocity,n>A+64&&(A=n);for(var R=Math.floor(n-A),F=0;Fx:j1?n-1:0),s=1;s1?R-1:0),T=1;T1&&(o-=1),o<.16666666666666666?t+6*(n-t)*o:o<.5?n:o<.6666666666666666?t+(n-t)*(.6666666666666666-o)*6:t}function Pt(t,n,o){var s=o<.5?o*(1+n):o+n-o*n,u=2*o-s,l=Vt(u,s,t+.3333333333333333),c=Vt(u,s,t),f=Vt(u,s,t-.3333333333333333);return Math.round(255*l)<<24|Math.round(255*c)<<16|Math.round(255*f)<<8}function xt(t){var n=parseInt(t,10);return n<0?0:n>255?255:n}function jt(t){return(parseFloat(t)%360+360)%360/360}function St(t){var n=parseFloat(t);return n<0?0:n>1?255:Math.round(255*n)}function Et(t){var n=parseFloat(t);return n<0?0:n>100?1:n/100}function Ct(t){var n,o,s='number'==typeof(n=t)?n>>>0===n&&n>=0&&n<=4294967295?n:null:(o=At.exec(n))?parseInt(o[1]+'ff',16)>>>0:ft.hasOwnProperty(n)?ft[n]:(o=mt.exec(n))?(xt(o[1])<<24|xt(o[2])<<16|xt(o[3])<<8|255)>>>0:(o=vt.exec(n))?(xt(o[1])<<24|xt(o[2])<<16|xt(o[3])<<8|St(o[4]))>>>0:(o=wt.exec(n))?parseInt(o[1]+o[1]+o[2]+o[2]+o[3]+o[3]+'ff',16)>>>0:(o=kt.exec(n))?parseInt(o[1],16)>>>0:(o=bt.exec(n))?parseInt(o[1]+o[1]+o[2]+o[2]+o[3]+o[3]+o[4]+o[4],16)>>>0:(o=yt.exec(n))?(255|Pt(jt(o[1]),Et(o[2]),Et(o[3])))>>>0:(o=gt.exec(n))?(Pt(jt(o[1]),Et(o[2]),Et(o[3]))|St(o[4]))>>>0:null;return null===s?t:"rgba("+((4278190080&(s=s||0))>>>24)+", "+((16711680&s)>>>16)+", "+((65280&s)>>>8)+", "+(255&s)/255+")"}var Rt=/[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,Ft=/(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\))/gi,Tt=new RegExp("("+Object.keys(ft).join('|')+")",'g');var It=(function(t){function n(n){var o;return(o=t.call(this)||this)._transforms=n,o}s(n,t);var o=n.prototype;return o.getValue=function(){return this._transforms.map(function(t){var n={};for(var o in t){var s=t[o];n[o]=s instanceof C?s.getValue():s}return n})},o.getAnimatedValue=function(){return this._transforms.map(function(t){var n={};for(var o in t){var s=t[o];n[o]=s instanceof C?s.getAnimatedValue():s}return n})},o.attach=function(){var t=this;this._transforms.forEach(function(n){for(var o in n){var s=n[o];s instanceof C&&s.addChild(t)}})},o.detach=function(){var t=this;this._transforms.forEach(function(n){for(var o in n){var s=n[o];s instanceof C&&s.removeChild(t)}})},n})(F);j(c.View),x(function(t){var o=t.output.map(function(t){return t.replace(Ft,Ct)}).map(function(t){return t.replace(Tt,Ct)}),s=o[0].match(Rt).map(function(){return[]});o.forEach(function(t){t.match(Rt).forEach(function(t,n){return s[n].push(+t)})});var u=o[0].match(Rt).map(function(o,u){return M.create(n({},t,{output:s[u]}))});return function(t){var n=0;return o[0].replace(Rt,function(){return u[n++](t)}).replace(/rgba\(([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+)\)/gi,function(t,n,o,s,u){return"rgba("+Math.round(n)+", "+Math.round(o)+", "+Math.round(s)+", "+u+")"})}}),P(ft),V(function(t,n){return!!t.setNativeProps&&t.setNativeProps(n)},function(t){return n({},t,{transform:new It(t.transform)})}),S(function(t){return new rt(c.StyleSheet.flatten(t))}),e.Spring=it,e.Keyframes=st,e.Transition=ct,e.Trail=ot,e.Controller=tt,e.config=nt,e.animated=function(t){var c=(function(c){function f(t){var n;return(n=c.call(this)||this).callback=function(){n.node&&!1===p.fn(n.node,n.propsAnimated.getAnimatedValue(),o(n))&&n.forceUpdate()},n.attachProps(t),n}s(f,c);var h=f.prototype;return h.componentWillUnmount=function(){this.propsAnimated&&this.propsAnimated.detach()},h.setNativeProps=function(t){!1===p.fn(this.node,t,this)&&this.forceUpdate()},h.attachProps=function(t){t.forwardRef;var n=u(t,["forwardRef"]),o=this.propsAnimated;this.propsAnimated=new et(n,this.callback),o&&o.detach()},h.shouldComponentUpdate=function(t){var n=t.style,o=u(t,["style"]),s=this.props,l=s.style;return!(G(u(s,["style"]),o)&&G(l,n)||(this.attachProps(t),0))},h.render=function(){var o=this,s=this.propsAnimated.getValue(),c=(s.scrollTop,s.scrollLeft,u(s,["scrollTop","scrollLeft"]));return l.createElement(t,n({},c,{ref:function(t){return o.node=Z(t,o.props.forwardRef)}}))},f})(l.Component);return l.forwardRef(function(t,o){return l.createElement(c,n({},t,{forwardRef:o}))})},e.interpolate=function(t,n,o){return t&&new q(t,n,o)},e.Globals=E},476,[477,478,479,480,57,3]); -__d(function(g,r,i,a,m,e,d){function t(){return m.exports=t=Object.assign||function(t){for(var n=1;n=0||(o[f]=n[f]);return o}},480,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})});var n=r(d[1]);Object.keys(n).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return n[t]}})})},481,[482,483]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Spinner=void 0;var t=f(r(d[0])),n=r(d[1]),o=f(r(d[2])),u=r(d[3]),c=r(d[4]);function f(t){return t&&t.__esModule?t:{default:t}}function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof("function"==typeof Symbol?Symbol.iterator:"@@iterator")?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==("function"==typeof Symbol?Symbol.prototype:"@@prototype")?"symbol":typeof t})(t)}function p(){return(p=Object.assign||function(t){for(var n=1;n=0||Object.prototype.propertyIsEnumerable.call(t,o)&&(c[o]=t[o])}return c}function f(t,n){if(null==t)return{};var o,u,c={},f=Object.keys(t);for(u=0;u=0||(c[o]=t[o]);return c}function l(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function s(t){if(("function"==typeof Symbol?Symbol.iterator:"@@iterator")in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}function y(t){if(Array.isArray(t)){for(var n=0,o=new Array(t.length);n-1||(o[u]=t[u]);return o};e.omit=w;var P=function(t){return"string"==typeof t?t:t.displayName||"Tag"};function h(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u.View,o=n.default.forwardRef(function(o,u){var f=o.is,l=void 0===f?t:f,s=o.omitFromProps,y=void 0===s?j:s,b=c(o,["is","omitFromProps"]);return n.default.createElement(l,p({ref:u},w(b,y)))});return o.displayName="Clean.".concat(P(t)),o}var S=h();e.CleanTag=S,S.as=h},488,[57,456,424]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},489,[490]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Collapse=void 0;var t,n=(t=r(d[0]))&&t.__esModule?t:{default:t},o=r(d[1]),u=r(d[2]);function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof("function"==typeof Symbol?Symbol.iterator:"@@iterator")?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==("function"==typeof Symbol?Symbol.prototype:"@@prototype")?"symbol":typeof t})(t)}function f(t){for(var n=1;n=0||Object.prototype.propertyIsEnumerable.call(t,l)&&(f[l]=t[l])}return f}function s(t,n){if(null==t)return{};var l,o,f={},u=Object.keys(t);for(o=0;o=0||(f[l]=t[l]);return f}var y=function(t){t.href;var s=t.imageUrl,y=t.initials,p=t.name,b=t.meta,O=t.FollowButton,v=c(t,["href","imageUrl","initials","name","meta","FollowButton"]);return n.default.createElement(o.Flex,u({flexDirection:"row",justifyContent:"space-between",flexWrap:"nowrap"},v),(s||y)&&n.default.createElement(o.Flex,{mr:1,justifyContent:"center"},n.default.createElement(l.Avatar,{size:"xs",src:s,initials:y})),n.default.createElement(o.Flex,{justifyContent:"center",width:0,flexGrow:1},n.default.createElement(f.Serif,{ellipsizeMode:"tail",numberOfLines:1,size:"3t",color:"black100"},p),!!b&&n.default.createElement(f.Sans,{ellipsizeMode:"tail",numberOfLines:1,size:"2",color:"black60"},b)),O&&n.default.createElement(o.Flex,{ml:1,flexDirection:"row",alignItems:"center",justifyContent:"flex-end"},O))};e.EntityHeader=y,y.displayName="EntityHeader",y.displayName="EntityHeader"},500,[57,416,454,457]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},501,[502]); -__d(function(g,r,i,a,m,e,d){"use strict"},502,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},503,[504]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ResponsiveImage=e.Image=void 0;var s=r(d[0]),o=s.BaseImage;e.Image=o,o.displayName="Image";var v=s.BaseResponsiveImage;e.ResponsiveImage=v,v.displayName="ResponsiveImage"},504,[505]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BaseResponsiveImage=e.BaseImage=void 0;var s,t=(s=r(d[0]))&&s.__esModule?s:{default:s},o=r(d[1]),n=r(d[2]),c=r(d[3]);var u=(0,t.default)(n.CleanTag.as(o.Image)).withConfig({displayName:"Imageshared__BaseImage",componentId:"sc-1dymtq1-0"})(["",";",";",";",""],c.space,c.width,c.height,c.borderRadius);e.BaseImage=u;var p=(0,t.default)(n.CleanTag).withConfig({displayName:"Imageshared__BaseResponsiveImage",componentId:"sc-1dymtq1-1"})(["background:url(",");background-size:contain;background-repeat:no-repeat;background-position:center;",";",";",";",";"],function(s){return s.src},c.ratio,c.space,c.width,c.maxWidth);e.BaseResponsiveImage=p,p.defaultProps={width:"100%",ratio:1}},505,[425,424,487,456]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},506,[507]); -__d(function(g,r,i,a,m,e,d){"use strict"},507,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},508,[509]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Join=void 0;var n,t=(n=r(d[0]))&&n.__esModule?n:{default:n};e.Join=function(n){var o=n.separator,u=n.children,l=t.default.Children.toArray(u);return l.reduce(function(n,u,c){return n.push(t.default.cloneElement(u,{key:"join-".concat(c)})),c!==l.length-1&&n.push(o&&t.default.cloneElement(o,{key:"join-sep-".concat(c)})),n},[])}},509,[57]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},510,[511]); -__d(function(g,r,i,a,m,e,d){"use strict"},511,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},512,[513]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Message=void 0;var t,n=(t=r(d[0]))&&t.__esModule?t:{default:t},o=r(d[1]),l=r(d[2]),c=r(d[3]),u=r(d[4]);function f(){return(f=Object.assign||function(t){for(var n=1;n=0||Object.prototype.propertyIsEnumerable.call(t,o)&&(c[o]=t[o])}return c}function p(t,n){if(null==t)return{};var o,l,c={},u=Object.keys(t);for(l=0;l=0||(c[o]=t[o]);return c}function b(){var t=O(["\n background-color: ",";\n border-radius: 2px;\n"]);return b=function(){return t},t}function O(t,n){return n||(n=t.slice(0)),Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(n)}}))}var v=(0,l.styledWrapper)(c.Flex)(b(),(0,o.color)("black5")),y=function(t){var l=t.children,c=t.textSize,p=void 0===c?"3t":c,b=s(t,["children","textSize"]);return n.default.createElement(v,f({p:2},b),n.default.createElement(u.Sans,{size:p,color:(0,o.color)("black60"),weight:"regular"},l))};e.Message=y,y.displayName="Message"},513,[57,468,424,454,457]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},514,[515]); -__d(function(g,r,i,a,m,e,d){"use strict"},515,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},516,[517]); -__d(function(g,r,i,a,m,e,d){"use strict"},517,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},518,[519]); -__d(function(g,r,i,a,m,e,d){"use strict"},519,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},520,[521]); -__d(function(g,r,i,a,m,e,d){"use strict"},521,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},522,[523]); -__d(function(g,r,i,a,m,e,d){"use strict"},523,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},524,[525]); -__d(function(g,r,i,a,m,e,d){"use strict"},525,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},526,[527]); -__d(function(g,r,i,a,m,e,d){"use strict"},527,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},528,[529]); -__d(function(g,r,i,a,m,e,d){"use strict"},529,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},530,[531]); -__d(function(g,r,i,a,m,e,d){"use strict"},531,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},532,[533]); -__d(function(g,r,i,a,m,e,d){"use strict"},533,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},534,[535]); -__d(function(g,r,i,a,m,e,d){"use strict"},535,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},536,[537]); -__d(function(g,r,i,a,m,e,d){"use strict"},537,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},538,[539]); -__d(function(g,r,i,a,m,e,d){"use strict"},539,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},540,[541]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Separator=void 0;var t=r(d[0]),n=r(d[1]);function o(){var t=c(["\n border: 1px solid ",";\n border-bottom-width: 0;\n ",";\n ",";\n"]);return o=function(){return t},t}function c(t,n){return n||(n=t.slice(0)),Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(n)}}))}var u=r(d[2]).styled.View(o(),(0,n.color)("black10"),t.space,t.width);e.Separator=u,u.defaultProps={width:"100%"}},541,[456,468,424]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},542,[543]); -__d(function(g,r,i,a,m,e,d){"use strict"},543,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},544,[545]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Spacer=void 0;var t,c=(t=r(d[0]))&&t.__esModule?t:{default:t},u=r(d[1]);var l=function(t){return c.default.createElement(u.Box,t)};e.Spacer=l,l.displayName="Spacer",l.displayName="Spacer"},545,[57,472]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},546,[547]); -__d(function(g,r,i,a,m,e,d){"use strict"},547,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},548,[549]); -__d(function(g,r,i,a,m,e,d){"use strict"},549,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},550,[551]); -__d(function(g,r,i,a,m,e,d){"use strict"},551,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},552,[553]); -__d(function(g,r,i,a,m,e,d){"use strict"},553,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},554,[555]); -__d(function(g,r,i,a,m,e,d){"use strict"},555,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},556,[557]); -__d(function(g,r,i,a,m,e,d){"use strict"},557,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},558,[559]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TimeRemaining=void 0;var t,n=r(d[0]),o=(t=r(d[1]))&&t.__esModule?t:{default:t},l=r(d[2]),u=r(d[3]);function c(t){return t.toString().padStart(2,"0")}var s=function(t){var s=t.countdownEnd,f=t.currentTime,h=t.highlight,M=void 0===h?"purple100":h,T=t.labelFontSize,S=void 0===T?"3":T,v=t.labelWithoutTimeRemaining,x=t.labelWithTimeRemaining,p=t.timeEndedDisplayText,E=t.timerFontSize,_=void 0===E?"3":E,R=t.trailingText,b=n.Duration.fromISO(n.DateTime.fromISO(s).diff((0,u.useCurrentTime)(f)).toString()),y=Math.floor(b.seconds)<=0,z="".concat(c(Math.max(0,Math.floor(b.as("days")))),"d "),D="".concat(c(Math.max(0,Math.floor(b.as("hours")%24))),"h "),F="".concat(c(Math.max(0,Math.floor(b.as("minutes")%60))),"m "),w="".concat(c(Math.max(0,Math.floor(b.as("seconds")%60))),"s");return o.default.createElement(l.Flex,{flexDirection:"column",alignItems:"center"},o.default.createElement(l.Sans,{size:_,color:M,weight:"medium"},y&&p?p:o.default.createElement(o.default.Fragment,null,z,D,F,w,R&&" ".concat(R))),(x||v)&&o.default.createElement(l.Sans,{size:S,weight:"medium"},y?v:x))};e.TimeRemaining=s,s.displayName="TimeRemaining"},559,[560,57,415,561]); -__d(function(e,t,n,r,i,o,a){'use strict';var u=t(a[0]);function s(e,t){for(var n=0;n=t&&e<=n}function x(e,t){return void 0===t&&(t=2),e.toString().length=0&&(t=new Date(t)).setUTCFullYear(t.getUTCFullYear()-1900),+t}function q(e){var t=(e+Math.floor(e/4)-Math.floor(e/100)+Math.floor(e/400))%7,n=e-1,r=(n+Math.floor(n/4)-Math.floor(n/100)+Math.floor(n/400))%7;return 4===t||3===r?53:52}function H(e){return e>99?e:e>60?1900+e:2e3+e}function U(e,t,n,r){void 0===r&&(r=null);var i=new Date(e),o={hour12:!1,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(o.timeZone=r);var a=u({timeZoneName:t},o),s=M();if(s&&D()){var c=new Intl.DateTimeFormat(n,a).formatToParts(i).find(function(e){return"timezonename"===e.type.toLowerCase()});return c?c.value:null}if(s){var l=new Intl.DateTimeFormat(n,o).format(i);return new Intl.DateTimeFormat(n,a).format(i).substring(l.length).replace(/^[, \u200e]+/,"")}return null}function R(e,t){var n=parseInt(e,10)||0,r=parseInt(t,10)||0;return 60*n+(n<0?-r:r)}function P(e){var t=Number(e);if("boolean"==typeof e||""===e||Number.isNaN(t))throw new T("Invalid unit value "+e);return t}function W(e,t,n){var r={};for(var i in e)if(e.hasOwnProperty(i)){if(n.indexOf(i)>=0)continue;var o=e[i];if(void 0===o||null===o)continue;r[t(i)]=P(o)}return r}function J(e,t){var n=Math.trunc(e/60),r=Math.abs(e%60),i=n>=0?"+":"-",o=""+i+Math.abs(n);switch(t){case"short":return""+i+x(Math.abs(n),2)+":"+x(r,2);case"narrow":return r>0?o+":"+r:o;case"techie":return""+i+x(Math.abs(n),2)+x(r,2);default:throw new RangeError("Value format "+t+" is out of range for property format")}}function Y(e){return V(e,["hour","minute","second","millisecond"])}var G=/[A-Za-z_+-]{1,256}(:?\/[A-Za-z_+-]{1,256}(\/[A-Za-z_+-]{1,256})?)?/,$="numeric",B="short",Q="long",X="2-digit",K={year:$,month:$,day:$},ee={year:$,month:B,day:$},te={year:$,month:Q,day:$},ne={year:$,month:Q,day:$,weekday:Q},re={hour:$,minute:X},ie={hour:$,minute:X,second:X},oe={hour:$,minute:X,second:X,timeZoneName:B},ae={hour:$,minute:X,second:X,timeZoneName:Q},ue={hour:$,minute:X,hour12:!1},se={hour:$,minute:X,second:X,hour12:!1},ce={hour:$,minute:X,second:X,hour12:!1,timeZoneName:B},le={hour:$,minute:X,second:X,hour12:!1,timeZoneName:Q},fe={year:$,month:$,day:$,hour:$,minute:X},de={year:$,month:$,day:$,hour:$,minute:X,second:X},he={year:$,month:B,day:$,hour:$,minute:X},me={year:$,month:B,day:$,hour:$,minute:X,second:X},ye={year:$,month:Q,day:$,hour:$,minute:X,timeZoneName:B},ve={year:$,month:Q,day:$,hour:$,minute:X,second:X,timeZoneName:B},ge={year:$,month:Q,day:$,weekday:Q,hour:$,minute:X,timeZoneName:Q},pe={year:$,month:Q,day:$,weekday:Q,hour:$,minute:X,second:X,timeZoneName:Q};function we(e){return JSON.stringify(e,Object.keys(e).sort())}var ke=["January","February","March","April","May","June","July","August","September","October","November","December"],Se=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Te=["J","F","M","A","M","J","J","A","S","O","N","D"];function be(e){switch(e){case"narrow":return Te;case"short":return Se;case"long":return ke;case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}var Oe=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],Ne=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],Me=["M","T","W","T","F","S","S"];function De(e){switch(e){case"narrow":return Me;case"short":return Ne;case"long":return Oe;case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var Ie=["AM","PM"],Ee=["Before Christ","Anno Domini"],Ve=["BC","AD"],Le=["B","A"];function xe(e){switch(e){case"narrow":return Le;case"short":return Ve;case"long":return Ee;default:return null}}function Fe(e){return Ie[e.hour<12?0:1]}function Ce(e,t){return De(t)[e.weekday-1]}function Ze(e,t){return be(t)[e.month-1]}function ze(e,t){return xe(t)[e.year<0?0:1]}function Ae(e,t,n,r){void 0===n&&(n="always"),void 0===r&&(r=!1);var i={years:["year","yr."],quarters:["quarer","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},o=-1===["hours","minutes","seconds"].indexOf(e);if("auto"===n&&o){var a="days"===e;switch(t){case 1:return a?"tomorrow":"next "+i[e][0];case-1:return a?"yesterday":"last "+i[e][0];case 0:return a?"today":"this "+i[e][0]}}var u=Object.is(t,-0)||t<0,s=Math.abs(t),c=r?i[e][1]:1===s?i[e][0]:e;return u?s+" "+c+" ago":"in "+s+" "+c}function _e(e){switch(we(V(e,["weekday","era","year","month","day","hour","minute","second","timeZoneName","hour12"]))){case we(K):return"M/d/yyyy";case we(ee):return"LLL d, yyyy";case we(te):return"LLLL d, yyyy";case we(ne):return"EEEE, LLLL d, yyyy";case we(re):return"h:mm a";case we(ie):return"h:mm:ss a";case we(oe):case we(ae):return"h:mm a";case we(ue):return"HH:mm";case we(se):return"HH:mm:ss";case we(ce):case we(le):return"HH:mm";case we(fe):return"M/d/yyyy, h:mm a";case we(he):return"LLL d, yyyy, h:mm a";case we(ye):return"LLLL d, yyyy, h:mm a";case we(ge):return"EEEE, LLLL d, yyyy, h:mm a";case we(de):return"M/d/yyyy, h:mm:ss a";case we(me):return"LLL d, yyyy, h:mm:ss a";case we(ve):return"LLLL d, yyyy, h:mm:ss a";case we(pe):return"EEEE, LLLL d, yyyy, h:mm:ss a";default:return"EEEE, LLLL d, yyyy, h:mm a"}}var je=(function(){function e(){}var t=e.prototype;return t.offsetName=function(e,t){throw new b},t.formatOffset=function(e,t){throw new b},t.offset=function(e){throw new b},t.equals=function(e){throw new b},c(e,[{key:"type",get:function(){throw new b}},{key:"name",get:function(){throw new b}},{key:"universal",get:function(){throw new b}},{key:"isValid",get:function(){throw new b}}]),e})(),qe=null,He=(function(e){function t(){return e.apply(this,arguments)||this}l(t,e);var n=t.prototype;return n.offsetName=function(e,t){return U(e,t.format,t.locale)},n.formatOffset=function(e,t){return J(this.offset(e),t)},n.offset=function(e){return-new Date(e).getTimezoneOffset()},n.equals=function(e){return"local"===e.type},c(t,[{key:"type",get:function(){return"local"}},{key:"name",get:function(){return M()?(new Intl.DateTimeFormat).resolvedOptions().timeZone:"local"}},{key:"universal",get:function(){return!1}},{key:"isValid",get:function(){return!0}}],[{key:"instance",get:function(){return null===qe&&(qe=new t),qe}}]),t})(je),Ue=RegExp("^"+G.source+"$"),Re={};var Pe={year:0,month:1,day:2,hour:3,minute:4,second:5};function We(e,t){var n=e.format(t).replace(/\u200E/g,""),r=/(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(n),i=r[1],o=r[2];return[r[3],i,o,r[4],r[5],r[6]]}function Je(e,t){for(var n=e.formatToParts(t),r=[],i=0;i=r.length)break;a=r[o++]}else{if((o=r.next()).done)break;a=o.value}var u=a;u.literal?n+=u.val:n+=t(u.val)}return n}var ut={D:K,DD:ee,DDD:te,DDDD:ne,t:re,tt:ie,ttt:oe,tttt:ae,T:ue,TT:se,TTT:ce,TTTT:le,f:fe,ff:he,fff:ye,ffff:ge,F:de,FF:me,FFF:ve,FFFF:pe},st=(function(){function e(e,t){this.opts=t,this.loc=e,this.systemLoc=null}e.create=function(t,n){return void 0===n&&(n={}),new e(t,n)},e.parseFormat=function(e){for(var t=null,n="",r=!1,i=[],o=0;o0&&i.push({literal:r,val:n}),t=null,n="",r=!r):r?n+=a:a===t?n+=a:(n.length>0&&i.push({literal:!1,val:n}),n=a,t=a)}return n.length>0&&i.push({literal:r,val:n}),i};var t=e.prototype;return t.formatWithSystemDefault=function(e,t){return null===this.systemLoc&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,u({},this.opts,t)).format()},t.formatDateTime=function(e,t){return void 0===t&&(t={}),this.loc.dtFormatter(e,u({},this.opts,t)).format()},t.formatDateTimeParts=function(e,t){return void 0===t&&(t={}),this.loc.dtFormatter(e,u({},this.opts,t)).formatToParts()},t.resolvedOptions=function(e,t){return void 0===t&&(t={}),this.loc.dtFormatter(e,u({},this.opts,t)).resolvedOptions()},t.num=function(e,t){if(void 0===t&&(t=0),this.opts.forceSimple)return x(e,t);var n=u({},this.opts);return t>0&&(n.padTo=t),this.loc.numberFormatter(n).format(e)},t.formatDateTimeFromString=function(t,n){var r=this,i="en"===this.loc.listingMode(),o=function(e,n){return r.loc.extract(t,e,n)},a=function(e){return t.isOffsetFixed&&0===t.offset&&e.allowZ?"Z":t.isValid?t.zone.formatOffset(t.ts,e.format):""},u=function(e,n){return i?Ze(t,e):o(n?{month:e}:{month:e,day:"numeric"},"month")},s=function(e,n){return i?Ce(t,e):o(n?{weekday:e}:{weekday:e,month:"long",day:"numeric"},"weekday")},c=function(e){var n=ut[e];return n?r.formatWithSystemDefault(t,n):e},l=function(e){return i?ze(t,e):o({era:e},"era")};return at(e.parseFormat(n),function(e){var n=r.loc.outputCalendar;switch(e){case"S":return r.num(t.millisecond);case"u":case"SSS":return r.num(t.millisecond,3);case"s":return r.num(t.second);case"ss":return r.num(t.second,2);case"m":return r.num(t.minute);case"mm":return r.num(t.minute,2);case"h":return r.num(t.hour%12==0?12:t.hour%12);case"hh":return r.num(t.hour%12==0?12:t.hour%12,2);case"H":return r.num(t.hour);case"HH":return r.num(t.hour,2);case"Z":return a({format:"narrow",allowZ:r.opts.allowZ});case"ZZ":return a({format:"short",allowZ:r.opts.allowZ});case"ZZZ":return a({format:"techie",allowZ:!1});case"ZZZZ":return t.zone.offsetName(t.ts,{format:"short",locale:r.loc.locale});case"ZZZZZ":return t.zone.offsetName(t.ts,{format:"long",locale:r.loc.locale});case"z":return t.zoneName;case"a":return i?Fe(t):o({hour:"numeric",hour12:!0},"dayperiod");case"d":return n?o({day:"numeric"},"day"):r.num(t.day);case"dd":return n?o({day:"2-digit"},"day"):r.num(t.day,2);case"c":return r.num(t.weekday);case"ccc":return s("short",!0);case"cccc":return s("long",!0);case"ccccc":return s("narrow",!0);case"E":return r.num(t.weekday);case"EEE":return s("short",!1);case"EEEE":return s("long",!1);case"EEEEE":return s("narrow",!1);case"L":return n?o({month:"numeric",day:"numeric"},"month"):r.num(t.month);case"LL":return n?o({month:"2-digit",day:"numeric"},"month"):r.num(t.month,2);case"LLL":return u("short",!0);case"LLLL":return u("long",!0);case"LLLLL":return u("narrow",!0);case"M":return n?o({month:"numeric"},"month"):r.num(t.month);case"MM":return n?o({month:"2-digit"},"month"):r.num(t.month,2);case"MMM":return u("short",!1);case"MMMM":return u("long",!1);case"MMMMM":return u("narrow",!1);case"y":return n?o({year:"numeric"},"year"):r.num(t.year);case"yy":return n?o({year:"2-digit"},"year"):r.num(t.year.toString().slice(-2),2);case"yyyy":return n?o({year:"numeric"},"year"):r.num(t.year,4);case"yyyyyy":return n?o({year:"numeric"},"year"):r.num(t.year,6);case"G":return l("short");case"GG":return l("long");case"GGGGG":return l("narrow");case"kk":return r.num(t.weekYear.toString().slice(-2),2);case"kkkk":return r.num(t.weekYear,4);case"W":return r.num(t.weekNumber);case"WW":return r.num(t.weekNumber,2);case"o":return r.num(t.ordinal);case"ooo":return r.num(t.ordinal,3);case"q":return r.num(t.quarter);case"qq":return r.num(t.quarter,2);case"X":return r.num(Math.floor(t.ts/1e3));case"x":return r.num(t.ts);default:return c(e)}})},t.formatDurationFromString=function(t,n){var r,i=this,o=function(e){switch(e[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"M":return"month";case"y":return"year";default:return null}},a=e.parseFormat(n),u=a.reduce(function(e,t){var n=t.literal,r=t.val;return n?e:e.concat(r)},[]),s=t.shiftTo.apply(t,u.map(o).filter(function(e){return e}));return at(a,(r=s,function(e){var t=o(e);return t?i.num(r.get(t),e.length):e}))},e})(),ct={};function lt(e,t){void 0===t&&(t={});var n=JSON.stringify([e,t]),r=ct[n];return r||(r=new Intl.DateTimeFormat(e,t),ct[n]=r),r}var ft={};function dt(e,t){void 0===t&&(t={});var n=JSON.stringify([e,t]),r=ft[n];return r||(r=new Intl.NumberFormat(e,t),ft[n]=r),r}var ht={};function mt(e,t){void 0===t&&(t={});var n=JSON.stringify([e,t]),r=ht[n];return r||(r=new Intl.RelativeTimeFormat(e,t),ht[n]=r),r}var yt=null;function vt(){if(yt)return yt;if(M()){var e=(new Intl.DateTimeFormat).resolvedOptions().locale;return yt="und"===e?"en-US":e}return yt="en-US"}function gt(e){var t=e.indexOf("-u-");if(-1===t)return[e];var n,r=e.substring(0,t);try{n=lt(e).resolvedOptions()}catch(e){n=lt(r).resolvedOptions()}var i=n;return[r,i.numberingSystem,i.calendar]}function pt(e,t,n){return M()?n||t?(e+="-u",n&&(e+="-ca-"+n),t&&(e+="-nu-"+t),e):e:[]}function wt(e){for(var t=[],n=1;n<=12;n++){var r=Mr.utc(2016,n,1);t.push(e(r))}return t}function kt(e){for(var t=[],n=1;n<=7;n++){var r=Mr.utc(2016,11,13+n);t.push(e(r))}return t}function St(e,t,n,r,i){var o=e.listingMode(n);return"error"===o?null:"en"===o?r(t):i(t)}var Tt=(function(){function e(e,t,n){if(this.padTo=n.padTo||0,this.floor=n.floor||!1,!t&&M()){var r={useGrouping:!1};n.padTo>0&&(r.minimumIntegerDigits=n.padTo),this.inf=dt(e,r)}}return e.prototype.format=function(e){if(this.inf){var t=this.floor?Math.floor(e):e;return this.inf.format(t)}return x(this.floor?Math.floor(e):Z(e,3),this.padTo)},e})(),bt=(function(){function e(e,t,n){var r;if(this.opts=n,this.hasIntl=M(),e.zone.universal&&this.hasIntl?(r="UTC",n.timeZoneName?this.dt=e:this.dt=0===e.offset?e:Mr.fromMillis(e.ts+60*e.offset*1e3)):"local"===e.zone.type?this.dt=e:(this.dt=e,r=e.zone.name),this.hasIntl){var i=u({},this.opts);r&&(i.timeZone=r),this.dtf=lt(t,i)}}var t=e.prototype;return t.format=function(){if(this.hasIntl)return this.dtf.format(this.dt.toJSDate());var e=_e(this.opts),t=Nt.create("en-US");return st.create(t).formatDateTimeFromString(this.dt,e)},t.formatToParts=function(){return this.hasIntl&&D()?this.dtf.formatToParts(this.dt.toJSDate()):[]},t.resolvedOptions=function(){return this.hasIntl?this.dtf.resolvedOptions():{locale:"en-US",numberingSystem:"latn",outputCalendar:"gregory"}},e})(),Ot=(function(){function e(e,t,n){this.opts=u({style:"long"},n),!t&&I()&&(this.rtf=mt(e,n))}var t=e.prototype;return t.format=function(e,t){return this.rtf?this.rtf.format(e,t):Ae(t,e,this.opts.numeric,"long"!==this.opts.style)},t.formatToParts=function(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]},e})(),Nt=(function(){function e(e,t,n,r){var i=gt(e),o=i[0],a=i[1],u=i[2];this.locale=o,this.numberingSystem=t||a||null,this.outputCalendar=n||u||null,this.intl=pt(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=r,this.fastNumbersCached=null}e.fromOpts=function(t){return e.create(t.locale,t.numberingSystem,t.outputCalendar,t.defaultToEN)},e.create=function(t,n,r,i){void 0===i&&(i=!1);var o=t||ot.defaultLocale;return new e(o||(i?"en-US":vt()),n||ot.defaultNumberingSystem,r||ot.defaultOutputCalendar,o)},e.resetCache=function(){yt=null,ct={},ft={}},e.fromObject=function(t){var n=void 0===t?{}:t,r=n.locale,i=n.numberingSystem,o=n.outputCalendar;return e.create(r,i,o)};var t=e.prototype;return t.listingMode=function(e){void 0===e&&(e=!0);var t=M()&&D(),n=this.isEnglish(),r=!(null!==this.numberingSystem&&"latn"!==this.numberingSystem||null!==this.outputCalendar&&"gregory"!==this.outputCalendar);return t||n&&r||e?!t||n&&r?"en":"intl":"error"},t.clone=function(t){return t&&0!==Object.getOwnPropertyNames(t).length?e.create(t.locale||this.specifiedLocale,t.numberingSystem||this.numberingSystem,t.outputCalendar||this.outputCalendar,t.defaultToEN||!1):this},t.redefaultToEN=function(e){return void 0===e&&(e={}),this.clone(u({},e,{defaultToEN:!0}))},t.redefaultToSystem=function(e){return void 0===e&&(e={}),this.clone(u({},e,{defaultToEN:!1}))},t.months=function(e,t,n){var r=this;return void 0===t&&(t=!1),void 0===n&&(n=!0),St(this,e,n,be,function(){var n=t?{month:e,day:"numeric"}:{month:e},i=t?"format":"standalone";return r.monthsCache[i][e]||(r.monthsCache[i][e]=wt(function(e){return r.extract(e,n,"month")})),r.monthsCache[i][e]})},t.weekdays=function(e,t,n){var r=this;return void 0===t&&(t=!1),void 0===n&&(n=!0),St(this,e,n,De,function(){var n=t?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},i=t?"format":"standalone";return r.weekdaysCache[i][e]||(r.weekdaysCache[i][e]=kt(function(e){return r.extract(e,n,"weekday")})),r.weekdaysCache[i][e]})},t.meridiems=function(e){var t=this;return void 0===e&&(e=!0),St(this,void 0,e,function(){return Ie},function(){if(!t.meridiemCache){var e={hour:"numeric",hour12:!0};t.meridiemCache=[Mr.utc(2016,11,13,9),Mr.utc(2016,11,13,19)].map(function(n){return t.extract(n,e,"dayperiod")})}return t.meridiemCache})},t.eras=function(e,t){var n=this;return void 0===t&&(t=!0),St(this,e,t,xe,function(){var t={era:e};return n.eraCache[e]||(n.eraCache[e]=[Mr.utc(-40,1,1),Mr.utc(2017,1,1)].map(function(e){return n.extract(e,t,"era")})),n.eraCache[e]})},t.extract=function(e,t,n){var r=this.dtFormatter(e,t).formatToParts().find(function(e){return e.type.toLowerCase()===n});return r?r.value:null},t.numberFormatter=function(e){return void 0===e&&(e={}),new Tt(this.intl,e.forceSimple||this.fastNumbers,e)},t.dtFormatter=function(e,t){return void 0===t&&(t={}),new bt(e,this.intl,t)},t.relFormatter=function(e){return void 0===e&&(e={}),new Ot(this.intl,this.isEnglish(),e)},t.isEnglish=function(){return"en"===this.locale||"en-us"===this.locale.toLowerCase()||M()&&Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")},t.equals=function(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar},c(e,[{key:"fastNumbers",get:function(){var e;return null==this.fastNumbersCached&&(this.fastNumbersCached=(!(e=this).numberingSystem||"latn"===e.numberingSystem)&&("latn"===e.numberingSystem||!e.locale||e.locale.startsWith("en")||M()&&"latn"===Intl.DateTimeFormat(e.intl).resolvedOptions().numberingSystem)),this.fastNumbersCached}}]),e})();function Mt(){for(var e=arguments.length,t=new Array(e),n=0;n1?t-1:0),r=1;r3?Oe.indexOf(e)+1:Ne.indexOf(e)+1),u}var Jt=/^(?:(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\d)(\d\d)))$/;function Yt(e){var t,n=e[1],r=e[2],i=e[3],o=e[4],a=e[5],u=e[6],s=e[7],c=e[8],l=e[9],f=e[10],d=e[11],h=Wt(n,o,i,r,a,u,s);return t=c?Pt[c]:l?0:R(f,d),[h,new Be(t)]}function Gt(e){return e.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var $t=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,Bt=/^(Monday|Tuesday|Wedsday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,Qt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function Xt(e){var t=e[1],n=e[2],r=e[3];return[Wt(t,e[4],r,n,e[5],e[6],e[7]),Be.utcInstance]}function Kt(e){var t=e[1],n=e[2],r=e[3],i=e[4],o=e[5],a=e[6];return[Wt(t,e[7],n,r,i,o,a),Be.utcInstance]}var en=Mt(/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,Ft),tn=Mt(/(\d{4})-?W(\d\d)(?:-?(\d))?/,Ft),nn=Mt(/(\d{4})-?(\d{3})/,Ft),rn=Mt(xt),on=Dt(_t,jt,qt),an=Dt(Ct,jt,qt),un=Dt(Zt,jt),sn=Dt(jt,qt);var cn=Mt(/(\d{4})-(\d\d)-(\d\d)/,At),ln=Mt(zt),fn=Dt(_t,jt,qt,Ht),dn=Dt(jt,qt,Ht);var hn=(function(){function e(e,t){this.reason=e,this.explanation=t}return e.prototype.toMessage=function(){return this.explanation?this.reason+": "+this.explanation:this.reason},e})(),mn={weeks:{days:7,hours:168,minutes:10080,seconds:604800,milliseconds:6048e5},days:{hours:24,minutes:1440,seconds:86400,milliseconds:864e5},hours:{minutes:60,seconds:3600,milliseconds:36e5},minutes:{seconds:60,milliseconds:6e4},seconds:{milliseconds:1e3}},yn=u({years:{months:12,weeks:52,days:365,hours:8760,minutes:525600,seconds:31536e3,milliseconds:31536e6},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:131040,milliseconds:78624e5},months:{weeks:4,days:30,hours:720,minutes:43200,seconds:2592e3,milliseconds:2592e6}},mn),vn=u({years:{months:12,weeks:52.1775,days:365.2425,hours:8765.82,minutes:525949.2,seconds:31556951.999999996,milliseconds:31556951999.999996},quarters:{months:3,weeks:13.044375,days:91.310625,hours:2191.455,minutes:131487.3,seconds:7889237.999999999,milliseconds:7889237999.999999},months:{weeks:4.3481250000000005,days:30.436875,hours:730.485,minutes:43829.1,seconds:2629746,milliseconds:2629746e3}},mn),gn=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],pn=gn.slice(0).reverse();function wn(e,t,n){void 0===n&&(n=!1);var r={values:n?t.values:u({},e.values,t.values||{}),loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy};return new Tn(r)}function kn(e,t,n,r,i){var o,a=e[i][n],u=t[n]/a,s=!(Math.sign(u)===Math.sign(r[i]))&&0!==r[i]&&Math.abs(u)<=1?(o=u)<0?Math.floor(o):Math.ceil(o):Math.trunc(u);r[i]+=s,t[n]-=s*a}function Sn(e,t){pn.reduce(function(n,r){return O(t[r])?n:(n&&kn(e,t,n,t,r),r)},null)}var Tn=(function(){function e(e){var t="longterm"===e.conversionAccuracy||!1;this.values=e.values,this.loc=e.loc||Nt.create(),this.conversionAccuracy=t?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=t?vn:yn,this.isLuxonDuration=!0}e.fromMillis=function(t,n){return e.fromObject(u({milliseconds:t},n))},e.fromObject=function(t){if(null==t||"object"!=typeof t)throw new T("Duration.fromObject: argument expected to be an object, got "+(null===t?"null":typeof t));return new e({values:W(t,e.normalizeUnit,["locale","numberingSystem","conversionAccuracy","zone"]),loc:Nt.fromObject(t),conversionAccuracy:t.conversionAccuracy})},e.fromISO=function(t,n){var r=It(t,[Ut,Rt])[0];if(r){var i=u(r,n);return e.fromObject(i)}return e.invalid("unparsable","the input \""+t+"\" can't be parsed as ISO 8601")},e.invalid=function(t,n){if(void 0===n&&(n=null),!t)throw new T("need to specify a reason the Duration is invalid");var r=t instanceof hn?t:new hn(t,n);if(ot.throwOnInvalid)throw new w(r);return new e({invalid:r})},e.normalizeUnit=function(e){var t={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e?e.toLowerCase():e];if(!t)throw new S(e);return t},e.isDuration=function(e){return e&&e.isLuxonDuration||!1};var t=e.prototype;return t.toFormat=function(e,t){void 0===t&&(t={});var n=u({},t,{floor:!1!==t.round&&!1!==t.floor});return this.isValid?st.create(this.loc,n).formatDurationFromString(this,e):"Invalid Duration"},t.toObject=function(e){if(void 0===e&&(e={}),!this.isValid)return{};var t=u({},this.values);return e.includeConfig&&(t.conversionAccuracy=this.conversionAccuracy,t.numberingSystem=this.loc.numberingSystem,t.locale=this.loc.locale),t},t.toISO=function(){if(!this.isValid)return null;var e="P";return 0!==this.years&&(e+=this.years+"Y"),0===this.months&&0===this.quarters||(e+=this.months+3*this.quarters+"M"),0!==this.weeks&&(e+=this.weeks+"W"),0!==this.days&&(e+=this.days+"D"),0===this.hours&&0===this.minutes&&0===this.seconds&&0===this.milliseconds||(e+="T"),0!==this.hours&&(e+=this.hours+"H"),0!==this.minutes&&(e+=this.minutes+"M"),0===this.seconds&&0===this.milliseconds||(e+=this.seconds+this.milliseconds/1e3+"S"),"P"===e&&(e+="T0S"),e},t.toJSON=function(){return this.toISO()},t.toString=function(){return this.toISO()},t.valueOf=function(){return this.as("milliseconds")},t.plus=function(e){if(!this.isValid)return this;for(var t=bn(e),n={},r=0,i=gn;r=0){i=l;var f=0;for(var d in a)f+=this.matrix[d][l]*a[d],a[d]=0;N(u[l])&&(f+=u[l]);var h=Math.trunc(f);for(var m in o[l]=h,a[l]=f-h,u)gn.indexOf(m)>gn.indexOf(l)&&kn(this.matrix,u,m,o,l)}else N(u[l])&&(a[l]=u[l])}for(var y in a)0!==a[y]&&(o[i]+=y===i?a[y]:a[y]/this.matrix[i][y]);return wn(this,{values:o},!0)},t.negate=function(){if(!this.isValid)return this;for(var e={},t=0,n=Object.keys(this.values);te},t.isBefore=function(e){return!!this.isValid&&this.e<=e},t.contains=function(e){return!!this.isValid&&(this.s<=e&&this.e>e)},t.set=function(t){var n=void 0===t?{}:t,r=n.start,i=n.end;return this.isValid?e.fromDateTimes(r||this.s,i||this.e):this},t.splitAt=function(){if(!this.isValid)return[];for(var t=arguments.length,n=new Array(t),r=0;r+this.e?this.e:s;o.push(e.fromDateTimes(a,c)),a=c,u+=1}return o},t.splitBy=function(t){var n=bn(t);if(!this.isValid||!n.isValid||0===n.as("milliseconds"))return[];for(var r,i,o=this.s,a=[];o+this.e?this.e:r,a.push(e.fromDateTimes(o,i)),o=i;return a},t.divideEqually=function(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]},t.overlaps=function(e){return this.e>e.s&&this.s=e.e)},t.equals=function(e){return!(!this.isValid||!e.isValid)&&(this.s.equals(e.s)&&this.e.equals(e.e))},t.intersection=function(t){if(!this.isValid)return this;var n=this.s>t.s?this.s:t.s,r=this.er?null:e.fromDateTimes(n,r)},t.union=function(t){if(!this.isValid)return this;var n=this.st.e?this.e:t.e;return e.fromDateTimes(n,r)},e.merge=function(e){var t=e.sort(function(e,t){return e.s-t.s}).reduce(function(e,t){var n=e[0],r=e[1];return r?r.overlaps(t)||r.abutsStart(t)?[n,r.union(t)]:[n.concat([r]),t]:[n,t]},[[],null]),n=t[0],r=t[1];return r&&n.push(r),n},e.xor=function(t){var n,r=null,i=0,o=[],a=t.map(function(e){return[{time:e.s,type:"s"},{time:e.e,type:"e"}]}),u=(n=Array.prototype).concat.apply(n,a).sort(function(e,t){return e.time-t.time}),s=Array.isArray(u),c=0;for(u=s?u:u["function"==typeof Symbol?Symbol.iterator:"@@iterator"]();;){var l;if(s){if(c>=u.length)break;l=u[c++]}else{if((c=u.next()).done)break;l=c.value}var f=l;1===(i+="s"===f.type?1:-1)?r=f.time:(r&&+r!=+f.time&&o.push(e.fromDateTimes(r,f.time)),r=null)}return e.merge(o)},t.difference=function(){for(var t=this,n=arguments.length,r=new Array(n),i=0;i=0){var f;r=c;var d,h=l(e,t);if((i=e.plus(((f={})[c]=h,f)))>t)e=e.plus(((d={})[c]=h-1,d)),h-=1;else e=i;o[c]=h}}return[e,o,i,r]}function En(e,t,n,r){var i=In(e,t,n),o=i[0],a=i[1],s=i[2],c=i[3],l=t-o,f=n.filter(function(e){return["hours","minutes","seconds","milliseconds"].indexOf(e)>=0});if(0===f.length){var d;if(s0?(h=Tn.fromMillis(l,r)).shiftTo.apply(h,f).plus(m):m}var Vn={arab:"[\u0660-\u0669]",arabext:"[\u06f0-\u06f9]",bali:"[\u1b50-\u1b59]",beng:"[\u09e6-\u09ef]",deva:"[\u0966-\u096f]",fullwide:"[\uff10-\uff19]",gujr:"[\u0ae6-\u0aef]",hanidec:"[\u3007|\u4e00|\u4e8c|\u4e09|\u56db|\u4e94|\u516d|\u4e03|\u516b|\u4e5d]",khmr:"[\u17e0-\u17e9]",knda:"[\u0ce6-\u0cef]",laoo:"[\u0ed0-\u0ed9]",limb:"[\u1946-\u194f]",mlym:"[\u0d66-\u0d6f]",mong:"[\u1810-\u1819]",mymr:"[\u1040-\u1049]",orya:"[\u0b66-\u0b6f]",tamldec:"[\u0be6-\u0bef]",telu:"[\u0c66-\u0c6f]",thai:"[\u0e50-\u0e59]",tibt:"[\u0f20-\u0f29]",latn:"\\d"},Ln={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},xn=Vn.hanidec.replace(/[\[|\]]/g,"").split("");function Fn(e){var t=parseInt(e,10);if(isNaN(t)){t="";for(var n=0;n=a&&r<=u&&(t+=r-a)}}return parseInt(t,10)}return t}function Cn(e,t){var n=e.numberingSystem;return void 0===t&&(t=""),new RegExp(""+Vn[n||"latn"]+t)}var Zn="missing Intl.DateTimeFormat.formatToParts support";function zn(e,t){return void 0===t&&(t=function(e){return e}),{regex:e,deser:function(e){var n=e[0];return t(Fn(n))}}}function An(e){return e.replace(/\./,"\\.?")}function _n(e){return e.replace(/\./,"").toLowerCase()}function jn(e,t){return null===e?null:{regex:RegExp(e.map(An).join("|")),deser:function(n){var r=n[0];return e.findIndex(function(e){return _n(r)===_n(e)})+t}}}function qn(e,t){return{regex:e,deser:function(e){return R(e[1],e[2])},groups:t}}function Hn(e){return{regex:e,deser:function(e){return e[0]}}}function Un(e){return["^"+e.map(function(e){return e.regex}).reduce(function(e,t){return e+"("+t.source+")"},"")+"$",e]}function Rn(e,t,n){var r=e.match(t);if(r){var i={},o=1;for(var a in n)if(n.hasOwnProperty(a)){var u=n[a],s=u.groups?u.groups+1:1;!u.literal&&u.token&&(i[u.token.val[0]]=u.deser(r.slice(o,o+s))),o+=s}return[r,i]}return[r,{}]}function Pn(e){var t,n=function(e){switch(e){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";default:return null}};return t=O(e.Z)?O(e.z)?null:Ge.create(e.z):new Be(e.Z),O(e.h)||(e.h<12&&1===e.a?e.h+=12:12===e.h&&0===e.a&&(e.h=0)),0===e.G&&e.y&&(e.y=-e.y),O(e.u)||(e.S=C(e.u)),[Object.keys(e).reduce(function(t,r){var i=n(r);return i&&(t[i]=e[r]),t},{}),t]}function Wn(e,t,n){var r=st.parseFormat(n),i=r.map(function(t){return n=t,i=Cn(r=e),o=Cn(r,"{2}"),a=Cn(r,"{3}"),u=Cn(r,"{4}"),s=Cn(r,"{6}"),c=Cn(r,"{1,2}"),l=Cn(r,"{1,3}"),f=Cn(r,"{1,6}"),d=Cn(r,"{1,9}"),h=Cn(r,"{2,4}"),m=Cn(r,"{4,6}"),y=function(e){return{regex:RegExp((t=e.val,t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"))),deser:function(e){return e[0]},literal:!0};var t},(v=(function(e){if(n.literal)return y(e);switch(e.val){case"G":return jn(r.eras("short",!1),0);case"GG":return jn(r.eras("long",!1),0);case"y":return zn(f);case"yy":return zn(h,H);case"yyyy":return zn(u);case"yyyyy":return zn(m);case"yyyyyy":return zn(s);case"M":return zn(c);case"MM":return zn(o);case"MMM":return jn(r.months("short",!0,!1),1);case"MMMM":return jn(r.months("long",!0,!1),1);case"L":return zn(c);case"LL":return zn(o);case"LLL":return jn(r.months("short",!1,!1),1);case"LLLL":return jn(r.months("long",!1,!1),1);case"d":return zn(c);case"dd":return zn(o);case"o":return zn(l);case"ooo":return zn(a);case"HH":return zn(o);case"H":return zn(c);case"hh":return zn(o);case"h":return zn(c);case"mm":return zn(o);case"m":case"s":return zn(c);case"ss":return zn(o);case"S":return zn(l);case"SSS":return zn(a);case"u":return Hn(d);case"a":return jn(r.meridiems(),0);case"kkkk":return zn(u);case"kk":return zn(h,H);case"W":return zn(c);case"WW":return zn(o);case"E":case"c":return zn(i);case"EEE":return jn(r.weekdays("short",!1,!1),1);case"EEEE":return jn(r.weekdays("long",!1,!1),1);case"ccc":return jn(r.weekdays("short",!0,!1),1);case"cccc":return jn(r.weekdays("long",!0,!1),1);case"Z":case"ZZ":return qn(new RegExp("([+-]"+c.source+")(?::("+o.source+"))?"),2);case"ZZZ":return qn(new RegExp("([+-]"+c.source+")("+o.source+")?"),2);case"z":return Hn(/[a-z_+-/]{1,256}?/i);default:return y(e)}})(n)||{invalidReason:Zn}).token=n,v;var n,r,i,o,a,u,s,c,l,f,d,h,m,y,v}),o=i.find(function(e){return e.invalidReason});if(o)return{input:t,tokens:r,invalidReason:o.invalidReason};var a=Un(i),u=a[0],s=a[1],c=RegExp(u,"i"),l=Rn(t,c,s),f=l[0],d=l[1],h=d?Pn(d):[null,null];return{input:t,tokens:r,regex:c,rawMatches:f,matches:d,result:h[0],zone:h[1]}}function Jn(e,t,n){var r=Wn(e,t,n);return[r.result,r.zone,r.invalidReason]}var Yn=[0,31,59,90,120,151,181,212,243,273,304,334],Gn=[0,31,60,91,121,152,182,213,244,274,305,335];function $n(e,t){return new hn("unit out of range","you specified "+t+" (of type "+typeof t+") as a "+e+", which is invalid")}function Bn(e,t,n){var r=new Date(Date.UTC(e,t-1,n)).getUTCDay();return 0===r?7:r}function Qn(e,t,n){return n+(z(e)?Gn:Yn)[t-1]}function Xn(e,t){var n=z(e)?Gn:Yn,r=n.findIndex(function(e){return eq(n)?(t=n+1,s=1):t=n,u({weekYear:t,weekNumber:s,weekday:a},Y(e))}function er(e){var t,n=e.weekYear,r=e.weekNumber,i=e.weekday,o=Bn(n,1,4),a=A(n),s=7*r+i-o-3;s<1?s+=A(t=n-1):s>a?(t=n+1,s-=A(n)):t=n;var c=Xn(t,s),l=c.month,f=c.day;return u({year:t,month:l,day:f},Y(e))}function tr(e){var t=e.year,n=Qn(t,e.month,e.day);return u({year:t,ordinal:n},Y(e))}function nr(e){var t=e.year,n=Xn(t,e.ordinal),r=n.month,i=n.day;return u({year:t,month:r,day:i},Y(e))}function rr(e){var t=N(e.weekYear),n=L(e.weekNumber,1,q(e.weekYear)),r=L(e.weekday,1,7);return t?n?!r&&$n("weekday",e.weekday):$n("week",e.week):$n("weekYear",e.weekYear)}function ir(e){var t=N(e.year),n=L(e.ordinal,1,A(e.year));return t?!n&&$n("ordinal",e.ordinal):$n("year",e.year)}function or(e){var t=N(e.year),n=L(e.month,1,12),r=L(e.day,1,_(e.year,e.month));return t?n?!r&&$n("day",e.day):$n("month",e.month):$n("year",e.year)}function ar(e){var t=e.hour,n=e.minute,r=e.second,i=e.millisecond,o=L(t,0,23)||24===t&&0===n&&0===r&&0===i,a=L(n,0,59),u=L(r,0,59),s=L(i,0,999);return o?a?u?!s&&$n("millisecond",i):$n("second",r):$n("minute",n):$n("hour",t)}function ur(e){return new hn("unsupported zone","the zone \""+e.name+"\" is not supported")}function sr(e){return null===e.weekData&&(e.weekData=Kn(e.c)),e.weekData}function cr(e,t){var n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new Mr(u({},n,t,{old:n}))}function lr(e,t,n){var r=e-60*t*1e3,i=n.offset(r);if(t===i)return[r,t];r-=60*(i-t)*1e3;var o=n.offset(r);return i===o?[r,i]:[e-60*Math.min(i,o)*1e3,Math.max(i,o)]}function fr(e,t){var n=new Date(e+=60*t*1e3);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function dr(e,t,n){return lr(j(e),t,n)}function hr(e,t){var n=e.o,r=e.c.year+t.years,i=e.c.month+t.months+3*t.quarters,o=u({},e.c,{year:r,month:i,day:Math.min(e.c.day,_(r,i))+t.days+7*t.weeks}),a=Tn.fromObject({hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as("milliseconds"),s=lr(j(o),n,e.zone),c=s[0],l=s[1];return 0!==a&&(c+=a,l=e.zone.offset(c)),{ts:c,o:l}}function mr(e,t,n,r,i){var o=n.setZone,a=n.zone;if(e&&0!==Object.keys(e).length){var s=t||a,c=Mr.fromObject(u(e,n,{zone:s,setZone:void 0}));return o?c:c.setZone(a)}return Mr.invalid(new hn("unparsable","the input \""+i+"\" can't be parsed as "+r))}function yr(e,t){return e.isValid?st.create(Nt.create("en-US"),{allowZ:!0,forceSimple:!0}).formatDateTimeFromString(e,t):null}function vr(e,t){var n=t.suppressSeconds,r=void 0!==n&&n,i=t.suppressMilliseconds,o=void 0!==i&&i,a=t.includeOffset,u=t.includeZone,s=void 0!==u&&u,c=t.spaceZone,l=void 0!==c&&c,f="HH:mm";return r&&0===e.second&&0===e.millisecond||(f+=":ss",o&&0===e.millisecond||(f+=".SSS")),(s||a)&&l&&(f+=" "),s?f+="z":a&&(f+="ZZ"),yr(e,f)}var gr={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},pr={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},wr={ordinal:1,hour:0,minute:0,second:0,millisecond:0},kr=["year","month","day","hour","minute","second","millisecond"],Sr=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],Tr=["year","ordinal","hour","minute","second","millisecond"];function br(e){var t={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[e.toLowerCase()];if(!t)throw new S(e);return t}function Or(e,t){for(var n=0,r=kr;n=a.length)break;c=a[s++]}else{if((s=a.next()).done)break;c=s.value}var l=c,f=o(l);if(Math.abs(f)>=1)return i(f,l)}return i(0,n.units[n.units.length-1])}var Mr=(function(){function e(e){var t=e.zone||ot.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new hn("invalid input"):null)||(t.isValid?null:ur(t));this.ts=O(e.ts)?ot.now():e.ts;var r=null,i=null;if(!n){var o=e.old&&e.old.ts===this.ts&&e.old.zone.equals(t);r=o?e.old.c:fr(this.ts,t.offset(this.ts)),i=o?e.old.o:t.offset(this.ts)}this._zone=t,this.loc=e.loc||Nt.create(),this.invalid=n,this.weekData=null,this.c=r,this.o=i,this.isLuxonDateTime=!0}e.local=function(t,n,r,i,o,a,u){return O(t)?new e({ts:ot.now()}):Or({year:t,month:n,day:r,hour:i,minute:o,second:a,millisecond:u},ot.defaultZone)},e.utc=function(t,n,r,i,o,a,u){return O(t)?new e({ts:ot.now(),zone:Be.utcInstance}):Or({year:t,month:n,day:r,hour:i,minute:o,second:a,millisecond:u},Be.utcInstance)},e.fromJSDate=function(t,n){void 0===n&&(n={});var r,i=(r=t,"[object Date]"===Object.prototype.toString.call(r)?t.valueOf():NaN);if(Number.isNaN(i))return e.invalid("invalid input");var o=Xe(n.zone,ot.defaultZone);return o.isValid?new e({ts:i,zone:o,loc:Nt.fromObject(n)}):e.invalid(ur(o))},e.fromMillis=function(t,n){if(void 0===n&&(n={}),N(t))return new e({ts:t,zone:Xe(n.zone,ot.defaultZone),loc:Nt.fromObject(n)});throw new T("fromMillis requires a numerical input")},e.fromSeconds=function(t,n){if(void 0===n&&(n={}),N(t))return new e({ts:1e3*t,zone:Xe(n.zone,ot.defaultZone),loc:Nt.fromObject(n)});throw new T("fromSeconds requires a numerical input")},e.fromObject=function(t){var n=Xe(t.zone,ot.defaultZone);if(!n.isValid)return e.invalid(ur(n));var r=ot.now(),i=n.offset(r),o=W(t,br,["zone","locale","outputCalendar","numberingSystem"]),a=!O(o.ordinal),u=!O(o.year),s=!O(o.month)||!O(o.day),c=u||s,l=o.weekYear||o.weekNumber,f=Nt.fromObject(t);if((c||a)&&l)throw new k("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(s&&a)throw new k("Can't mix ordinal dates with month/day");var d,h,m=l||o.weekday&&!c,y=fr(r,i);m?(d=Sr,h=pr,y=Kn(y)):a?(d=Tr,h=wr,y=tr(y)):(d=kr,h=gr);var v=!1,g=d,p=Array.isArray(g),w=0;for(g=p?g:g["function"==typeof Symbol?Symbol.iterator:"@@iterator"]();;){var S;if(p){if(w>=g.length)break;S=g[w++]}else{if((w=g.next()).done)break;S=w.value}var T=S;O(o[T])?o[T]=v?h[T]:y[T]:v=!0}var b=(m?rr(o):a?ir(o):or(o))||ar(o);if(b)return e.invalid(b);var N=dr(m?er(o):a?nr(o):o,i,n),M=new e({ts:N[0],zone:n,o:N[1],loc:f});return o.weekday&&c&&t.weekday!==M.weekday?e.invalid("mismatched weekday","you can't specify both a weekday of "+o.weekday+" and a date of "+M.toISO()):M},e.fromISO=function(e,t){void 0===t&&(t={});var n=It(e,[en,on],[tn,an],[nn,un],[rn,sn]);return mr(n[0],n[1],t,"ISO 8601",e)},e.fromRFC2822=function(e,t){void 0===t&&(t={});var n=It(Gt(e),[Jt,Yt]);return mr(n[0],n[1],t,"RFC 2822",e)},e.fromHTTP=function(e,t){void 0===t&&(t={});var n=It(e,[$t,Xt],[Bt,Xt],[Qt,Kt]);return mr(n[0],n[1],t,"HTTP",t)},e.fromFormat=function(t,n,r){if(void 0===r&&(r={}),O(t)||O(n))throw new T("fromFormat requires an input string and a format");var i=r,o=i.locale,a=void 0===o?null:o,u=i.numberingSystem,s=void 0===u?null:u,c=Jn(Nt.fromOpts({locale:a,numberingSystem:s,defaultToEN:!0}),t,n),l=c[0],f=c[1],d=c[2];return d?e.invalid(d):mr(l,f,r,"format "+n,t)},e.fromString=function(t,n,r){return void 0===r&&(r={}),e.fromFormat(t,n,r)},e.fromSQL=function(e,t){void 0===t&&(t={});var n=It(e,[cn,fn],[ln,dn]);return mr(n[0],n[1],t,"SQL",e)},e.invalid=function(t,n){if(void 0===n&&(n=null),!t)throw new T("need to specify a reason the DateTime is invalid");var r=t instanceof hn?t:new hn(t,n);if(ot.throwOnInvalid)throw new g(r);return new e({invalid:r})},e.isDateTime=function(e){return e&&e.isLuxonDateTime||!1};var t=e.prototype;return t.get=function(e){return this[e]},t.resolvedLocaleOpts=function(e){void 0===e&&(e={});var t=st.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t.locale,numberingSystem:t.numberingSystem,outputCalendar:t.calendar}},t.toUTC=function(e,t){return void 0===e&&(e=0),void 0===t&&(t={}),this.setZone(Be.instance(e),t)},t.toLocal=function(){return this.setZone(ot.defaultZone)},t.setZone=function(t,n){var r=void 0===n?{}:n,i=r.keepLocalTime,o=void 0!==i&&i,a=r.keepCalendarTime,u=void 0!==a&&a;if((t=Xe(t,ot.defaultZone)).equals(this.zone))return this;if(t.isValid){var s=this.ts;if(o||u){var c=this.o-t.offset(this.ts);s=dr(this.toObject(),c,t)[0]}return cr(this,{ts:s,zone:t})}return e.invalid(ur(t))},t.reconfigure=function(e){var t=void 0===e?{}:e,n=t.locale,r=t.numberingSystem,i=t.outputCalendar;return cr(this,{loc:this.loc.clone({locale:n,numberingSystem:r,outputCalendar:i})})},t.setLocale=function(e){return this.reconfigure({locale:e})},t.set=function(e){if(!this.isValid)return this;var t,n=W(e,br,[]);!O(n.weekYear)||!O(n.weekNumber)||!O(n.weekday)?t=er(u(Kn(this.c),n)):O(n.ordinal)?(t=u(this.toObject(),n),O(n.day)&&(t.day=Math.min(_(t.year,t.month),t.day))):t=nr(u(tr(this.c),n));var r=dr(t,this.o,this.zone);return cr(this,{ts:r[0],o:r[1]})},t.plus=function(e){return this.isValid?cr(this,hr(this,bn(e))):this},t.minus=function(e){return this.isValid?cr(this,hr(this,bn(e).negate())):this},t.startOf=function(e){if(!this.isValid)return this;var t={},n=Tn.normalizeUnit(e);switch(n){case"years":t.month=1;case"quarters":case"months":t.day=1;case"weeks":case"days":t.hour=0;case"hours":t.minute=0;case"minutes":t.second=0;case"seconds":t.millisecond=0}if("weeks"===n&&(t.weekday=1),"quarters"===n){var r=Math.ceil(this.month/3);t.month=3*(r-1)+1}return this.set(t)},t.endOf=function(e){var t;return this.isValid?this.plus((t={},t[e]=1,t)).startOf(e).minus(1):this},t.toFormat=function(e,t){return void 0===t&&(t={}),this.isValid?st.create(this.loc.redefaultToEN(t)).formatDateTimeFromString(this,e):"Invalid DateTime"},t.toLocaleString=function(e){return void 0===e&&(e=K),this.isValid?st.create(this.loc.clone(e),e).formatDateTime(this):"Invalid DateTime"},t.toLocaleParts=function(e){return void 0===e&&(e={}),this.isValid?st.create(this.loc.clone(e),e).formatDateTimeParts(this):[]},t.toISO=function(e){return void 0===e&&(e={}),this.isValid?this.toISODate()+"T"+this.toISOTime(e):null},t.toISODate=function(){var e="yyyy-MM-dd";return this.year>9999&&(e="+"+e),yr(this,e)},t.toISOWeekDate=function(){return yr(this,"kkkk-'W'WW-c")},t.toISOTime=function(e){var t=void 0===e?{}:e,n=t.suppressMilliseconds,r=void 0!==n&&n,i=t.suppressSeconds,o=void 0!==i&&i,a=t.includeOffset;return vr(this,{suppressSeconds:o,suppressMilliseconds:r,includeOffset:void 0===a||a})},t.toRFC2822=function(){return yr(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ")},t.toHTTP=function(){return yr(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")},t.toSQLDate=function(){return yr(this,"yyyy-MM-dd")},t.toSQLTime=function(e){var t=void 0===e?{}:e,n=t.includeOffset,r=void 0===n||n,i=t.includeZone;return vr(this,{includeOffset:r,includeZone:void 0!==i&&i,spaceZone:!0})},t.toSQL=function(e){return void 0===e&&(e={}),this.isValid?this.toSQLDate()+" "+this.toSQLTime(e):null},t.toString=function(){return this.isValid?this.toISO():"Invalid DateTime"},t.valueOf=function(){return this.toMillis()},t.toMillis=function(){return this.isValid?this.ts:NaN},t.toSeconds=function(){return this.isValid?this.ts/1e3:NaN},t.toJSON=function(){return this.toISO()},t.toBSON=function(){return this.toJSDate()},t.toObject=function(e){if(void 0===e&&(e={}),!this.isValid)return{};var t=u({},this.c);return e.includeConfig&&(t.outputCalendar=this.outputCalendar,t.numberingSystem=this.loc.numberingSystem,t.locale=this.loc.locale),t},t.toJSDate=function(){return new Date(this.isValid?this.ts:NaN)},t.diff=function(e,t,n){if(void 0===t&&(t="milliseconds"),void 0===n&&(n={}),!this.isValid||!e.isValid)return Tn.invalid(this.invalid||e.invalid,"created by diffing an invalid DateTime");var r,i=u({locale:this.locale,numberingSystem:this.numberingSystem},n),o=(r=t,Array.isArray(r)?r:[r]).map(Tn.normalizeUnit),a=e.valueOf()>this.valueOf(),s=En(a?this:e,a?e:this,o,i);return a?s.negate():s},t.diffNow=function(t,n){return void 0===t&&(t="milliseconds"),void 0===n&&(n={}),this.diff(e.local(),t,n)},t.until=function(e){return this.isValid?Nn.fromDateTimes(this,e):this},t.hasSame=function(e,t){if(!this.isValid)return!1;if("millisecond"===t)return this.valueOf()===e.valueOf();var n=e.valueOf();return this.startOf(t)<=n&&n<=this.endOf(t)},t.equals=function(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)},t.toRelative=function(t){if(void 0===t&&(t={}),!this.isValid)return null;var n=t.base||e.fromObject({zone:this.zone}),r=t.padding?thisthis.set({month:1}).offset||this.offset>this.set({month:5}).offset)}},{key:"isInLeapYear",get:function(){return z(this.year)}},{key:"daysInMonth",get:function(){return _(this.year,this.month)}},{key:"daysInYear",get:function(){return this.isValid?A(this.year):NaN}},{key:"weeksInWeekYear",get:function(){return this.isValid?q(this.weekYear):NaN}}],[{key:"DATE_SHORT",get:function(){return K}},{key:"DATE_MED",get:function(){return ee}},{key:"DATE_FULL",get:function(){return te}},{key:"DATE_HUGE",get:function(){return ne}},{key:"TIME_SIMPLE",get:function(){return re}},{key:"TIME_WITH_SECONDS",get:function(){return ie}},{key:"TIME_WITH_SHORT_OFFSET",get:function(){return oe}},{key:"TIME_WITH_LONG_OFFSET",get:function(){return ae}},{key:"TIME_24_SIMPLE",get:function(){return ue}},{key:"TIME_24_WITH_SECONDS",get:function(){return se}},{key:"TIME_24_WITH_SHORT_OFFSET",get:function(){return ce}},{key:"TIME_24_WITH_LONG_OFFSET",get:function(){return le}},{key:"DATETIME_SHORT",get:function(){return fe}},{key:"DATETIME_SHORT_WITH_SECONDS",get:function(){return de}},{key:"DATETIME_MED",get:function(){return he}},{key:"DATETIME_MED_WITH_SECONDS",get:function(){return me}},{key:"DATETIME_FULL",get:function(){return ye}},{key:"DATETIME_FULL_WITH_SECONDS",get:function(){return ve}},{key:"DATETIME_HUGE",get:function(){return ge}},{key:"DATETIME_HUGE_WITH_SECONDS",get:function(){return pe}}]),e})();function Dr(e){if(Mr.isDateTime(e))return e;if(e&&e.valueOf&&N(e.valueOf()))return Mr.fromJSDate(e);if(e&&"object"==typeof e)return Mr.fromObject(e);throw new T("Unknown datetime argument: "+e+", of type "+typeof e)}o.DateTime=Mr,o.Duration=Tn,o.FixedOffsetZone=Be,o.IANAZone=Ge,o.Info=Mn,o.Interval=Nn,o.InvalidZone=Qe,o.LocalZone=He,o.Settings=ot,o.Zone=je},560,[60]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.useCurrentTime=function(c){var y=(S=(0,n.useState)(c?t.DateTime.fromISO(c.toString()):t.DateTime.local()),T=2,f(S)||l(S,T)||u()),s=y[0],v=y[1];var S,T;return(0,o.useInterval)(function(){v(c?t.DateTime.fromISO(c.toString()):t.DateTime.local())},1e3),s};var t=r(d[0]),n=r(d[1]),o=r(d[2]);function u(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function l(t,n){var o=[],u=!0,l=!1,f=void 0;try{for(var c,y=t["function"==typeof Symbol?Symbol.iterator:"@@iterator"]();!(u=(c=y.next()).done)&&(o.push(c.value),!n||o.length!==n);u=!0);}catch(t){l=!0,f=t}finally{try{u||null==y.return||y.return()}finally{if(l)throw f}}return o}function f(t){if(Array.isArray(t))return t}},561,[560,57,562]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.useInterval=function(t,u){var c=(0,n.useRef)(null);(0,n.useEffect)(function(){c.current=t},[t]),(0,n.useEffect)(function(){if(null!==u){var n=setInterval(function(){c.current()},u);return function(){return clearInterval(n)}}},[u])};var n=r(d[0])},562,[57]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},563,[564]); -__d(function(g,r,i,a,m,e,d){"use strict"},564,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})})},565,[566]); -__d(function(g,r,i,a,m,e,d){"use strict"},566,[]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=r(d[0]);Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[n]}})});var n=r(d[1]);Object.keys(n).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return n[t]}})});var u=r(d[2]);Object.keys(u).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return u[t]}})});var c=r(d[3]);Object.keys(c).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return c[t]}})});var o=r(d[4]);Object.keys(o).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return o[t]}})});var f=r(d[5]);Object.keys(f).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return f[t]}})});var l=r(d[6]);Object.keys(l).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return l[t]}})});var b=r(d[7]);Object.keys(b).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return b[t]}})});var _=r(d[8]);Object.keys(_).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return _[t]}})});var s=r(d[9]);Object.keys(s).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return s[t]}})});var j=r(d[10]);Object.keys(j).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return j[t]}})});var y=r(d[11]);Object.keys(y).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return y[t]}})});var O=r(d[12]);Object.keys(O).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return O[t]}})});var p=r(d[13]);Object.keys(p).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return p[t]}})});var v=r(d[14]);Object.keys(v).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return v[t]}})});var M=r(d[15]);Object.keys(M).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return M[t]}})});var P=r(d[16]);Object.keys(P).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return P[t]}})});var h=r(d[17]);Object.keys(h).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return h[t]}})});var k=r(d[18]);Object.keys(k).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return k[t]}})});var E=r(d[19]);Object.keys(E).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return E[t]}})});var q=r(d[20]);Object.keys(q).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return q[t]}})});var w=r(d[21]);Object.keys(w).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return w[t]}})});var x=r(d[22]);Object.keys(x).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return x[t]}})});var z=r(d[23]);Object.keys(z).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return z[t]}})});var A=r(d[24]);Object.keys(A).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return A[t]}})});var B=r(d[25]);Object.keys(B).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return B[t]}})});var C=r(d[26]);Object.keys(C).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return C[t]}})});var D=r(d[27]);Object.keys(D).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return D[t]}})});var F=r(d[28]);Object.keys(F).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return F[t]}})});var G=r(d[29]);Object.keys(G).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return G[t]}})});var H=r(d[30]);Object.keys(H).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return H[t]}})});var I=r(d[31]);Object.keys(I).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return I[t]}})});var J=r(d[32]);Object.keys(J).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return J[t]}})});var K=r(d[33]);Object.keys(K).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return K[t]}})});var L=r(d[34]);Object.keys(L).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return L[t]}})});var N=r(d[35]);Object.keys(N).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return N[t]}})});var Q=r(d[36]);Object.keys(Q).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return Q[t]}})});var R=r(d[37]);Object.keys(R).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return R[t]}})});var S=r(d[38]);Object.keys(S).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return S[t]}})});var T=r(d[39]);Object.keys(T).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return T[t]}})});var U=r(d[40]);Object.keys(U).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return U[t]}})});var V=r(d[41]);Object.keys(V).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return V[t]}})});var W=r(d[42]);Object.keys(W).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return W[t]}})});var X=r(d[43]);Object.keys(X).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return X[t]}})});var Y=r(d[44]);Object.keys(Y).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return Y[t]}})});var Z=r(d[45]);Object.keys(Z).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return Z[t]}})});var $=r(d[46]);Object.keys($).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return $[t]}})});var ee=r(d[47]);Object.keys(ee).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return ee[t]}})});var te=r(d[48]);Object.keys(te).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return te[t]}})});var ne=r(d[49]);Object.keys(ne).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return ne[t]}})});var re=r(d[50]);Object.keys(re).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return re[t]}})});var ue=r(d[51]);Object.keys(ue).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return ue[t]}})});var ce=r(d[52]);Object.keys(ce).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return ce[t]}})});var oe=r(d[53]);Object.keys(oe).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return oe[t]}})});var fe=r(d[54]);Object.keys(fe).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return fe[t]}})});var ae=r(d[55]);Object.keys(ae).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return ae[t]}})});var de=r(d[56]);Object.keys(de).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return de[t]}})});var ie=r(d[57]);Object.keys(ie).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return ie[t]}})});var le=r(d[58]);Object.keys(le).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return le[t]}})});var be=r(d[59]);Object.keys(be).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return be[t]}})});var _e=r(d[60]);Object.keys(_e).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return _e[t]}})});var se=r(d[61]);Object.keys(se).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return se[t]}})});var je=r(d[62]);Object.keys(je).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return je[t]}})});var ye=r(d[63]);Object.keys(ye).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return ye[t]}})});var Oe=r(d[64]);Object.keys(Oe).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return Oe[t]}})});var pe=r(d[65]);Object.keys(pe).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return pe[t]}})});var ve=r(d[66]);Object.keys(ve).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return ve[t]}})});var Me=r(d[67]);Object.keys(Me).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return Me[t]}})});var Pe=r(d[68]);Object.keys(Pe).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return Pe[t]}})});var ge=r(d[69]);Object.keys(ge).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return ge[t]}})});var he=r(d[70]);Object.keys(he).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return he[t]}})});var ke=r(d[71]);Object.keys(ke).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return ke[t]}})});var me=r(d[72]);Object.keys(me).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return me[t]}})});var Ee=r(d[73]);Object.keys(Ee).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return Ee[t]}})});var qe=r(d[74]);Object.keys(qe).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return qe[t]}})});var we=r(d[75]);Object.keys(we).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return we[t]}})});var xe=r(d[76]);Object.keys(xe).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return xe[t]}})})},567,[568,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,569,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850]); -__d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PlusIcon=e.AddCircleFillIcon=void 0;var l,t=(l=r(d[0]))&&l.__esModule?l:{default:l},n=r(d[1]),o=r(d[2]);function c(){return(c=Object.assign||function(l){for(var t=1;t>>0===n&&n>=0&&n<=4294967295)return[0,(0,t.integerColor)(n)];if(!n||'none'===n)return null;if('currentColor'===n)return u;if('context-fill'===n)return f;if('context-stroke'===n)return l;var c='string'==typeof n&&n.match(o);if(c)return[1,c[1]];var s=(0,t.default)(n);if('number'==typeof s)return[0,s];return console.warn("\""+n+"\" is not a valid color or brush"),null};var t=n(r(d[1])),o=/^url\(#(.+)\)$/,u=[2],f=[3],l=[4]},582,[571,583]); -__d(function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(l){if('number'==typeof l)return l>>>0===l&&l>=0&&l<=4294967295?_(l):null;var n='string'==typeof l?O(l):l;if(!Array.isArray(n))return n;var t=n[0],o=n[1],s=n[2],u=n[3],c=((void 0===u?4278190080:Math.round(255*u)<<24)|Math.round(255*t)<<16|Math.round(255*o)<<8|Math.round(255*s))>>>0;return _(c)},e.integerColor=e.colorNames=e.colors=void 0;var l=r(d[0]),n={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};e.colors=n;var t={};for(var o in e.colorNames=t,n)if(n.hasOwnProperty(o)){var s=n[o],u=s[0],c=s[1],h=s[2];t[o]=(4278190080|u<<16|c<<8|h)>>>0}function f(l,n,t,o){var s,u,c,h,f,b=l/360,p=n/100,y=t/100;if(0===p)return[f=y,f,f,o];s=2*y-(u=y<.5?y*(1+p):y+p-y*p),h=[0,0,0,o];for(var k=0;k<3;k++)(c=b+.3333333333333333*-(k-1))<0&&c++,c>1&&c--,f=6*c<1?s+6*(u-s)*c:2*c<1?u:3*c<2?s+(u-s)*(.6666666666666666-c)*6:s,h[k]=f;return h}function b(l,n,t,o){var s,u,c,h,f,b,p,y=l/360,k=n/100,v=t/100,w=k+v;switch(w>1&&(k/=w,v/=w),u=1-v,c=6*y-(s=Math.floor(6*y)),0!=(1&s)&&(c=1-c),h=k+c*(u-k),s){default:case 6:case 0:f=u,b=h,p=k;break;case 1:f=h,b=u,p=k;break;case 2:f=k,b=u,p=h;break;case 3:f=k,b=h,p=u;break;case 4:f=h,b=k,p=u;break;case 5:f=u,b=k,p=h}return[f,b,p,o]}function p(l,n,t){return Math.min(Math.max(n,l),t)}Object.freeze(t);var y=/^#([a-f0-9]{3,4})$/i,k=/^#([a-f0-9]{6})([a-f0-9]{2})?$/i,v=/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d.]+)\s*)?\)$/,w=/^rgba?\(\s*([+-]?[\d.]+)%\s*,\s*([+-]?[\d.]+)%\s*,\s*([+-]?[\d.]+)%\s*(?:,\s*([+-]?[\d.]+)\s*)?\)$/,F=/(\D+)/;function M(l){var n,o,s,u=[0,0,0,1];if(n=l.match(k)){for(s=n[2],n=n[1],o=0;o<3;o++){var c=2*o;u[o]=parseInt(n.slice(c,c+2),16)/255}s&&(u[3]=Math.round(parseInt(s,16)/255*100)/100)}else if(n=l.match(y)){for(s=(n=n[1])[3],o=0;o<3;o++)u[o]=parseInt(n[o]+n[o],16)/255;s&&(u[3]=Math.round(parseInt(s+s,16)/255*100)/100)}else if(n=l.match(v)){for(o=0;o<3;o++)u[o]=parseInt(n[o+1],0)/255;n[4]&&(u[3]=parseFloat(n[4]))}else{if(!(n=l.match(w))){if(n=l.match(F)){if('transparent'===n[1])return[0,0,0,0];var h=t[n[1]];return'number'!=typeof h?null:_(h)}return null}for(o=0;o<3;o++)u[o]=parseFloat(n[o+1])/100;n[4]&&(u[3]=parseFloat(n[4]))}for(o=0;o<4;o++)u[o]=p(u[o],0,1);return u}var q=/^hsla?\(\s*([+-]?(?:\d*\.)?\d+)(?:deg)?\s*,\s*([+-]?[\d.]+)%\s*,\s*([+-]?[\d.]+)%\s*(?:,\s*([+-]?[\d.]+)\s*)?\)$/;function N(l){var n=l.match(q);if(!n)return null;var t=parseFloat(n[4]);return f((parseFloat(n[1])+360)%360,p(parseFloat(n[2]),0,100),p(parseFloat(n[3]),0,100),isNaN(t)?1:p(t,0,1))}var $=/^hwb\(\s*([+-]?\d*[.]?\d+)(?:deg)?\s*,\s*([+-]?[\d.]+)%\s*,\s*([+-]?[\d.]+)%\s*(?:,\s*([+-]?[\d.]+)\s*)?\)$/;function I(l){var n=l.match($);if(!n)return null;var t=parseFloat(n[4]);return b((parseFloat(n[1])%360+360)%360,p(parseFloat(n[2]),0,100),p(parseFloat(n[3]),0,100),isNaN(t)?1:p(t,0,1))}function O(l){switch(l.substring(0,3).toLowerCase()){case'hsl':return N(l);case'hwb':return I(l);default:return M(l)}}var _='android'===l.Platform.OS?function(l){return 0|l}:function(l){return l};e.integerColor=_},583,[3]); -__d(function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(n){var t=+n;return isNaN(t)?1:t}},584,[]); -__d(function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,f){var h=t.stroke,c=t.strokeOpacity,p=t.strokeLinecap,v=t.strokeLinejoin,y=t.strokeDasharray,D=t.strokeWidth,L=t.strokeDashoffset,b=t.strokeMiterlimit,j=t.vectorEffect;null!=h&&f.push('stroke');null!=D&&f.push('strokeWidth');null!=c&&f.push('strokeOpacity');null!=y&&f.push('strokeDasharray');null!=L&&f.push('strokeDashoffset');null!=p&&f.push('strokeLinecap');null!=v&&f.push('strokeLinejoin');null!=b&&f.push('strokeMiterlimit');var M=y&&'none'!==y?(0,n.default)(y):null;return{stroke:(0,o.default)(h),strokeOpacity:(0,s.default)(c),strokeLinecap:p&&l[p]||0,strokeLinejoin:v&&u[v]||0,strokeDasharray:M&&M.length%2==1?M.concat(M):M,strokeWidth:null!=D?D:1,strokeDashoffset:y&&L?+L||0:null,strokeMiterlimit:(b&&'number'!=typeof b?parseFloat(b):b)||4,vectorEffect:j&&k[j]||0}};var o=t(r(d[1])),s=t(r(d[2])),n=t(r(d[3])),l={butt:0,square:2,round:1},u={miter:0,bevel:2,round:1},k={none:0,default:0,nonScalingStroke:1,'non-scaling-stroke':1,inherit:2,uri:3}},585,[1,582,584,586]); -__d(function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(u){return Array.isArray(u)?u:'number'==typeof u?[u]:'string'==typeof u?u.trim().replace(n,' ').split(t):[]};var t=/\s+/,n=/,/g},586,[]); -__d(function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.props2transform=y,e.transformToMatrix=l,e.default=function(s){if(Array.isArray(s))return s;if('string'==typeof s)try{var o=(0,n.parse)(s);return[o[0],o[3],o[1],o[4],o[2],o[5]]}catch(n){return console.error(n),t.identity}return l(y(s),s.transform)};var t=r(d[0]),n=r(d[1]);function s(n){var s=n.x,o=n.y,y=n.originX,l=n.originY,f=n.scaleX,c=n.scaleY,u=n.rotation,p=n.skewX,A=n.skewY;(0,t.appendTransform)(s+y,o+l,f,c,u,p,A,y,l)}function o(t,n,s,o){var y,l;if('number'==typeof t)y=l=t;else if('string'==typeof t){var f=t.split(/\s*,\s*/);2===f.length?(y=+f[0],l=+f[1]):1===f.length&&(y=l=+f[0])}else Array.isArray(t)&&(2===t.length?(y=+t[0],l=+t[1]):1===t.length&&(y=l=+t[0]));return n=+n,isNaN(n)||(y=n),s=+s,isNaN(s)||(l=s),[y||o||0,l||o||0]}function y(t){var n=t.rotation,s=void 0===n?0:n,y=t.translate,l=t.translateX,f=t.translateY,c=t.origin,u=t.originX,p=t.originY,A=t.scale,v=t.scaleX,X=t.scaleY,Y=t.skew,h=t.skewX,w=t.skewY,k=t.x,x=t.y;(Array.isArray(k)||Array.isArray(x))&&console.warn('Passing SvgLengthList to x or y attribute where SvgLength expected');var b=o(y,l||(Array.isArray(k)?k[0]:k),f||(Array.isArray(x)?x[0]:x)),N=o(c,u,p),_=o(A,v,X,1),L=o(Y,h,w);return{rotation:+s||0,originX:N[0],originY:N[1],scaleX:_[0],scaleY:_[1],skewX:L[0],skewY:L[1],x:b[0],y:b[1]}}function l(o,l){if((0,t.reset)(),s(o),l)if(Array.isArray(l))'number'==typeof l[0]&&(0,t.append)(l[0],l[1],l[2],l[3],l[4],l[5]);else if('string'==typeof l)try{var f=(0,n.parse)(l);(0,t.append)(f[0],f[3],f[1],f[4],f[2],f[5])}catch(t){console.error(t)}else s(y(l));return(0,t.toArray)()}},587,[588,589]); -__d(function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.reset=function(){if(M)return;f=v=1,o=u=c=s=0,M=!0},e.toArray=function(){if(M)return n;return[f,o,u,v,c,s]},e.append=h,e.appendTransform=function(n,p,l,y,_,P,b,j,A){if(0===n&&0===p&&1===l&&1===y&&0===_&&0===P&&0===b&&0===j&&0===A)return;var I,O;if(_%360){var T=_*t;I=Math.cos(T),O=Math.sin(T)}else I=1,O=0;var k=I*l,q=O*l,w=-O*y,x=I*y;if(P||b){var z=Math.tan(b*t),B=Math.tan(P*t);h(k+B*q,z*k+q,w+B*x,z*w+x,n,p)}else h(k,q,w,x,n,p);(j||A)&&(c-=j*f+A*u,s-=j*o+A*v,M=!1)},e.identity=void 0;var t=Math.PI/180,n=[1,0,0,1,0,0];e.identity=n;var f=1,o=0,u=0,v=1,c=0,s=0,M=!0;function h(t,n,h,p,l,y){var _=1!==t||0!==n||0!==h||1!==p,P=0!==l||0!==y;if(_||P){if(M)return M=!1,f=t,o=n,u=h,v=p,c=l,void(s=y);var b=f,j=o,A=u,I=v;_&&(f=b*t+A*n,o=j*t+I*n,u=b*h+A*p,v=j*h+I*p),P&&(c=b*l+A*y+c,s=j*l+I*y+s)}}},588,[]); -__d(function(g,r,i,a,m,e,d){"use strict";function n(t,u,o,f){this.message=t,this.expected=u,this.found=o,this.location=f,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,n)}!(function(n,t){function u(){this.constructor=n}u.prototype=t.prototype,n.prototype=new u})(n,Error),n.buildMessage=function(n,t){var u={literal:function(n){return"\""+f(n.text)+"\""},class:function(n){var t,u="";for(t=0;t0){for(t=1,o=1;tse&&(se=ie,le=[]),le.push(n))}function ve(){var n,t,u,o,s;for(n=ie,t=[],u=Pe();u!==f;)t.push(u),u=Pe();if(t!==f)if((u=Ae())===f&&(u=null),u!==f){for(o=[],s=Pe();s!==f;)o.push(s),s=Pe();o!==f?n=t=c(u):(ie=n,n=f)}else ie=n,n=f;else ie=n,n=f;return n}function Ae(){var n,t,u,o;if(n=ie,(t=xe())!==f){for(u=[],o=ke();o!==f;)u.push(o),o=ke();u!==f&&(o=Ae())!==f?n=t=h(t,o):(ie=n,n=f)}else ie=n,n=f;return n===f&&(n=xe()),n}function xe(){var n;return(n=Ce())===f&&(n=me())===f&&(n=ye())===f&&(n=je())===f&&(n=we())===f&&(n=be()),n}function Ce(){var n,u,o,s,l,c,h,w,b,E,F,M,k;if(n=ie,t.substr(ie,6)===p?(u=p,ie+=6):(u=f,0===ae&&de(v)),u!==f){for(o=[],s=Pe();s!==f;)o.push(s),s=Pe();if(o!==f)if(40===t.charCodeAt(ie)?(s=A,ie++):(s=f,0===ae&&de(x)),s!==f){for(l=[],c=Pe();c!==f;)l.push(c),c=Pe();if(l!==f)if((c=Ee())!==f)if(ke()!==f)if((h=Ee())!==f)if(ke()!==f)if((w=Ee())!==f)if(ke()!==f)if((b=Ee())!==f)if(ke()!==f)if((E=Ee())!==f)if(ke()!==f)if((F=Ee())!==f){for(M=[],k=Pe();k!==f;)M.push(k),k=Pe();M!==f?(41===t.charCodeAt(ie)?(k=C,ie++):(k=f,0===ae&&de(y)),k!==f?n=u=j(c,h,w,b,E,F):(ie=n,n=f)):(ie=n,n=f)}else ie=n,n=f;else ie=n,n=f;else ie=n,n=f;else ie=n,n=f;else ie=n,n=f;else ie=n,n=f;else ie=n,n=f;else ie=n,n=f;else ie=n,n=f;else ie=n,n=f;else ie=n,n=f;else ie=n,n=f}else ie=n,n=f;else ie=n,n=f}else ie=n,n=f;return n}function me(){var n,u,o,s,l,c,h,p,v;if(n=ie,t.substr(ie,9)===w?(u=w,ie+=9):(u=f,0===ae&&de(b)),u!==f){for(o=[],s=Pe();s!==f;)o.push(s),s=Pe();if(o!==f)if(40===t.charCodeAt(ie)?(s=A,ie++):(s=f,0===ae&&de(x)),s!==f){for(l=[],c=Pe();c!==f;)l.push(c),c=Pe();if(l!==f)if((c=Ee())!==f)if((h=Fe())===f&&(h=null),h!==f){for(p=[],v=Pe();v!==f;)p.push(v),v=Pe();p!==f?(41===t.charCodeAt(ie)?(v=C,ie++):(v=f,0===ae&&de(y)),v!==f?n=u=E(c,h):(ie=n,n=f)):(ie=n,n=f)}else ie=n,n=f;else ie=n,n=f;else ie=n,n=f}else ie=n,n=f;else ie=n,n=f}else ie=n,n=f;return n}function ye(){var n,u,o,s,l,c,h,p,v;if(n=ie,t.substr(ie,5)===F?(u=F,ie+=5):(u=f,0===ae&&de(M)),u!==f){for(o=[],s=Pe();s!==f;)o.push(s),s=Pe();if(o!==f)if(40===t.charCodeAt(ie)?(s=A,ie++):(s=f,0===ae&&de(x)),s!==f){for(l=[],c=Pe();c!==f;)l.push(c),c=Pe();if(l!==f)if((c=Ee())!==f)if((h=Fe())===f&&(h=null),h!==f){for(p=[],v=Pe();v!==f;)p.push(v),v=Pe();p!==f?(41===t.charCodeAt(ie)?(v=C,ie++):(v=f,0===ae&&de(y)),v!==f?n=u=k(c,h):(ie=n,n=f)):(ie=n,n=f)}else ie=n,n=f;else ie=n,n=f;else ie=n,n=f}else ie=n,n=f;else ie=n,n=f}else ie=n,n=f;return n}function je(){var n,u,o,s,l,c,h,p,v;if(n=ie,t.substr(ie,6)===S?(u=S,ie+=6):(u=f,0===ae&&de(R)),u!==f){for(o=[],s=Pe();s!==f;)o.push(s),s=Pe();if(o!==f)if(40===t.charCodeAt(ie)?(s=A,ie++):(s=f,0===ae&&de(x)),s!==f){for(l=[],c=Pe();c!==f;)l.push(c),c=Pe();if(l!==f)if((c=Ee())!==f)if((h=Me())===f&&(h=null),h!==f){for(p=[],v=Pe();v!==f;)p.push(v),v=Pe();p!==f?(41===t.charCodeAt(ie)?(v=C,ie++):(v=f,0===ae&&de(y)),v!==f?n=u=I(c,h):(ie=n,n=f)):(ie=n,n=f)}else ie=n,n=f;else ie=n,n=f;else ie=n,n=f}else ie=n,n=f;else ie=n,n=f}else ie=n,n=f;return n}function we(){var n,u,o,s,l,c,h,p;if(n=ie,t.substr(ie,5)===T?(u=T,ie+=5):(u=f,0===ae&&de(X)),u!==f){for(o=[],s=Pe();s!==f;)o.push(s),s=Pe();if(o!==f)if(40===t.charCodeAt(ie)?(s=A,ie++):(s=f,0===ae&&de(x)),s!==f){for(l=[],c=Pe();c!==f;)l.push(c),c=Pe();if(l!==f)if((c=Ee())!==f){for(h=[],p=Pe();p!==f;)h.push(p),p=Pe();h!==f?(41===t.charCodeAt(ie)?(p=C,ie++):(p=f,0===ae&&de(y)),p!==f?n=u=Y(c):(ie=n,n=f)):(ie=n,n=f)}else ie=n,n=f;else ie=n,n=f}else ie=n,n=f;else ie=n,n=f}else ie=n,n=f;return n}function be(){var n,u,o,s,l,c,h,p;if(n=ie,t.substr(ie,5)===_?(u=_,ie+=5):(u=f,0===ae&&de(L)),u!==f){for(o=[],s=Pe();s!==f;)o.push(s),s=Pe();if(o!==f)if(40===t.charCodeAt(ie)?(s=A,ie++):(s=f,0===ae&&de(x)),s!==f){for(l=[],c=Pe();c!==f;)l.push(c),c=Pe();if(l!==f)if((c=Ee())!==f){for(h=[],p=Pe();p!==f;)h.push(p),p=Pe();h!==f?(41===t.charCodeAt(ie)?(p=C,ie++):(p=f,0===ae&&de(y)),p!==f?n=u=P(c):(ie=n,n=f)):(ie=n,n=f)}else ie=n,n=f;else ie=n,n=f}else ie=n,n=f;else ie=n,n=f}else ie=n,n=f;return n}function Ee(){var n,t,u,o;return n=ie,t=ie,(u=Ye())===f&&(u=null),u!==f&&(o=Ie())!==f?t=u=[u,o]:(ie=t,t=f),t!==f&&(t=U(t)),(n=t)===f&&(n=ie,t=ie,(u=Ye())===f&&(u=null),u!==f&&(o=Re())!==f?t=u=[u,o]:(ie=t,t=f),t!==f&&(t=q(t)),n=t),n}function Fe(){var n,t;return n=ie,ke()!==f&&(t=Ee())!==f?n=z(t):(ie=n,n=f),n}function Me(){var n,t,u;return n=ie,ke()!==f&&(t=Ee())!==f&&ke()!==f&&(u=Ee())!==f?n=B(t,u):(ie=n,n=f),n}function ke(){var n,t,u,o,s;if(n=ie,t=[],(u=Pe())!==f)for(;u!==f;)t.push(u),u=Pe();else t=f;if(t!==f)if((u=Se())===f&&(u=null),u!==f){for(o=[],s=Pe();s!==f;)o.push(s),s=Pe();o!==f?n=t=[t,u,o]:(ie=n,n=f)}else ie=n,n=f;else ie=n,n=f;if(n===f)if(n=ie,(t=Se())!==f){for(u=[],o=Pe();o!==f;)u.push(o),o=Pe();u!==f?n=t=[t,u]:(ie=n,n=f)}else ie=n,n=f;return n}function Se(){var n;return 44===t.charCodeAt(ie)?(n=D,ie++):(n=f,0===ae&&de(G)),n}function Re(){var n;return ie,(n=_e())!==f&&(n=H(n)),n}function Ie(){var n,t,u,o;return n=ie,t=ie,(u=Te())!==f?((o=Xe())===f&&(o=null),o!==f?t=u=[u,o]:(ie=t,t=f)):(ie=t,t=f),t!==f&&(t=J(t)),(n=t)===f&&(n=ie,t=ie,(u=_e())!==f&&(o=Xe())!==f?t=u=[u,o]:(ie=t,t=f),t!==f&&(t=K(t)),n=t),n}function Te(){var n,u,o,s;return ae++,n=ie,(u=_e())===f&&(u=null),u!==f?(46===t.charCodeAt(ie)?(o=O,ie++):(o=f,0===ae&&de(Q)),o!==f&&(s=_e())!==f?n=u=V(u,s):(ie=n,n=f)):(ie=n,n=f),n===f&&(n=ie,(u=_e())!==f?(46===t.charCodeAt(ie)?(o=O,ie++):(o=f,0===ae&&de(Q)),o!==f?n=u=K(u):(ie=n,n=f)):(ie=n,n=f)),ae--,n===f&&(u=f,0===ae&&de(N)),n}function Xe(){var n,u,o,s;return ie,n=ie,W.test(t.charAt(ie))?(u=t.charAt(ie),ie++):(u=f,0===ae&&de(Z)),u!==f?((o=Ye())===f&&(o=null),o!==f&&(s=_e())!==f?n=u=[u,o,s]:(ie=n,n=f)):(ie=n,n=f),n!==f&&(n=$(n)),n}function Ye(){var n;return ee.test(t.charAt(ie))?(n=t.charAt(ie),ie++):(n=f,0===ae&&de(re)),n}function _e(){var n,t;if(n=[],(t=Le())!==f)for(;t!==f;)n.push(t),t=Le();else n=f;return n}function Le(){var n;return ne.test(t.charAt(ie))?(n=t.charAt(ie),ie++):(n=f,0===ae&&de(te)),n}function Pe(){var n;return ue.test(t.charAt(ie))?(n=t.charAt(ie),ie++):(n=f,0===ae&&de(oe)),n}var Ue,qe,ze,Be=Math.PI/180;if((o=l())!==f&&ie===t.length)return o;throw o!==f&&ie1||Array.isArray(y)?f.Children.map(y,A):y;return{content:null===V?String(y):null,children:V,inlineSize:h,baselineShift:x,verticalAlign:v,alignmentBaseline:F,font:b(t),x:(0,u.default)(o),y:(0,u.default)(c),dx:(0,u.default)(s),dy:(0,u.default)(S),rotate:(0,u.default)(p)}};var l,o=n(r(d[2])),f=t(r(d[3])),u=n(r(d[4])),c=r(d[5]),s=/^\s*((?:(?:normal|bold|italic)\s+)*)(?:(\d+(?:\.\d+)?(?:%|px|em|pt|pc|mm|cm|in]))*(?:\s*\/.*?)?\s+)?\s*"?([^"]*)/i,S=/^[\s"']*/,p=/[\s"']*$/,y=/\s*,\s*/g,h={};function x(t){return t?t.split(y)[0].replace(S,'').replace(p,''):null}function v(t){if(h.hasOwnProperty(t))return h[t];var n=s.exec(t);if(!n)return h[t]=null,null;var l=/bold/.exec(n[1]),o=/italic/.exec(n[1]);return h[t]={fontSize:n[2]||12,fontWeight:l?'bold':'normal',fontStyle:o?'italic':'normal',fontFamily:x(n[3])},h[t]}function b(t){var n=t.fontData,l=t.fontStyle,f=t.fontVariant,u=t.fontWeight,s=t.fontStretch,S=t.fontSize,p=t.fontFamily,y=t.textAnchor,h=t.textDecoration,b=t.letterSpacing,A=t.wordSpacing,F=t.kerning,V=t.fontFeatureSettings,z=t.fontVariantLigatures,D=t.fontVariationSettings,_=t.font,k=(0,c.pickNotNil)({fontData:n,fontStyle:l,fontVariant:f,fontWeight:u,fontStretch:s,fontSize:S,fontFamily:x(p),textAnchor:y,textDecoration:h,letterSpacing:b,wordSpacing:A,kerning:F,fontFeatureSettings:V,fontVariantLigatures:z,fontVariationSettings:D}),w='string'==typeof _?v(_):_;return(0,o.default)({},w,k)}function A(t){return'string'==typeof t||'number'==typeof t?f.default.createElement(l,null,String(t)):t}},602,[571,1,410,57,586,591]); -__d(function(g,r,i,a,m,e,d){var t=r(d[0]),l=r(d[1]);Object.defineProperty(e,"__esModule",{value:!0}),e.RNSVGText=e.default=void 0;var u=l(r(d[2])),f=l(r(d[3])),n=l(r(d[4])),o=l(r(d[5])),s=l(r(d[6])),v=l(r(d[7])),p=l(r(d[8])),c=l(r(d[9])),N=r(d[10]),h=l(r(d[11])),y=t(r(d[12])),x=l(r(d[13])),S=r(d[14]),T=l(r(d[15]));r(d[16]);var _=(function(t){function l(){var t,u;(0,n.default)(this,l);for(var o=arguments.length,p=new Array(o),c=0;c=o))break;f-=o}var s=t.slice(0,n).replace(/^\t+/,ee),p=/(^|\n).*$/.exec(s),v=p&&p[0]||'',h=t.slice(n),x=/.*(\n|$)/.exec(h);return{line:c,column:f,snippet:""+v+(x&&x[0])+"\n"+Y(' ',v.length)+"^"}}var re=/[a-zA-Z0-9:_-]/,ne=/[\s\t\r\n]/,ae=/['"]/;function ue(t,n){var u,l=t.length,f=null,c=function(){for(;A+1'!==t[A]&&p('Expected >'),C||(f=w,o=w.children,s.push(w)),v}function x(){var n=t.indexOf('--\x3e',A);return~n||p('expected --\x3e'),A=n+2,v}function y(){var n=t.indexOf(']]>',A);return~n||p('expected ]]>'),o.push(t.slice(A+7,n)),A=n+2,v}function k(){var n=S();(n||p('Expected tag name'),f&&n!==f.tag&&p("Expected closing tag to match opening tag <"+f.tag+">"),'>'!==t[A]&&p('Expected >'),s.pop(),f=s[s.length-1])&&(o=f.children);return v}function S(){for(var n,u='';A'===u||'/'===u)return n;n+=u,A+=1}while(A-1;){for(n=o=t[s],delete t[s],l=!0;o;){if(t.includes(o)){l=!1,t.splice(s,1);break}o='object'==typeof o&&o.parent||null}l&&(t[s]=n)}return t},existsOne:function t(n,o){return o.some(function(o){return'object'==typeof o&&(n(o)||t(n,o.children))})},getSiblings:function(t){var n='object'==typeof t&&t.parent;return n&&n.children||[]},hasAttrib:function(t,n){return t.props.hasOwnProperty(n)},findOne:function t(n,o){for(var l,s=0,u=o.length;s2&&void 0!==arguments[2]?arguments[2]:[],s=0,u=o.length;sn[o])return 1}return 0}function M(t){return{selector:t,specificity:j(t.item.data)}}function T(t,n,o,l){var s,u,c,f,p,v,h,y=2*o,b=0;for(s=0;sn&&(u=n),c>n&&(c=n),f=s,p=u;;)if(f=l.length)break;c=l[u++]}else{if((u=l.next()).done)break;c=u.value}var f=c,p=f.children;if(p.length&&!V(f,'foreignObject'))try{var v=p.join('');x(y.default.parse(v,R),o)}catch(t){console.warn('Warning: Parse error of styles of ';\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.2.0\", _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.2.0\" + '\"]');\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 (isStatelessFunction(chunk) && executionContext) {\n var _result = chunk(executionContext);\n\n if (process.env.NODE_ENV !== 'production' && reactIs.isElement(_result)) {\n // eslint-disable-next-line no-console\n console.warn(getComponentName(chunk) + ' 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 return flatten(_result, 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 (code === comma || code === colon || code === slash && value.charCodeAt(next + 1) !== star) {\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 type: 'word',\n sourceIndex: pos,\n value: value.slice(pos, whitespacePos + 1)\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 (next < max && !(\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 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) {\r\n var i, max, node, result;\r\n\r\n for (i = 0, max = nodes.length; i < max; i += 1) {\r\n node = nodes[i];\r\n if (!bubble) {\r\n result = cb(node, i, nodes);\r\n }\r\n\r\n if (result !== false && node.type === 'function' && Array.isArray(node.nodes)) {\r\n walk(node.nodes, cb, bubble);\r\n }\r\n\r\n if (bubble) {\r\n cb(node, i, nodes);\r\n }\r\n }\r\n};\r\n","function stringifyNode(node, custom) {\r\n var type = node.type;\r\n var value = node.value;\r\n var buf;\r\n var customResult;\r\n\r\n if (custom && (customResult = custom(node)) !== undefined) {\r\n return customResult;\r\n } else if (type === 'word' || type === 'space') {\r\n return value;\r\n } else if (type === 'string') {\r\n buf = node.quote || '';\r\n return buf + value + (node.unclosed ? '' : buf);\r\n } else if (type === 'comment') {\r\n return '/*' + value + (node.unclosed ? '' : '*/');\r\n } else if (type === 'div') {\r\n return (node.before || '') + value + (node.after || '');\r\n } else if (Array.isArray(node.nodes)) {\r\n buf = stringify(node.nodes);\r\n if (type !== 'function') {\r\n return buf;\r\n }\r\n return value + '(' + (node.before || '') + buf + (node.after || '') + (node.unclosed ? '' : ')');\r\n }\r\n return value;\r\n}\r\n\r\nfunction stringify(nodes, custom) {\r\n var result, i;\r\n\r\n if (Array.isArray(nodes)) {\r\n result = '';\r\n for (i = nodes.length - 1; ~i; i -= 1) {\r\n result = stringifyNode(nodes[i], custom) + result;\r\n }\r\n return result;\r\n }\r\n return stringifyNode(nodes, custom);\r\n}\r\n\r\nmodule.exports = stringify;\r\n","var minus = '-'.charCodeAt(0);\nvar plus = '+'.charCodeAt(0);\nvar dot = '.'.charCodeAt(0);\n\nmodule.exports = function (value) {\n var pos = 0;\n var length = value.length;\n var dotted = false;\n var containsNumber = false;\n var code;\n var number = '';\n\n while (pos < length) {\n code = value.charCodeAt(pos);\n\n if (code >= 48 && code <= 57) {\n number += value[pos];\n containsNumber = true;\n } else if (code === dot) {\n if (dotted) {\n break;\n }\n dotted = true;\n number += value[pos];\n } else if (code === plus || code === minus) {\n if (pos !== 0) {\n break;\n }\n number += value[pos];\n } else {\n break;\n }\n\n pos += 1;\n }\n\n return containsNumber ? {\n number: number,\n unit: value.slice(pos)\n } : false;\n};\n","'use strict'\n\nmodule.exports = require('./colors.json')\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\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction index (resultFn, isEqual) {\n if (isEqual === void 0) {\n isEqual = areInputsEqual;\n }\n\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\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 && isEqual(newArgs, lastArgs)) {\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\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _media = require('./styled/media');\n\nObject.defineProperty(exports, 'media', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_media).default;\n }\n});\n\nvar _Container = require('./Container');\n\nObject.defineProperty(exports, 'Container', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Container).default;\n }\n});\n\nvar _Row = require('./Row');\n\nObject.defineProperty(exports, 'Row', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Row).default;\n }\n});\n\nvar _Col = require('./Col');\n\nObject.defineProperty(exports, 'Col', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Col).default;\n }\n});\n\nvar _injectLayoutBaseCSS = require('./injectLayoutBaseCSS');\n\nObject.defineProperty(exports, 'injectLayoutBaseCSS', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_injectLayoutBaseCSS).default;\n }\n});\n\nvar _ThemeProvider = require('./ThemeProvider');\n\nObject.defineProperty(exports, 'GridThemeProvider', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_ThemeProvider).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _templateObject = _taggedTemplateLiteral(['\\n @media (max-width: ', 'px) {\\n ', '\\n }\\n '], ['\\n @media (max-width: ', 'px) {\\n ', '\\n }\\n ']),\n _templateObject2 = _taggedTemplateLiteral(['\\n @media (min-width: ', 'px) {\\n ', '\\n }\\n '], ['\\n @media (min-width: ', 'px) {\\n ', '\\n }\\n ']);\n\nvar _styledComponents = require('styled-components');\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar defaultBreakpoints = {\n giant: 1200,\n xl: 1200,\n desktop: 992,\n lg: 992,\n tablet: 768,\n md: 768,\n phone: 576,\n sm: 576,\n smaller: 575,\n xs: 575\n};\n\nvar getBreakpoints = function getBreakpoints(props) {\n if (props.theme && props.theme.grid && props.theme.grid.breakpoints) {\n return props.theme.grid.breakpoints;\n } else {\n return defaultBreakpoints;\n }\n};\n\nvar media = Object.keys(defaultBreakpoints).reduce(function (accumulator, label) {\n if (label === 'xs' || label === 'smaller') {\n accumulator[label] = function () {\n return (0, _styledComponents.css)(_templateObject, function (props) {\n return getBreakpoints(props).xs;\n }, _styledComponents.css.apply(undefined, arguments));\n };\n } else {\n accumulator[label] = function () {\n return (0, _styledComponents.css)(_templateObject2, function (props) {\n return getBreakpoints(props)[label];\n }, _styledComponents.css.apply(undefined, arguments));\n };\n }\n return accumulator;\n}, {});\n\nexports.default = media;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\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 _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _styled = require('./styled');\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\nvar container = function container(props) {\n var fluid = props.fluid,\n children = props.children,\n otherProps = _objectWithoutProperties(props, ['fluid', 'children']);\n\n if (fluid) {\n return _react2.default.createElement(\n _styled.ContainerFluid,\n _extends({ 'data-name': 'container-fluid' }, otherProps),\n children\n );\n }\n return _react2.default.createElement(\n _styled.Container,\n _extends({ 'data-name': 'container' }, otherProps),\n children\n );\n};\n\ncontainer.propTypes = {\n children: _propTypes2.default.any,\n fluid: _propTypes2.default.bool.isRequired\n};\n\ncontainer.defaultProps = {\n children: null,\n fluid: false\n};\n\nexports.default = container;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _media = require('./media');\n\nObject.defineProperty(exports, 'media', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_media).default;\n }\n});\n\nvar _Container = require('./Container');\n\nObject.defineProperty(exports, 'Container', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Container).default;\n }\n});\n\nvar _ContainerFluid = require('./ContainerFluid');\n\nObject.defineProperty(exports, 'ContainerFluid', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_ContainerFluid).default;\n }\n});\n\nvar _Row = require('./Row');\n\nObject.defineProperty(exports, 'Row', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Row).default;\n }\n});\n\nvar _Col = require('./Col');\n\nObject.defineProperty(exports, 'Col', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Col).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _templateObject = _taggedTemplateLiteral(['\\n width: 100%;\\n padding-right: ', 'px;\\n padding-left: ', 'px;\\n margin-right: auto;\\n margin-left: auto;\\n\\n ', '\\n\\n ', '\\n\\n ', '\\n\\n ', '\\n'], ['\\n width: 100%;\\n padding-right: ', 'px;\\n padding-left: ', 'px;\\n margin-right: auto;\\n margin-left: auto;\\n\\n ', '\\n\\n ', '\\n\\n ', '\\n\\n ', '\\n']),\n _templateObject2 = _taggedTemplateLiteral(['\\n max-width: 540px;\\n '], ['\\n max-width: 540px;\\n ']),\n _templateObject3 = _taggedTemplateLiteral(['\\n max-width: 720px;\\n '], ['\\n max-width: 720px;\\n ']),\n _templateObject4 = _taggedTemplateLiteral(['\\n max-width: 960px;\\n '], ['\\n max-width: 960px;\\n ']),\n _templateObject5 = _taggedTemplateLiteral(['\\n max-width: 1140px;\\n '], ['\\n max-width: 1140px;\\n ']);\n\nvar _styledComponents = require('styled-components');\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _media = require('./media');\n\nvar _media2 = _interopRequireDefault(_media);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar Container = _styledComponents2.default.div(_templateObject, function (p) {\n if (!p.theme || !p.theme.styledBootstrapGrid || !p.theme.styledBootstrapGrid.getContainerPadding) {\n return 15;\n }\n return p.theme.styledBootstrapGrid.getContainerPadding();\n}, function (p) {\n if (!p.theme || !p.theme.styledBootstrapGrid || !p.theme.styledBootstrapGrid.getContainerPadding) {\n return 15;\n }\n return p.theme.styledBootstrapGrid.getContainerPadding();\n}, _media2.default.phone(_templateObject2), _media2.default.tablet(_templateObject3), _media2.default.desktop(_templateObject4), _media2.default.giant(_templateObject5));\n\nexports.default = Container;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _templateObject = _taggedTemplateLiteral(['\\n width: 100%;\\n padding-right: ', 'px;\\n padding-left: ', 'px;\\n margin-right: auto;\\n margin-left: auto;\\n'], ['\\n width: 100%;\\n padding-right: ', 'px;\\n padding-left: ', 'px;\\n margin-right: auto;\\n margin-left: auto;\\n']);\n\nvar _styledComponents = require('styled-components');\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _media = require('./media');\n\nvar _media2 = _interopRequireDefault(_media);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar ContainerFluid = _styledComponents2.default.div(_templateObject, function (p) {\n if (!p.theme || !p.theme.styledBootstrapGrid || !p.theme.styledBootstrapGrid.getContainerPadding) {\n return 15;\n }\n return p.theme.styledBootstrapGrid.getContainerPadding();\n}, function (p) {\n if (!p.theme || !p.theme.styledBootstrapGrid || !p.theme.styledBootstrapGrid.getContainerPadding) {\n return 15;\n }\n return p.theme.styledBootstrapGrid.getContainerPadding();\n});\n\nexports.default = ContainerFluid;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _templateObject = _taggedTemplateLiteral(['\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-wrap: wrap;\\n flex-wrap: wrap;\\n margin-right: -', 'px;\\n margin-left: -', 'px;\\n\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n'], ['\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-wrap: wrap;\\n flex-wrap: wrap;\\n margin-right: -', 'px;\\n margin-left: -', 'px;\\n\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n']),\n _templateObject2 = _taggedTemplateLiteral(['', ''], ['', '']);\n\nvar _styledComponents = require('styled-components');\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _media = require('./media');\n\nvar _media2 = _interopRequireDefault(_media);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar css = {\n alignItems: {\n start: '\\n -webkit-box-align: start !important;\\n -ms-flex-align: start !important;\\n align-items: flex-start !important;\\n ',\n end: '\\n -webkit-box-align: end !important;\\n -ms-flex-align: end !important;\\n align-items: flex-end !important;\\n ',\n center: '\\n -webkit-box-align: center !important;\\n -ms-flex-align: center !important;\\n align-items: center !important;\\n ',\n baseline: '\\n -webkit-box-align: baseline !important;\\n -ms-flex-align: baseline !important;\\n align-items: baseline !important;\\n ',\n stretch: '\\n -webkit-box-align: stretch !important;\\n -ms-flex-align: stretch !important;\\n align-items: stretch !important;\\n '\n },\n justifyContent: {\n start: '\\n -webkit-box-pack: start !important;\\n -ms-flex-pack: start !important;\\n justify-content: flex-start !important;\\n ',\n end: '\\n -webkit-box-pack: end !important;\\n -ms-flex-pack: end !important;\\n justify-content: flex-end !important;\\n ',\n center: '\\n -webkit-box-pack: center !important;\\n -ms-flex-pack: center !important;\\n justify-content: center !important;\\n ',\n between: '\\n -webkit-box-pack: justify !important;\\n -ms-flex-pack: justify !important;\\n justify-content: space-between !important;\\n ',\n around: '\\n -ms-flex-pack: distribute !important;\\n justify-content: space-around !important;\\n '\n }\n};\n\nvar Row = _styledComponents2.default.div(_templateObject, function (p) {\n if (!p.theme || !p.theme.styledBootstrapGrid || !p.theme.styledBootstrapGrid.getRowPadding) {\n return 15;\n }\n return p.theme.styledBootstrapGrid.getRowPadding();\n}, function (p) {\n if (!p.theme || !p.theme.styledBootstrapGrid || !p.theme.styledBootstrapGrid.getRowPadding) {\n return 15;\n }\n return p.theme.styledBootstrapGrid.getRowPadding();\n}, function (p) {\n return p.alignItems && css.alignItems[p.alignItems];\n}, function (p) {\n return p.smAlignItems && _media2.default.xs(_templateObject2, css.alignItems[p.xsAlignItems]);\n}, function (p) {\n return p.smAlignItems && _media2.default.sm(_templateObject2, css.alignItems[p.smAlignItems]);\n}, function (p) {\n return p.mdAlignItems && _media2.default.md(_templateObject2, css.alignItems[p.mdAlignItems]);\n}, function (p) {\n return p.lgAlignItems && _media2.default.lg(_templateObject2, css.alignItems[p.lgAlignItems]);\n}, function (p) {\n return p.xlAlignItems && _media2.default.xl(_templateObject2, css.alignItems[p.xlAlignItems]);\n}, function (p) {\n return p.justifyContent && css.justifyContent[p.justifyContent];\n}, function (p) {\n return p.smJustifyContent && _media2.default.xs(_templateObject2, css.justifyContent[p.xsJustifyContent]);\n}, function (p) {\n return p.smJustifyContent && _media2.default.sm(_templateObject2, css.justifyContent[p.smJustifyContent]);\n}, function (p) {\n return p.mdJustifyContent && _media2.default.md(_templateObject2, css.justifyContent[p.mdJustifyContent]);\n}, function (p) {\n return p.lgJustifyContent && _media2.default.lg(_templateObject2, css.justifyContent[p.lgJustifyContent]);\n}, function (p) {\n return p.xlJustifyContent && _media2.default.xl(_templateObject2, css.justifyContent[p.xlJustifyContent]);\n});\n\nexports.default = Row;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _templateObject = _taggedTemplateLiteral(['\\n position: relative;\\n width: 100%;\\n min-height: 1px;\\n padding-right: ', 'px;\\n padding-left: ', 'px;\\n\\n ', '\\n\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n'], ['\\n position: relative;\\n width: 100%;\\n min-height: 1px;\\n padding-right: ', 'px;\\n padding-left: ', 'px;\\n\\n ', '\\n\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n\\n ', '\\n ', '\\n ', '\\n ', '\\n ', '\\n']),\n _templateObject2 = _taggedTemplateLiteral(['', ''], ['', '']);\n\nvar _styledComponents = require('styled-components');\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _media = require('./media');\n\nvar _media2 = _interopRequireDefault(_media);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar css = {\n col: {\n true: '\\n -ms-flex-preferred-size: 0;\\n flex-basis: 0;\\n -webkit-box-flex: 1;\\n -ms-flex-positive: 1;\\n flex-grow: 1;\\n max-width: 100%;\\n ',\n auto: '\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 auto;\\n flex: 0 0 auto;\\n width: auto;\\n max-width: none;\\n ',\n 1: '\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 8.333333%;\\n flex: 0 0 8.333333%;\\n max-width: 8.333333%;\\n ',\n 2: '\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 16.666667%;\\n flex: 0 0 16.666667%;\\n max-width: 16.666667%;\\n ',\n 3: '\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 25%;\\n flex: 0 0 25%;\\n max-width: 25%;\\n ',\n 4: '\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 33.333333%;\\n flex: 0 0 33.333333%;\\n max-width: 33.333333%;\\n ',\n 5: '\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 41.666667%;\\n flex: 0 0 41.666667%;\\n max-width: 41.666667%;\\n ',\n 6: '\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 50%;\\n flex: 0 0 50%;\\n max-width: 50%;\\n ',\n 7: '\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 58.333333%;\\n flex: 0 0 58.333333%;\\n max-width: 58.333333%;\\n ',\n 8: '\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 66.666667%;\\n flex: 0 0 66.666667%;\\n max-width: 66.666667%;\\n ',\n 9: '\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 75%;\\n flex: 0 0 75%;\\n max-width: 75%;\\n ',\n 10: '\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 83.333333%;\\n flex: 0 0 83.333333%;\\n max-width: 83.333333%;\\n ',\n 11: '\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 91.666667%;\\n flex: 0 0 91.666667%;\\n max-width: 91.666667%;\\n ',\n 12: '\\n -webkit-box-flex: 0;\\n -ms-flex: 0 0 100%;\\n flex: 0 0 100%;\\n max-width: 100%;\\n '\n },\n offset: {\n 0: 'margin-left: 0;',\n 1: 'margin-left: 8.333333%;',\n 2: 'margin-left: 16.666667%;',\n 3: 'margin-left: 25%;',\n 4: 'margin-left: 33.333333%;',\n 5: 'margin-left: 41.666667%;',\n 6: 'margin-left: 50%;',\n 7: 'margin-left: 58.333333%;',\n 8: 'margin-left: 66.666667%;',\n 9: 'margin-left: 75%;',\n 10: 'margin-left: 83.333333%;',\n 11: 'margin-left: 91.666667%;'\n },\n order: {\n first: '\\n -webkit-box-ordinal-group: 0;\\n -ms-flex-order: -1;\\n order: -1;\\n ',\n last: '\\n -webkit-box-ordinal-group: 14;\\n -ms-flex-order: 13;\\n order: 13;\\n ',\n 0: '\\n -webkit-box-ordinal-group: 1;\\n -ms-flex-order: 0;\\n order: 0;\\n ',\n 1: '\\n -webkit-box-ordinal-group: 2;\\n -ms-flex-order: 1;\\n order: 1;\\n ',\n 2: '\\n -webkit-box-ordinal-group: 3;\\n -ms-flex-order: 2;\\n order: 2;\\n ',\n 3: '\\n -webkit-box-ordinal-group: 4;\\n -ms-flex-order: 3;\\n order: 3;\\n ',\n 4: '\\n -webkit-box-ordinal-group: 5;\\n -ms-flex-order: 4;\\n order: 4;\\n ',\n 5: '\\n -webkit-box-ordinal-group: 6;\\n -ms-flex-order: 5;\\n order: 5;\\n ',\n 6: '\\n -webkit-box-ordinal-group: 7;\\n -ms-flex-order: 6;\\n order: 6;\\n ',\n 7: '\\n -webkit-box-ordinal-group: 8;\\n -ms-flex-order: 7;\\n order: 7;\\n ',\n 8: '\\n -webkit-box-ordinal-group: 9;\\n -ms-flex-order: 8;\\n order: 8;\\n ',\n 9: '\\n -webkit-box-ordinal-group: 10;\\n -ms-flex-order: 9;\\n order: 9;\\n ',\n 10: '\\n -webkit-box-ordinal-group: 11;\\n -ms-flex-order: 10;\\n order: 10;\\n ',\n 11: '\\n -webkit-box-ordinal-group: 12;\\n -ms-flex-order: 11;\\n order: 11;\\n ',\n 12: '\\n -webkit-box-ordinal-group: 13;\\n -ms-flex-order: 12;\\n order: 12;\\n '\n },\n alignSelf: {\n auto: '\\n -ms-flex-item-align: auto !important;\\n align-self: auto !important;\\n ',\n start: '\\n -ms-flex-item-align: start !important;\\n align-self: flex-start !important;\\n ',\n end: '\\n -ms-flex-item-align: end !important;\\n align-self: flex-end !important;\\n ',\n center: '\\n -ms-flex-item-align: center !important;\\n align-self: center !important;\\n ',\n baseline: '\\n -ms-flex-item-align: baseline !important;\\n align-self: baseline !important;\\n ',\n stretch: '\\n -ms-flex-item-align: stretch !important;\\n align-self: stretch !important;\\n '\n },\n noGutter: '\\n margin-right: 0;\\n margin-left: 0;\\n '\n};\n\nvar Col = _styledComponents2.default.div(_templateObject, function (p) {\n if (!p.theme || !p.theme.styledBootstrapGrid || !p.theme.styledBootstrapGrid.getColPadding) {\n return 15;\n }\n return p.theme.styledBootstrapGrid.getColPadding();\n}, function (p) {\n if (!p.theme || !p.theme.styledBootstrapGrid || !p.theme.styledBootstrapGrid.getColPadding) {\n return 15;\n }\n return p.theme.styledBootstrapGrid.getColPadding();\n}, function (p) {\n return p.noGutter && css.noGutter;\n}, function (p) {\n return p.col && css.col[p.col];\n}, function (p) {\n return p.offset && css.offset[p.offset];\n}, function (p) {\n return p.auto && css.col.auto;\n}, function (p) {\n return p.alignSelf && css.alignSelf[p.alignSelf];\n}, function (p) {\n return p.order && css.order[p.order];\n}, function (p) {\n return p.xs && _media2.default.xs(_templateObject2, css.col[p.xs]);\n}, function (p) {\n return !isNaN(parseInt(p.xsOffset, 10)) && _media2.default.xs(_templateObject2, css.offset[p.xsOffset]);\n}, function (p) {\n return p.xsAuto && _media2.default.xs(_templateObject2, css.col.auto);\n}, function (p) {\n return p.xsAlignSelf && _media2.default.xs(_templateObject2, css.alignSelf[p.xsAlignSelf]);\n}, function (p) {\n return p.xsOrder && _media2.default.xs(_templateObject2, css.order[p.xsOrder]);\n}, function (p) {\n return p.sm && _media2.default.sm(_templateObject2, css.col[p.sm]);\n}, function (p) {\n return !isNaN(parseInt(p.smOffset, 10)) && _media2.default.sm(_templateObject2, css.offset[p.smOffset]);\n}, function (p) {\n return p.smAuto && _media2.default.sm(_templateObject2, css.col.auto);\n}, function (p) {\n return p.smAlignSelf && _media2.default.sm(_templateObject2, css.alignSelf[p.smAlignSelf]);\n}, function (p) {\n return p.smOrder && _media2.default.sm(_templateObject2, css.order[p.smOrder]);\n}, function (p) {\n return p.md && _media2.default.md(_templateObject2, css.col[p.md]);\n}, function (p) {\n return !isNaN(parseInt(p.mdOffset, 10)) && _media2.default.md(_templateObject2, css.offset[p.mdOffset]);\n}, function (p) {\n return p.mdAuto && _media2.default.md(_templateObject2, css.col.auto);\n}, function (p) {\n return p.mdAlignSelf && _media2.default.md(_templateObject2, css.alignSelf[p.mdAlignSelf]);\n}, function (p) {\n return p.mdOrder && _media2.default.md(_templateObject2, css.order[p.mdOrder]);\n}, function (p) {\n return p.lg && _media2.default.lg(_templateObject2, css.col[p.lg]);\n}, function (p) {\n return !isNaN(parseInt(p.lgOffset, 10)) && _media2.default.lg(_templateObject2, css.offset[p.lgOffset]);\n}, function (p) {\n return p.lgAuto && _media2.default.lg(_templateObject2, css.col.auto);\n}, function (p) {\n return p.lgAlignSelf && _media2.default.lg(_templateObject2, css.alignSelf[p.lgAlignSelf]);\n}, function (p) {\n return p.lgOrder && _media2.default.lg(_templateObject2, css.order[p.lgOrder]);\n}, function (p) {\n return p.xl && _media2.default.xl(_templateObject2, css.col[p.xl]);\n}, function (p) {\n return !isNaN(parseInt(p.xlOffset, 10)) && _media2.default.xl(_templateObject2, css.offset[p.xlOffset]);\n}, function (p) {\n return p.xlAuto && _media2.default.xl(_templateObject2, css.col.auto);\n}, function (p) {\n return p.xlAlignSelf && _media2.default.xl(_templateObject2, css.alignSelf[p.xlAlignSelf]);\n}, function (p) {\n return p.xlOrder && _media2.default.xl(_templateObject2, css.order[p.xlOrder]);\n});\n\nexports.default = Col;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\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 _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _styled = require('./styled');\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\nvar row = function row(props) {\n var children = props.children,\n alignItems = props.alignItems,\n smAlignItems = props.smAlignItems,\n mdAlignItems = props.mdAlignItems,\n lgAlignItems = props.lgAlignItems,\n xlAlignItems = props.xlAlignItems,\n justifyContent = props.justifyContent,\n smJustifyContent = props.smJustifyContent,\n mdJustifyContent = props.mdJustifyContent,\n lgJustifyContent = props.lgJustifyContent,\n xlJustifyContent = props.xlJustifyContent,\n otherProps = _objectWithoutProperties(props, ['children', 'alignItems', 'smAlignItems', 'mdAlignItems', 'lgAlignItems', 'xlAlignItems', 'justifyContent', 'smJustifyContent', 'mdJustifyContent', 'lgJustifyContent', 'xlJustifyContent']);\n\n var dataName = 'row';\n\n if (alignItems) {\n dataName = dataName + ' align-items-' + alignItems;\n }\n if (smAlignItems) {\n dataName = dataName + ' align-items-sm-' + smAlignItems;\n }\n if (mdAlignItems) {\n dataName = dataName + ' align-items-md-' + mdAlignItems;\n }\n if (lgAlignItems) {\n dataName = dataName + ' align-items-lg-' + lgAlignItems;\n }\n if (xlAlignItems) {\n dataName = dataName + ' align-items-xl-' + xlAlignItems;\n }\n if (justifyContent) {\n dataName = dataName + ' justify-content-' + justifyContent;\n }\n if (smJustifyContent) {\n dataName = dataName + ' justify-content-sm-' + smJustifyContent;\n }\n if (mdJustifyContent) {\n dataName = dataName + ' justify-content-md-' + mdJustifyContent;\n }\n if (lgJustifyContent) {\n dataName = dataName + ' justify-content-lg-' + lgJustifyContent;\n }\n if (xlJustifyContent) {\n dataName = dataName + ' justify-content-xl-' + xlJustifyContent;\n }\n\n dataName = dataName.trim();\n return _react2.default.createElement(\n _styled.Row,\n _extends({\n alignItems: alignItems,\n smAlignItems: smAlignItems,\n mdAlignItems: mdAlignItems,\n lgAlignItems: lgAlignItems,\n xlAlignItems: xlAlignItems,\n justifyContent: justifyContent,\n smJustifyContent: smJustifyContent,\n mdJustifyContent: mdJustifyContent,\n lgJustifyContent: lgJustifyContent,\n xlJustifyContent: xlJustifyContent,\n 'data-name': dataName\n }, otherProps),\n children\n );\n};\n\nrow.propTypes = {\n children: _propTypes2.default.any,\n alignItems: _propTypes2.default.string,\n smAlignItems: _propTypes2.default.string,\n mdAlignItems: _propTypes2.default.string,\n lgAlignItems: _propTypes2.default.string,\n xlAlignItems: _propTypes2.default.string,\n justifyContent: _propTypes2.default.string,\n smJustifyContent: _propTypes2.default.string,\n mdJustifyContent: _propTypes2.default.string,\n lgJustifyContent: _propTypes2.default.string,\n xlJustifyContent: _propTypes2.default.string\n};\n\nrow.defaultProps = {\n children: null\n};\n\nexports.default = row;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\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 _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _styled = require('./styled');\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\nvar col = function col(props) {\n var col = props.col,\n offset = props.offset,\n auto = props.auto,\n alignSelf = props.alignSelf,\n order = props.order,\n xs = props.xs,\n xsOffset = props.xsOffset,\n xsAuto = props.xsAuto,\n xsAlignSelf = props.xsAlignSelf,\n xsOrder = props.xsOrder,\n sm = props.sm,\n smOffset = props.smOffset,\n smAuto = props.smAuto,\n smAlignSelf = props.smAlignSelf,\n smOrder = props.smOrder,\n md = props.md,\n mdOffset = props.mdOffset,\n mdAuto = props.mdAuto,\n mdAlignSelf = props.mdAlignSelf,\n mdOrder = props.mdOrder,\n lg = props.lg,\n lgOffset = props.lgOffset,\n lgAuto = props.lgAuto,\n lgAlignSelf = props.lgAlignSelf,\n lgOrder = props.lgOrder,\n xl = props.xl,\n xlOffset = props.xlOffset,\n xlAuto = props.xlAuto,\n xlAlignSelf = props.xlAlignSelf,\n xlOrder = props.xlOrder,\n noGutter = props.noGutter,\n children = props.children,\n otherProps = _objectWithoutProperties(props, ['col', 'offset', 'auto', 'alignSelf', 'order', 'xs', 'xsOffset', 'xsAuto', 'xsAlignSelf', 'xsOrder', 'sm', 'smOffset', 'smAuto', 'smAlignSelf', 'smOrder', 'md', 'mdOffset', 'mdAuto', 'mdAlignSelf', 'mdOrder', 'lg', 'lgOffset', 'lgAuto', 'lgAlignSelf', 'lgOrder', 'xl', 'xlOffset', 'xlAuto', 'xlAlignSelf', 'xlOrder', 'noGutter', 'children']);\n\n var dataName = '';\n if (col) {\n if (!isNaN(parseInt(col, 10))) {\n dataName = dataName + ' col-' + col;\n } else {\n dataName = dataName + ' col';\n }\n }\n if (!isNaN(parseInt(offset, 10))) {\n dataName = dataName + ' offset-' + offset;\n }\n if (auto) {\n dataName = dataName + ' col-auto';\n }\n if (alignSelf) {\n dataName = dataName + ' align-self-' + alignSelf;\n }\n if (!isNaN(parseInt(order, 10)) || order === 'first' || order === 'last') {\n dataName = dataName + ' order-' + order;\n }\n\n // XS\n if (xs) {\n if (!isNaN(parseInt(xs, 10))) {\n dataName = dataName + ' col-xs-' + xs;\n } else {\n dataName = dataName + ' col-xs';\n }\n }\n if (!isNaN(parseInt(xsOffset, 10))) {\n dataName = dataName + ' offset-xs-' + xsOffset;\n }\n if (xsAuto) {\n dataName = dataName + ' col-xs-auto';\n }\n if (xsAlignSelf) {\n dataName = dataName + ' align-self-xs-' + xsAlignSelf;\n }\n if (!isNaN(parseInt(xsOrder, 10)) || xsOrder === 'first' || xsOrder === 'last') {\n dataName = dataName + ' order-xs-' + xsOrder;\n }\n\n // SM\n if (sm) {\n if (!isNaN(parseInt(sm, 10))) {\n dataName = dataName + ' col-sm-' + sm;\n } else {\n dataName = dataName + ' col-sm';\n }\n }\n if (!isNaN(parseInt(smOffset, 10))) {\n dataName = dataName + ' offset-sm-' + smOffset;\n }\n if (smAuto) {\n dataName = dataName + ' col-sm-auto';\n }\n if (smAlignSelf) {\n dataName = dataName + ' align-self-sm-' + smAlignSelf;\n }\n if (!isNaN(parseInt(smOrder, 10)) || smOrder === 'first' || smOrder === 'last') {\n dataName = dataName + ' order-sm-' + smOrder;\n }\n\n // MD\n if (md) {\n if (!isNaN(parseInt(md, 10))) {\n dataName = dataName + ' col-md-' + md;\n } else {\n dataName = dataName + ' col-md';\n }\n }\n if (!isNaN(parseInt(mdOffset, 10))) {\n dataName = dataName + ' offset-md-' + mdOffset;\n }\n if (mdAuto) {\n dataName = dataName + ' col-md-auto';\n }\n if (mdAlignSelf) {\n dataName = dataName + ' align-self-md-' + mdAlignSelf;\n }\n if (!isNaN(parseInt(mdOrder, 10)) || mdOrder === 'first' || mdOrder === 'last') {\n dataName = dataName + ' order-md-' + mdOrder;\n }\n\n // LG\n if (lg) {\n if (!isNaN(parseInt(lg, 10))) {\n dataName = dataName + ' col-lg-' + lg;\n } else {\n dataName = dataName + ' col-lg';\n }\n }\n if (!isNaN(parseInt(lgOffset, 10))) {\n dataName = dataName + ' offset-lg-' + lgOffset;\n }\n if (lgAuto) {\n dataName = dataName + ' col-lg-auto';\n }\n if (lgAlignSelf) {\n dataName = dataName + ' align-self-lg-' + lgAlignSelf;\n }\n if (!isNaN(parseInt(lgOrder, 10)) || lgOrder === 'first' || lgOrder === 'last') {\n dataName = dataName + ' order-lg-' + lgOrder;\n }\n\n // XL\n if (xl) {\n if (!isNaN(parseInt(xl, 10))) {\n dataName = dataName + ' col-xl-' + xl;\n } else {\n dataName = dataName + ' col-xl';\n }\n }\n if (!isNaN(parseInt(xlOffset, 10))) {\n dataName = dataName + ' offset-xl-' + xlOffset;\n }\n if (xlAuto) {\n dataName = dataName + ' col-xl-auto';\n }\n if (xlAlignSelf) {\n dataName = dataName + ' align-self-xl-' + xlAlignSelf;\n }\n if (!isNaN(parseInt(xlOrder, 10)) || xlOrder === 'first' || xlOrder === 'last') {\n dataName = dataName + ' order-xl-' + xlOrder;\n }\n\n if (noGutter) {\n dataName = dataName + ' no-gutter';\n }\n\n dataName = dataName.trim();\n\n var allProps = _extends({\n col: col,\n offset: offset,\n auto: auto,\n alignSelf: alignSelf,\n order: order,\n\n xs: xs,\n xsOffset: xsOffset,\n xsAuto: xsAuto,\n xsAlignSelf: xsAlignSelf,\n xsOrder: xsOrder,\n\n sm: sm,\n smOffset: smOffset,\n smAuto: smAuto,\n smAlignSelf: smAlignSelf,\n smOrder: smOrder,\n\n md: md,\n mdOffset: mdOffset,\n mdAuto: mdAuto,\n mdAlignSelf: mdAlignSelf,\n mdOrder: mdOrder,\n\n lg: lg,\n lgOffset: lgOffset,\n lgAuto: lgAuto,\n lgAlignSelf: lgAlignSelf,\n lgOrder: lgOrder,\n\n xl: xl,\n xlOffset: xlOffset,\n xlAuto: xlAuto,\n xlAlignSelf: xlAlignSelf,\n xlOrder: xlOrder,\n\n noGutter: noGutter,\n 'data-name': dataName\n }, otherProps);\n\n return _react2.default.createElement(\n _styled.Col,\n allProps,\n children\n );\n};\n\nvar stringOrNumberReactPropType = _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]);\n\nvar stringOrNumberorBooleanReactPropType = _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number, _propTypes2.default.bool]);\n\ncol.propTypes = {\n children: _propTypes2.default.any,\n noGutter: _propTypes2.default.bool,\n\n col: stringOrNumberorBooleanReactPropType,\n auto: _propTypes2.default.bool,\n alignSelf: _propTypes2.default.string,\n order: stringOrNumberReactPropType,\n\n xs: stringOrNumberorBooleanReactPropType,\n xsOffset: stringOrNumberReactPropType,\n xsAuto: _propTypes2.default.bool,\n xsAlignSelf: _propTypes2.default.string,\n xsOrder: stringOrNumberReactPropType,\n\n sm: stringOrNumberorBooleanReactPropType,\n smOffset: stringOrNumberReactPropType,\n smAuto: _propTypes2.default.bool,\n smAlignSelf: _propTypes2.default.string,\n smOrder: stringOrNumberReactPropType,\n\n md: stringOrNumberorBooleanReactPropType,\n mdOffset: stringOrNumberReactPropType,\n mdAuto: _propTypes2.default.bool,\n mdAlignSelf: _propTypes2.default.string,\n mdOrder: stringOrNumberReactPropType,\n\n lg: stringOrNumberorBooleanReactPropType,\n lgOffset: stringOrNumberReactPropType,\n lgAuto: _propTypes2.default.bool,\n lgAlignSelf: _propTypes2.default.string,\n lgOrder: stringOrNumberReactPropType,\n\n xl: stringOrNumberorBooleanReactPropType,\n xlOffset: stringOrNumberReactPropType,\n xlAuto: _propTypes2.default.bool,\n xlAlignSelf: _propTypes2.default.string,\n xlOrder: stringOrNumberReactPropType\n};\n\ncol.defaultProps = {\n children: null\n};\n\nexports.default = col;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _templateObject = _taggedTemplateLiteral(['', ''], ['', '']),\n _templateObject2 = _taggedTemplateLiteral(['\\n ', '\\n ', '\\n '], ['\\n ', '\\n ', '\\n ']);\n\nvar _styledComponents = require('styled-components');\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar defaultCSS = '\\n @-ms-viewport {\\n width: device-width;\\n }\\n\\n html {\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n -ms-overflow-style: scrollbar;\\n }\\n\\n *,\\n *::before,\\n *::after {\\n -webkit-box-sizing: inherit;\\n box-sizing: inherit;\\n }\\n';\n\nexports.default = function () {\n var css = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n if (css == null) {\n return (0, _styledComponents.injectGlobal)(_templateObject, defaultCSS);\n }\n return (0, _styledComponents.injectGlobal)(_templateObject2, defaultCSS, css);\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\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 _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _styledComponents = require('styled-components');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (props) {\n var theme = props.gridTheme || {};\n var myTheme = {\n styledBootstrapGrid: {\n breakpoints: theme.breakpoints || {},\n col: theme.col || {},\n row: theme.row || {},\n container: theme.container || {},\n getContainerPadding: function getContainerPadding() {\n if (theme.container) {\n if (!isNaN(parseInt(theme.container.padding, 10))) {\n return theme.container.padding;\n }\n }\n return 15;\n },\n getRowPadding: function getRowPadding() {\n if (theme.row) {\n if (!isNaN(parseInt(theme.row.padding, 10))) {\n return theme.row.padding;\n }\n }\n return 15;\n },\n getColPadding: function getColPadding() {\n if (theme.col) {\n if (!isNaN(parseInt(theme.col.padding, 10))) {\n return theme.col.padding;\n }\n }\n return 15;\n }\n }\n };\n\n return _react2.default.createElement(_styledComponents.ThemeProvider, _extends({ theme: myTheme }, props));\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Flex = require(\"./Flex\");\n\nObject.keys(_Flex).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Flex[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Flex = void 0;\n\nvar _primitives = require(\"../../platform/primitives\");\n\nvar _styledSystem = require(\"styled-system\");\n\nfunction _templateObject() {\n var data = _taggedTemplateLiteral([\"\\n display: flex;\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar flexGrow = (0, _styledSystem.style)({\n prop: \"flexGrow\"\n});\n\n/**\n * A utility component that encapsulates flexbox behavior\n */\nvar Flex = _primitives.styled.View(_templateObject(), _styledSystem.alignContent, _styledSystem.alignItems, _styledSystem.background, _styledSystem.bottom, _styledSystem.display, _styledSystem.flexBasis, _styledSystem.flexDirection, flexGrow, _styledSystem.flexWrap, _styledSystem.height, _styledSystem.justifyContent, _styledSystem.maxHeight, _styledSystem.maxWidth, _styledSystem.order, _styledSystem.position, _styledSystem.space, _styledSystem.width, _styledSystem.zIndex);\n\nexports.Flex = Flex;\nFlex.displayName = \"Flex\";\n//# sourceMappingURL=Flex.js.map","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.mixed = exports.styles = exports.buttonStyle = exports.colorStyle = exports.textStyle = exports.left = exports.bottom = exports.right = exports.top = exports.zIndex = exports.position = exports.backgroundRepeat = exports.backgroundPosition = exports.backgroundSize = exports.backgroundImage = exports.background = exports.overflow = exports.opacity = exports.boxShadow = exports.borderRadius = exports.borderColor = exports.borders = exports.borderLeft = exports.borderBottom = exports.borderRight = exports.borderTop = exports.border = exports.gridArea = exports.gridTemplateAreas = exports.gridTemplateRows = exports.gridTemplateColumns = exports.gridAutoRows = exports.gridAutoColumns = exports.gridAutoFlow = exports.gridRow = exports.gridColumn = exports.gridRowGap = exports.gridColumnGap = exports.gridGap = exports.order = exports.alignSelf = exports.justifySelf = exports.flex = exports.flexDirection = exports.flexBasis = exports.flexWrap = exports.justifyContent = exports.justifyItems = exports.alignContent = exports.alignItems = exports.verticalAlign = exports.ratio = exports.ratioPadding = exports.size = exports.sizeHeight = exports.sizeWidth = exports.minHeight = exports.maxHeight = exports.height = exports.minWidth = exports.maxWidth = exports.display = exports.letterSpacing = exports.fontStyle = exports.fontWeight = exports.lineHeight = exports.textAlign = exports.fontFamily = exports.color = exports.bgColor = exports.textColor = exports.fontSize = exports.width = exports.space = exports.util = exports.variant = exports.getWidth = exports.style = exports.createMediaQuery = exports.compose = exports.merge = exports.cloneFunc = exports.themeGet = exports.get = exports.px = exports.num = exports.is = exports.defaultBreakpoints = exports.propTypes = void 0;\n\nvar _extends3 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\n// utils\nvar noop = function noop(n) {\n return n;\n};\n\nvar propTypes = {\n numberOrString: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n responsive: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string, _propTypes.default.array])\n};\nexports.propTypes = propTypes;\nvar defaultBreakpoints = [40, 52, 64].map(function (n) {\n return n + 'em';\n});\nexports.defaultBreakpoints = defaultBreakpoints;\n\nvar is = function is(n) {\n return n !== undefined && n !== null;\n};\n\nexports.is = is;\n\nvar num = function num(n) {\n return typeof n === 'number' && !isNaN(n);\n};\n\nexports.num = num;\n\nvar px = function px(n) {\n return num(n) ? n + 'px' : n;\n};\n\nexports.px = px;\n\nvar get = function get(obj) {\n for (var _len = arguments.length, paths = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n paths[_key - 1] = arguments[_key];\n }\n\n return paths.join('.').split('.').reduce(function (a, b) {\n return a && a[b] ? a[b] : null;\n }, obj);\n};\n\nexports.get = get;\n\nvar themeGet = function themeGet(paths, fallback) {\n return function (props) {\n return get(props.theme, paths) || fallback;\n };\n};\n\nexports.themeGet = themeGet;\n\nvar cloneFunc = function cloneFunc(fn) {\n return function () {\n return fn.apply(void 0, arguments);\n };\n};\n\nexports.cloneFunc = cloneFunc;\n\nvar merge = function merge(a, b) {\n return Object.assign({}, a, b, Object.keys(b || {}).reduce(function (obj, key) {\n var _Object$assign;\n\n return Object.assign(obj, (_Object$assign = {}, _Object$assign[key] = a[key] !== null && typeof a[key] === 'object' ? merge(a[key], b[key]) : b[key], _Object$assign));\n }, {}));\n};\n\nexports.merge = merge;\n\nvar compose = function compose() {\n for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var fn = function fn(props) {\n return funcs.map(function (fn) {\n return fn(props);\n }).filter(Boolean).reduce(merge, {});\n };\n\n fn.propTypes = funcs.map(function (fn) {\n return fn.propTypes;\n }).reduce(merge, {});\n return fn;\n};\n\nexports.compose = compose;\n\nvar createMediaQuery = function createMediaQuery(n) {\n return \"@media screen and (min-width: \" + px(n) + \")\";\n};\n\nexports.createMediaQuery = createMediaQuery;\n\nvar style = function style(_ref) {\n var _fn$propTypes;\n\n var prop = _ref.prop,\n cssProperty = _ref.cssProperty,\n key = _ref.key,\n getter = _ref.getter,\n transformValue = _ref.transformValue,\n _ref$scale = _ref.scale,\n defaultScale = _ref$scale === void 0 ? {} : _ref$scale;\n var css = cssProperty || prop;\n var transform = transformValue || getter || noop;\n\n var fn = function fn(props) {\n var val = props[prop];\n if (!is(val)) return null;\n var scale = get(props.theme, key) || defaultScale;\n\n var style = function style(n) {\n var _ref2;\n\n return is(n) ? (_ref2 = {}, _ref2[css] = transform(get(scale, n) || n), _ref2) : null;\n };\n\n if (!Array.isArray(val)) {\n return style(val);\n } // how to hoist this up??\n\n\n var breakpoints = [null].concat((get(props.theme, 'breakpoints') || defaultBreakpoints).map(createMediaQuery));\n var styles = {};\n\n for (var i = 0; i < val.length; i++) {\n var media = breakpoints[i];\n\n if (!media) {\n styles = style(val[i]) || {};\n continue;\n }\n\n var rule = style(val[i]);\n if (!rule) continue;\n styles[media] = rule;\n }\n\n return styles;\n };\n\n fn.propTypes = (_fn$propTypes = {}, _fn$propTypes[prop] = cloneFunc(propTypes.responsive), _fn$propTypes);\n fn.propTypes[prop].meta = {\n prop: prop,\n themeKey: key,\n styleType: 'responsive'\n };\n return fn;\n};\n\nexports.style = style;\n\nvar getWidth = function getWidth(n) {\n return !num(n) || n > 1 ? px(n) : n * 100 + '%';\n}; // variant\n\n\nexports.getWidth = getWidth;\n\nvar variant = function variant(_ref3) {\n var _fn$propTypes2;\n\n var key = _ref3.key,\n _ref3$prop = _ref3.prop,\n prop = _ref3$prop === void 0 ? 'variant' : _ref3$prop;\n\n var fn = function fn(props) {\n return get(props.theme, key, props[prop]) || null;\n };\n\n fn.propTypes = (_fn$propTypes2 = {}, _fn$propTypes2[prop] = propTypes.numberOrString, _fn$propTypes2);\n return fn;\n};\n\nexports.variant = variant;\nvar util = {\n propTypes: propTypes,\n defaultBreakpoints: defaultBreakpoints,\n is: is,\n num: num,\n px: px,\n get: get,\n themeGet: themeGet,\n cloneFunc: cloneFunc,\n merge: merge,\n compose: compose,\n createMediaQuery: createMediaQuery,\n style: style // space\n\n};\nexports.util = util;\n\nvar isNegative = function isNegative(n) {\n return n < 0;\n};\n\nvar REG = /^[mp][trblxy]?$/;\nvar properties = {\n m: 'margin',\n p: 'padding'\n};\nvar directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\n\nvar getProperties = function getProperties(key) {\n var _key$split = key.split(''),\n a = _key$split[0],\n b = _key$split[1];\n\n var property = properties[a];\n var direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(function (dir) {\n return property + dir;\n }) : [property + direction];\n};\n\nvar getValue = function getValue(scale) {\n return function (n) {\n if (!num(n)) {\n return px(scale[n] || n);\n }\n\n var abs = Math.abs(n);\n var neg = isNegative(n);\n var value = scale[abs] || abs;\n\n if (!num(value)) {\n return neg ? '-' + value : value;\n }\n\n return px(value * (neg ? -1 : 1));\n };\n};\n\nvar defaultScale = [0, 4, 8, 16, 32, 64, 128, 256, 512];\n\nvar space = function space(props) {\n var keys = Object.keys(props).filter(function (key) {\n return REG.test(key);\n }).sort();\n var scale = get(props.theme, 'space') || defaultScale;\n var getStyle = getValue(scale);\n return keys.map(function (key) {\n var value = props[key];\n var properties = getProperties(key);\n\n var style = function style(n) {\n return is(n) ? properties.reduce(function (a, prop) {\n var _extends2;\n\n return (0, _extends3.default)({}, a, (_extends2 = {}, _extends2[prop] = getStyle(n), _extends2));\n }, {}) : null;\n };\n\n if (!Array.isArray(value)) {\n return style(value);\n }\n\n var breakpoints = [null].concat((get(props.theme, 'breakpoints') || defaultBreakpoints).map(createMediaQuery));\n var styles = {};\n\n for (var i = 0; i < value.length; i++) {\n var media = breakpoints[i];\n\n if (!media) {\n styles = style(value[i]) || {};\n continue;\n }\n\n var rule = style(value[i]);\n if (!rule) continue;\n styles[media] = rule;\n }\n\n return styles;\n }).reduce(merge, {});\n};\n\nexports.space = space;\nspace.propTypes = {\n m: cloneFunc(propTypes.responsive),\n mt: cloneFunc(propTypes.responsive),\n mr: cloneFunc(propTypes.responsive),\n mb: cloneFunc(propTypes.responsive),\n ml: cloneFunc(propTypes.responsive),\n mx: cloneFunc(propTypes.responsive),\n my: cloneFunc(propTypes.responsive),\n p: cloneFunc(propTypes.responsive),\n pt: cloneFunc(propTypes.responsive),\n pr: cloneFunc(propTypes.responsive),\n pb: cloneFunc(propTypes.responsive),\n pl: cloneFunc(propTypes.responsive),\n px: cloneFunc(propTypes.responsive),\n py: cloneFunc(propTypes.responsive)\n};\n\nvar meta = function meta(prop) {\n return {\n prop: prop,\n themeKey: 'space',\n styleType: 'responsive'\n };\n};\n\nObject.keys(space.propTypes).forEach(function (prop) {\n space.propTypes[prop].meta = meta(prop);\n}); // styles\n\nvar width = style({\n prop: 'width',\n transformValue: getWidth\n});\nexports.width = width;\nvar fontSize = style({\n prop: 'fontSize',\n key: 'fontSizes',\n transformValue: px,\n scale: [12, 14, 16, 20, 24, 32, 48, 64, 72]\n});\nexports.fontSize = fontSize;\nvar textColor = style({\n prop: 'color',\n key: 'colors'\n});\nexports.textColor = textColor;\nvar bgColor = style({\n prop: 'bg',\n cssProperty: 'backgroundColor',\n key: 'colors'\n});\nexports.bgColor = bgColor;\nvar color = compose(textColor, bgColor); // typography\n\nexports.color = color;\nvar fontFamily = style({\n prop: 'fontFamily',\n key: 'fonts'\n});\nexports.fontFamily = fontFamily;\nvar textAlign = style({\n prop: 'textAlign'\n});\nexports.textAlign = textAlign;\nvar lineHeight = style({\n prop: 'lineHeight',\n key: 'lineHeights'\n});\nexports.lineHeight = lineHeight;\nvar fontWeight = style({\n prop: 'fontWeight',\n key: 'fontWeights'\n});\nexports.fontWeight = fontWeight;\nvar fontStyle = style({\n prop: 'fontStyle'\n});\nexports.fontStyle = fontStyle;\nvar letterSpacing = style({\n prop: 'letterSpacing',\n key: 'letterSpacings',\n transformValue: px\n}); // layout\n\nexports.letterSpacing = letterSpacing;\nvar display = style({\n prop: 'display'\n});\nexports.display = display;\nvar maxWidth = style({\n prop: 'maxWidth',\n key: 'maxWidths',\n transformValue: px\n});\nexports.maxWidth = maxWidth;\nvar minWidth = style({\n prop: 'minWidth',\n key: 'minWidths',\n transformValue: px\n});\nexports.minWidth = minWidth;\nvar height = style({\n prop: 'height',\n key: 'heights',\n transformValue: px\n});\nexports.height = height;\nvar maxHeight = style({\n prop: 'maxHeight',\n key: 'maxHeights',\n transformValue: px\n});\nexports.maxHeight = maxHeight;\nvar minHeight = style({\n prop: 'minHeight',\n key: 'minHeights',\n transformValue: px\n});\nexports.minHeight = minHeight;\nvar sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transformValue: px\n});\nexports.sizeWidth = sizeWidth;\nvar sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transformValue: px\n});\nexports.sizeHeight = sizeHeight;\nvar size = compose(sizeHeight, sizeWidth);\nexports.size = size;\nvar ratioPadding = style({\n prop: 'ratio',\n cssProperty: 'paddingBottom',\n transformValue: function transformValue(n) {\n return n * 100 + '%';\n }\n});\nexports.ratioPadding = ratioPadding;\n\nvar ratio = function ratio(props) {\n return props.ratio ? (0, _extends3.default)({\n height: 0\n }, ratioPadding(props)) : null;\n};\n\nexports.ratio = ratio;\nratio.propTypes = (0, _extends3.default)({}, ratioPadding.propTypes);\nvar verticalAlign = style({\n prop: 'verticalAlign'\n}); // flexbox\n\nexports.verticalAlign = verticalAlign;\nvar alignItems = style({\n prop: 'alignItems'\n});\nexports.alignItems = alignItems;\nvar alignContent = style({\n prop: 'alignContent'\n});\nexports.alignContent = alignContent;\nvar justifyItems = style({\n prop: 'justifyItems'\n});\nexports.justifyItems = justifyItems;\nvar justifyContent = style({\n prop: 'justifyContent'\n});\nexports.justifyContent = justifyContent;\nvar flexWrap = style({\n prop: 'flexWrap'\n});\nexports.flexWrap = flexWrap;\nvar flexBasis = style({\n prop: 'flexBasis',\n transformValue: getWidth\n});\nexports.flexBasis = flexBasis;\nvar flexDirection = style({\n prop: 'flexDirection'\n});\nexports.flexDirection = flexDirection;\nvar flex = style({\n prop: 'flex'\n});\nexports.flex = flex;\nvar justifySelf = style({\n prop: 'justifySelf'\n});\nexports.justifySelf = justifySelf;\nvar alignSelf = style({\n prop: 'alignSelf'\n});\nexports.alignSelf = alignSelf;\nvar order = style({\n prop: 'order'\n}); // grid\n\nexports.order = order;\nvar gridGap = style({\n prop: 'gridGap',\n transformValue: px,\n key: 'space'\n});\nexports.gridGap = gridGap;\nvar gridColumnGap = style({\n prop: 'gridColumnGap',\n transformValue: px,\n key: 'space'\n});\nexports.gridColumnGap = gridColumnGap;\nvar gridRowGap = style({\n prop: 'gridRowGap',\n transformValue: px,\n key: 'space'\n});\nexports.gridRowGap = gridRowGap;\nvar gridColumn = style({\n prop: 'gridColumn'\n});\nexports.gridColumn = gridColumn;\nvar gridRow = style({\n prop: 'gridRow'\n});\nexports.gridRow = gridRow;\nvar gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexports.gridAutoFlow = gridAutoFlow;\nvar gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexports.gridAutoColumns = gridAutoColumns;\nvar gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexports.gridAutoRows = gridAutoRows;\nvar gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexports.gridTemplateColumns = gridTemplateColumns;\nvar gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexports.gridTemplateRows = gridTemplateRows;\nvar gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexports.gridTemplateAreas = gridTemplateAreas;\nvar gridArea = style({\n prop: 'gridArea'\n}); // borders\n\nexports.gridArea = gridArea;\n\nvar getBorder = function getBorder(n) {\n return num(n) && n > 0 ? n + 'px solid' : n;\n};\n\nvar border = style({\n prop: 'border',\n key: 'borders',\n transformValue: getBorder\n});\nexports.border = border;\nvar borderTop = style({\n prop: 'borderTop',\n key: 'borders',\n transformValue: getBorder\n});\nexports.borderTop = borderTop;\nvar borderRight = style({\n prop: 'borderRight',\n key: 'borders',\n transformValue: getBorder\n});\nexports.borderRight = borderRight;\nvar borderBottom = style({\n prop: 'borderBottom',\n key: 'borders',\n transformValue: getBorder\n});\nexports.borderBottom = borderBottom;\nvar borderLeft = style({\n prop: 'borderLeft',\n key: 'borders',\n transformValue: getBorder\n});\nexports.borderLeft = borderLeft;\nvar borders = compose(border, borderTop, borderRight, borderBottom, borderLeft);\nexports.borders = borders;\nvar borderColor = style({\n prop: 'borderColor',\n key: 'colors'\n});\nexports.borderColor = borderColor;\nvar borderRadius = style({\n prop: 'borderRadius',\n key: 'radii',\n transformValue: px\n});\nexports.borderRadius = borderRadius;\nvar boxShadow = style({\n prop: 'boxShadow',\n key: 'shadows'\n});\nexports.boxShadow = boxShadow;\nvar opacity = style({\n prop: 'opacity'\n});\nexports.opacity = opacity;\nvar overflow = style({\n prop: 'overflow'\n}); // backgrounds\n\nexports.overflow = overflow;\nvar background = style({\n prop: 'background'\n});\nexports.background = background;\nvar backgroundImage = style({\n prop: 'backgroundImage'\n});\nexports.backgroundImage = backgroundImage;\nvar backgroundSize = style({\n prop: 'backgroundSize'\n});\nexports.backgroundSize = backgroundSize;\nvar backgroundPosition = style({\n prop: 'backgroundPosition'\n});\nexports.backgroundPosition = backgroundPosition;\nvar backgroundRepeat = style({\n prop: 'backgroundRepeat'\n}); // position\n\nexports.backgroundRepeat = backgroundRepeat;\nvar position = style({\n prop: 'position'\n});\nexports.position = position;\nvar zIndex = style({\n prop: 'zIndex'\n});\nexports.zIndex = zIndex;\nvar top = style({\n prop: 'top',\n transformValue: px\n});\nexports.top = top;\nvar right = style({\n prop: 'right',\n transformValue: px\n});\nexports.right = right;\nvar bottom = style({\n prop: 'bottom',\n transformValue: px\n});\nexports.bottom = bottom;\nvar left = style({\n prop: 'left',\n transformValue: px\n});\nexports.left = left;\nvar textStyle = variant({\n prop: 'textStyle',\n key: 'textStyles'\n});\nexports.textStyle = textStyle;\nvar colorStyle = variant({\n prop: 'colors',\n key: 'colorStyles'\n});\nexports.colorStyle = colorStyle;\nvar buttonStyle = variant({\n key: 'buttons'\n});\nexports.buttonStyle = buttonStyle;\nvar styles = {\n space: space,\n width: width,\n fontSize: fontSize,\n textColor: textColor,\n bgColor: bgColor,\n color: color,\n fontFamily: fontFamily,\n textAlign: textAlign,\n lineHeight: lineHeight,\n fontWeight: fontWeight,\n fontStyle: fontStyle,\n letterSpacing: letterSpacing,\n display: display,\n maxWidth: maxWidth,\n minWidth: minWidth,\n height: height,\n maxHeight: maxHeight,\n minHeight: minHeight,\n sizeWidth: sizeWidth,\n sizeHeight: sizeHeight,\n size: size,\n ratioPadding: ratioPadding,\n ratio: ratio,\n verticalAlign: verticalAlign,\n alignItems: alignItems,\n alignContent: alignContent,\n justifyItems: justifyItems,\n justifyContent: justifyContent,\n flexWrap: flexWrap,\n flexBasis: flexBasis,\n flexDirection: flexDirection,\n flex: flex,\n justifySelf: justifySelf,\n alignSelf: alignSelf,\n order: order,\n gridGap: gridGap,\n gridColumnGap: gridColumnGap,\n gridRowGap: gridRowGap,\n gridColumn: gridColumn,\n gridRow: gridRow,\n gridAutoFlow: gridAutoFlow,\n gridAutoColumns: gridAutoColumns,\n gridAutoRows: gridAutoRows,\n gridTemplateColumns: gridTemplateColumns,\n gridTemplateRows: gridTemplateRows,\n gridTemplateAreas: gridTemplateAreas,\n gridArea: gridArea,\n // borders\n border: border,\n borderTop: borderTop,\n borderRight: borderRight,\n borderBottom: borderBottom,\n borderLeft: borderLeft,\n borders: borders,\n borderColor: borderColor,\n borderRadius: borderRadius,\n boxShadow: boxShadow,\n opacity: opacity,\n overflow: overflow,\n background: background,\n backgroundImage: backgroundImage,\n backgroundPosition: backgroundPosition,\n backgroundRepeat: backgroundRepeat,\n backgroundSize: backgroundSize,\n position: position,\n zIndex: zIndex,\n top: top,\n right: right,\n bottom: bottom,\n left: left,\n textStyle: textStyle,\n colorStyle: colorStyle,\n buttonStyle: buttonStyle // mixed\n\n};\nexports.styles = styles;\n\nvar omit = function omit(obj, blacklist) {\n var next = {};\n\n for (var key in obj) {\n if (blacklist.indexOf(key) > -1) continue;\n next[key] = obj[key];\n }\n\n return next;\n};\n\nvar funcs = Object.keys(styles).map(function (key) {\n return styles[key];\n}).filter(function (fn) {\n return typeof fn === 'function';\n});\nvar blacklist = funcs.reduce(function (a, fn) {\n return a.concat(Object.keys(fn.propTypes || {}));\n}, ['theme']);\n\nvar mixed = function mixed(props) {\n return funcs.map(function (fn) {\n return fn(props);\n }).reduce(merge, omit(props, blacklist));\n};\n\nexports.mixed = mixed;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Typography = require(\"./Typography\");\n\nObject.keys(_Typography).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Typography[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Display = exports.Serif = exports.Sans = exports.Text = exports.renderFontValue = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _primitives = require(\"../../platform/primitives\");\n\nvar _Theme = require(\"../../Theme\");\n\nvar _styledSystem = require(\"styled-system\");\n\nvar _determineFontSizes = require(\"./determineFontSizes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _templateObject2() {\n var data = _taggedTemplateLiteral([\"\"]);\n\n _templateObject2 = function _templateObject2() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject() {\n var data = _taggedTemplateLiteral([\"\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar verticalAlign = (0, _styledSystem.style)({\n prop: \"verticalAlign\"\n});\n/** renderFontValue */\n\nvar renderFontValue = function renderFontValue(fontValue) {\n if (typeof fontValue === \"string\") {\n return \"font-family: \".concat(fontValue);\n } else {\n return [\"font-family: \".concat(fontValue.fontFamily)].concat(fontValue.fontStyle ? \"font-style: \".concat(fontValue.fontStyle) : []).concat(fontValue.fontWeight ? \"font-weight: \".concat(fontValue.fontWeight) : []).join(\";\\n\");\n }\n};\n\nexports.renderFontValue = renderFontValue;\n\n/** Base Text component for typography */\nvar Text = _primitives.styled.Text(_templateObject(), function (_ref) {\n var fontFamily = _ref.fontFamily;\n return fontFamily && renderFontValue(fontFamily);\n}, _styledSystem.fontSize, _styledSystem.lineHeight, _styledSystem.color, _styledSystem.display, _styledSystem.maxWidth, _styledSystem.space, _styledSystem.textAlign, verticalAlign);\n/**\n * The supported typefaces\n */\n\n\nexports.Text = Text;\n\n/**\n * Returns the weight, if given, otherwise it defaults to `regular` unless\n * explicitly given `null` in which case it returns undefined, meaning the\n * weight should be inherited from the component’s parent.\n *\n * @param weight\n */\nfunction _fontWeight(weight) {\n if (weight === null) {\n return undefined;\n }\n\n return weight || \"regular\";\n}\n\nfunction _selectFontFamilyType(weight, italic) {\n return italic ? \"italic\" : weight;\n}\n\n/**\n * Creates a wrapper around the generic `Text` component for a font type defined\n * in the palette’s theme (sans, serif, or display).\n *\n * The component’s props are specified with type parameter `P` and should hold\n * both the component’s specific props (size, weight, italic) as well as all of\n * the generic `Text` component’s props, although as optional.\n *\n * @param fontType\n * The font type that this text component represents.\n * @param selectFontFamilyType\n * An optional function that maps weight+italic to a font-family.\n */\nfunction createStyledText(fontType) {\n var selectFontFamilyType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _selectFontFamilyType;\n return (0, _primitives.styledWrapper)(function (_ref2) {\n var size = _ref2.size,\n weight = _ref2.weight,\n italic = _ref2.italic,\n element = _ref2.element,\n textProps = _objectWithoutProperties(_ref2, [\"size\", \"weight\", \"italic\", \"element\"]);\n\n var fontFamilyType = selectFontFamilyType(_fontWeight(weight), italic); // This is mostly to narrow the type of `fontFamilyType` to remove `null`.\n\n if (fontFamilyType === null) {\n throw new Error(\"Did not expect `fontType` to be `null`.\");\n }\n\n return _react.default.createElement(Text, _extends({\n fontFamily: fontFamilyType && _Theme.themeProps.fontFamily[fontType][fontFamilyType]\n }, (0, _determineFontSizes.determineFontSizes)(fontType, size), element ? {\n as: element\n } : {}, textProps));\n })(_templateObject2());\n}\n/**\n * Sans\n */\n\n\n/**\n * The Sans typeface is used for presenting objective dense information\n * (such as tables) and intervening communications (such as error feedback).\n *\n * @example\n *\n * Hi\n */\nvar Sans = createStyledText(\"sans\", function (weight, italic) {\n return italic && weight === \"medium\" ? \"mediumItalic\" : _selectFontFamilyType(weight, italic);\n});\n/**\n * Serif\n */\n\nexports.Sans = Sans;\n\n/**\n * The Serif typeface is used as the primary Artsy voice, guiding users through\n * flows, instruction, and communications.\n *\n * @example\n *\n * Hi\n */\nvar Serif = createStyledText(\"serif\", function (weight, italic) {\n if (italic && weight && weight !== \"regular\") {\n throw new Error(\"The serif font does not have an italic font with weight `\".concat(weight, \"`\"));\n }\n\n return _selectFontFamilyType(weight, italic);\n});\nexports.Serif = Serif;\n\n/**\n * The Display typeface has limited utility and is in the process of being\n * phased out in most places. Ask your friendly neighborhood design team member\n * if you're unsure if it should be used.\n *\n * @example\n *\n * Hi\n */\nvar Display = createStyledText(\"display\");\nexports.Display = Display;\nSans.displayName = \"Sans\";\nSerif.displayName = \"Serif\";\nDisplay.displayName = \"Display\";\n//# sourceMappingURL=Typography.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.determineFontSizes = determineFontSizes;\n\nvar _Theme = require(\"../../Theme\");\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/**\n * Determines which font sizes/line heights to use for typography.\n */\nfunction determineFontSizes(fontType, size) {\n if (!Array.isArray(size)) {\n var match = _Theme.themeProps.typeSizes[fontType][size];\n return {\n fontSize: \"\".concat(match.fontSize, \"px\"),\n lineHeight: \"\".concat(match.lineHeight, \"px\")\n };\n }\n\n return size.map(function (s) {\n return _Theme.themeProps.typeSizes[fontType][s];\n }).reduce(function (accumulator, current) {\n return {\n fontSize: [].concat(_toConsumableArray(accumulator.fontSize), [\"\".concat(current.fontSize, \"px\")]),\n lineHeight: [].concat(_toConsumableArray(accumulator.lineHeight), [\"\".concat(current.lineHeight, \"px\")])\n };\n }, {\n fontSize: [],\n lineHeight: []\n });\n}\n//# sourceMappingURL=determineFontSizes.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Banner = require(\"./Banner\");\n\nObject.keys(_Banner).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Banner[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=Banner.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _BarChart = require(\"./BarChart\");\n\nObject.keys(_BarChart).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _BarChart[key];\n }\n });\n});\n\nvar _Bar = require(\"./Bar\");\n\nObject.keys(_Bar).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Bar[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=BarChart.ios.js.map","\"use strict\";\n//# sourceMappingURL=Bar.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _BorderBox = require(\"./BorderBox\");\n\nObject.keys(_BorderBox).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _BorderBox[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"BorderBox\", {\n enumerable: true,\n get: function get() {\n return _BorderBoxBase.BorderBoxBase;\n }\n});\n\nvar _BorderBoxBase = require(\"./BorderBoxBase\");\n//# sourceMappingURL=BorderBox.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BorderBoxBase = void 0;\n\nvar _helpers = require(\"../../helpers\");\n\nvar _primitives = require(\"../../platform/primitives\");\n\nvar _Flex = require(\"../Flex\");\n\nvar _styledSystem = require(\"styled-system\");\n\nfunction _templateObject() {\n var data = _taggedTemplateLiteral([\"\\n border: 1px solid \", \";\\n border-radius: 2px;\\n padding: \", \"px;\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\n/**\n * A `View` or `div` (depending on the platform) that has a common border\n * and padding set by default\n */\nvar BorderBoxBase = (0, _primitives.styledWrapper)(_Flex.Flex)(_templateObject(), (0, _helpers.color)(\"black10\"), (0, _helpers.space)(2), _styledSystem.background, _styledSystem.height, _styledSystem.maxWidth, _styledSystem.space, _styledSystem.width);\nexports.BorderBoxBase = BorderBoxBase;\n//# sourceMappingURL=BorderBoxBase.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _color = require(\"./color\");\n\nObject.keys(_color).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _color[key];\n }\n });\n});\n\nvar _injectGlobalStyles = require(\"./injectGlobalStyles\");\n\nObject.keys(_injectGlobalStyles).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _injectGlobalStyles[key];\n }\n });\n});\n\nvar _media = require(\"./media\");\n\nObject.keys(_media).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _media[key];\n }\n });\n});\n\nvar _space = require(\"./space\");\n\nObject.keys(_space).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _space[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.injectGlobalStyles = injectGlobalStyles;\n\nvar _styledComponents = require(\"styled-components\");\n\nvar _Typography = require(\"../elements/Typography\");\n\nvar _color = require(\"./color\");\n\nfunction _templateObject() {\n var data = _taggedTemplateLiteral([\"\\n\\n *:focus {\\n outline: none;\\n }\\n\\n html {\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n -ms-overflow-style: scrollbar;\\n }\\n\\n *,\\n *::before,\\n *::after {\\n -webkit-box-sizing: inherit;\\n box-sizing: inherit;\\n }\\n\\n html,\\n body,\\n #root {\\n -webkit-tap-highlight-color: transparent;\\n height: 100%;\\n }\\n\\n body {\\n margin: 0;\\n padding: 0;\\n }\\n\\n html, body {\\n font-family: 'AGaramondPro-Regular';\\n font-size: 16px;\\n line-height: 24px;\\n -webkit-font-smoothing: antialiased;\\n text-rendering: optimizeLegibility;\\n }\\n\\n /* Default links */\\n\\n a {\\n cursor: pointer;\\n color: inherit;\\n transition: color 0.25s;\\n text-decoration: underline;\\n\\n &:hover {\\n color: \", \";\\n }\\n\\n &:active {\\n color: \", \";\\n }\\n\\n /* ts-styled-plugin erroniously parses this; see: */\\n /* https://github.com/Microsoft/typescript-styled-plugin/issues/54 */\\n &.noUnderline {\\n \", \";\\n }\\n\\n &.colorLink {\\n \", \";\\n \", \";\\n }\\n }\\n\\n /* links */\\n\\n \", \" {\\n a {\\n color: inherit;\\n &:hover {\\n color: \", \";\\n }\\n &:active {\\n color: \", \";\\n }\\n &.noUnderline {\\n \", \";\\n }\\n &.colorLink {\\n \", \";\\n \", \";\\n }\\n }\\n }\\n\\n /* links */\\n\\n \", \" {\\n a {\\n color: inherit;\\n &:hover {\\n color: \", \";\\n }\\n &:active {\\n color: \", \";\\n }\\n &.noUnderline {\\n \", \";\\n }\\n &.colorLink {\\n \", \";\\n \", \";\\n }\\n }\\n }\\n\\n /* links */\\n\\n \", \" {\\n a {\\n color: \", \";\\n &:hover {\\n text-decoration: underline;\\n }\\n }\\n }\\n\\n h1, h2, h3, h4, h5, h6 {\\n font-style: inherit;\\n font-family: inherit;\\n font-weight: inherit;\\n font-size: inherit;\\n margin: 0;\\n }\\n \\n \", \";\\n \"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\n/**\n * Injects globally relevant styles, including helper classes for our Typography.\n * Apps that use palette should mount this component at the root of their tree.\n */\nfunction injectGlobalStyles(additionalStyles) {\n var GlobalStyles = (0, _styledComponents.createGlobalStyle)(_templateObject(), (0, _color.color)(\"black100\"), (0, _color.color)(\"black100\"), noUnderline, noUnderline, colorLink, _Typography.Sans, (0, _color.color)(\"black100\"), (0, _color.color)(\"black100\"), noUnderline, noUnderline, colorLink, _Typography.Serif, (0, _color.color)(\"black100\"), (0, _color.color)(\"black100\"), noUnderline, noUnderline, colorLink, _Typography.Display, (0, _color.color)(\"black100\"), additionalStyles);\n GlobalStyles.displayName = \"GlobalStyles\";\n return {\n GlobalStyles: GlobalStyles\n };\n} // Mixins\n\n\nvar noUnderline = (0, _styledComponents.css)([\"text-decoration:none;&:hover{text-decoration:underline;}\"]);\nvar colorLink = (0, _styledComponents.css)([\"color:\", \";\"], (0, _color.color)(\"purple100\"));\n//# sourceMappingURL=injectGlobalStyles.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.media = void 0;\n\nvar _styledComponents = require(\"styled-components\");\n\nvar _Theme = require(\"../Theme\");\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/**\n * A helper to construct media query strings for responsive style targeting.\n *\n * @example\n *\n * const Panel = styled.div`\n * ${media.sm`\n * width: 50%;\n * `}\n * ${media.lg`\n * width: 100%;\n * `}\n * `\n */\nvar media = Object.entries(_Theme.breakpoints).reduce(function (accumulator, _ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n label = _ref2[0],\n value = _ref2[1];\n\n return _objectSpread({}, accumulator, _defineProperty({}, label, function (strings) {\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 return (0, _styledComponents.css)([\"@media (max-width:\", \"px){\", \";}\"], value, _styledComponents.css.apply(void 0, [strings].concat(args)));\n }));\n}, {});\nexports.media = media;\n//# sourceMappingURL=media.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.space = void 0;\n\nvar _Theme = require(\"../Theme\");\n\n/**\n * A helper to easily access space values when not in a styled-components or\n * styled-systems context.\n */\nvar space = function space(spaceKey) {\n return _Theme.themeProps.space[spaceKey];\n};\n\nexports.space = space;\n//# sourceMappingURL=space.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Box = require(\"./Box\");\n\nObject.keys(_Box).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Box[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Box = void 0;\n\nvar _primitives = require(\"../../platform/primitives\");\n\nvar _styledSystem = require(\"styled-system\");\n\nfunction _templateObject() {\n var data = _taggedTemplateLiteral([\"\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\n/**\n * Box is just a `View` or `div` (depending on the platform) with common styled-systems\n * hooks.\n */\nvar Box = _primitives.styled.View(_templateObject(), _styledSystem.background, _styledSystem.bottom, _styledSystem.display, _styledSystem.height, _styledSystem.left, _styledSystem.minWidth, _styledSystem.maxWidth, _styledSystem.minHeight, _styledSystem.maxHeight, _styledSystem.position, _styledSystem.right, _styledSystem.color, _styledSystem.space, _styledSystem.textAlign, _styledSystem.top, _styledSystem.width, _styledSystem.zIndex);\n\nexports.Box = Box;\nBox.displayName = \"Box\";\n//# sourceMappingURL=Box.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Button = require(\"./Button\");\n\nObject.keys(_Button).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Button[key];\n }\n });\n});\n\nvar _Button2 = require(\"./Button.shared\");\n\nObject.keys(_Button2).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Button2[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Button = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _reactNative = require(\"react-native\");\n\nvar _renderpropsNative = require(\"react-spring/renderprops-native.cjs\");\n\nvar _native = _interopRequireDefault(require(\"styled-components/native\"));\n\nvar _Theme = require(\"../../Theme\");\n\nvar _Box = require(\"../Box\");\n\nvar _Flex = require(\"../Flex\");\n\nvar _Spinner = require(\"../Spinner\");\n\nvar _Typography = require(\"../Typography\");\n\nvar _Button = require(\"./Button.shared\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DisplayState;\n\n(function (DisplayState) {\n DisplayState[\"Enabled\"] = \"default\";\n DisplayState[\"Highlighted\"] = \"hover\";\n DisplayState[\"Disabled\"] = \"default\";\n})(DisplayState || (DisplayState = {}));\n\n/** A button with various size and color settings */\nvar Button =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Button, _Component);\n\n function Button() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Button);\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Button)).call.apply(_getPrototypeOf2, [this].concat(_args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n previous: DisplayState.Enabled,\n current: DisplayState.Enabled\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPress\", function (args) {\n if (_this.props.onPress) {\n // Did someone tap really fast? Flick the highlighted state\n var current = _this.state.current;\n\n if (_this.state.current === DisplayState.Enabled) {\n _this.setState({\n previous: current,\n current: DisplayState.Highlighted\n });\n\n setTimeout(function () {\n return _this.setState({\n previous: current,\n current: DisplayState.Enabled\n });\n }, 0.3);\n } else {\n // Was already selected\n _this.setState({\n current: DisplayState.Enabled\n });\n }\n\n _this.props.onPress(args);\n }\n });\n\n return _this;\n }\n\n _createClass(Button, [{\n key: \"getSize\",\n value: function getSize() {\n var inline = this.props.inline;\n\n switch (this.props.size) {\n case \"small\":\n return {\n height: inline ? 17 : 26,\n size: \"2\",\n px: inline ? 0 : 1\n };\n\n case \"medium\":\n return {\n height: inline ? 21 : 41,\n size: \"3t\",\n px: inline ? 0 : 2\n };\n\n case \"large\":\n return {\n height: inline ? 21 : 50,\n size: \"3t\",\n px: inline ? 0 : 3\n };\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n children = _this$props.children,\n loading = _this$props.loading,\n disabled = _this$props.disabled,\n inline = _this$props.inline,\n longestText = _this$props.longestText,\n rest = _objectWithoutProperties(_this$props, [\"children\", \"loading\", \"disabled\", \"inline\", \"longestText\"]);\n\n var _this$getSize = this.getSize(),\n px = _this$getSize.px,\n size = _this$getSize.size,\n height = _this$getSize.height;\n\n var variantColors = (0, _Button.getColorsForVariant)(this.props.variant);\n var opacity = this.props.disabled ? 0.1 : 1.0;\n var _this$state = this.state,\n current = _this$state.current,\n previous = _this$state.previous;\n var from = variantColors[previous];\n var to = variantColors[current];\n return _react.default.createElement(_renderpropsNative.Spring, {\n native: true,\n from: from,\n to: to\n }, function (props) {\n return _react.default.createElement(_reactNative.TouchableWithoutFeedback, {\n onPress: _this2.onPress,\n onPressIn: function onPressIn() {\n _this2.setState({\n previous: DisplayState.Enabled,\n current: DisplayState.Highlighted\n });\n },\n onPressOut: function onPressOut() {\n _this2.setState({\n previous: DisplayState.Highlighted,\n current: DisplayState.Enabled\n });\n },\n disabled: disabled\n }, _react.default.createElement(_Flex.Flex, {\n flexDirection: \"row\"\n }, _react.default.createElement(AnimatedContainer, _extends({}, rest, {\n loading: loading,\n disabled: disabled,\n style: _objectSpread({}, props, _this2.loadingStyles, {\n height: height,\n opacity: opacity\n }),\n px: px\n }), _react.default.createElement(VisibleTextContainer, null, _react.default.createElement(_Typography.Sans, {\n weight: \"medium\",\n color: _this2.loadingStyles.color || to.color,\n size: size\n }, children)), _react.default.createElement(HiddenText, {\n role: \"presentation\",\n weight: \"medium\",\n size: size\n }, longestText ? longestText : children), loading && _react.default.createElement(_Spinner.Spinner, {\n size: _this2.props.size,\n color: _this2.spinnerColor\n }))));\n });\n }\n }, {\n key: \"loadingStyles\",\n get: function get() {\n var _this$props2 = this.props,\n inline = _this$props2.inline,\n loading = _this$props2.loading;\n\n if (!loading) {\n return {};\n }\n\n if (inline) {\n return {\n backgroundColor: \"rgba(0, 0, 0, 0)\",\n color: \"rgba(0, 0, 0, 0)\",\n borderWidth: 0\n };\n }\n\n var black100 = _Theme.themeProps.colors.black100;\n return {\n backgroundColor: black100,\n borderColor: black100,\n color: \"rgba(0, 0, 0, 0)\"\n };\n }\n }, {\n key: \"spinnerColor\",\n get: function get() {\n var _this$props3 = this.props,\n inline = _this$props3.inline,\n variant = _this$props3.variant;\n\n if (inline) {\n return variant === \"primaryWhite\" ? \"white100\" : \"black100\";\n }\n\n return \"white100\";\n }\n }]);\n\n return Button;\n}(_react.Component);\n\nexports.Button = Button;\n\n_defineProperty(Button, \"defaultProps\", {\n size: _Button.defaultSize,\n variant: _Button.defaultVariant,\n theme: _Theme.themeProps\n});\n\nButton.displayName = \"Button\";\n\n/** Base props that construct button */\nvar VisibleTextContainer = (0, _native.default)(_Box.Box).withConfig({\n displayName: \"Buttonios__VisibleTextContainer\",\n componentId: \"sc-1a2ktuk-0\"\n})([\"position:absolute;align-items:center;justify-content:center;display:flex;flex-direction:row;width:100%;height:100%;\"]);\nvar HiddenText = (0, _native.default)(_Typography.Sans).withConfig({\n displayName: \"Buttonios__HiddenText\",\n componentId: \"sc-1a2ktuk-1\"\n})([\"opacity:0;\"]);\nvar Container = (0, _native.default)(_Box.Box).withConfig({\n displayName: \"Buttonios__Container\",\n componentId: \"sc-1a2ktuk-2\"\n})([\"align-items:center;justify-content:center;position:relative;border-width:1;border-radius:3;width:\", \";\"], function (p) {\n return p.block ? \"100%\" : \"auto\";\n});\nvar AnimatedContainer = (0, _renderpropsNative.animated)(Container);\n//# sourceMappingURL=Button.ios.js.map","'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 _extends = _interopDefault(require('@babel/runtime/helpers/extends'));\nvar _assertThisInitialized = _interopDefault(require('@babel/runtime/helpers/assertThisInitialized'));\nvar _inheritsLoose = _interopDefault(require('@babel/runtime/helpers/inheritsLoose'));\nvar _objectWithoutPropertiesLoose = _interopDefault(require('@babel/runtime/helpers/objectWithoutPropertiesLoose'));\nvar React = require('react');\nvar React__default = _interopDefault(React);\nvar reactNative = require('react-native');\n\nvar bugfixes = undefined;\nvar applyAnimatedValues = undefined;\nvar colorNames = [];\nvar requestFrame = function requestFrame(cb) {\n return typeof window !== 'undefined' && window.requestAnimationFrame(cb);\n};\nvar cancelFrame = function cancelFrame(cb) {\n return typeof window !== 'undefined' && window.cancelAnimationFrame(cb);\n};\nvar interpolation = undefined;\nvar now = function now() {\n return Date.now();\n};\nvar defaultElement = undefined;\nvar createAnimatedStyle = undefined;\nvar injectApplyAnimatedValues = function injectApplyAnimatedValues(fn, transform) {\n return applyAnimatedValues = {\n fn: fn,\n transform: transform\n };\n};\nvar injectColorNames = function injectColorNames(names) {\n return colorNames = names;\n};\nvar injectBugfixes = function injectBugfixes(fn) {\n return bugfixes = fn;\n};\nvar injectInterpolation = function injectInterpolation(cls) {\n return interpolation = cls;\n};\nvar injectFrame = function injectFrame(raf, caf) {\n var _ref;\n\n return _ref = [raf, caf], requestFrame = _ref[0], cancelFrame = _ref[1], _ref;\n};\nvar injectNow = function injectNow(nowFn) {\n return now = nowFn;\n};\nvar injectDefaultElement = function injectDefaultElement(el) {\n return defaultElement = el;\n};\nvar injectCreateAnimatedStyle = function injectCreateAnimatedStyle(factory) {\n return createAnimatedStyle = factory;\n};\n\nvar Globals = /*#__PURE__*/Object.freeze({\n get bugfixes () { return bugfixes; },\n get applyAnimatedValues () { return applyAnimatedValues; },\n get colorNames () { return colorNames; },\n get requestFrame () { return requestFrame; },\n get cancelFrame () { return cancelFrame; },\n get interpolation () { return interpolation; },\n get now () { return now; },\n get defaultElement () { return defaultElement; },\n get createAnimatedStyle () { return createAnimatedStyle; },\n injectApplyAnimatedValues: injectApplyAnimatedValues,\n injectColorNames: injectColorNames,\n injectBugfixes: injectBugfixes,\n injectInterpolation: injectInterpolation,\n injectFrame: injectFrame,\n injectNow: injectNow,\n injectDefaultElement: injectDefaultElement,\n injectCreateAnimatedStyle: injectCreateAnimatedStyle\n});\n\nvar Animated =\n/*#__PURE__*/\nfunction () {\n function Animated() {}\n\n var _proto = Animated.prototype;\n\n _proto.attach = function attach() {};\n\n _proto.detach = function detach() {};\n\n _proto.getValue = function getValue() {};\n\n _proto.getAnimatedValue = function getAnimatedValue() {\n return this.getValue();\n };\n\n _proto.addChild = function addChild(child) {};\n\n _proto.removeChild = function removeChild(child) {};\n\n _proto.getChildren = function getChildren() {\n return [];\n };\n\n return Animated;\n}();\n\nvar getValues = function getValues(object) {\n return Object.keys(object).map(function (k) {\n return object[k];\n });\n};\n\nvar AnimatedWithChildren =\n/*#__PURE__*/\nfunction (_Animated) {\n _inheritsLoose(AnimatedWithChildren, _Animated);\n\n function AnimatedWithChildren() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Animated.call.apply(_Animated, [this].concat(args)) || this;\n _this.children = [];\n\n _this.getChildren = function () {\n return _this.children;\n };\n\n _this.getPayload = function (index) {\n if (index === void 0) {\n index = undefined;\n }\n\n return index !== void 0 && _this.payload ? _this.payload[index] : _this.payload || _assertThisInitialized(_this);\n };\n\n return _this;\n }\n\n var _proto = AnimatedWithChildren.prototype;\n\n _proto.addChild = function addChild(child) {\n if (this.children.length === 0) this.attach();\n this.children.push(child);\n };\n\n _proto.removeChild = function removeChild(child) {\n var index = this.children.indexOf(child);\n this.children.splice(index, 1);\n if (this.children.length === 0) this.detach();\n };\n\n return AnimatedWithChildren;\n}(Animated);\nvar AnimatedArrayWithChildren =\n/*#__PURE__*/\nfunction (_AnimatedWithChildren) {\n _inheritsLoose(AnimatedArrayWithChildren, _AnimatedWithChildren);\n\n function AnimatedArrayWithChildren() {\n var _this2;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this2 = _AnimatedWithChildren.call.apply(_AnimatedWithChildren, [this].concat(args)) || this;\n _this2.payload = [];\n\n _this2.getAnimatedValue = function () {\n return _this2.getValue();\n };\n\n _this2.attach = function () {\n return _this2.payload.forEach(function (p) {\n return p instanceof Animated && p.addChild(_assertThisInitialized(_this2));\n });\n };\n\n _this2.detach = function () {\n return _this2.payload.forEach(function (p) {\n return p instanceof Animated && p.removeChild(_assertThisInitialized(_this2));\n });\n };\n\n return _this2;\n }\n\n return AnimatedArrayWithChildren;\n}(AnimatedWithChildren);\nvar AnimatedObjectWithChildren =\n/*#__PURE__*/\nfunction (_AnimatedWithChildren2) {\n _inheritsLoose(AnimatedObjectWithChildren, _AnimatedWithChildren2);\n\n function AnimatedObjectWithChildren() {\n var _this3;\n\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n _this3 = _AnimatedWithChildren2.call.apply(_AnimatedWithChildren2, [this].concat(args)) || this;\n _this3.payload = {};\n\n _this3.getAnimatedValue = function () {\n return _this3.getValue(true);\n };\n\n _this3.attach = function () {\n return getValues(_this3.payload).forEach(function (s) {\n return s instanceof Animated && s.addChild(_assertThisInitialized(_this3));\n });\n };\n\n _this3.detach = function () {\n return getValues(_this3.payload).forEach(function (s) {\n return s instanceof Animated && s.removeChild(_assertThisInitialized(_this3));\n });\n };\n\n return _this3;\n }\n\n var _proto2 = AnimatedObjectWithChildren.prototype;\n\n _proto2.getValue = function getValue(animated) {\n if (animated === void 0) {\n animated = false;\n }\n\n var payload = {};\n\n for (var key in this.payload) {\n var value = this.payload[key];\n if (animated && !(value instanceof Animated)) continue;\n payload[key] = value instanceof Animated ? value[animated ? 'getAnimatedValue' : 'getValue']() : value;\n }\n\n return payload;\n };\n\n return AnimatedObjectWithChildren;\n}(AnimatedWithChildren);\n\nvar Interpolation =\n/*#__PURE__*/\nfunction () {\n function Interpolation() {}\n\n // Default config = config, args\n // Short config = range, output, extrapolate\n Interpolation.create = function create(config, output, extra) {\n if (typeof config === 'function') return config;else if (interpolation && config.output && typeof config.output[0] === 'string') return interpolation(config);else if (Array.isArray(config)) return Interpolation.create({\n range: config,\n output: output,\n extrapolate: extra || 'extend'\n });\n var outputRange = config.output;\n var inputRange = config.range || [0, 1];\n\n var easing = config.easing || function (t) {\n return t;\n };\n\n var extrapolateLeft = 'extend';\n var map = config.map;\n if (config.extrapolateLeft !== undefined) extrapolateLeft = config.extrapolateLeft;else if (config.extrapolate !== undefined) extrapolateLeft = config.extrapolate;\n var extrapolateRight = 'extend';\n if (config.extrapolateRight !== undefined) extrapolateRight = config.extrapolateRight;else if (config.extrapolate !== undefined) extrapolateRight = config.extrapolate;\n return function (input) {\n var range = findRange(input, inputRange);\n return interpolate(input, inputRange[range], inputRange[range + 1], outputRange[range], outputRange[range + 1], easing, extrapolateLeft, extrapolateRight, map);\n };\n };\n\n return Interpolation;\n}();\n\nfunction interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) {\n var result = map ? map(input) : input; // Extrapolate\n\n if (result < inputMin) {\n if (extrapolateLeft === 'identity') return result;else if (extrapolateLeft === 'clamp') result = inputMin;\n }\n\n if (result > inputMax) {\n if (extrapolateRight === 'identity') return result;else if (extrapolateRight === 'clamp') result = inputMax;\n }\n\n if (outputMin === outputMax) return outputMin;\n if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax; // Input Range\n\n if (inputMin === -Infinity) result = -result;else if (inputMax === Infinity) result = result - inputMin;else result = (result - inputMin) / (inputMax - inputMin); // Easing\n\n result = easing(result); // Output Range\n\n if (outputMin === -Infinity) result = -result;else if (outputMax === Infinity) result = result + outputMin;else result = result * (outputMax - outputMin) + outputMin;\n return result;\n}\n\nfunction findRange(input, inputRange) {\n for (var i = 1; i < inputRange.length - 1; ++i) {\n if (inputRange[i] >= input) break;\n }\n\n return i - 1;\n}\n\nvar AnimatedInterpolation =\n/*#__PURE__*/\nfunction (_AnimatedArrayWithChi) {\n _inheritsLoose(AnimatedInterpolation, _AnimatedArrayWithChi);\n\n function AnimatedInterpolation(parents, _config, _arg) {\n var _this;\n\n _this = _AnimatedArrayWithChi.call(this) || this;\n\n _this.getValue = function () {\n var _this2;\n\n return (_this2 = _this).calc.apply(_this2, _this.payload.map(function (value) {\n return value.getValue();\n }));\n };\n\n _this.updateConfig = function (config, arg) {\n return _this.calc = Interpolation.create(config, arg);\n };\n\n _this.interpolate = function (config, arg) {\n return new AnimatedInterpolation(_assertThisInitialized(_this), config, arg);\n };\n\n _this.payload = // AnimatedArrays should unfold, except AnimatedInterpolation which is taken as is\n parents instanceof AnimatedArrayWithChildren && !parents.updateConfig ? parents.payload : Array.isArray(parents) ? parents : [parents];\n _this.calc = Interpolation.create(_config, _arg);\n return _this;\n }\n\n return AnimatedInterpolation;\n}(AnimatedArrayWithChildren);\nvar interpolate$1 = function interpolate(parents, config, arg) {\n return parents && new AnimatedInterpolation(parents, config, arg);\n};\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 */\n\nfunction findAnimatedStyles(node, styles) {\n if (typeof node.update === 'function') styles.add(node);else node.getChildren().forEach(function (child) {\n return findAnimatedStyles(child, styles);\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\n\nvar AnimatedValue =\n/*#__PURE__*/\nfunction (_AnimatedWithChildren) {\n _inheritsLoose(AnimatedValue, _AnimatedWithChildren);\n\n function AnimatedValue(_value) {\n var _this;\n\n _this = _AnimatedWithChildren.call(this) || this;\n\n _this.setValue = function (value, flush) {\n if (flush === void 0) {\n flush = true;\n }\n\n _this.value = value;\n if (flush) _this.flush();\n };\n\n _this.getValue = function () {\n return _this.value;\n };\n\n _this.updateStyles = function () {\n return findAnimatedStyles(_assertThisInitialized(_this), _this.animatedStyles);\n };\n\n _this.updateValue = function (value) {\n return _this.flush(_this.value = value);\n };\n\n _this.interpolate = function (config, arg) {\n return new AnimatedInterpolation(_assertThisInitialized(_this), config, arg);\n };\n\n _this.value = _value;\n _this.animatedStyles = new Set();\n _this.done = false;\n _this.startPosition = _value;\n _this.lastPosition = _value;\n _this.lastVelocity = undefined;\n _this.lastTime = undefined;\n _this.controller = undefined;\n return _this;\n }\n\n var _proto = AnimatedValue.prototype;\n\n _proto.flush = function flush() {\n if (this.animatedStyles.size === 0) this.updateStyles();\n this.animatedStyles.forEach(function (animatedStyle) {\n return animatedStyle.update();\n });\n };\n\n _proto.prepare = function prepare(controller) {\n // Values stay loyal to their original controller, this is also a way to\n // detect trailing values originating from a foreign controller\n if (this.controller === undefined) this.controller = controller;\n\n if (this.controller === controller) {\n this.startPosition = this.value;\n this.lastPosition = this.value;\n this.lastVelocity = controller.isActive ? this.lastVelocity : undefined;\n this.lastTime = controller.isActive ? this.lastTime : undefined;\n this.done = false;\n this.animatedStyles.clear();\n }\n };\n\n return AnimatedValue;\n}(AnimatedWithChildren);\n\nvar AnimatedArray =\n/*#__PURE__*/\nfunction (_AnimatedArrayWithChi) {\n _inheritsLoose(AnimatedArray, _AnimatedArrayWithChi);\n\n function AnimatedArray(array) {\n var _this;\n\n _this = _AnimatedArrayWithChi.call(this) || this;\n\n _this.setValue = function (value, flush) {\n if (flush === void 0) {\n flush = true;\n }\n\n if (Array.isArray(value)) {\n if (value.length === _this.payload.length) value.forEach(function (v, i) {\n return _this.payload[i].setValue(v, flush);\n });\n } else _this.payload.forEach(function (v, i) {\n return _this.payload[i].setValue(value, flush);\n });\n };\n\n _this.getValue = function () {\n return _this.payload.map(function (v) {\n return v.getValue();\n });\n };\n\n _this.interpolate = function (config, arg) {\n return new AnimatedInterpolation(_assertThisInitialized(_this), config, arg);\n };\n\n _this.payload = array.map(function (n) {\n return new AnimatedValue(n);\n });\n return _this;\n }\n\n return AnimatedArray;\n}(AnimatedArrayWithChildren);\n\nvar active = false;\nvar controllers = new Set();\n\nvar frameLoop = function frameLoop() {\n var time = now();\n\n for (var _iterator = controllers, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var controller = _ref;\n var isDone = true;\n var noChange = true;\n\n for (var configIdx = 0; configIdx < controller.configs.length; configIdx++) {\n var config = controller.configs[configIdx];\n var endOfAnimation = void 0,\n lastTime = void 0;\n\n for (var valIdx = 0; valIdx < config.animatedValues.length; valIdx++) {\n var animation = config.animatedValues[valIdx]; // If an animation is done, skip, until all of them conclude\n\n if (animation.done) continue;\n var from = config.fromValues[valIdx];\n var to = config.toValues[valIdx];\n var position = animation.lastPosition;\n var isAnimated = to instanceof Animated;\n\n var _velocity = Array.isArray(config.initialVelocity) ? config.initialVelocity[valIdx] : config.initialVelocity;\n\n if (isAnimated) to = to.getValue(); // Conclude animation if it's either immediate, or from-values match end-state\n\n if (config.immediate || !isAnimated && !config.decay && from === to) {\n animation.updateValue(to);\n animation.done = true;\n continue;\n } // Doing delay here instead of setTimeout is one async worry less\n\n\n if (config.delay && time - controller.startTime < config.delay) {\n isDone = false;\n continue;\n } // Flag change\n\n\n noChange = false; // Break animation when string values are involved\n\n if (typeof from === 'string' || typeof to === 'string') {\n animation.updateValue(to);\n animation.done = true;\n continue;\n }\n\n if (config.duration !== void 0) {\n /** Duration easing */\n position = from + config.easing((time - controller.startTime - config.delay) / config.duration) * (to - from);\n endOfAnimation = time >= controller.startTime + config.delay + config.duration;\n } else if (config.decay) {\n /** Decay easing */\n position = from + _velocity / (1 - 0.998) * (1 - Math.exp(-(1 - 0.998) * (time - controller.startTime)));\n endOfAnimation = Math.abs(animation.lastPosition - position) < 0.1;\n if (endOfAnimation) to = position;\n } else {\n /** Spring easing */\n lastTime = animation.lastTime !== void 0 ? animation.lastTime : time;\n _velocity = animation.lastVelocity !== void 0 ? animation.lastVelocity : config.initialVelocity; // If we lost a lot of frames just jump to the end.\n\n if (time > lastTime + 64) lastTime = time; // http://gafferongames.com/game-physics/fix-your-timestep/\n\n var numSteps = Math.floor(time - lastTime);\n\n for (var i = 0; i < numSteps; ++i) {\n var force = -config.tension * (position - to);\n var damping = -config.friction * _velocity;\n var acceleration = (force + damping) / config.mass;\n _velocity = _velocity + acceleration * 1 / 1000;\n position = position + _velocity * 1 / 1000;\n } // Conditions for stopping the spring animation\n\n\n var isOvershooting = config.clamp && config.tension !== 0 ? from < to ? position > to : position < to : false;\n var isVelocity = Math.abs(_velocity) <= config.precision;\n var isDisplacement = config.tension !== 0 ? Math.abs(to - position) <= config.precision : true;\n endOfAnimation = isOvershooting || isVelocity && isDisplacement;\n animation.lastVelocity = _velocity;\n animation.lastTime = time;\n } // Trails aren't done until their parents conclude\n\n\n if (isAnimated && !config.toValues[valIdx].done) endOfAnimation = false;\n\n if (endOfAnimation) {\n // Ensure that we end up with a round value\n if (animation.value !== to) position = to;\n animation.done = true;\n } else isDone = false;\n\n animation.updateValue(position);\n animation.lastPosition = position;\n } // Keep track of updated values only when necessary\n\n\n if (controller.props.onFrame || !controller.props.native) controller.animatedProps[config.name] = config.interpolation.getValue();\n } // Update callbacks in the end of the frame\n\n\n if (controller.props.onFrame || !controller.props.native) {\n if (!controller.props.native && controller.onUpdate) controller.onUpdate();\n if (controller.props.onFrame) controller.props.onFrame(controller.animatedProps);\n } // Either call onEnd or next frame\n\n\n if (isDone) {\n controllers.delete(controller);\n controller.debouncedOnEnd({\n finished: true,\n noChange: noChange\n });\n }\n } // Loop over as long as there are controllers ...\n\n\n if (controllers.size) requestFrame(frameLoop);else active = false;\n};\n\nvar addController = function addController(controller) {\n if (!controllers.has(controller)) {\n controllers.add(controller);\n if (!active) requestFrame(frameLoop);\n active = true;\n }\n};\n\nvar removeController = function removeController(controller) {\n if (controllers.has(controller)) {\n controllers.delete(controller);\n }\n};\n\nfunction withDefault(value, defaultValue) {\n return value === undefined || value === null ? defaultValue : value;\n}\nfunction toArray(a) {\n return a !== void 0 ? Array.isArray(a) ? a : [a] : [];\n}\nfunction shallowEqual(a, b) {\n if (typeof a !== typeof b) return false;\n if (typeof a === 'string' || typeof a === 'number') return a === b;\n var i;\n\n for (i in a) {\n if (!(i in b)) return false;\n }\n\n for (i in b) {\n if (a[i] !== b[i]) return false;\n }\n\n return i === void 0 ? a === b : true;\n}\nfunction callProp(obj) {\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 return typeof obj === 'function' ? obj.apply(void 0, args) : obj;\n}\nfunction getValues$1(object) {\n return Object.keys(object).map(function (k) {\n return object[k];\n });\n}\nfunction getForwardProps(props) {\n var to = props.to,\n from = props.from,\n config = props.config,\n native = props.native,\n onStart = props.onStart,\n onRest = props.onRest,\n onFrame = props.onFrame,\n children = props.children,\n reset = props.reset,\n reverse = props.reverse,\n force = props.force,\n immediate = props.immediate,\n impl = props.impl,\n inject = props.inject,\n delay = props.delay,\n attach = props.attach,\n destroyed = props.destroyed,\n interpolateTo = props.interpolateTo,\n autoStart = props.autoStart,\n ref = props.ref,\n forward = _objectWithoutPropertiesLoose(props, [\"to\", \"from\", \"config\", \"native\", \"onStart\", \"onRest\", \"onFrame\", \"children\", \"reset\", \"reverse\", \"force\", \"immediate\", \"impl\", \"inject\", \"delay\", \"attach\", \"destroyed\", \"interpolateTo\", \"autoStart\", \"ref\"]);\n\n return forward;\n}\nfunction interpolateTo(props) {\n var forward = getForwardProps(props);\n var rest = Object.keys(props).reduce(function (a, k) {\n var _extends2;\n\n return forward[k] !== void 0 ? a : _extends({}, a, (_extends2 = {}, _extends2[k] = props[k], _extends2));\n }, {});\n return _extends({\n to: forward\n }, rest);\n}\nfunction convertToAnimatedValue(acc, _ref) {\n var _extends3;\n\n var name = _ref[0],\n value = _ref[1];\n return _extends({}, acc, (_extends3 = {}, _extends3[name] = new (Array.isArray(value) ? AnimatedArray : AnimatedValue)(value), _extends3));\n}\nfunction convertValues(props) {\n var from = props.from,\n to = props.to,\n native = props.native;\n var allProps = Object.entries(_extends({}, from, to));\n return native ? allProps.reduce(convertToAnimatedValue, {}) : _extends({}, from, to);\n}\nfunction handleRef(ref, forward) {\n if (forward) {\n // If it's a function, assume it's a ref callback\n if (typeof forward === 'function') forward(ref);else if (typeof forward === 'object') {\n // If it's an object and has a 'current' property, assume it's a ref object\n forward.current = ref;\n }\n }\n\n return ref;\n}\n\nvar Controller =\n/*#__PURE__*/\nfunction () {\n function Controller(props, config) {\n var _this = this;\n\n if (config === void 0) {\n config = {\n native: true,\n interpolateTo: true,\n autoStart: true\n };\n }\n\n this.getValues = function () {\n return _this.props.native ? _this.interpolations : _this.animatedProps;\n };\n\n this.dependents = new Set();\n this.isActive = false;\n this.hasChanged = false;\n this.props = {};\n this.merged = {};\n this.animations = {};\n this.interpolations = {};\n this.animatedProps = {};\n this.configs = [];\n this.frame = undefined;\n this.startTime = undefined;\n this.lastTime = undefined;\n this.update(_extends({}, props, config));\n }\n\n var _proto = Controller.prototype;\n\n _proto.update = function update(props) {\n var _this2 = this;\n\n this.props = _extends({}, this.props, props);\n\n var _ref = this.props.interpolateTo ? interpolateTo(this.props) : this.props,\n _ref$from = _ref.from,\n from = _ref$from === void 0 ? {} : _ref$from,\n _ref$to = _ref.to,\n to = _ref$to === void 0 ? {} : _ref$to,\n _ref$config = _ref.config,\n config = _ref$config === void 0 ? {} : _ref$config,\n _ref$delay = _ref.delay,\n delay = _ref$delay === void 0 ? 0 : _ref$delay,\n reverse = _ref.reverse,\n attach = _ref.attach,\n reset = _ref.reset,\n immediate = _ref.immediate,\n autoStart = _ref.autoStart,\n ref = _ref.ref; // Reverse values when requested\n\n\n if (reverse) {\n var _ref2 = [to, from];\n from = _ref2[0];\n to = _ref2[1];\n }\n\n this.hasChanged = false; // Attachment handling, trailed springs can \"attach\" themselves to a previous spring\n\n var target = attach && attach(this); // Reset merged props when necessary\n\n var extra = reset ? {} : this.merged; // This will collect all props that were ever set\n\n this.merged = _extends({}, from, extra, to); // Reduces input { name: value } pairs into animated values\n\n this.animations = Object.entries(this.merged).reduce(function (acc, _ref3, i) {\n var name = _ref3[0],\n value = _ref3[1];\n // Issue cached entries, except on reset\n var entry = !reset && acc[name] || {}; // Figure out what the value is supposed to be\n\n var isNumber = typeof value === 'number';\n var isString = typeof value === 'string' && !value.startsWith('#') && !/\\d/.test(value) && !colorNames[value];\n var isArray = !isNumber && !isString && Array.isArray(value);\n var fromValue = from[name] !== undefined ? from[name] : value;\n var toValue = isNumber || isArray ? value : isString ? value : 1;\n var toConfig = callProp(config, name);\n if (target) toValue = target.animations[name].parent; // Detect changes, animated values will be checked in the raf-loop\n\n if (toConfig.decay !== void 0 || !shallowEqual(entry.changes, value)) {\n var _extends2;\n\n _this2.hasChanged = true;\n var parent, interpolation$$1;\n if (isNumber || isString) parent = interpolation$$1 = entry.parent || new AnimatedValue(fromValue);else if (isArray) parent = interpolation$$1 = entry.parent || new AnimatedArray(fromValue);else {\n var prev = entry.interpolation && entry.interpolation.calc(entry.parent.value);\n\n if (entry.parent) {\n parent = entry.parent;\n parent.setValue(0, false);\n } else parent = new AnimatedValue(0);\n\n var range = {\n output: [prev !== void 0 ? prev : fromValue, value]\n };\n\n if (entry.interpolation) {\n interpolation$$1 = entry.interpolation;\n entry.interpolation.updateConfig(range);\n } else interpolation$$1 = parent.interpolate(range);\n } // Set immediate values\n\n if (callProp(immediate, name)) parent.setValue(value, false); // Reset animated values\n\n var animatedValues = toArray(parent.getPayload());\n animatedValues.forEach(function (value) {\n return value.prepare(_this2);\n });\n return _extends({}, acc, (_extends2 = {}, _extends2[name] = _extends({}, entry, {\n name: name,\n parent: parent,\n interpolation: interpolation$$1,\n animatedValues: animatedValues,\n changes: value,\n fromValues: toArray(parent.getValue()),\n toValues: toArray(target ? toValue.getPayload() : toValue),\n immediate: callProp(immediate, name),\n delay: withDefault(toConfig.delay, delay || 0),\n initialVelocity: withDefault(toConfig.velocity, 0),\n clamp: withDefault(toConfig.clamp, false),\n precision: withDefault(toConfig.precision, 0.01),\n tension: withDefault(toConfig.tension, 170),\n friction: withDefault(toConfig.friction, 26),\n mass: withDefault(toConfig.mass, 1),\n duration: toConfig.duration,\n easing: withDefault(toConfig.easing, function (t) {\n return t;\n }),\n decay: toConfig.decay\n }), _extends2));\n } else return acc;\n }, this.animations);\n\n if (this.hasChanged) {\n this.configs = getValues$1(this.animations);\n this.animatedProps = {};\n this.interpolations = {};\n\n for (var key in this.animations) {\n this.interpolations[key] = this.animations[key].interpolation;\n this.animatedProps[key] = this.animations[key].interpolation.getValue();\n }\n } // TODO: clean up ref in controller\n\n\n for (var _len = arguments.length, start = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n start[_key - 1] = arguments[_key];\n }\n\n if (!ref && (autoStart || start.length)) this.start.apply(this, start);\n var onEnd = start[0],\n onUpdate = start[1];\n this.onEnd = typeof onEnd === 'function' && onEnd;\n this.onUpdate = onUpdate;\n return this.getValues();\n };\n\n _proto.start = function start(onEnd, onUpdate) {\n var _this3 = this;\n\n this.startTime = now();\n if (this.isActive) this.stop();\n this.isActive = true;\n this.onEnd = typeof onEnd === 'function' && onEnd;\n this.onUpdate = onUpdate;\n if (this.props.onStart) this.props.onStart();\n addController(this);\n return new Promise(function (res) {\n return _this3.resolve = res;\n });\n };\n\n _proto.stop = function stop(finished) {\n if (finished === void 0) {\n finished = false;\n }\n\n // Reset collected changes since the animation has been stopped cold turkey\n if (finished) getValues$1(this.animations).forEach(function (a) {\n return a.changes = undefined;\n });\n this.debouncedOnEnd({\n finished: finished\n });\n };\n\n _proto.destroy = function destroy() {\n removeController(this);\n this.props = {};\n this.merged = {};\n this.animations = {};\n this.interpolations = {};\n this.animatedProps = {};\n this.configs = [];\n };\n\n _proto.debouncedOnEnd = function debouncedOnEnd(result) {\n removeController(this);\n this.isActive = false;\n var onEnd = this.onEnd;\n this.onEnd = null;\n if (onEnd) onEnd(result);\n if (this.resolve) this.resolve();\n this.resolve = null;\n };\n\n return Controller;\n}();\n\nvar AnimatedProps =\n/*#__PURE__*/\nfunction (_AnimatedObjectWithCh) {\n _inheritsLoose(AnimatedProps, _AnimatedObjectWithCh);\n\n function AnimatedProps(props, callback) {\n var _this;\n\n _this = _AnimatedObjectWithCh.call(this) || this;\n if (props.style) props = _extends({}, props, {\n style: createAnimatedStyle(props.style)\n });\n _this.payload = props;\n _this.update = callback;\n\n _this.attach();\n\n return _this;\n }\n\n return AnimatedProps;\n}(AnimatedObjectWithChildren);\n\nfunction createAnimatedComponent(Component) {\n var AnimatedComponent =\n /*#__PURE__*/\n function (_React$Component) {\n _inheritsLoose(AnimatedComponent, _React$Component);\n\n function AnimatedComponent(props) {\n var _this;\n\n _this = _React$Component.call(this) || this;\n\n _this.callback = function () {\n if (_this.node) {\n var didUpdate = applyAnimatedValues.fn(_this.node, _this.propsAnimated.getAnimatedValue(), _assertThisInitialized(_this));\n if (didUpdate === false) _this.forceUpdate();\n }\n };\n\n _this.attachProps(props);\n\n return _this;\n }\n\n var _proto = AnimatedComponent.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.propsAnimated && this.propsAnimated.detach();\n };\n\n _proto.setNativeProps = function setNativeProps(props) {\n var didUpdate = applyAnimatedValues.fn(this.node, props, this);\n if (didUpdate === false) this.forceUpdate();\n } // The system is best designed when setNativeProps is implemented. It is\n // able to avoid re-rendering and directly set the attributes that\n // changed. However, setNativeProps can only be implemented on leaf\n // native components. If you want to animate a composite component, you\n // need to re-render it. In this case, we have a fallback that uses\n // forceUpdate.\n ;\n\n _proto.attachProps = function attachProps(_ref) {\n var forwardRef = _ref.forwardRef,\n nextProps = _objectWithoutPropertiesLoose(_ref, [\"forwardRef\"]);\n\n var oldPropsAnimated = this.propsAnimated;\n this.propsAnimated = new AnimatedProps(nextProps, this.callback); // 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\n oldPropsAnimated && oldPropsAnimated.detach();\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(props) {\n var style = props.style,\n nextProps = _objectWithoutPropertiesLoose(props, [\"style\"]);\n\n var _this$props = this.props,\n currentStyle = _this$props.style,\n currentProps = _objectWithoutPropertiesLoose(_this$props, [\"style\"]);\n\n if (!shallowEqual(currentProps, nextProps) || !shallowEqual(currentStyle, style)) {\n this.attachProps(props);\n return true;\n }\n\n return false;\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$propsAnimated$g = this.propsAnimated.getValue(),\n scrollTop = _this$propsAnimated$g.scrollTop,\n scrollLeft = _this$propsAnimated$g.scrollLeft,\n animatedProps = _objectWithoutPropertiesLoose(_this$propsAnimated$g, [\"scrollTop\", \"scrollLeft\"]);\n\n return React__default.createElement(Component, _extends({}, animatedProps, {\n ref: function ref(node) {\n return _this2.node = handleRef(node, _this2.props.forwardRef);\n }\n }));\n };\n\n return AnimatedComponent;\n }(React__default.Component);\n\n return React__default.forwardRef(function (props, ref) {\n return React__default.createElement(AnimatedComponent, _extends({}, props, {\n forwardRef: ref\n }));\n });\n}\n\nvar config = {\n default: {\n tension: 170,\n friction: 26\n },\n gentle: {\n tension: 120,\n friction: 14\n },\n wobbly: {\n tension: 180,\n friction: 12\n },\n stiff: {\n tension: 210,\n friction: 20\n },\n slow: {\n tension: 280,\n friction: 60\n },\n molasses: {\n tension: 280,\n friction: 120\n }\n};\n\nvar AnimatedStyle =\n/*#__PURE__*/\nfunction (_AnimatedObjectWithCh) {\n _inheritsLoose(AnimatedStyle, _AnimatedObjectWithCh);\n\n function AnimatedStyle(style) {\n var _this;\n\n _this = _AnimatedObjectWithCh.call(this) || this;\n style = style || {};\n if (style.transform && !(style.transform instanceof Animated)) style = applyAnimatedValues.transform(style);\n _this.payload = style;\n return _this;\n }\n\n return AnimatedStyle;\n}(AnimatedObjectWithChildren);\n\nvar Spring =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Spring, _React$Component);\n\n function Spring() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.state = {\n lastProps: {\n from: {},\n to: {}\n },\n propsChanged: false,\n internal: false\n };\n _this.controller = new Controller(null, null);\n _this.didUpdate = false;\n _this.didInject = false;\n _this.finished = true;\n\n _this.start = function () {\n _this.finished = false;\n var wasMounted = _this.mounted;\n\n _this.controller.start(function (props) {\n return _this.finish(_extends({}, props, {\n wasMounted: wasMounted\n }));\n }, _this.update);\n };\n\n _this.stop = function () {\n return _this.controller.stop(true);\n };\n\n _this.update = function () {\n return _this.mounted && _this.setState({\n internal: true\n });\n };\n\n _this.finish = function (_ref) {\n var finished = _ref.finished,\n noChange = _ref.noChange,\n wasMounted = _ref.wasMounted;\n _this.finished = true;\n\n if (_this.mounted && finished) {\n // Only call onRest if either we *were* mounted, or when there were changes\n if (_this.props.onRest && (wasMounted || !noChange)) _this.props.onRest(_this.controller.merged); // Restore end-state\n\n if (_this.mounted && _this.didInject) {\n _this.afterInject = convertValues(_this.props);\n\n _this.setState({\n internal: true\n });\n } // If we have an inject or values to apply after the animation we ping here\n\n\n if (_this.mounted && (_this.didInject || _this.props.after)) _this.setState({\n internal: true\n });\n _this.didInject = false;\n }\n };\n\n return _this;\n }\n\n var _proto = Spring.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n // componentDidUpdate isn't called on mount, we call it here to start animating\n this.componentDidUpdate();\n this.mounted = true;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n // Stop all ongoing animtions\n this.mounted = false;\n this.stop();\n };\n\n Spring.getDerivedStateFromProps = function getDerivedStateFromProps(props, _ref2) {\n var internal = _ref2.internal,\n lastProps = _ref2.lastProps;\n // The following is a test against props that could alter the animation\n var from = props.from,\n to = props.to,\n reset = props.reset,\n force = props.force;\n var propsChanged = !shallowEqual(to, lastProps.to) || !shallowEqual(from, lastProps.from) || reset && !internal || force && !internal;\n return {\n propsChanged: propsChanged,\n lastProps: props,\n internal: false\n };\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var children = this.props.children;\n var propsChanged = this.state.propsChanged; // Inject phase -----------------------------------------------------------\n // Handle injected frames, for instance targets/web/fix-auto\n // An inject will return an intermediary React node which measures itself out\n // .. and returns a callback when the values sought after are ready, usually \"auto\".\n\n if (this.props.inject && propsChanged && !this.injectProps) {\n var frame = this.props.inject(this.props, function (injectProps) {\n // The inject frame has rendered, now let's update animations...\n _this2.injectProps = injectProps;\n\n _this2.setState({\n internal: true\n });\n }); // Render out injected frame\n\n if (frame) return frame;\n } // Update phase -----------------------------------------------------------\n\n\n if (this.injectProps || propsChanged) {\n // We can potentially cause setState, but we're inside render, the flag prevents that\n this.didInject = false; // Update animations, this turns from/to props into AnimatedValues\n // An update can occur on injected props, or when own-props have changed.\n\n if (this.injectProps) {\n this.controller.update(this.injectProps); // didInject is needed, because there will be a 3rd stage, where the original values\n // .. will be restored after the animation is finished. When someone animates towards\n // .. \"auto\", the end-result should be \"auto\", not \"1999px\", which would block nested\n // .. height/width changes.\n\n this.didInject = true;\n } else if (propsChanged) this.controller.update(this.props); // Flag an update that occured, componentDidUpdate will start the animation later on\n\n\n this.didUpdate = true;\n this.afterInject = undefined;\n this.injectProps = undefined;\n } // Render phase -----------------------------------------------------------\n // Render out raw values or AnimatedValues depending on \"native\"\n\n\n var values = _extends({}, this.controller.getValues(), this.afterInject);\n\n if (this.finished) values = _extends({}, values, this.props.after);\n return Object.keys(values).length ? children(values) : null;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n // The animation has to start *after* render, since at that point the scene\n // .. graph should be established, so we do it here. Unfortunatelly, non-native\n // .. animations as well as \"auto\"-injects call forceUpdate, so it's causing a loop.\n // .. didUpdate prevents that as it gets set only on prop changes.\n if (this.didUpdate) this.start();\n this.didUpdate = false;\n };\n\n return Spring;\n}(React__default.Component);\n\nSpring.defaultProps = {\n from: {},\n to: {},\n config: config.default,\n native: false,\n immediate: false,\n reset: false,\n force: false,\n inject: bugfixes\n};\n\nvar Trail =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inheritsLoose(Trail, _React$PureComponent);\n\n function Trail() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args)) || this;\n _this.first = true;\n _this.instances = new Set();\n\n _this.hook = function (instance, index, length, reverse) {\n // Add instance to set\n _this.instances.add(instance); // Return undefined on the first index and from then on the previous instance\n\n\n if (reverse ? index === length - 1 : index === 0) return undefined;else return Array.from(_this.instances)[reverse ? index + 1 : index - 1];\n };\n\n return _this;\n }\n\n var _proto = Trail.prototype;\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n items = _this$props.items,\n _children = _this$props.children,\n _this$props$from = _this$props.from,\n from = _this$props$from === void 0 ? {} : _this$props$from,\n initial = _this$props.initial,\n reverse = _this$props.reverse,\n keys = _this$props.keys,\n delay = _this$props.delay,\n onRest = _this$props.onRest,\n props = _objectWithoutPropertiesLoose(_this$props, [\"items\", \"children\", \"from\", \"initial\", \"reverse\", \"keys\", \"delay\", \"onRest\"]);\n\n var array = toArray(items);\n return toArray(array).map(function (item, i) {\n return React__default.createElement(Spring, _extends({\n onRest: i === 0 ? onRest : null,\n key: typeof keys === 'function' ? keys(item) : toArray(keys)[i],\n from: _this2.first && initial !== void 0 ? initial || {} : from\n }, props, {\n delay: i === 0 && delay || undefined,\n attach: function attach(instance) {\n return _this2.hook(instance, i, array.length, reverse);\n },\n children: function children(props) {\n var child = _children(item, i);\n\n return child ? child(props) : null;\n }\n }));\n });\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n this.first = false;\n if (prevProps.items !== this.props.items) this.instances.clear();\n };\n\n return Trail;\n}(React__default.PureComponent);\n\nTrail.defaultProps = {\n keys: function keys(item) {\n return item;\n }\n};\n\nvar DEFAULT = '__default';\n\nvar KeyframesImpl =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inheritsLoose(KeyframesImpl, _React$PureComponent);\n\n function KeyframesImpl() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args)) || this;\n _this.guid = 0;\n _this.state = {\n props: {},\n resolve: function resolve() {\n return null;\n },\n last: true,\n index: 0\n };\n\n _this.next = function (props, last, index) {\n if (last === void 0) {\n last = true;\n }\n\n if (index === void 0) {\n index = 0;\n }\n\n _this.running = true;\n return new Promise(function (resolve) {\n _this.mounted && _this.setState(function (state) {\n return {\n props: props,\n resolve: resolve,\n last: last,\n index: index\n };\n }, function () {\n return _this.running = false;\n });\n });\n };\n\n return _this;\n }\n\n var _proto = KeyframesImpl.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.componentDidUpdate({});\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(previous) {\n var _this2 = this;\n\n var _this$props = this.props,\n states = _this$props.states,\n f = _this$props.filter,\n state = _this$props.state;\n\n if (previous.state !== this.props.state || this.props.reset && !this.running || !shallowEqual(states[state], previous.states[previous.state])) {\n if (states && state && states[state]) {\n (function () {\n var localId = ++_this2.guid;\n var slots = states[state];\n\n if (slots) {\n if (Array.isArray(slots)) {\n var q = Promise.resolve();\n\n var _loop = function _loop(i) {\n var index = i;\n var slot = slots[index];\n var last = index === slots.length - 1;\n q = q.then(function () {\n return localId === _this2.guid && _this2.next(f(slot), last, index);\n });\n };\n\n for (var i = 0; i < slots.length; i++) {\n _loop(i);\n }\n } else if (typeof slots === 'function') {\n var index = 0;\n slots( // next\n function (props, last) {\n if (last === void 0) {\n last = false;\n }\n\n return localId === _this2.guid && _this2.next(f(props), last, index++);\n }, // cancel\n function () {\n return requestFrame(function () {\n return _this2.instance && _this2.instance.stop();\n });\n }, // ownprops\n _this2.props);\n } else {\n _this2.next(f(states[state]));\n }\n }\n })();\n }\n }\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$state = this.state,\n props = _this$state.props,\n resolve = _this$state.resolve,\n last = _this$state.last,\n index = _this$state.index;\n if (!props || Object.keys(props).length === 0) return null;\n\n var _this$props2 = this.props,\n state = _this$props2.state,\n filter = _this$props2.filter,\n states = _this$props2.states,\n config = _this$props2.config,\n Component = _this$props2.primitive,\n _onRest = _this$props2.onRest,\n forwardRef = _this$props2.forwardRef,\n rest = _objectWithoutPropertiesLoose(_this$props2, [\"state\", \"filter\", \"states\", \"config\", \"primitive\", \"onRest\", \"forwardRef\"]); // Arrayed configs need an index to process\n\n\n if (Array.isArray(config)) config = config[index];\n return React__default.createElement(Component, _extends({\n ref: function ref(_ref) {\n return _this3.instance = handleRef(_ref, forwardRef);\n },\n config: config\n }, rest, props, {\n onRest: function onRest(args) {\n resolve(args);\n if (_onRest && last) _onRest(args);\n }\n }));\n };\n\n return KeyframesImpl;\n}(React__default.PureComponent);\n\nKeyframesImpl.defaultProps = {\n state: DEFAULT\n};\nvar Keyframes = React__default.forwardRef(function (props, ref) {\n return React__default.createElement(KeyframesImpl, _extends({}, props, {\n forwardRef: ref\n }));\n});\n\nKeyframes.create = function (primitive) {\n return function (states, filter) {\n var _states;\n\n if (filter === void 0) {\n filter = function filter(states) {\n return states;\n };\n }\n\n if (typeof states === 'function' || Array.isArray(states)) states = (_states = {}, _states[DEFAULT] = states, _states);\n return function (props) {\n return React__default.createElement(KeyframesImpl, _extends({\n primitive: primitive,\n states: states,\n filter: filter\n }, props));\n };\n };\n};\n\nKeyframes.Spring = function (states) {\n return Keyframes.create(Spring)(states, interpolateTo);\n};\n\nKeyframes.Trail = function (states) {\n return Keyframes.create(Trail)(states, interpolateTo);\n};\n\nvar guid = 0;\n\nvar get = function get(props) {\n var items = props.items,\n keys = props.keys,\n rest = _objectWithoutPropertiesLoose(props, [\"items\", \"keys\"]);\n\n items = toArray(items !== void 0 ? items : null);\n keys = typeof keys === 'function' ? items.map(keys) : toArray(keys); // Make sure numeric keys are interpreted as Strings (5 !== \"5\")\n\n return _extends({\n items: items,\n keys: keys.map(function (key) {\n return String(key);\n })\n }, rest);\n};\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inheritsLoose(Transition, _React$PureComponent);\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n function Transition(prevProps) {\n var _this;\n\n _this = _React$PureComponent.call(this, prevProps) || this;\n\n _this.destroyItem = function (item, key, state) {\n return function (values) {\n var _this$props = _this.props,\n onRest = _this$props.onRest,\n onDestroyed = _this$props.onDestroyed;\n\n if (_this.mounted) {\n onDestroyed && onDestroyed(item);\n\n _this.setState(function (_ref) {\n var deleted = _ref.deleted;\n return {\n deleted: deleted.filter(function (t) {\n return t.key !== key;\n })\n };\n });\n\n onRest && onRest(item, state, values);\n }\n };\n };\n\n _this.state = {\n first: true,\n transitions: [],\n current: {},\n deleted: [],\n prevProps: prevProps\n };\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(props, _ref2) {\n var first = _ref2.first,\n prevProps = _ref2.prevProps,\n state = _objectWithoutPropertiesLoose(_ref2, [\"first\", \"prevProps\"]);\n\n var _get = get(props),\n items = _get.items,\n keys = _get.keys,\n initial = _get.initial,\n from = _get.from,\n enter = _get.enter,\n leave = _get.leave,\n update = _get.update,\n _get$trail = _get.trail,\n trail = _get$trail === void 0 ? 0 : _get$trail,\n unique = _get.unique,\n config = _get.config;\n\n var _get2 = get(prevProps),\n _keys = _get2.keys,\n _items = _get2.items;\n\n var current = _extends({}, state.current);\n\n var deleted = [].concat(state.deleted); // Compare next keys with current keys\n\n var currentKeys = Object.keys(current);\n var currentSet = new Set(currentKeys);\n var nextSet = new Set(keys);\n var added = keys.filter(function (item) {\n return !currentSet.has(item);\n });\n var removed = state.transitions.filter(function (item) {\n return !item.destroyed && !nextSet.has(item.originalKey);\n }).map(function (i) {\n return i.originalKey;\n });\n var updated = keys.filter(function (item) {\n return currentSet.has(item);\n });\n var delay = 0;\n added.forEach(function (key) {\n // In unique mode, remove fading out transitions if their key comes in again\n if (unique && deleted.find(function (d) {\n return d.originalKey === key;\n })) deleted = deleted.filter(function (t) {\n return t.originalKey !== key;\n });\n var keyIndex = keys.indexOf(key);\n var item = items[keyIndex];\n var state = 'enter';\n current[key] = {\n state: state,\n originalKey: key,\n key: unique ? String(key) : guid++,\n item: item,\n trail: delay = delay + trail,\n config: callProp(config, item, state),\n from: callProp(first ? initial !== void 0 ? initial || {} : from : from, item),\n to: callProp(enter, item)\n };\n });\n removed.forEach(function (key) {\n var keyIndex = _keys.indexOf(key);\n\n var item = _items[keyIndex];\n var state = 'leave';\n deleted.push(_extends({}, current[key], {\n state: state,\n destroyed: true,\n left: _keys[Math.max(0, keyIndex - 1)],\n right: _keys[Math.min(_keys.length, keyIndex + 1)],\n trail: delay = delay + trail,\n config: callProp(config, item, state),\n to: callProp(leave, item)\n }));\n delete current[key];\n });\n updated.forEach(function (key) {\n var keyIndex = keys.indexOf(key);\n var item = items[keyIndex];\n var state = 'update';\n current[key] = _extends({}, current[key], {\n item: item,\n state: state,\n trail: delay = delay + trail,\n config: callProp(config, item, state),\n to: callProp(update, item)\n });\n }); // This tries to restore order for deleted items by finding their last known siblings\n\n var out = keys.map(function (key) {\n return current[key];\n });\n deleted.forEach(function (_ref3) {\n var left = _ref3.left,\n right = _ref3.right,\n transition = _objectWithoutPropertiesLoose(_ref3, [\"left\", \"right\"]);\n\n var pos; // Was it the element on the left, if yes, move there ...\n\n if ((pos = out.findIndex(function (t) {\n return t.originalKey === left;\n })) !== -1) pos += 1; // Or how about the element on the right ...\n\n if (pos === -1) pos = out.findIndex(function (t) {\n return t.originalKey === right;\n }); // Maybe we'll find it in the list of deleted items\n\n if (pos === -1) pos = deleted.findIndex(function (t) {\n return t.originalKey === left;\n }); // Checking right side as well\n\n if (pos === -1) pos = deleted.findIndex(function (t) {\n return t.originalKey === right;\n }); // And if nothing else helps, move it to the start ¯\\_(ツ)_/¯\n\n pos = Math.max(0, pos);\n out = [].concat(out.slice(0, pos), [transition], out.slice(pos));\n });\n return {\n first: first && added.length === 0,\n transitions: out,\n current: current,\n deleted: deleted,\n prevProps: props\n };\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n initial = _this$props2.initial,\n _this$props2$from = _this$props2.from,\n _this$props2$enter = _this$props2.enter,\n _this$props2$leave = _this$props2.leave,\n _this$props2$update = _this$props2.update,\n onDestroyed = _this$props2.onDestroyed,\n keys = _this$props2.keys,\n items = _this$props2.items,\n onFrame = _this$props2.onFrame,\n onRest = _this$props2.onRest,\n onStart = _this$props2.onStart,\n trail = _this$props2.trail,\n config = _this$props2.config,\n _children = _this$props2.children,\n unique = _this$props2.unique,\n reset = _this$props2.reset,\n extra = _objectWithoutPropertiesLoose(_this$props2, [\"initial\", \"from\", \"enter\", \"leave\", \"update\", \"onDestroyed\", \"keys\", \"items\", \"onFrame\", \"onRest\", \"onStart\", \"trail\", \"config\", \"children\", \"unique\", \"reset\"]);\n\n return this.state.transitions.map(function (_ref4, i) {\n var _ref5;\n\n var state = _ref4.state,\n key = _ref4.key,\n item = _ref4.item,\n from = _ref4.from,\n to = _ref4.to,\n trail = _ref4.trail,\n config = _ref4.config,\n destroyed = _ref4.destroyed;\n return React__default.createElement(Keyframes, _extends({\n reset: reset && state === 'enter',\n primitive: Spring,\n state: state,\n filter: interpolateTo,\n states: (_ref5 = {}, _ref5[state] = to, _ref5),\n key: key,\n onRest: destroyed ? _this2.destroyItem(item, key, state) : onRest && function (values) {\n return onRest(item, state, values);\n },\n onStart: onStart && function () {\n return onStart(item, state);\n },\n onFrame: onFrame && function (values) {\n return onFrame(item, state, values);\n },\n delay: trail,\n config: config\n }, extra, {\n from: from,\n children: function children(props) {\n var child = _children(item, state, i);\n\n return child ? child(props) : null;\n }\n }));\n });\n };\n\n return Transition;\n}(React__default.PureComponent);\n\nTransition.defaultProps = {\n keys: function keys(item) {\n return item;\n },\n unique: false,\n reset: false\n};\n\n// http://www.w3.org/TR/css3-color/#svg-color\nvar colors = {\n transparent: 0x00000000,\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\n// const INTEGER = '[-+]?\\\\d+';\nvar NUMBER = '[-+]?\\\\d*\\\\.?\\\\d+';\nvar PERCENTAGE = NUMBER + '%';\n\nfunction call() {\n return '\\\\(\\\\s*(' + Array.prototype.slice.call(arguments).join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)';\n}\n\nvar rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER));\nvar rgba = new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER));\nvar hsl = new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE));\nvar hsla = new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER));\nvar hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nvar hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nvar hex6 = /^#([0-9a-fA-F]{6})$/;\nvar hex8 = /^#([0-9a-fA-F]{8})$/;\n\n/*\nhttps://github.com/react-community/normalize-css-color\n\nBSD 3-Clause License\n\nCopyright (c) 2016, React Community\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nfunction normalizeColor(color) {\n var match;\n\n if (typeof color === 'number') {\n return color >>> 0 === color && color >= 0 && color <= 0xffffffff ? color : null;\n } // Ordered based on occurrences on Facebook codebase\n\n\n if (match = hex6.exec(color)) return parseInt(match[1] + 'ff', 16) >>> 0;\n if (colors.hasOwnProperty(color)) return colors[color];\n\n if (match = rgb.exec(color)) {\n return (parse255(match[1]) << 24 | // r\n parse255(match[2]) << 16 | // g\n parse255(match[3]) << 8 | // b\n 0x000000ff) >>> // a\n 0;\n }\n\n if (match = rgba.exec(color)) {\n return (parse255(match[1]) << 24 | // r\n parse255(match[2]) << 16 | // g\n parse255(match[3]) << 8 | // b\n parse1(match[4])) >>> // a\n 0;\n }\n\n if (match = hex3.exec(color)) {\n return parseInt(match[1] + match[1] + // r\n match[2] + match[2] + // g\n match[3] + match[3] + // b\n 'ff', // a\n 16) >>> 0;\n } // https://drafts.csswg.org/css-color-4/#hex-notation\n\n\n if (match = hex8.exec(color)) return parseInt(match[1], 16) >>> 0;\n\n if (match = hex4.exec(color)) {\n return parseInt(match[1] + match[1] + // r\n match[2] + match[2] + // g\n match[3] + match[3] + // b\n match[4] + match[4], // a\n 16) >>> 0;\n }\n\n if (match = hsl.exec(color)) {\n return (hslToRgb(parse360(match[1]), // h\n parsePercentage(match[2]), // s\n parsePercentage(match[3]) // l\n ) | 0x000000ff) >>> // a\n 0;\n }\n\n if (match = hsla.exec(color)) {\n return (hslToRgb(parse360(match[1]), // h\n parsePercentage(match[2]), // s\n parsePercentage(match[3]) // l\n ) | parse1(match[4])) >>> // a\n 0;\n }\n\n return null;\n}\n\nfunction hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\n\nfunction hslToRgb(h, s, l) {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n var r = hue2rgb(p, q, h + 1 / 3);\n var g = hue2rgb(p, q, h);\n var b = hue2rgb(p, q, h - 1 / 3);\n return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8;\n}\n\nfunction parse255(str) {\n var int = parseInt(str, 10);\n if (int < 0) return 0;\n if (int > 255) return 255;\n return int;\n}\n\nfunction parse360(str) {\n var int = parseFloat(str);\n return (int % 360 + 360) % 360 / 360;\n}\n\nfunction parse1(str) {\n var num = parseFloat(str);\n if (num < 0) return 0;\n if (num > 1) return 255;\n return Math.round(num * 255);\n}\n\nfunction parsePercentage(str) {\n // parseFloat conveniently ignores the final %\n var int = parseFloat(str);\n if (int < 0) return 0;\n if (int > 100) return 1;\n return int / 100;\n}\n\nfunction colorToRgba(input) {\n var int32Color = normalizeColor(input);\n if (int32Color === null) return input;\n int32Color = int32Color || 0;\n var r = (int32Color & 0xff000000) >>> 24;\n var g = (int32Color & 0x00ff0000) >>> 16;\n var b = (int32Color & 0x0000ff00) >>> 8;\n var a = (int32Color & 0x000000ff) / 255;\n return \"rgba(\" + r + \", \" + g + \", \" + b + \", \" + a + \")\";\n} // Problem: https://github.com/animatedjs/animated/pull/102\n// Solution: https://stackoverflow.com/questions/638565/parsing-scientific-notation-sensibly/658662\n\n\nvar stringShapeRegex = /[+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g; // Covers rgb, rgba, hsl, hsla\n// Taken from https://gist.github.com/olmokramer/82ccce673f86db7cda5e\n\nvar colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\\((-?\\d+%?[,\\s]+){2,3}\\s*[\\d\\.]+%?\\))/gi; // Covers color names (transparent, blue, etc.)\n\nvar colorNamesRegex = new RegExp(\"(\" + Object.keys(colors).join('|') + \")\", 'g');\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 * 0 2px 2px 0px rgba(0, 0, 0, 0.12) // box shadows\n */\n\nfunction createInterpolation(config) {\n // Replace colors with rgba\n var outputRange = config.output.map(function (rangeValue) {\n return rangeValue.replace(colorRegex, colorToRgba);\n }).map(function (rangeValue) {\n return rangeValue.replace(colorNamesRegex, colorToRgba);\n }); // ->\n // [\n // [0, 50],\n // [100, 150],\n // [200, 250],\n // [0, 0.5],\n // ]\n\n var outputRanges = outputRange[0].match(stringShapeRegex).map(function () {\n return [];\n });\n outputRange.forEach(function (value) {\n value.match(stringShapeRegex).forEach(function (number, i) {\n return outputRanges[i].push(+number);\n });\n });\n var interpolations = outputRange[0].match(stringShapeRegex).map(function (value, i) {\n return Interpolation.create(_extends({}, config, {\n output: outputRanges[i]\n }));\n });\n return function (input) {\n var i = 0;\n return outputRange[0] // 'rgba(0, 100, 200, 0)'\n // ->\n // 'rgba(${interpolations[0](input)}, ${interpolations[1](input)}, ...'\n .replace(stringShapeRegex, function () {\n return interpolations[i++](input);\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 .replace(/rgba\\(([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+)\\)/gi, function (_, p1, p2, p3, p4) {\n return \"rgba(\" + Math.round(p1) + \", \" + Math.round(p2) + \", \" + Math.round(p3) + \", \" + p4 + \")\";\n });\n };\n}\n\nvar AnimatedTransform =\n/*#__PURE__*/\nfunction (_AnimatedWithChildren) {\n _inheritsLoose(AnimatedTransform, _AnimatedWithChildren);\n\n function AnimatedTransform(transforms) {\n var _this;\n\n _this = _AnimatedWithChildren.call(this) || this;\n _this._transforms = transforms;\n return _this;\n }\n\n var _proto = AnimatedTransform.prototype;\n\n _proto.getValue = function getValue() {\n return this._transforms.map(function (transform) {\n var result = {};\n\n for (var key in transform) {\n var value = transform[key];\n result[key] = value instanceof Animated ? value.getValue() : value;\n }\n\n return result;\n });\n };\n\n _proto.getAnimatedValue = function getAnimatedValue() {\n return this._transforms.map(function (transform) {\n var result = {};\n\n for (var key in transform) {\n var value = transform[key];\n result[key] = value instanceof Animated ? value.getAnimatedValue() : value;\n }\n\n return result;\n });\n };\n\n _proto.attach = function attach() {\n var _this2 = this;\n\n this._transforms.forEach(function (transform) {\n for (var key in transform) {\n var value = transform[key];\n if (value instanceof Animated) value.addChild(_this2);\n }\n });\n };\n\n _proto.detach = function detach() {\n var _this3 = this;\n\n this._transforms.forEach(function (transform) {\n for (var key in transform) {\n var value = transform[key];\n if (value instanceof Animated) value.removeChild(_this3);\n }\n });\n };\n\n return AnimatedTransform;\n}(AnimatedWithChildren);\n\ninjectDefaultElement(reactNative.View);\ninjectInterpolation(createInterpolation);\ninjectColorNames(colors);\ninjectApplyAnimatedValues(function (instance, props) {\n return instance.setNativeProps ? instance.setNativeProps(props) : false;\n}, function (style) {\n return _extends({}, style, {\n transform: new AnimatedTransform(style.transform)\n });\n});\ninjectCreateAnimatedStyle(function (styles) {\n return new AnimatedStyle(reactNative.StyleSheet.flatten(styles));\n});\n\nexports.Spring = Spring;\nexports.Keyframes = Keyframes;\nexports.Transition = Transition;\nexports.Trail = Trail;\nexports.Controller = Controller;\nexports.config = config;\nexports.animated = createAnimatedComponent;\nexports.interpolate = interpolate$1;\nexports.Globals = Globals;\n","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;","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 _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","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;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Spinner = require(\"./Spinner\");\n\nObject.keys(_Spinner).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Spinner[key];\n }\n });\n});\n\nvar _Spinner2 = require(\"./Spinner.shared\");\n\nObject.keys(_Spinner2).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Spinner2[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Spinner = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactNative = require(\"react-native\");\n\nvar _native = _interopRequireDefault(require(\"styled-components/native\"));\n\nvar _helpers = require(\"../../helpers\");\n\nvar _Spinner = require(\"./Spinner.shared\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Spinner component for React Native\n */\nvar Spinner =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(Spinner, _React$Component);\n\n function Spinner(props) {\n var _this;\n\n _classCallCheck(this, Spinner);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Spinner).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"rotation\", void 0);\n\n _this.rotation = new _reactNative.Animated.Value(0);\n return _this;\n }\n\n _createClass(Spinner, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.startRotation();\n }\n }, {\n key: \"startRotation\",\n value: function startRotation() {\n var _this2 = this;\n\n this.rotation.setValue(0);\n\n _reactNative.Animated.timing(this.rotation, {\n toValue: 1,\n duration: 1000,\n easing: _reactNative.Easing.linear,\n useNativeDriver: true\n }).start(function () {\n return _this2.startRotation();\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var RotateData = this.rotation.interpolate({\n inputRange: [0, 1],\n outputRange: [\"0deg\", \"360deg\"]\n });\n return _react.default.createElement(Bar, _extends({\n as: _reactNative.Animated.View\n }, this.props, {\n style: {\n transform: [{\n rotate: RotateData\n }]\n }\n }));\n }\n }]);\n\n return Spinner;\n}(_react.default.Component);\n\nexports.Spinner = Spinner;\n\n_defineProperty(Spinner, \"defaultProps\", {\n size: \"medium\",\n color: \"black100\"\n});\n\nSpinner.displayName = \"Spinner\";\n\n/** Generic Spinner component */\nvar Bar = (0, _native.default)(_reactNative.View).withConfig({\n displayName: \"Spinnerios__Bar\",\n componentId: \"sc-1g0rf5m-0\"\n})([\"background:black;position:absolute;\", \";\"], function (props) {\n var _getSize = (0, _Spinner.getSize)(props),\n width = _getSize.width,\n height = _getSize.height;\n\n return \"\\n background: \".concat((0, _helpers.color)(props.color), \";\\n width: \").concat(width, \"px;\\n height: \").concat(height, \"px;\\n \");\n});\nBar.defaultProps = {\n width: 25,\n height: 6\n};\n//# sourceMappingURL=Spinner.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getSize = void 0;\n\n/**\n * Returns width and height of spinner based on size\n * @param props\n */\nvar getSize = function getSize(props) {\n var base = {\n width: 25,\n height: 6\n };\n\n switch (props.size) {\n case \"small\":\n return {\n width: base.width * 0.5,\n height: base.height * 0.5\n };\n\n case \"medium\":\n return {\n width: base.width * 0.8,\n height: base.height * 0.8\n };\n\n case \"large\":\n return {\n width: base.width,\n height: base.height\n };\n\n default:\n return {\n width: props.width,\n height: props.height\n };\n }\n};\n\nexports.getSize = getSize;\n//# sourceMappingURL=Spinner.shared.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getColorsForVariant = getColorsForVariant;\nexports.getStylesForVariant = exports.defaultSize = exports.defaultVariant = void 0;\n\nvar _styledComponents = require(\"styled-components\");\n\nvar _Theme = require(\"../../Theme\");\n\n/** Default button color variant */\nvar defaultVariant = \"primaryBlack\";\n/** The size of the button */\n\nexports.defaultVariant = defaultVariant;\n\n/** Default button size */\nvar defaultSize = \"medium\";\nexports.defaultSize = defaultSize;\n\n/**\n * Returns various colors for each state given a button variant\n * @param variant\n */\nfunction getColorsForVariant(variant) {\n var _themeProps$colors = _Theme.themeProps.colors,\n black100 = _themeProps$colors.black100,\n black10 = _themeProps$colors.black10,\n black30 = _themeProps$colors.black30,\n white100 = _themeProps$colors.white100,\n purple100 = _themeProps$colors.purple100;\n\n switch (variant) {\n case \"primaryBlack\":\n return {\n default: {\n backgroundColor: black100,\n borderColor: black100,\n color: white100\n },\n hover: {\n backgroundColor: purple100,\n borderColor: purple100,\n color: white100\n }\n };\n\n case \"primaryWhite\":\n return {\n default: {\n backgroundColor: white100,\n borderColor: white100,\n color: black100\n },\n hover: {\n backgroundColor: purple100,\n borderColor: purple100,\n color: white100\n }\n };\n\n case \"secondaryGray\":\n return {\n default: {\n backgroundColor: black10,\n borderColor: black10,\n color: black100\n },\n hover: {\n backgroundColor: black30,\n borderColor: black30,\n color: black100\n }\n };\n\n case \"secondaryOutline\":\n return {\n default: {\n backgroundColor: white100,\n borderColor: black10,\n color: black100\n },\n hover: {\n backgroundColor: white100,\n borderColor: black100,\n color: black100\n }\n };\n\n case \"noOutline\":\n return {\n default: {\n backgroundColor: \"rgba(0, 0, 0, 0)\",\n borderColor: \"rgba(0, 0, 0, 0)\",\n color: black100\n },\n hover: {\n backgroundColor: white100,\n borderColor: black100,\n color: black100\n }\n };\n\n default:\n }\n}\n/**\n * Returns css related to the passed in variant\n * @param variant\n */\n\n\nvar getStylesForVariant = function getStylesForVariant(variant) {\n var _getColorsForVariant = getColorsForVariant(variant),\n enabled = _getColorsForVariant.default,\n hover = _getColorsForVariant.hover;\n\n return (0, _styledComponents.css)([\"\", \";\"], function () {\n return \"\\n background-color: \".concat(enabled.backgroundColor, \";\\n border-color: \").concat(enabled.borderColor, \";\\n color: \").concat(enabled.color, \";\\n\\n @media \").concat(_Theme.themeProps.mediaQueries.hover, \" {\\n &:hover {\\n background-color: \").concat(hover.backgroundColor, \";\\n border-color: \").concat(hover.borderColor, \";\\n color: \").concat(hover.color, \";\\n }\\n }\\n \");\n });\n};\n\nexports.getStylesForVariant = getStylesForVariant;\n//# sourceMappingURL=Button.shared.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Checkbox = require(\"./Checkbox\");\n\nObject.keys(_Checkbox).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Checkbox[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=Checkbox.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _CleanTag = require(\"./CleanTag\");\n\nObject.keys(_CleanTag).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _CleanTag[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CleanTag = exports.omit = exports.omitProps = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _styledSystem = require(\"styled-system\");\n\nvar _primitives = require(\"../../platform/primitives\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar allPropTypes = Object.keys(_styledSystem.styles).filter(function (key) {\n return typeof _styledSystem.styles[key] === \"function\";\n}).reduce(function (styleProps, key) {\n return _objectSpread({}, styleProps, _styledSystem.styles[key].propTypes);\n}, {});\n/**\n * The default set of props to remove from components rendered by styled-components\n */\n\nvar omitProps = [].concat(_toConsumableArray(Object.keys(allPropTypes)), [\"theme\"]);\n/**\n * Removes entries from an object based on a list of keys\n */\n\nexports.omitProps = omitProps;\n\nvar omit = function omit(obj, keys) {\n var next = {};\n\n for (var key in obj) {\n if (keys.indexOf(key) > -1) continue;\n next[key] = obj[key];\n }\n\n return next;\n};\n\nexports.omit = omit;\n\nvar tagName = function tagName(tag) {\n return typeof tag === \"string\" ? tag : tag.displayName || \"Tag\";\n};\n\nfunction tagBuilder() {\n var tag = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _primitives.View;\n\n var TagComponent = _react.default.forwardRef(function (_ref, ref) {\n var _ref$is = _ref.is,\n BaseTag = _ref$is === void 0 ? tag : _ref$is,\n _ref$omitFromProps = _ref.omitFromProps,\n omitFromProps = _ref$omitFromProps === void 0 ? omitProps : _ref$omitFromProps,\n props = _objectWithoutProperties(_ref, [\"is\", \"omitFromProps\"]);\n\n return _react.default.createElement(BaseTag, _objectSpread({\n ref: ref\n }, omit(props, omitFromProps)));\n });\n\n TagComponent.displayName = \"Clean.\".concat(tagName(tag));\n return TagComponent;\n}\n\nvar DefaultTag = tagBuilder();\n/**\n * An element to be used to prevent unwanted props from passing through\n * styled-components to the DOM\n *\n * @example\n *\n * const Component = styled(Tag)`\n * ${borderRadius};\n * `\n *\n * const Component2 = styled(Tag.as('span'))`\n * ${background};\n * `\n */\n\nvar CleanTag = DefaultTag;\nexports.CleanTag = CleanTag;\nCleanTag.as = tagBuilder;\n//# sourceMappingURL=CleanTag.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Collapse = require(\"./Collapse\");\n\nObject.keys(_Collapse).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Collapse[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Collapse = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactNative = require(\"react-native\");\n\nvar _renderpropsNative = require(\"react-spring/renderprops-native.cjs\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar AnimatedView = (0, _renderpropsNative.animated)(_reactNative.View);\n\n/** Collapses content with animation when open is not true */\nvar Collapse =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(Collapse, _React$Component);\n\n function Collapse() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Collapse);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Collapse)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"measureRef\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isMounted: false,\n isMeasuring: false,\n isAnimating: false,\n hasMeasured: false\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleMeasureRef\", function (ref) {\n _this.measureRef = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"measureChildren\", function () {\n _this.setState({\n isMeasuring: true\n }, function () {\n requestAnimationFrame(function () {\n if (!_this.measureRef) {\n _this.setState({\n isMeasuring: false\n });\n\n return;\n } // @ts-ignore\n\n\n _this.measureRef.measure(function (x, y, width, height) {\n _this.setState({\n isMeasuring: false,\n hasMeasured: true,\n measuredHeight: height\n });\n });\n });\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleLayout\", function (ev) {\n var open = _this.props.open;\n var _this$state = _this.state,\n hasMeasured = _this$state.hasMeasured,\n isMeasuring = _this$state.isMeasuring,\n measuredHeight = _this$state.measuredHeight,\n isAnimating = _this$state.isAnimating;\n var height = ev.nativeEvent.layout.height;\n\n if (!hasMeasured || !open || isMeasuring || measuredHeight === height || isAnimating) {\n return;\n }\n\n _this.setState({\n measuredHeight: height\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleFrame\", function (animatedValue) {\n if (_this.props.onAnimationFrame) {\n _this.props.onAnimationFrame(animatedValue);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"measureView\", function () {\n return _react.default.createElement(_reactNative.View, {\n ref: _this.handleMeasureRef,\n style: {\n opacity: 0,\n position: \"absolute\"\n }\n }, _this.props.children);\n });\n\n return _this;\n }\n\n _createClass(Collapse, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.setState({\n isMounted: true\n });\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var _this2 = this;\n\n var willExpand = nextProps.open && !this.props.open;\n\n if (nextProps.open !== this.props.open) {\n this.setState({\n isAnimating: true\n }, function () {\n if (willExpand && !_this2.measureRef && _this2.state.hasMeasured) {\n // We've previously measured children and can animate without further work.\n return;\n } else if (!_this2.state.hasMeasured) {\n // Children are ready to measure, measureRef might be mounted already.\n _this2.measureChildren();\n }\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var _this$state2 = this.state,\n isMeasuring = _this$state2.isMeasuring,\n isMounted = _this$state2.isMounted,\n measuredHeight = _this$state2.measuredHeight;\n var _this$props = this.props,\n open = _this$props.open,\n children = _this$props.children; // We must render children once in order to measure and derive a static height for animation.\n\n if (isMeasuring) {\n return this.measureView();\n }\n\n return _react.default.createElement(_renderpropsNative.Spring, {\n native: true,\n immediate: !isMounted,\n from: {\n height: 0\n },\n to: {\n height: open && measuredHeight ? measuredHeight : 0\n },\n onRest: function onRest() {\n _this3.setState({\n isAnimating: false\n });\n },\n onFrame: this.handleFrame\n }, function (props) {\n return _react.default.createElement(AnimatedView, {\n style: _objectSpread({}, props, {\n overflow: \"hidden\"\n }),\n onLayout: _this3.handleLayout\n }, children);\n });\n }\n }]);\n\n return Collapse;\n}(_react.default.Component);\n\nexports.Collapse = Collapse;\nCollapse.displayName = \"Collapse\";\n//# sourceMappingURL=Collapse.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Colors = require(\"./Colors\");\n\nObject.keys(_Colors).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Colors[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=Colors.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _CSSGrid = require(\"./CSSGrid\");\n\nObject.keys(_CSSGrid).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _CSSGrid[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","// No `display: grid` support in React Native yet:\n// https://github.com/facebook/yoga/issues/867\n\"use strict\";\n//# sourceMappingURL=CSSGrid.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Dialog = require(\"./Dialog\");\n\nObject.keys(_Dialog).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Dialog[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=Dialog.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _DonutChart = require(\"./DonutChart\");\n\nObject.keys(_DonutChart).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _DonutChart[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=DonutChart.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _EntityHeader = require(\"./EntityHeader\");\n\nObject.keys(_EntityHeader).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _EntityHeader[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.EntityHeader = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Avatar = require(\"../Avatar\");\n\nvar _Flex = require(\"../Flex\");\n\nvar _Typography = require(\"../Typography\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/**\n * Component that is used as entity header that is paired with rich information about the entity.\n * Spec: zpl.io/aNoYM6d\n */\nvar EntityHeader = function EntityHeader(_ref) {\n var href = _ref.href,\n imageUrl = _ref.imageUrl,\n initials = _ref.initials,\n name = _ref.name,\n meta = _ref.meta,\n FollowButton = _ref.FollowButton,\n remainderProps = _objectWithoutProperties(_ref, [\"href\", \"imageUrl\", \"initials\", \"name\", \"meta\", \"FollowButton\"]);\n\n return _react.default.createElement(_Flex.Flex, _extends({\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n flexWrap: \"nowrap\"\n }, remainderProps), (imageUrl || initials) && _react.default.createElement(_Flex.Flex, {\n mr: 1,\n justifyContent: \"center\"\n }, _react.default.createElement(_Avatar.Avatar, {\n size: \"xs\",\n src: imageUrl,\n initials: initials\n })), _react.default.createElement(_Flex.Flex, {\n justifyContent: \"center\",\n width: 0,\n flexGrow: 1\n }, _react.default.createElement(_Typography.Serif, {\n ellipsizeMode: \"tail\",\n numberOfLines: 1,\n size: \"3t\",\n color: \"black100\"\n }, name), !!meta && _react.default.createElement(_Typography.Sans, {\n ellipsizeMode: \"tail\",\n numberOfLines: 1,\n size: \"2\",\n color: \"black60\"\n }, meta)), FollowButton && _react.default.createElement(_Flex.Flex, {\n ml: 1,\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"flex-end\"\n }, FollowButton));\n};\n\nexports.EntityHeader = EntityHeader;\nEntityHeader.displayName = \"EntityHeader\";\nEntityHeader.displayName = \"EntityHeader\";\n//# sourceMappingURL=EntityHeader.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Grid = require(\"./Grid\");\n\nObject.keys(_Grid).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Grid[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=Grid.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Image = require(\"./Image\");\n\nObject.keys(_Image).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Image[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ResponsiveImage = exports.Image = void 0;\n\nvar _Image = require(\"./Image.shared\");\n\n/** Image */\nvar Image = _Image.BaseImage;\nexports.Image = Image;\nImage.displayName = \"Image\";\n/** ResponsiveImage */\n\nvar ResponsiveImage = _Image.BaseResponsiveImage;\nexports.ResponsiveImage = ResponsiveImage;\nResponsiveImage.displayName = \"ResponsiveImage\";\n//# sourceMappingURL=Image.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BaseResponsiveImage = exports.BaseImage = void 0;\n\nvar _styledComponents = _interopRequireDefault(require(\"styled-components\"));\n\nvar _primitives = require(\"../../platform/primitives\");\n\nvar _CleanTag = require(\"../CleanTag\");\n\nvar _styledSystem = require(\"styled-system\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// @ts-ignore\n\n/**\n * Image component with space, width and height properties\n */\nvar BaseImage = (0, _styledComponents.default)(_CleanTag.CleanTag.as(_primitives.Image)).withConfig({\n displayName: \"Imageshared__BaseImage\",\n componentId: \"sc-1dymtq1-0\"\n})([\"\", \";\", \";\", \";\", \"\"], _styledSystem.space, _styledSystem.width, _styledSystem.height, _styledSystem.borderRadius);\nexports.BaseImage = BaseImage;\n\n/**\n * An Image component that responsively resizes within its environment\n */\nvar BaseResponsiveImage = (0, _styledComponents.default)(_CleanTag.CleanTag).withConfig({\n displayName: \"Imageshared__BaseResponsiveImage\",\n componentId: \"sc-1dymtq1-1\"\n})([\"background:url(\", \");background-size:contain;background-repeat:no-repeat;background-position:center;\", \";\", \";\", \";\", \";\"], function (props) {\n return props.src;\n}, _styledSystem.ratio, _styledSystem.space, _styledSystem.width, _styledSystem.maxWidth);\nexports.BaseResponsiveImage = BaseResponsiveImage;\nBaseResponsiveImage.defaultProps = {\n width: \"100%\",\n ratio: 1\n};\n//# sourceMappingURL=Image.shared.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Input = require(\"./Input\");\n\nObject.keys(_Input).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Input[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=Input.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Join = require(\"./Join\");\n\nObject.keys(_Join).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Join[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Join = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * `Join` is a higher order component that renders a separator component\n * between each of `Join`'s direct children.\n *\n * @example\n *\n * }>\n * \n * \n * \n * \n *\n * which renders\n *\n * \n * \n * \n * \n * \n */\nvar Join = function Join(_ref) {\n var separator = _ref.separator,\n children = _ref.children;\n\n var childArray = _react.default.Children.toArray(children);\n\n return childArray.reduce(function (acc, curr, currentIndex) {\n acc.push(_react.default.cloneElement(curr, {\n key: \"join-\".concat(currentIndex)\n }));\n\n if (currentIndex !== childArray.length - 1) {\n acc.push(separator && _react.default.cloneElement(separator, {\n key: \"join-sep-\".concat(currentIndex)\n }));\n }\n\n return acc;\n }, []);\n};\n\nexports.Join = Join;\n//# sourceMappingURL=Join.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Menu = require(\"./Menu\");\n\nObject.keys(_Menu).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Menu[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=Menu.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Message = require(\"./Message\");\n\nObject.keys(_Message).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Message[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Message = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _helpers = require(\"../../helpers\");\n\nvar _primitives = require(\"../../platform/primitives\");\n\nvar _Flex = require(\"../Flex\");\n\nvar _Typography = require(\"../Typography\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _templateObject() {\n var data = _taggedTemplateLiteral([\"\\n background-color: \", \";\\n border-radius: 2px;\\n\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar StyledFlex = (0, _primitives.styledWrapper)(_Flex.Flex)(_templateObject(), (0, _helpers.color)(\"black5\"));\n/**\n * A generic message window for displaying ZerStates, notices, errors, etc.\n *\n * Spec: zpl.io/2Zg4Rdq\n */\n\nvar Message = function Message(_ref) {\n var children = _ref.children,\n _ref$textSize = _ref.textSize,\n textSize = _ref$textSize === void 0 ? \"3t\" : _ref$textSize,\n others = _objectWithoutProperties(_ref, [\"children\", \"textSize\"]);\n\n return _react.default.createElement(StyledFlex, _extends({\n p: 2\n }, others), _react.default.createElement(_Typography.Sans, {\n size: textSize,\n color: (0, _helpers.color)(\"black60\"),\n weight: \"regular\"\n }, children));\n};\n\nexports.Message = Message;\nMessage.displayName = \"Message\";\n//# sourceMappingURL=Message.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Modal = require(\"./Modal\");\n\nObject.keys(_Modal).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Modal[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=Modal.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Pagination = require(\"./Pagination\");\n\nObject.keys(_Pagination).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Pagination[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=Pagination.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _LabeledRange = require(\"./LabeledRange\");\n\nObject.keys(_LabeledRange).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _LabeledRange[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=LabeledRange.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _LineChart = require(\"./LineChart\");\n\nObject.keys(_LineChart).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _LineChart[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=LineChart.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Link = require(\"./Link\");\n\nObject.keys(_Link).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Link[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=Link.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _PageLoader = require(\"./PageLoader\");\n\nObject.keys(_PageLoader).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _PageLoader[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=PageLoader.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _PriceRange = require(\"./PriceRange\");\n\nObject.keys(_PriceRange).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _PriceRange[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=PriceRange.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _ProgressBar = require(\"./ProgressBar\");\n\nObject.keys(_ProgressBar).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ProgressBar[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=ProgressBar.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _ProgressBarTimer = require(\"./ProgressBarTimer\");\n\nObject.keys(_ProgressBarTimer).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ProgressBarTimer[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=ProgressBarTimer.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Radio = require(\"./Radio\");\n\nObject.keys(_Radio).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Radio[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=Radio.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _RadioGroup = require(\"./RadioGroup\");\n\nObject.keys(_RadioGroup).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _RadioGroup[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=RadioGroup.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _ReadMore = require(\"./ReadMore\");\n\nObject.keys(_ReadMore).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ReadMore[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=ReadMore.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Select = require(\"./Select\");\n\nObject.keys(_Select).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Select[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=Select.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Separator = require(\"./Separator\");\n\nObject.keys(_Separator).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Separator[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Separator = void 0;\n\nvar _styledSystem = require(\"styled-system\");\n\nvar _helpers = require(\"../../helpers\");\n\nvar _primitives = require(\"../../platform/primitives\");\n\nfunction _templateObject() {\n var data = _taggedTemplateLiteral([\"\\n border: 1px solid \", \";\\n border-bottom-width: 0;\\n \", \";\\n \", \";\\n\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\n/**\n * A horizontal divider whose width and spacing can be adjusted\n */\nvar Separator = _primitives.styled.View(_templateObject(), (0, _helpers.color)(\"black10\"), _styledSystem.space, _styledSystem.width);\n\nexports.Separator = Separator;\nSeparator.defaultProps = {\n width: \"100%\"\n};\n//# sourceMappingURL=Separator.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Slider = require(\"./Slider\");\n\nObject.keys(_Slider).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Slider[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=Slider.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Spacer = require(\"./Spacer\");\n\nObject.keys(_Spacer).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Spacer[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Spacer = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Box = require(\"../../elements/Box\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A component used to inject space where it's needed\n */\nvar Spacer = function Spacer(props) {\n return _react.default.createElement(_Box.Box, props);\n};\n\nexports.Spacer = Spacer;\nSpacer.displayName = \"Spacer\";\nSpacer.displayName = \"Spacer\";\n//# sourceMappingURL=Spacer.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _StackableBorderBox = require(\"./StackableBorderBox\");\n\nObject.keys(_StackableBorderBox).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _StackableBorderBox[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=StackableBorderBox.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _StaticCountdownTimer = require(\"./StaticCountdownTimer\");\n\nObject.keys(_StaticCountdownTimer).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _StaticCountdownTimer[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=StaticCountdownTimer.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Stepper = require(\"./Stepper\");\n\nObject.keys(_Stepper).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Stepper[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=Stepper.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Tabs = require(\"./Tabs\");\n\nObject.keys(_Tabs).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Tabs[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=Tabs.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Tags = require(\"./Tags\");\n\nObject.keys(_Tags).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Tags[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=Tags.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _TextArea = require(\"./TextArea\");\n\nObject.keys(_TextArea).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _TextArea[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=TextArea.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _TimeRemaining = require(\"./TimeRemaining\");\n\nObject.keys(_TimeRemaining).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _TimeRemaining[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TimeRemaining = void 0;\n\nvar _luxon = require(\"luxon\");\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _ = require(\"../\");\n\nvar _useCurrentTime = require(\"../../utils/useCurrentTime\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction padWithZero(num) {\n return num.toString().padStart(2, \"0\");\n}\n/** TimeRemaining */\n\n\nvar TimeRemaining = function TimeRemaining(_ref) {\n var countdownEnd = _ref.countdownEnd,\n currentTime = _ref.currentTime,\n _ref$highlight = _ref.highlight,\n highlight = _ref$highlight === void 0 ? \"purple100\" : _ref$highlight,\n _ref$labelFontSize = _ref.labelFontSize,\n labelFontSize = _ref$labelFontSize === void 0 ? \"3\" : _ref$labelFontSize,\n labelWithoutTimeRemaining = _ref.labelWithoutTimeRemaining,\n labelWithTimeRemaining = _ref.labelWithTimeRemaining,\n timeEndedDisplayText = _ref.timeEndedDisplayText,\n _ref$timerFontSize = _ref.timerFontSize,\n timerFontSize = _ref$timerFontSize === void 0 ? \"3\" : _ref$timerFontSize,\n trailingText = _ref.trailingText;\n\n var duration = _luxon.Duration.fromISO(_luxon.DateTime.fromISO(countdownEnd).diff((0, _useCurrentTime.useCurrentTime)(currentTime)).toString());\n\n var hasEnded = Math.floor(duration.seconds) <= 0;\n var days = \"\".concat(padWithZero(Math.max(0, Math.floor(duration.as(\"days\")))), \"d \");\n var hours = \"\".concat(padWithZero(Math.max(0, Math.floor(duration.as(\"hours\") % 24))), \"h \");\n var minutes = \"\".concat(padWithZero(Math.max(0, Math.floor(duration.as(\"minutes\") % 60))), \"m \");\n var seconds = \"\".concat(padWithZero(Math.max(0, Math.floor(duration.as(\"seconds\") % 60))), \"s\");\n return _react.default.createElement(_.Flex, {\n flexDirection: \"column\",\n alignItems: \"center\"\n }, _react.default.createElement(_.Sans, {\n size: timerFontSize,\n color: highlight,\n weight: \"medium\"\n }, hasEnded && timeEndedDisplayText ? timeEndedDisplayText : _react.default.createElement(_react.default.Fragment, null, days, hours, minutes, seconds, trailingText && \" \".concat(trailingText))), (labelWithTimeRemaining || labelWithoutTimeRemaining) && _react.default.createElement(_.Sans, {\n size: labelFontSize,\n weight: \"medium\"\n }, hasEnded ? labelWithoutTimeRemaining : labelWithTimeRemaining));\n};\n\nexports.TimeRemaining = TimeRemaining;\nTimeRemaining.displayName = \"TimeRemaining\";\n//# sourceMappingURL=TimeRemaining.js.map","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _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\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\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 _construct = Reflect.construct;\n } else {\n _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\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _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\n// these aren't really private, but nor are they really useful to document\n\n/**\r\n * @private\r\n */\nvar LuxonError =\n/*#__PURE__*/\nfunction (_Error) {\n _inheritsLoose(LuxonError, _Error);\n\n function LuxonError() {\n return _Error.apply(this, arguments) || this;\n }\n\n return LuxonError;\n}(_wrapNativeSuper(Error));\n/**\r\n * @private\r\n */\n\n\nvar InvalidDateTimeError =\n/*#__PURE__*/\nfunction (_LuxonError) {\n _inheritsLoose(InvalidDateTimeError, _LuxonError);\n\n function InvalidDateTimeError(reason) {\n return _LuxonError.call(this, \"Invalid DateTime: \" + reason.toMessage()) || this;\n }\n\n return InvalidDateTimeError;\n}(LuxonError);\n/**\r\n * @private\r\n */\n\nvar InvalidIntervalError =\n/*#__PURE__*/\nfunction (_LuxonError2) {\n _inheritsLoose(InvalidIntervalError, _LuxonError2);\n\n function InvalidIntervalError(reason) {\n return _LuxonError2.call(this, \"Invalid Interval: \" + reason.toMessage()) || this;\n }\n\n return InvalidIntervalError;\n}(LuxonError);\n/**\r\n * @private\r\n */\n\nvar InvalidDurationError =\n/*#__PURE__*/\nfunction (_LuxonError3) {\n _inheritsLoose(InvalidDurationError, _LuxonError3);\n\n function InvalidDurationError(reason) {\n return _LuxonError3.call(this, \"Invalid Duration: \" + reason.toMessage()) || this;\n }\n\n return InvalidDurationError;\n}(LuxonError);\n/**\r\n * @private\r\n */\n\nvar ConflictingSpecificationError =\n/*#__PURE__*/\nfunction (_LuxonError4) {\n _inheritsLoose(ConflictingSpecificationError, _LuxonError4);\n\n function ConflictingSpecificationError() {\n return _LuxonError4.apply(this, arguments) || this;\n }\n\n return ConflictingSpecificationError;\n}(LuxonError);\n/**\r\n * @private\r\n */\n\nvar InvalidUnitError =\n/*#__PURE__*/\nfunction (_LuxonError5) {\n _inheritsLoose(InvalidUnitError, _LuxonError5);\n\n function InvalidUnitError(unit) {\n return _LuxonError5.call(this, \"Invalid unit \" + unit) || this;\n }\n\n return InvalidUnitError;\n}(LuxonError);\n/**\r\n * @private\r\n */\n\nvar InvalidArgumentError =\n/*#__PURE__*/\nfunction (_LuxonError6) {\n _inheritsLoose(InvalidArgumentError, _LuxonError6);\n\n function InvalidArgumentError() {\n return _LuxonError6.apply(this, arguments) || this;\n }\n\n return InvalidArgumentError;\n}(LuxonError);\n/**\r\n * @private\r\n */\n\nvar ZoneIsAbstractError =\n/*#__PURE__*/\nfunction (_LuxonError7) {\n _inheritsLoose(ZoneIsAbstractError, _LuxonError7);\n\n function ZoneIsAbstractError() {\n return _LuxonError7.call(this, \"Zone is an abstract class\") || this;\n }\n\n return ZoneIsAbstractError;\n}(LuxonError);\n\n/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won't worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n/**\n * @private\n */\n// TYPES\n\nfunction isUndefined(o) {\n return typeof o === \"undefined\";\n}\nfunction isNumber(o) {\n return typeof o === \"number\";\n}\nfunction isString(o) {\n return typeof o === \"string\";\n}\nfunction isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n} // CAPABILITIES\n\nfunction hasIntl() {\n return typeof Intl !== \"undefined\" && Intl.DateTimeFormat;\n}\nfunction hasFormatToParts() {\n return !isUndefined(Intl.DateTimeFormat.prototype.formatToParts);\n}\nfunction hasRelative() {\n return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n} // OBJECTS AND ARRAYS\n\nfunction maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\nfunction bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n\n return arr.reduce(function (best, next) {\n var pair = [by(next), next];\n\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\nfunction pick(obj, keys) {\n return keys.reduce(function (a, k) {\n a[k] = obj[k];\n return a;\n }, {});\n} // NUMBERS AND STRINGS\n\nfunction numberBetween(thing, bottom, top) {\n return isNumber(thing) && thing >= bottom && thing <= top;\n} // x % n but takes the sign of n instead of x\n\nfunction floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\nfunction padStart(input, n) {\n if (n === void 0) {\n n = 2;\n }\n\n if (input.toString().length < n) {\n return (\"0\".repeat(n) + input).slice(-n);\n } else {\n return input.toString();\n }\n}\nfunction parseInteger(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\nfunction parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n return undefined;\n } else {\n var f = parseFloat(\"0.\" + fraction) * 1000;\n return Math.floor(f);\n }\n}\nfunction roundTo(number, digits, towardZero) {\n if (towardZero === void 0) {\n towardZero = false;\n }\n\n var factor = Math.pow(10, digits),\n rounder = towardZero ? Math.trunc : Math.round;\n return rounder(number * factor) / factor;\n} // DATE BASICS\n\nfunction isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\nfunction daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\nfunction daysInMonth(year, month) {\n var modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n} // covert a calendar object to a local timestamp (epoch, but with the offset baked in)\n\nfunction objToLocalTS(obj) {\n var d = Date.UTC(obj.year, obj.month - 1, obj.day, obj.hour, obj.minute, obj.second, obj.millisecond); // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n\n return +d;\n}\nfunction weeksInWeekYear(weekYear) {\n var p1 = (weekYear + Math.floor(weekYear / 4) - Math.floor(weekYear / 100) + Math.floor(weekYear / 400)) % 7,\n last = weekYear - 1,\n p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7;\n return p1 === 4 || p2 === 3 ? 53 : 52;\n}\nfunction untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > 60 ? 1900 + year : 2000 + year;\n} // PARSING\n\nfunction parseZoneInfo(ts, offsetFormat, locale, timeZone) {\n if (timeZone === void 0) {\n timeZone = null;\n }\n\n var date = new Date(ts),\n intlOpts = {\n hour12: false,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\"\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n var modified = Object.assign({\n timeZoneName: offsetFormat\n }, intlOpts),\n intl = hasIntl();\n\n if (intl && hasFormatToParts()) {\n var parsed = new Intl.DateTimeFormat(locale, modified).formatToParts(date).find(function (m) {\n return m.type.toLowerCase() === \"timezonename\";\n });\n return parsed ? parsed.value : null;\n } else if (intl) {\n // this probably doesn't work for all locales\n var without = new Intl.DateTimeFormat(locale, intlOpts).format(date),\n included = new Intl.DateTimeFormat(locale, modified).format(date),\n diffed = included.substring(without.length),\n trimmed = diffed.replace(/^[, \\u200e]+/, \"\");\n return trimmed;\n } else {\n return null;\n }\n} // signedOffset('-5', '30') -> -330\n\nfunction signedOffset(offHourStr, offMinuteStr) {\n var offHour = parseInt(offHourStr, 10) || 0,\n offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n} // COERCION\n\nfunction asNumber(value) {\n var numericValue = Number(value);\n if (typeof value === \"boolean\" || value === \"\" || Number.isNaN(numericValue)) throw new InvalidArgumentError(\"Invalid unit value \" + value);\n return numericValue;\n}\n\nfunction normalizeObject(obj, normalizer, nonUnitKeys) {\n var normalized = {};\n\n for (var u in obj) {\n if (obj.hasOwnProperty(u)) {\n if (nonUnitKeys.indexOf(u) >= 0) continue;\n var v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n\n return normalized;\n}\nfunction formatOffset(offset, format) {\n var hours = Math.trunc(offset / 60),\n minutes = Math.abs(offset % 60),\n sign = hours >= 0 ? \"+\" : \"-\",\n base = \"\" + sign + Math.abs(hours);\n\n switch (format) {\n case \"short\":\n return \"\" + sign + padStart(Math.abs(hours), 2) + \":\" + padStart(minutes, 2);\n\n case \"narrow\":\n return minutes > 0 ? base + \":\" + minutes : base;\n\n case \"techie\":\n return \"\" + sign + padStart(Math.abs(hours), 2) + padStart(minutes, 2);\n\n default:\n throw new RangeError(\"Value format \" + format + \" is out of range for property format\");\n }\n}\nfunction timeObject(obj) {\n return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n}\nvar ianaRegex = /[A-Za-z_+-]{1,256}(:?\\/[A-Za-z_+-]{1,256}(\\/[A-Za-z_+-]{1,256})?)?/;\n\n/**\r\n * @private\r\n */\nvar n = \"numeric\",\n s = \"short\",\n l = \"long\",\n d2 = \"2-digit\";\nvar DATE_SHORT = {\n year: n,\n month: n,\n day: n\n};\nvar DATE_MED = {\n year: n,\n month: s,\n day: n\n};\nvar DATE_FULL = {\n year: n,\n month: l,\n day: n\n};\nvar DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l\n};\nvar TIME_SIMPLE = {\n hour: n,\n minute: d2\n};\nvar TIME_WITH_SECONDS = {\n hour: n,\n minute: d2,\n second: d2\n};\nvar TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: d2,\n second: d2,\n timeZoneName: s\n};\nvar TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: d2,\n second: d2,\n timeZoneName: l\n};\nvar TIME_24_SIMPLE = {\n hour: n,\n minute: d2,\n hour12: false\n};\n/**\r\n * {@link toLocaleString}; format like '09:30:23', always 24-hour.\r\n */\n\nvar TIME_24_WITH_SECONDS = {\n hour: n,\n minute: d2,\n second: d2,\n hour12: false\n};\n/**\r\n * {@link toLocaleString}; format like '09:30:23 EDT', always 24-hour.\r\n */\n\nvar TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: d2,\n second: d2,\n hour12: false,\n timeZoneName: s\n};\n/**\r\n * {@link toLocaleString}; format like '09:30:23 Eastern Daylight Time', always 24-hour.\r\n */\n\nvar TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: d2,\n second: d2,\n hour12: false,\n timeZoneName: l\n};\n/**\r\n * {@link toLocaleString}; format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\r\n */\n\nvar DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: d2\n};\n/**\r\n * {@link toLocaleString}; format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\r\n */\n\nvar DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: d2,\n second: d2\n};\nvar DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: d2\n};\nvar DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: d2,\n second: d2\n};\nvar DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: d2,\n timeZoneName: s\n};\nvar DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: d2,\n second: d2,\n timeZoneName: s\n};\nvar DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: d2,\n timeZoneName: l\n};\nvar DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: d2,\n second: d2,\n timeZoneName: l\n};\n\nfunction stringify(obj) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n/**\r\n * @private\r\n */\n\n\nvar monthsLong = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\nvar monthsShort = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\nvar monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\nfunction months(length) {\n switch (length) {\n case \"narrow\":\n return monthsNarrow;\n\n case \"short\":\n return monthsShort;\n\n case \"long\":\n return monthsLong;\n\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\n\n case \"2-digit\":\n return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\n\n default:\n return null;\n }\n}\nvar weekdaysLong = [\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"];\nvar weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\nvar weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\nfunction weekdays(length) {\n switch (length) {\n case \"narrow\":\n return weekdaysNarrow;\n\n case \"short\":\n return weekdaysShort;\n\n case \"long\":\n return weekdaysLong;\n\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\n\n default:\n return null;\n }\n}\nvar meridiems = [\"AM\", \"PM\"];\nvar erasLong = [\"Before Christ\", \"Anno Domini\"];\nvar erasShort = [\"BC\", \"AD\"];\nvar erasNarrow = [\"B\", \"A\"];\nfunction eras(length) {\n switch (length) {\n case \"narrow\":\n return erasNarrow;\n\n case \"short\":\n return erasShort;\n\n case \"long\":\n return erasLong;\n\n default:\n return null;\n }\n}\nfunction meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\nfunction weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\nfunction monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\nfunction eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\nfunction formatRelativeTime(unit, count, numeric, narrow) {\n if (numeric === void 0) {\n numeric = \"always\";\n }\n\n if (narrow === void 0) {\n narrow = false;\n }\n\n var units = {\n years: [\"year\", \"yr.\"],\n quarters: [\"quarer\", \"qtr.\"],\n months: [\"month\", \"mo.\"],\n weeks: [\"week\", \"wk.\"],\n days: [\"day\", \"day\"],\n hours: [\"hour\", \"hr.\"],\n minutes: [\"minute\", \"min.\"],\n seconds: [\"second\", \"sec.\"]\n };\n var lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\n\n if (numeric === \"auto\" && lastable) {\n var isDay = unit === \"days\";\n\n switch (count) {\n case 1:\n return isDay ? \"tomorrow\" : \"next \" + units[unit][0];\n\n case -1:\n return isDay ? \"yesterday\" : \"last \" + units[unit][0];\n\n case 0:\n return isDay ? \"today\" : \"this \" + units[unit][0];\n\n default: // fall through\n\n }\n }\n\n var isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n fmtUnit = narrow ? units[unit][1] : fmtValue === 1 ? units[unit][0] : unit;\n return isInPast ? fmtValue + \" \" + fmtUnit + \" ago\" : \"in \" + fmtValue + \" \" + fmtUnit;\n}\nfunction formatString(knownFormat) {\n // these all have the offsets removed because we don't have access to them\n // without all the intl stuff this is backfilling\n var filtered = pick(knownFormat, [\"weekday\", \"era\", \"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"timeZoneName\", \"hour12\"]),\n key = stringify(filtered),\n dateTimeHuge = \"EEEE, LLLL d, yyyy, h:mm a\";\n\n switch (key) {\n case stringify(DATE_SHORT):\n return \"M/d/yyyy\";\n\n case stringify(DATE_MED):\n return \"LLL d, yyyy\";\n\n case stringify(DATE_FULL):\n return \"LLLL d, yyyy\";\n\n case stringify(DATE_HUGE):\n return \"EEEE, LLLL d, yyyy\";\n\n case stringify(TIME_SIMPLE):\n return \"h:mm a\";\n\n case stringify(TIME_WITH_SECONDS):\n return \"h:mm:ss a\";\n\n case stringify(TIME_WITH_SHORT_OFFSET):\n return \"h:mm a\";\n\n case stringify(TIME_WITH_LONG_OFFSET):\n return \"h:mm a\";\n\n case stringify(TIME_24_SIMPLE):\n return \"HH:mm\";\n\n case stringify(TIME_24_WITH_SECONDS):\n return \"HH:mm:ss\";\n\n case stringify(TIME_24_WITH_SHORT_OFFSET):\n return \"HH:mm\";\n\n case stringify(TIME_24_WITH_LONG_OFFSET):\n return \"HH:mm\";\n\n case stringify(DATETIME_SHORT):\n return \"M/d/yyyy, h:mm a\";\n\n case stringify(DATETIME_MED):\n return \"LLL d, yyyy, h:mm a\";\n\n case stringify(DATETIME_FULL):\n return \"LLLL d, yyyy, h:mm a\";\n\n case stringify(DATETIME_HUGE):\n return dateTimeHuge;\n\n case stringify(DATETIME_SHORT_WITH_SECONDS):\n return \"M/d/yyyy, h:mm:ss a\";\n\n case stringify(DATETIME_MED_WITH_SECONDS):\n return \"LLL d, yyyy, h:mm:ss a\";\n\n case stringify(DATETIME_FULL_WITH_SECONDS):\n return \"LLLL d, yyyy, h:mm:ss a\";\n\n case stringify(DATETIME_HUGE_WITH_SECONDS):\n return \"EEEE, LLLL d, yyyy, h:mm:ss a\";\n\n default:\n return dateTimeHuge;\n }\n}\n\n/**\r\n * @interface\r\n */\n\nvar Zone =\n/*#__PURE__*/\nfunction () {\n function Zone() {}\n\n var _proto = Zone.prototype;\n\n /**\r\n * Returns the offset's common name (such as EST) at the specified timestamp\r\n * @abstract\r\n * @param {number} ts - Epoch milliseconds for which to get the name\r\n * @param {Object} opts - Options to affect the format\r\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\r\n * @param {string} opts.locale - What locale to return the offset name in.\r\n * @return {string}\r\n */\n _proto.offsetName = function offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n /**\r\n * Returns the offset's value as a string\r\n * @abstract\r\n * @param {number} ts - Epoch milliseconds for which to get the offset\r\n * @param {string} format - What style of offset to return.\r\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\r\n * @return {string}\r\n */\n ;\n\n _proto.formatOffset = function formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n /**\r\n * Return the offset in minutes for this zone at the specified timestamp.\r\n * @abstract\r\n * @param {number} ts - Epoch milliseconds for which to compute the offset\r\n * @return {number}\r\n */\n ;\n\n _proto.offset = function offset(ts) {\n throw new ZoneIsAbstractError();\n }\n /**\r\n * Return whether this Zone is equal to another zone\r\n * @abstract\r\n * @param {Zone} otherZone - the zone to compare\r\n * @return {boolean}\r\n */\n ;\n\n _proto.equals = function equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n /**\r\n * Return whether this Zone is valid.\r\n * @abstract\r\n * @type {boolean}\r\n */\n ;\n\n _createClass(Zone, [{\n key: \"type\",\n\n /**\r\n * The type of zone\r\n * @abstract\r\n * @type {string}\r\n */\n get: function get() {\n throw new ZoneIsAbstractError();\n }\n /**\r\n * The name of this zone.\r\n * @abstract\r\n * @type {string}\r\n */\n\n }, {\n key: \"name\",\n get: function get() {\n throw new ZoneIsAbstractError();\n }\n /**\r\n * Returns whether the offset is known to be fixed for the whole year.\r\n * @abstract\r\n * @type {boolean}\r\n */\n\n }, {\n key: \"universal\",\n get: function get() {\n throw new ZoneIsAbstractError();\n }\n }, {\n key: \"isValid\",\n get: function get() {\n throw new ZoneIsAbstractError();\n }\n }]);\n\n return Zone;\n}();\n\nvar singleton = null;\n/**\r\n * Represents the local zone for this Javascript environment.\r\n * @implements {Zone}\r\n */\n\nvar LocalZone =\n/*#__PURE__*/\nfunction (_Zone) {\n _inheritsLoose(LocalZone, _Zone);\n\n function LocalZone() {\n return _Zone.apply(this, arguments) || this;\n }\n\n var _proto = LocalZone.prototype;\n\n /** @override **/\n _proto.offsetName = function offsetName(ts, _ref) {\n var format = _ref.format,\n locale = _ref.locale;\n return parseZoneInfo(ts, format, locale);\n }\n /** @override **/\n ;\n\n _proto.formatOffset = function formatOffset$1(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n /** @override **/\n ;\n\n _proto.offset = function offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n /** @override **/\n ;\n\n _proto.equals = function equals(otherZone) {\n return otherZone.type === \"local\";\n }\n /** @override **/\n ;\n\n _createClass(LocalZone, [{\n key: \"type\",\n\n /** @override **/\n get: function get() {\n return \"local\";\n }\n /** @override **/\n\n }, {\n key: \"name\",\n get: function get() {\n if (hasIntl()) {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n } else return \"local\";\n }\n /** @override **/\n\n }, {\n key: \"universal\",\n get: function get() {\n return false;\n }\n }, {\n key: \"isValid\",\n get: function get() {\n return true;\n }\n }], [{\n key: \"instance\",\n\n /**\r\n * Get a singleton instance of the local zone\r\n * @return {LocalZone}\r\n */\n get: function get() {\n if (singleton === null) {\n singleton = new LocalZone();\n }\n\n return singleton;\n }\n }]);\n\n return LocalZone;\n}(Zone);\n\nvar matchingRegex = RegExp(\"^\" + ianaRegex.source + \"$\");\nvar dtfCache = {};\n\nfunction makeDTF(zone) {\n if (!dtfCache[zone]) {\n dtfCache[zone] = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: zone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\"\n });\n }\n\n return dtfCache[zone];\n}\n\nvar typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5\n};\n\nfunction hackyOffset(dtf, date) {\n var formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n fMonth = parsed[1],\n fDay = parsed[2],\n fYear = parsed[3],\n fHour = parsed[4],\n fMinute = parsed[5],\n fSecond = parsed[6];\n return [fYear, fMonth, fDay, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n var formatted = dtf.formatToParts(date),\n filled = [];\n\n for (var i = 0; i < formatted.length; i++) {\n var _formatted$i = formatted[i],\n type = _formatted$i.type,\n value = _formatted$i.value,\n pos = typeToPos[type];\n\n if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n\n return filled;\n}\n\nvar ianaZoneCache = {};\n/**\r\n * A zone identified by an IANA identifier, like America/New_York\r\n * @implements {Zone}\r\n */\n\nvar IANAZone =\n/*#__PURE__*/\nfunction (_Zone) {\n _inheritsLoose(IANAZone, _Zone);\n\n /**\r\n * @param {string} name - Zone name\r\n * @return {IANAZone}\r\n */\n IANAZone.create = function create(name) {\n if (!ianaZoneCache[name]) {\n ianaZoneCache[name] = new IANAZone(name);\n }\n\n return ianaZoneCache[name];\n }\n /**\r\n * Reset local caches. Should only be necessary in testing scenarios.\r\n * @return {void}\r\n */\n ;\n\n IANAZone.resetCache = function resetCache() {\n ianaZoneCache = {};\n dtfCache = {};\n }\n /**\r\n * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\r\n * @param {string} s - The string to check validity on\r\n * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\r\n * @example IANAZone.isValidSpecifier(\"Fantasia/Castle\") //=> true\r\n * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\r\n * @return {boolean}\r\n */\n ;\n\n IANAZone.isValidSpecifier = function isValidSpecifier(s) {\n return !!(s && s.match(matchingRegex));\n }\n /**\r\n * Returns whether the provided string identifies a real zone\r\n * @param {string} zone - The string to check\r\n * @example IANAZone.isValidZone(\"America/New_York\") //=> true\r\n * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\r\n * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\r\n * @return {boolean}\r\n */\n ;\n\n IANAZone.isValidZone = function isValidZone(zone) {\n try {\n new Intl.DateTimeFormat(\"en-US\", {\n timeZone: zone\n }).format();\n return true;\n } catch (e) {\n return false;\n }\n } // Etc/GMT+8 -> -480\n\n /** @ignore */\n ;\n\n IANAZone.parseGMTOffset = function parseGMTOffset(specifier) {\n if (specifier) {\n var match = specifier.match(/^Etc\\/GMT([+-]\\d{1,2})$/i);\n\n if (match) {\n return -60 * parseInt(match[1]);\n }\n }\n\n return null;\n };\n\n function IANAZone(name) {\n var _this;\n\n _this = _Zone.call(this) || this;\n /** @private **/\n\n _this.zoneName = name;\n /** @private **/\n\n _this.valid = IANAZone.isValidZone(name);\n return _this;\n }\n /** @override **/\n\n\n var _proto = IANAZone.prototype;\n\n /** @override **/\n _proto.offsetName = function offsetName(ts, _ref) {\n var format = _ref.format,\n locale = _ref.locale;\n return parseZoneInfo(ts, format, locale, this.name);\n }\n /** @override **/\n ;\n\n _proto.formatOffset = function formatOffset$1(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n /** @override **/\n ;\n\n _proto.offset = function offset(ts) {\n var date = new Date(ts),\n dtf = makeDTF(this.name),\n _ref2 = dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date),\n year = _ref2[0],\n month = _ref2[1],\n day = _ref2[2],\n hour = _ref2[3],\n minute = _ref2[4],\n second = _ref2[5];\n\n var asUTC = objToLocalTS({\n year: year,\n month: month,\n day: day,\n hour: hour,\n minute: minute,\n second: second,\n millisecond: 0\n });\n var asTS = date.valueOf();\n asTS -= asTS % 1000;\n return (asUTC - asTS) / (60 * 1000);\n }\n /** @override **/\n ;\n\n _proto.equals = function equals(otherZone) {\n return otherZone.type === \"iana\" && otherZone.name === this.name;\n }\n /** @override **/\n ;\n\n _createClass(IANAZone, [{\n key: \"type\",\n get: function get() {\n return \"iana\";\n }\n /** @override **/\n\n }, {\n key: \"name\",\n get: function get() {\n return this.zoneName;\n }\n /** @override **/\n\n }, {\n key: \"universal\",\n get: function get() {\n return false;\n }\n }, {\n key: \"isValid\",\n get: function get() {\n return this.valid;\n }\n }]);\n\n return IANAZone;\n}(Zone);\n\nvar singleton$1 = null;\n/**\r\n * A zone with a fixed offset (i.e. no DST)\r\n * @implements {Zone}\r\n */\n\nvar FixedOffsetZone =\n/*#__PURE__*/\nfunction (_Zone) {\n _inheritsLoose(FixedOffsetZone, _Zone);\n\n /**\r\n * Get an instance with a specified offset\r\n * @param {number} offset - The offset in minutes\r\n * @return {FixedOffsetZone}\r\n */\n FixedOffsetZone.instance = function instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n /**\r\n * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\r\n * @param {string} s - The offset string to parse\r\n * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\r\n * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\r\n * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\r\n * @return {FixedOffsetZone}\r\n */\n ;\n\n FixedOffsetZone.parseSpecifier = function parseSpecifier(s) {\n if (s) {\n var r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n\n return null;\n };\n\n _createClass(FixedOffsetZone, null, [{\n key: \"utcInstance\",\n\n /**\r\n * Get a singleton instance of UTC\r\n * @return {FixedOffsetZone}\r\n */\n get: function get() {\n if (singleton$1 === null) {\n singleton$1 = new FixedOffsetZone(0);\n }\n\n return singleton$1;\n }\n }]);\n\n function FixedOffsetZone(offset) {\n var _this;\n\n _this = _Zone.call(this) || this;\n /** @private **/\n\n _this.fixed = offset;\n return _this;\n }\n /** @override **/\n\n\n var _proto = FixedOffsetZone.prototype;\n\n /** @override **/\n _proto.offsetName = function offsetName() {\n return this.name;\n }\n /** @override **/\n ;\n\n _proto.formatOffset = function formatOffset$1(ts, format) {\n return formatOffset(this.fixed, format);\n }\n /** @override **/\n ;\n\n /** @override **/\n _proto.offset = function offset() {\n return this.fixed;\n }\n /** @override **/\n ;\n\n _proto.equals = function equals(otherZone) {\n return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n }\n /** @override **/\n ;\n\n _createClass(FixedOffsetZone, [{\n key: \"type\",\n get: function get() {\n return \"fixed\";\n }\n /** @override **/\n\n }, {\n key: \"name\",\n get: function get() {\n return this.fixed === 0 ? \"UTC\" : \"UTC\" + formatOffset(this.fixed, \"narrow\");\n }\n }, {\n key: \"universal\",\n get: function get() {\n return true;\n }\n }, {\n key: \"isValid\",\n get: function get() {\n return true;\n }\n }]);\n\n return FixedOffsetZone;\n}(Zone);\n\n/**\r\n * A zone that failed to parse. You should never need to instantiate this.\r\n * @implements {Zone}\r\n */\n\nvar InvalidZone =\n/*#__PURE__*/\nfunction (_Zone) {\n _inheritsLoose(InvalidZone, _Zone);\n\n function InvalidZone(zoneName) {\n var _this;\n\n _this = _Zone.call(this) || this;\n /** @private */\n\n _this.zoneName = zoneName;\n return _this;\n }\n /** @override **/\n\n\n var _proto = InvalidZone.prototype;\n\n /** @override **/\n _proto.offsetName = function offsetName() {\n return null;\n }\n /** @override **/\n ;\n\n _proto.formatOffset = function formatOffset() {\n return \"\";\n }\n /** @override **/\n ;\n\n _proto.offset = function offset() {\n return NaN;\n }\n /** @override **/\n ;\n\n _proto.equals = function equals() {\n return false;\n }\n /** @override **/\n ;\n\n _createClass(InvalidZone, [{\n key: \"type\",\n get: function get() {\n return \"invalid\";\n }\n /** @override **/\n\n }, {\n key: \"name\",\n get: function get() {\n return this.zoneName;\n }\n /** @override **/\n\n }, {\n key: \"universal\",\n get: function get() {\n return false;\n }\n }, {\n key: \"isValid\",\n get: function get() {\n return false;\n }\n }]);\n\n return InvalidZone;\n}(Zone);\n\n/**\r\n * @private\r\n */\nfunction normalizeZone(input, defaultZone) {\n var offset;\n\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n var lowered = input.toLowerCase();\n if (lowered === \"local\") return defaultZone;else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;else if ((offset = IANAZone.parseGMTOffset(input)) != null) {\n // handle Etc/GMT-4, which V8 chokes on\n return FixedOffsetZone.instance(offset);\n } else if (IANAZone.isValidSpecifier(lowered)) return IANAZone.create(input);else return FixedOffsetZone.parseSpecifier(lowered) || new InvalidZone(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === \"object\" && input.offset && typeof input.offset === \"number\") {\n // This is dumb, but the instanceof check above doesn't seem to really work\n // so we're duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n\nvar now = function now() {\n return Date.now();\n},\n defaultZone = null,\n // not setting this directly to LocalZone.instance bc loading order issues\ndefaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n throwOnInvalid = false;\n/**\r\n * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\r\n */\n\n\nvar Settings =\n/*#__PURE__*/\nfunction () {\n function Settings() {}\n\n /**\r\n * Reset Luxon's global caches. Should only be necessary in testing scenarios.\r\n * @return {void}\r\n */\n Settings.resetCaches = function resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n };\n\n _createClass(Settings, null, [{\n key: \"now\",\n\n /**\r\n * Get the callback for returning the current timestamp.\r\n * @type {function}\r\n */\n get: function get() {\n return now;\n }\n /**\r\n * Set the callback for returning the current timestamp.\r\n * The function should return a number, which will be interpreted as an Epoch millisecond count\r\n * @type {function}\r\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\r\n * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\r\n */\n ,\n set: function set(n) {\n now = n;\n }\n /**\r\n * Get the default time zone to create DateTimes in.\r\n * @type {string}\r\n */\n\n }, {\n key: \"defaultZoneName\",\n get: function get() {\n return Settings.defaultZone.name;\n }\n /**\r\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\r\n * @type {string}\r\n */\n ,\n set: function set(z) {\n if (!z) {\n defaultZone = null;\n } else {\n defaultZone = normalizeZone(z);\n }\n }\n /**\r\n * Get the default time zone object to create DateTimes in. Does not affect existing instances.\r\n * @type {Zone}\r\n */\n\n }, {\n key: \"defaultZone\",\n get: function get() {\n return defaultZone || LocalZone.instance;\n }\n /**\r\n * Get the default locale to create DateTimes with. Does not affect existing instances.\r\n * @type {string}\r\n */\n\n }, {\n key: \"defaultLocale\",\n get: function get() {\n return defaultLocale;\n }\n /**\r\n * Set the default locale to create DateTimes with. Does not affect existing instances.\r\n * @type {string}\r\n */\n ,\n set: function set(locale) {\n defaultLocale = locale;\n }\n /**\r\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\r\n * @type {string}\r\n */\n\n }, {\n key: \"defaultNumberingSystem\",\n get: function get() {\n return defaultNumberingSystem;\n }\n /**\r\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\r\n * @type {string}\r\n */\n ,\n set: function set(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n /**\r\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\r\n * @type {string}\r\n */\n\n }, {\n key: \"defaultOutputCalendar\",\n get: function get() {\n return defaultOutputCalendar;\n }\n /**\r\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\r\n * @type {string}\r\n */\n ,\n set: function set(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n /**\r\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\r\n * @type {boolean}\r\n */\n\n }, {\n key: \"throwOnInvalid\",\n get: function get() {\n return throwOnInvalid;\n }\n /**\r\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\r\n * @type {boolean}\r\n */\n ,\n set: function set(t) {\n throwOnInvalid = t;\n }\n }]);\n\n return Settings;\n}();\n\nfunction stringifyTokens(splits, tokenToString) {\n var s = \"\";\n\n for (var _iterator = splits, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var token = _ref;\n\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n\n return s;\n}\n\nvar tokenToObject = {\n D: DATE_SHORT,\n DD: DATE_MED,\n DDD: DATE_FULL,\n DDDD: DATE_HUGE,\n t: TIME_SIMPLE,\n tt: TIME_WITH_SECONDS,\n ttt: TIME_WITH_SHORT_OFFSET,\n tttt: TIME_WITH_LONG_OFFSET,\n T: TIME_24_SIMPLE,\n TT: TIME_24_WITH_SECONDS,\n TTT: TIME_24_WITH_SHORT_OFFSET,\n TTTT: TIME_24_WITH_LONG_OFFSET,\n f: DATETIME_SHORT,\n ff: DATETIME_MED,\n fff: DATETIME_FULL,\n ffff: DATETIME_HUGE,\n F: DATETIME_SHORT_WITH_SECONDS,\n FF: DATETIME_MED_WITH_SECONDS,\n FFF: DATETIME_FULL_WITH_SECONDS,\n FFFF: DATETIME_HUGE_WITH_SECONDS\n};\n/**\n * @private\n */\n\nvar Formatter =\n/*#__PURE__*/\nfunction () {\n Formatter.create = function create(locale, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n return new Formatter(locale, opts);\n };\n\n Formatter.parseFormat = function parseFormat(fmt) {\n var current = null,\n currentFull = \"\",\n bracketed = false;\n var splits = [];\n\n for (var i = 0; i < fmt.length; i++) {\n var c = fmt.charAt(i);\n\n if (c === \"'\") {\n if (currentFull.length > 0) {\n splits.push({\n literal: bracketed,\n val: currentFull\n });\n }\n\n current = null;\n currentFull = \"\";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({\n literal: false,\n val: currentFull\n });\n }\n\n currentFull = c;\n current = c;\n }\n }\n\n if (currentFull.length > 0) {\n splits.push({\n literal: bracketed,\n val: currentFull\n });\n }\n\n return splits;\n };\n\n function Formatter(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n\n var _proto = Formatter.prototype;\n\n _proto.formatWithSystemDefault = function formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n\n var df = this.systemLoc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.format();\n };\n\n _proto.formatDateTime = function formatDateTime(dt, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.format();\n };\n\n _proto.formatDateTimeParts = function formatDateTimeParts(dt, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.formatToParts();\n };\n\n _proto.resolvedOptions = function resolvedOptions(dt, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var df = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n return df.resolvedOptions();\n };\n\n _proto.num = function num(n, p) {\n if (p === void 0) {\n p = 0;\n }\n\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n\n var opts = Object.assign({}, this.opts);\n\n if (p > 0) {\n opts.padTo = p;\n }\n\n return this.loc.numberFormatter(opts).format(n);\n };\n\n _proto.formatDateTimeFromString = function formatDateTimeFromString(dt, fmt) {\n var _this = this;\n\n var knownEnglish = this.loc.listingMode() === \"en\";\n\n var string = function string(opts, extract) {\n return _this.loc.extract(dt, opts, extract);\n },\n formatOffset = function formatOffset(opts) {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return \"Z\";\n }\n\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\n },\n meridiem = function meridiem() {\n return knownEnglish ? meridiemForDateTime(dt) : string({\n hour: \"numeric\",\n hour12: true\n }, \"dayperiod\");\n },\n month = function month(length, standalone) {\n return knownEnglish ? monthForDateTime(dt, length) : string(standalone ? {\n month: length\n } : {\n month: length,\n day: \"numeric\"\n }, \"month\");\n },\n weekday = function weekday(length, standalone) {\n return knownEnglish ? weekdayForDateTime(dt, length) : string(standalone ? {\n weekday: length\n } : {\n weekday: length,\n month: \"long\",\n day: \"numeric\"\n }, \"weekday\");\n },\n maybeMacro = function maybeMacro(token) {\n var macro = tokenToObject[token];\n\n if (macro) {\n return _this.formatWithSystemDefault(dt, macro);\n } else {\n return token;\n }\n },\n era = function era(length) {\n return knownEnglish ? eraForDateTime(dt, length) : string({\n era: length\n }, \"era\");\n },\n tokenToString = function tokenToString(token) {\n var outputCal = _this.loc.outputCalendar; // Where possible: http://cldr.unicode.org/translation/date-time#TOC-Stand-Alone-vs.-Format-Styles\n\n switch (token) {\n // ms\n case \"S\":\n return _this.num(dt.millisecond);\n\n case \"u\": // falls through\n\n case \"SSS\":\n return _this.num(dt.millisecond, 3);\n // seconds\n\n case \"s\":\n return _this.num(dt.second);\n\n case \"ss\":\n return _this.num(dt.second, 2);\n // minutes\n\n case \"m\":\n return _this.num(dt.minute);\n\n case \"mm\":\n return _this.num(dt.minute, 2);\n // hours\n\n case \"h\":\n return _this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n\n case \"hh\":\n return _this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n\n case \"H\":\n return _this.num(dt.hour);\n\n case \"HH\":\n return _this.num(dt.hour, 2);\n // offset\n\n case \"Z\":\n // like +6\n return formatOffset({\n format: \"narrow\",\n allowZ: _this.opts.allowZ\n });\n\n case \"ZZ\":\n // like +06:00\n return formatOffset({\n format: \"short\",\n allowZ: _this.opts.allowZ\n });\n\n case \"ZZZ\":\n // like +0600\n return formatOffset({\n format: \"techie\",\n allowZ: false\n });\n\n case \"ZZZZ\":\n // like EST\n return dt.zone.offsetName(dt.ts, {\n format: \"short\",\n locale: _this.loc.locale\n });\n\n case \"ZZZZZ\":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, {\n format: \"long\",\n locale: _this.loc.locale\n });\n // zone\n\n case \"z\":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n\n case \"a\":\n return meridiem();\n // dates\n\n case \"d\":\n return outputCal ? string({\n day: \"numeric\"\n }, \"day\") : _this.num(dt.day);\n\n case \"dd\":\n return outputCal ? string({\n day: \"2-digit\"\n }, \"day\") : _this.num(dt.day, 2);\n // weekdays - standalone\n\n case \"c\":\n // like 1\n return _this.num(dt.weekday);\n\n case \"ccc\":\n // like 'Tues'\n return weekday(\"short\", true);\n\n case \"cccc\":\n // like 'Tuesday'\n return weekday(\"long\", true);\n\n case \"ccccc\":\n // like 'T'\n return weekday(\"narrow\", true);\n // weekdays - format\n\n case \"E\":\n // like 1\n return _this.num(dt.weekday);\n\n case \"EEE\":\n // like 'Tues'\n return weekday(\"short\", false);\n\n case \"EEEE\":\n // like 'Tuesday'\n return weekday(\"long\", false);\n\n case \"EEEEE\":\n // like 'T'\n return weekday(\"narrow\", false);\n // months - standalone\n\n case \"L\":\n // like 1\n return outputCal ? string({\n month: \"numeric\",\n day: \"numeric\"\n }, \"month\") : _this.num(dt.month);\n\n case \"LL\":\n // like 01, doesn't seem to work\n return outputCal ? string({\n month: \"2-digit\",\n day: \"numeric\"\n }, \"month\") : _this.num(dt.month, 2);\n\n case \"LLL\":\n // like Jan\n return month(\"short\", true);\n\n case \"LLLL\":\n // like January\n return month(\"long\", true);\n\n case \"LLLLL\":\n // like J\n return month(\"narrow\", true);\n // months - format\n\n case \"M\":\n // like 1\n return outputCal ? string({\n month: \"numeric\"\n }, \"month\") : _this.num(dt.month);\n\n case \"MM\":\n // like 01\n return outputCal ? string({\n month: \"2-digit\"\n }, \"month\") : _this.num(dt.month, 2);\n\n case \"MMM\":\n // like Jan\n return month(\"short\", false);\n\n case \"MMMM\":\n // like January\n return month(\"long\", false);\n\n case \"MMMMM\":\n // like J\n return month(\"narrow\", false);\n // years\n\n case \"y\":\n // like 2014\n return outputCal ? string({\n year: \"numeric\"\n }, \"year\") : _this.num(dt.year);\n\n case \"yy\":\n // like 14\n return outputCal ? string({\n year: \"2-digit\"\n }, \"year\") : _this.num(dt.year.toString().slice(-2), 2);\n\n case \"yyyy\":\n // like 0012\n return outputCal ? string({\n year: \"numeric\"\n }, \"year\") : _this.num(dt.year, 4);\n\n case \"yyyyyy\":\n // like 000012\n return outputCal ? string({\n year: \"numeric\"\n }, \"year\") : _this.num(dt.year, 6);\n // eras\n\n case \"G\":\n // like AD\n return era(\"short\");\n\n case \"GG\":\n // like Anno Domini\n return era(\"long\");\n\n case \"GGGGG\":\n return era(\"narrow\");\n\n case \"kk\":\n return _this.num(dt.weekYear.toString().slice(-2), 2);\n\n case \"kkkk\":\n return _this.num(dt.weekYear, 4);\n\n case \"W\":\n return _this.num(dt.weekNumber);\n\n case \"WW\":\n return _this.num(dt.weekNumber, 2);\n\n case \"o\":\n return _this.num(dt.ordinal);\n\n case \"ooo\":\n return _this.num(dt.ordinal, 3);\n\n case \"q\":\n // like 1\n return _this.num(dt.quarter);\n\n case \"qq\":\n // like 01\n return _this.num(dt.quarter, 2);\n\n case \"X\":\n return _this.num(Math.floor(dt.ts / 1000));\n\n case \"x\":\n return _this.num(dt.ts);\n\n default:\n return maybeMacro(token);\n }\n };\n\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n };\n\n _proto.formatDurationFromString = function formatDurationFromString(dur, fmt) {\n var _this2 = this;\n\n var tokenToField = function tokenToField(token) {\n switch (token[0]) {\n case \"S\":\n return \"millisecond\";\n\n case \"s\":\n return \"second\";\n\n case \"m\":\n return \"minute\";\n\n case \"h\":\n return \"hour\";\n\n case \"d\":\n return \"day\";\n\n case \"M\":\n return \"month\";\n\n case \"y\":\n return \"year\";\n\n default:\n return null;\n }\n },\n tokenToString = function tokenToString(lildur) {\n return function (token) {\n var mapped = tokenToField(token);\n\n if (mapped) {\n return _this2.num(lildur.get(mapped), token.length);\n } else {\n return token;\n }\n };\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce(function (found, _ref2) {\n var literal = _ref2.literal,\n val = _ref2.val;\n return literal ? found : found.concat(val);\n }, []),\n collapsed = dur.shiftTo.apply(dur, realTokens.map(tokenToField).filter(function (t) {\n return t;\n }));\n\n return stringifyTokens(tokens, tokenToString(collapsed));\n };\n\n return Formatter;\n}();\n\nvar intlDTCache = {};\n\nfunction getCachedDTF(locString, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var key = JSON.stringify([locString, opts]);\n var dtf = intlDTCache[key];\n\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache[key] = dtf;\n }\n\n return dtf;\n}\n\nvar intlNumCache = {};\n\nfunction getCachendINF(locString, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var key = JSON.stringify([locString, opts]);\n var inf = intlNumCache[key];\n\n if (!inf) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache[key] = inf;\n }\n\n return inf;\n}\n\nvar intlRelCache = {};\n\nfunction getCachendRTF(locString, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var key = JSON.stringify([locString, opts]);\n var inf = intlRelCache[key];\n\n if (!inf) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache[key] = inf;\n }\n\n return inf;\n}\n\nvar sysLocaleCache = null;\n\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else if (hasIntl()) {\n var computedSys = new Intl.DateTimeFormat().resolvedOptions().locale; // node sometimes defaults to \"und\". Override that because that is dumb\n\n sysLocaleCache = computedSys === \"und\" ? \"en-US\" : computedSys;\n return sysLocaleCache;\n } else {\n sysLocaleCache = \"en-US\";\n return sysLocaleCache;\n }\n}\n\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we'll do this:\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n var uIndex = localeStr.indexOf(\"-u-\");\n\n if (uIndex === -1) {\n return [localeStr];\n } else {\n var options;\n var smaller = localeStr.substring(0, uIndex);\n\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n } catch (e) {\n options = getCachedDTF(smaller).resolvedOptions();\n }\n\n var _options = options,\n numberingSystem = _options.numberingSystem,\n calendar = _options.calendar; // return the smaller one so that we can append the calendar and numbering overrides to it\n\n return [smaller, numberingSystem, calendar];\n }\n}\n\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (hasIntl()) {\n if (outputCalendar || numberingSystem) {\n localeStr += \"-u\";\n\n if (outputCalendar) {\n localeStr += \"-ca-\" + outputCalendar;\n }\n\n if (numberingSystem) {\n localeStr += \"-nu-\" + numberingSystem;\n }\n\n return localeStr;\n } else {\n return localeStr;\n }\n } else {\n return [];\n }\n}\n\nfunction mapMonths(f) {\n var ms = [];\n\n for (var i = 1; i <= 12; i++) {\n var dt = DateTime.utc(2016, i, 1);\n ms.push(f(dt));\n }\n\n return ms;\n}\n\nfunction mapWeekdays(f) {\n var ms = [];\n\n for (var i = 1; i <= 7; i++) {\n var dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n\n return ms;\n}\n\nfunction listStuff(loc, length, defaultOK, englishFn, intlFn) {\n var mode = loc.listingMode(defaultOK);\n\n if (mode === \"error\") {\n return null;\n } else if (mode === \"en\") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\n\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\n return false;\n } else {\n return loc.numberingSystem === \"latn\" || !loc.locale || loc.locale.startsWith(\"en\") || hasIntl() && Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === \"latn\";\n }\n}\n/**\n * @private\n */\n\n\nvar PolyNumberFormatter =\n/*#__PURE__*/\nfunction () {\n function PolyNumberFormatter(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n\n if (!forceSimple && hasIntl()) {\n var intlOpts = {\n useGrouping: false\n };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachendINF(intl, intlOpts);\n }\n }\n\n var _proto = PolyNumberFormatter.prototype;\n\n _proto.format = function format(i) {\n if (this.inf) {\n var fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser's numberformatter defaults\n var _fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n\n return padStart(_fixed, this.padTo);\n }\n };\n\n return PolyNumberFormatter;\n}();\n/**\n * @private\n */\n\n\nvar PolyDateFormatter =\n/*#__PURE__*/\nfunction () {\n function PolyDateFormatter(dt, intl, opts) {\n this.opts = opts;\n this.hasIntl = hasIntl();\n var z;\n\n if (dt.zone.universal && this.hasIntl) {\n // Chromium doesn't support fixed-offset zones like Etc/GMT+8 in its formatter,\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=364374.\n // So we have to make do. Two cases:\n // 1. The format options tell us to show the zone. We can't do that, so the best\n // we can do is format the date in UTC.\n // 2. The format options don't tell us to show the zone. Then we can adjust them\n // the time and tell the formatter to show it to us in UTC, so that the time is right\n // and the bad zone doesn't show up.\n // We can clean all this up when Chrome fixes this.\n z = \"UTC\";\n\n if (opts.timeZoneName) {\n this.dt = dt;\n } else {\n this.dt = dt.offset === 0 ? dt : DateTime.fromMillis(dt.ts + dt.offset * 60 * 1000);\n }\n } else if (dt.zone.type === \"local\") {\n this.dt = dt;\n } else {\n this.dt = dt;\n z = dt.zone.name;\n }\n\n if (this.hasIntl) {\n var intlOpts = Object.assign({}, this.opts);\n\n if (z) {\n intlOpts.timeZone = z;\n }\n\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n }\n\n var _proto2 = PolyDateFormatter.prototype;\n\n _proto2.format = function format() {\n if (this.hasIntl) {\n return this.dtf.format(this.dt.toJSDate());\n } else {\n var tokenFormat = formatString(this.opts),\n loc = Locale.create(\"en-US\");\n return Formatter.create(loc).formatDateTimeFromString(this.dt, tokenFormat);\n }\n };\n\n _proto2.formatToParts = function formatToParts() {\n if (this.hasIntl && hasFormatToParts()) {\n return this.dtf.formatToParts(this.dt.toJSDate());\n } else {\n // This is kind of a cop out. We actually could do this for English. However, we couldn't do it for intl strings\n // and IMO it's too weird to have an uncanny valley like that\n return [];\n }\n };\n\n _proto2.resolvedOptions = function resolvedOptions() {\n if (this.hasIntl) {\n return this.dtf.resolvedOptions();\n } else {\n return {\n locale: \"en-US\",\n numberingSystem: \"latn\",\n outputCalendar: \"gregory\"\n };\n }\n };\n\n return PolyDateFormatter;\n}();\n/**\n * @private\n */\n\n\nvar PolyRelFormatter =\n/*#__PURE__*/\nfunction () {\n function PolyRelFormatter(intl, isEnglish, opts) {\n this.opts = Object.assign({\n style: \"long\"\n }, opts);\n\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachendRTF(intl, opts);\n }\n }\n\n var _proto3 = PolyRelFormatter.prototype;\n\n _proto3.format = function format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\n }\n };\n\n _proto3.formatToParts = function formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n };\n\n return PolyRelFormatter;\n}();\n/**\n * @private\n */\n\n\nvar Locale =\n/*#__PURE__*/\nfunction () {\n Locale.fromOpts = function fromOpts(opts) {\n return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN);\n };\n\n Locale.create = function create(locale, numberingSystem, outputCalendar, defaultToEN) {\n if (defaultToEN === void 0) {\n defaultToEN = false;\n }\n\n var specifiedLocale = locale || Settings.defaultLocale,\n // the system locale is useful for human readable strings but annoying for parsing/formatting known formats\n localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale()),\n numberingSystemR = numberingSystem || Settings.defaultNumberingSystem,\n outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n return new Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale);\n };\n\n Locale.resetCache = function resetCache() {\n sysLocaleCache = null;\n intlDTCache = {};\n intlNumCache = {};\n };\n\n Locale.fromObject = function fromObject(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n locale = _ref.locale,\n numberingSystem = _ref.numberingSystem,\n outputCalendar = _ref.outputCalendar;\n\n return Locale.create(locale, numberingSystem, outputCalendar);\n };\n\n function Locale(locale, numbering, outputCalendar, specifiedLocale) {\n var _parseLocaleString = parseLocaleString(locale),\n parsedLocale = _parseLocaleString[0],\n parsedNumberingSystem = _parseLocaleString[1],\n parsedOutputCalendar = _parseLocaleString[2];\n\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n this.weekdaysCache = {\n format: {},\n standalone: {}\n };\n this.monthsCache = {\n format: {},\n standalone: {}\n };\n this.meridiemCache = null;\n this.eraCache = {};\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n\n var _proto4 = Locale.prototype;\n\n _proto4.listingMode = function listingMode(defaultOK) {\n if (defaultOK === void 0) {\n defaultOK = true;\n }\n\n var intl = hasIntl(),\n hasFTP = intl && hasFormatToParts(),\n isActuallyEn = this.isEnglish(),\n hasNoWeirdness = (this.numberingSystem === null || this.numberingSystem === \"latn\") && (this.outputCalendar === null || this.outputCalendar === \"gregory\");\n\n if (!hasFTP && !(isActuallyEn && hasNoWeirdness) && !defaultOK) {\n return \"error\";\n } else if (!hasFTP || isActuallyEn && hasNoWeirdness) {\n return \"en\";\n } else {\n return \"intl\";\n }\n };\n\n _proto4.clone = function clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(alts.locale || this.specifiedLocale, alts.numberingSystem || this.numberingSystem, alts.outputCalendar || this.outputCalendar, alts.defaultToEN || false);\n }\n };\n\n _proto4.redefaultToEN = function redefaultToEN(alts) {\n if (alts === void 0) {\n alts = {};\n }\n\n return this.clone(Object.assign({}, alts, {\n defaultToEN: true\n }));\n };\n\n _proto4.redefaultToSystem = function redefaultToSystem(alts) {\n if (alts === void 0) {\n alts = {};\n }\n\n return this.clone(Object.assign({}, alts, {\n defaultToEN: false\n }));\n };\n\n _proto4.months = function months$1(length, format, defaultOK) {\n var _this = this;\n\n if (format === void 0) {\n format = false;\n }\n\n if (defaultOK === void 0) {\n defaultOK = true;\n }\n\n return listStuff(this, length, defaultOK, months, function () {\n var intl = format ? {\n month: length,\n day: \"numeric\"\n } : {\n month: length\n },\n formatStr = format ? \"format\" : \"standalone\";\n\n if (!_this.monthsCache[formatStr][length]) {\n _this.monthsCache[formatStr][length] = mapMonths(function (dt) {\n return _this.extract(dt, intl, \"month\");\n });\n }\n\n return _this.monthsCache[formatStr][length];\n });\n };\n\n _proto4.weekdays = function weekdays$1(length, format, defaultOK) {\n var _this2 = this;\n\n if (format === void 0) {\n format = false;\n }\n\n if (defaultOK === void 0) {\n defaultOK = true;\n }\n\n return listStuff(this, length, defaultOK, weekdays, function () {\n var intl = format ? {\n weekday: length,\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\"\n } : {\n weekday: length\n },\n formatStr = format ? \"format\" : \"standalone\";\n\n if (!_this2.weekdaysCache[formatStr][length]) {\n _this2.weekdaysCache[formatStr][length] = mapWeekdays(function (dt) {\n return _this2.extract(dt, intl, \"weekday\");\n });\n }\n\n return _this2.weekdaysCache[formatStr][length];\n });\n };\n\n _proto4.meridiems = function meridiems$1(defaultOK) {\n var _this3 = this;\n\n if (defaultOK === void 0) {\n defaultOK = true;\n }\n\n return listStuff(this, undefined, defaultOK, function () {\n return meridiems;\n }, function () {\n // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n if (!_this3.meridiemCache) {\n var intl = {\n hour: \"numeric\",\n hour12: true\n };\n _this3.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(function (dt) {\n return _this3.extract(dt, intl, \"dayperiod\");\n });\n }\n\n return _this3.meridiemCache;\n });\n };\n\n _proto4.eras = function eras$1(length, defaultOK) {\n var _this4 = this;\n\n if (defaultOK === void 0) {\n defaultOK = true;\n }\n\n return listStuff(this, length, defaultOK, eras, function () {\n var intl = {\n era: length\n }; // This is utter bullshit. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n\n if (!_this4.eraCache[length]) {\n _this4.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map(function (dt) {\n return _this4.extract(dt, intl, \"era\");\n });\n }\n\n return _this4.eraCache[length];\n });\n };\n\n _proto4.extract = function extract(dt, intlOpts, field) {\n var df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find(function (m) {\n return m.type.toLowerCase() === field;\n });\n return matching ? matching.value : null;\n };\n\n _proto4.numberFormatter = function numberFormatter(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n };\n\n _proto4.dtFormatter = function dtFormatter(dt, intlOpts) {\n if (intlOpts === void 0) {\n intlOpts = {};\n }\n\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n };\n\n _proto4.relFormatter = function relFormatter(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n };\n\n _proto4.isEnglish = function isEnglish() {\n return this.locale === \"en\" || this.locale.toLowerCase() === \"en-us\" || hasIntl() && Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith(\"en-us\");\n };\n\n _proto4.equals = function equals(other) {\n return this.locale === other.locale && this.numberingSystem === other.numberingSystem && this.outputCalendar === other.outputCalendar;\n };\n\n _createClass(Locale, [{\n key: \"fastNumbers\",\n get: function get() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n\n return this.fastNumbersCached;\n }\n }]);\n\n return Locale;\n}();\n\n/*\r\n * This file handles parsing for well-specified formats. Here's how it works:\r\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\r\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\r\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\r\n * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\r\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\r\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\r\n */\n\nfunction combineRegexes() {\n for (var _len = arguments.length, regexes = new Array(_len), _key = 0; _key < _len; _key++) {\n regexes[_key] = arguments[_key];\n }\n\n var full = regexes.reduce(function (f, r) {\n return f + r.source;\n }, \"\");\n return RegExp(\"^\" + full + \"$\");\n}\n\nfunction combineExtractors() {\n for (var _len2 = arguments.length, extractors = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n extractors[_key2] = arguments[_key2];\n }\n\n return function (m) {\n return extractors.reduce(function (_ref, ex) {\n var mergedVals = _ref[0],\n mergedZone = _ref[1],\n cursor = _ref[2];\n\n var _ex = ex(m, cursor),\n val = _ex[0],\n zone = _ex[1],\n next = _ex[2];\n\n return [Object.assign(mergedVals, val), mergedZone || zone, next];\n }, [{}, null, 1]).slice(0, 2);\n };\n}\n\nfunction parse(s) {\n if (s == null) {\n return [null, null];\n }\n\n for (var _len3 = arguments.length, patterns = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n patterns[_key3 - 1] = arguments[_key3];\n }\n\n for (var _i = 0, _patterns = patterns; _i < _patterns.length; _i++) {\n var _patterns$_i = _patterns[_i],\n regex = _patterns$_i[0],\n extractor = _patterns$_i[1];\n var m = regex.exec(s);\n\n if (m) {\n return extractor(m);\n }\n }\n\n return [null, null];\n}\n\nfunction simpleParse() {\n for (var _len4 = arguments.length, keys = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n keys[_key4] = arguments[_key4];\n }\n\n return function (match, cursor) {\n var ret = {};\n var i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n\n return [ret, null, cursor + i];\n };\n} // ISO and SQL parsing\n\n\nvar offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/,\n isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,9}))?)?)?/,\n isoTimeRegex = RegExp(\"\" + isoTimeBaseRegex.source + offsetRegex.source + \"?\"),\n isoTimeExtensionRegex = RegExp(\"(?:T\" + isoTimeRegex.source + \")?\"),\n isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/,\n isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/,\n isoOrdinalRegex = /(\\d{4})-?(\\d{3})/,\n extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\"),\n extractISOOrdinalData = simpleParse(\"year\", \"ordinal\"),\n sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/,\n // dumbed-down version of the ISO one\nsqlTimeRegex = RegExp(isoTimeBaseRegex.source + \" ?(?:\" + offsetRegex.source + \"|(\" + ianaRegex.source + \"))?\"),\n sqlTimeExtensionRegex = RegExp(\"(?: \" + sqlTimeRegex.source + \")?\");\n\nfunction extractISOYmd(match, cursor) {\n var item = {\n year: parseInteger(match[cursor]),\n month: parseInteger(match[cursor + 1]) || 1,\n day: parseInteger(match[cursor + 2]) || 1\n };\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n var item = {\n hour: parseInteger(match[cursor]) || 0,\n minute: parseInteger(match[cursor + 1]) || 0,\n second: parseInteger(match[cursor + 2]) || 0,\n millisecond: parseMillis(match[cursor + 3])\n };\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n var local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n var zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n} // ISO duration parsing\n\n\nvar isoDuration = /^P(?:(?:(-?\\d{1,9})Y)?(?:(-?\\d{1,9})M)?(?:(-?\\d{1,9})W)?(?:(-?\\d{1,9})D)?(?:T(?:(-?\\d{1,9})H)?(?:(-?\\d{1,9})M)?(?:(-?\\d{1,9})(?:[.,](-?\\d{1,9}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n var yearStr = match[1],\n monthStr = match[2],\n weekStr = match[3],\n dayStr = match[4],\n hourStr = match[5],\n minuteStr = match[6],\n secondStr = match[7],\n millisecondsStr = match[8];\n return [{\n years: parseInteger(yearStr),\n months: parseInteger(monthStr),\n weeks: parseInteger(weekStr),\n days: parseInteger(dayStr),\n hours: parseInteger(hourStr),\n minutes: parseInteger(minuteStr),\n seconds: parseInteger(secondStr),\n milliseconds: parseMillis(millisecondsStr)\n }];\n} // These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\n\n\nvar obsOffsets = {\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\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr)\n };\n if (secondStr) result.second = parseInteger(secondStr);\n\n if (weekdayStr) {\n result.weekday = weekdayStr.length > 3 ? weekdaysLong.indexOf(weekdayStr) + 1 : weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n} // RFC 2822/5322\n\n\nvar 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\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n var weekdayStr = match[1],\n dayStr = match[2],\n monthStr = match[3],\n yearStr = match[4],\n hourStr = match[5],\n minuteStr = match[6],\n secondStr = match[7],\n obsOffset = match[8],\n milOffset = match[9],\n offHourStr = match[10],\n offMinuteStr = match[11],\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n var offset;\n\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction 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, \" \").trim();\n} // http date\n\n\nvar rfc1123 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 = /^(Monday|Tuesday|Wedsday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n var weekdayStr = match[1],\n dayStr = match[2],\n monthStr = match[3],\n yearStr = match[4],\n hourStr = match[5],\n minuteStr = match[6],\n secondStr = match[7],\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n var weekdayStr = match[1],\n monthStr = match[2],\n dayStr = match[3],\n hourStr = match[4],\n minuteStr = match[5],\n secondStr = match[6],\n yearStr = match[7],\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nvar isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nvar isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nvar isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nvar isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\nvar extractISOYmdTimeAndOffset = combineExtractors(extractISOYmd, extractISOTime, extractISOOffset);\nvar extractISOWeekTimeAndOffset = combineExtractors(extractISOWeekData, extractISOTime, extractISOOffset);\nvar extractISOOrdinalDataAndTime = combineExtractors(extractISOOrdinalData, extractISOTime);\nvar extractISOTimeAndOffset = combineExtractors(extractISOTime, extractISOOffset);\n/**\r\n * @private\r\n */\n\nfunction parseISODate(s) {\n return parse(s, [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset], [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset], [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDataAndTime], [isoTimeCombinedRegex, extractISOTimeAndOffset]);\n}\nfunction parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\nfunction parseHTTPDate(s) {\n return parse(s, [rfc1123, extractRFC1123Or850], [rfc850, extractRFC1123Or850], [ascii, extractASCII]);\n}\nfunction parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\nvar sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nvar sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\nvar extractISOYmdTimeOffsetAndIANAZone = combineExtractors(extractISOYmd, extractISOTime, extractISOOffset, extractIANAZone);\nvar extractISOTimeOffsetAndIANAZone = combineExtractors(extractISOTime, extractISOOffset, extractIANAZone);\nfunction parseSQL(s) {\n return parse(s, [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeOffsetAndIANAZone], [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]);\n}\n\nvar Invalid =\n/*#__PURE__*/\nfunction () {\n function Invalid(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n\n var _proto = Invalid.prototype;\n\n _proto.toMessage = function toMessage() {\n if (this.explanation) {\n return this.reason + \": \" + this.explanation;\n } else {\n return this.reason;\n }\n };\n\n return Invalid;\n}();\n\nvar INVALID = \"Invalid Duration\"; // unit conversion constants\n\nvar lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000\n },\n hours: {\n minutes: 60,\n seconds: 60 * 60,\n milliseconds: 60 * 60 * 1000\n },\n minutes: {\n seconds: 60,\n milliseconds: 60 * 1000\n },\n seconds: {\n milliseconds: 1000\n }\n},\n casualMatrix = Object.assign({\n years: {\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000\n }\n}, lowOrderMatrix),\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = Object.assign({\n years: {\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: daysInYearAccurate * 24 / 4,\n minutes: daysInYearAccurate * 24 * 60 / 4,\n seconds: daysInYearAccurate * 24 * 60 * 60 / 4,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000 / 4\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000\n }\n}, lowOrderMatrix); // units ordered by size\n\nvar orderedUnits = [\"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\"];\nvar reverseUnits = orderedUnits.slice(0).reverse(); // clone really means \"create another instance just like this one, but with these changes\"\n\nfunction clone(dur, alts, clear) {\n if (clear === void 0) {\n clear = false;\n }\n\n // deep merge for vals\n var conf = {\n values: clear ? alts.values : Object.assign({}, dur.values, alts.values || {}),\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy\n };\n return new Duration(conf);\n}\n\nfunction antiTrunc(n) {\n return n < 0 ? Math.floor(n) : Math.ceil(n);\n} // NB: mutates parameters\n\n\nfunction convert(matrix, fromMap, fromUnit, toMap, toUnit) {\n var conv = matrix[toUnit][fromUnit],\n raw = fromMap[fromUnit] / conv,\n sameSign = Math.sign(raw) === Math.sign(toMap[toUnit]),\n // ok, so this is wild, but see the matrix in the tests\n added = !sameSign && toMap[toUnit] !== 0 && Math.abs(raw) <= 1 ? antiTrunc(raw) : Math.trunc(raw);\n toMap[toUnit] += added;\n fromMap[fromUnit] -= added * conv;\n} // NB: mutates parameters\n\n\nfunction normalizeValues(matrix, vals) {\n reverseUnits.reduce(function (previous, current) {\n if (!isUndefined(vals[current])) {\n if (previous) {\n convert(matrix, vals, previous, vals, current);\n }\n\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n/**\r\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime.plus} to add a Duration object to a DateTime, producing another DateTime.\r\n *\r\n * Here is a brief overview of commonly used methods and getters in Duration:\r\n *\r\n * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\r\n * * **Unit values** See the {@link Duration.years}, {@link Duration.months}, {@link Duration.weeks}, {@link Duration.days}, {@link Duration.hours}, {@link Duration.minutes}, {@link Duration.seconds}, {@link Duration.milliseconds} accessors.\r\n * * **Configuration** See {@link Duration.locale} and {@link Duration.numberingSystem} accessors.\r\n * * **Transformation** To create new Durations out of old ones use {@link Duration.plus}, {@link Duration.minus}, {@link Duration.normalize}, {@link Duration.set}, {@link Duration.reconfigure}, {@link Duration.shiftTo}, and {@link Duration.negate}.\r\n * * **Output** To convert the Duration into other representations, see {@link Duration.as}, {@link Duration.toISO}, {@link Duration.toFormat}, and {@link Duration.toJSON}\r\n *\r\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\r\n */\n\n\nvar Duration =\n/*#__PURE__*/\nfunction () {\n /**\r\n * @private\r\n */\n function Duration(config) {\n var accurate = config.conversionAccuracy === \"longterm\" || false;\n /**\r\n * @access private\r\n */\n\n this.values = config.values;\n /**\r\n * @access private\r\n */\n\n this.loc = config.loc || Locale.create();\n /**\r\n * @access private\r\n */\n\n this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n /**\r\n * @access private\r\n */\n\n this.invalid = config.invalid || null;\n /**\r\n * @access private\r\n */\n\n this.matrix = accurate ? accurateMatrix : casualMatrix;\n /**\r\n * @access private\r\n */\n\n this.isLuxonDuration = true;\n }\n /**\r\n * Create Duration from a number of milliseconds.\r\n * @param {number} count of milliseconds\r\n * @param {Object} opts - options for parsing\r\n * @param {string} [opts.locale='en-US'] - the locale to use\r\n * @param {string} opts.numberingSystem - the numbering system to use\r\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\r\n * @return {Duration}\r\n */\n\n\n Duration.fromMillis = function fromMillis(count, opts) {\n return Duration.fromObject(Object.assign({\n milliseconds: count\n }, opts));\n }\n /**\r\n * Create a Duration from a Javascript object with keys like 'years' and 'hours.\r\n * If this object is empty then a zero milliseconds duration is returned.\r\n * @param {Object} obj - the object to create the DateTime from\r\n * @param {number} obj.years\r\n * @param {number} obj.quarters\r\n * @param {number} obj.months\r\n * @param {number} obj.weeks\r\n * @param {number} obj.days\r\n * @param {number} obj.hours\r\n * @param {number} obj.minutes\r\n * @param {number} obj.seconds\r\n * @param {number} obj.milliseconds\r\n * @param {string} [obj.locale='en-US'] - the locale to use\r\n * @param {string} obj.numberingSystem - the numbering system to use\r\n * @param {string} [obj.conversionAccuracy='casual'] - the conversion system to use\r\n * @return {Duration}\r\n */\n ;\n\n Duration.fromObject = function fromObject(obj) {\n if (obj == null || typeof obj !== \"object\") {\n throw new InvalidArgumentError(\"Duration.fromObject: argument expected to be an object, got \" + (obj === null ? \"null\" : typeof obj));\n }\n\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit, [\"locale\", \"numberingSystem\", \"conversionAccuracy\", \"zone\" // a bit of debt; it's super inconvenient internally not to be able to blindly pass this\n ]),\n loc: Locale.fromObject(obj),\n conversionAccuracy: obj.conversionAccuracy\n });\n }\n /**\r\n * Create a Duration from an ISO 8601 duration string.\r\n * @param {string} text - text to parse\r\n * @param {Object} opts - options for parsing\r\n * @param {string} [opts.locale='en-US'] - the locale to use\r\n * @param {string} opts.numberingSystem - the numbering system to use\r\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\r\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\r\n * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\r\n * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\r\n * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\r\n * @return {Duration}\r\n */\n ;\n\n Duration.fromISO = function fromISO(text, opts) {\n var _parseISODuration = parseISODuration(text),\n parsed = _parseISODuration[0];\n\n if (parsed) {\n var obj = Object.assign(parsed, opts);\n return Duration.fromObject(obj);\n } else {\n return Duration.invalid(\"unparsable\", \"the input \\\"\" + text + \"\\\" can't be parsed as ISO 8601\");\n }\n }\n /**\r\n * Create an invalid Duration.\r\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\r\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\r\n * @return {Duration}\r\n */\n ;\n\n Duration.invalid = function invalid(reason, explanation) {\n if (explanation === void 0) {\n explanation = null;\n }\n\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n }\n\n var invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({\n invalid: invalid\n });\n }\n }\n /**\r\n * @private\r\n */\n ;\n\n Duration.normalizeUnit = function normalizeUnit(unit) {\n var normalized = {\n year: \"years\",\n years: \"years\",\n quarter: \"quarters\",\n quarters: \"quarters\",\n month: \"months\",\n months: \"months\",\n week: \"weeks\",\n weeks: \"weeks\",\n day: \"days\",\n days: \"days\",\n hour: \"hours\",\n hours: \"hours\",\n minute: \"minutes\",\n minutes: \"minutes\",\n second: \"seconds\",\n seconds: \"seconds\",\n millisecond: \"milliseconds\",\n milliseconds: \"milliseconds\"\n }[unit ? unit.toLowerCase() : unit];\n if (!normalized) throw new InvalidUnitError(unit);\n return normalized;\n }\n /**\r\n * Check if an object is a Duration. Works across context boundaries\r\n * @param {object} o\r\n * @return {boolean}\r\n */\n ;\n\n Duration.isDuration = function isDuration(o) {\n return o && o.isLuxonDuration || false;\n }\n /**\r\n * Get the locale of a Duration, such 'en-GB'\r\n * @type {string}\r\n */\n ;\n\n var _proto = Duration.prototype;\n\n /**\r\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\r\n * * `S` for milliseconds\r\n * * `s` for seconds\r\n * * `m` for minutes\r\n * * `h` for hours\r\n * * `d` for days\r\n * * `M` for months\r\n * * `y` for years\r\n * Notes:\r\n * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\r\n * * The duration will be converted to the set of units in the format string using {@link Duration.shiftTo} and the Durations's conversion accuracy setting.\r\n * @param {string} fmt - the format string\r\n * @param {Object} opts - options\r\n * @param {boolean} [opts.floor=true] - floor numerical values\r\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\r\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\r\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\r\n * @return {string}\r\n */\n _proto.toFormat = function toFormat(fmt, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n var fmtOpts = Object.assign({}, opts, {\n floor: opts.round !== false && opts.floor !== false\n });\n return this.isValid ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt) : INVALID;\n }\n /**\r\n * Returns a Javascript object with this Duration's values.\r\n * @param opts - options for generating the object\r\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\r\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\r\n * @return {Object}\r\n */\n ;\n\n _proto.toObject = function toObject(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n if (!this.isValid) return {};\n var base = Object.assign({}, this.values);\n\n if (opts.includeConfig) {\n base.conversionAccuracy = this.conversionAccuracy;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n\n return base;\n }\n /**\r\n * Returns an ISO 8601-compliant string representation of this Duration.\r\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\r\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\r\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\r\n * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\r\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\r\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\r\n * @return {string}\r\n */\n ;\n\n _proto.toISO = function toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n var s = \"P\";\n if (this.years !== 0) s += this.years + \"Y\";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n if (this.weeks !== 0) s += this.weeks + \"W\";\n if (this.days !== 0) s += this.days + \"D\";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0) s += \"T\";\n if (this.hours !== 0) s += this.hours + \"H\";\n if (this.minutes !== 0) s += this.minutes + \"M\";\n if (this.seconds !== 0 || this.milliseconds !== 0) s += this.seconds + this.milliseconds / 1000 + \"S\";\n if (s === \"P\") s += \"T0S\";\n return s;\n }\n /**\r\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\r\n * @return {string}\r\n */\n ;\n\n _proto.toJSON = function toJSON() {\n return this.toISO();\n }\n /**\r\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\r\n * @return {string}\r\n */\n ;\n\n _proto.toString = function toString() {\n return this.toISO();\n }\n /**\r\n * Returns an milliseconds value of this Duration.\r\n * @return {number}\r\n */\n ;\n\n _proto.valueOf = function valueOf() {\n return this.as(\"milliseconds\");\n }\n /**\r\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\r\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\r\n * @return {Duration}\r\n */\n ;\n\n _proto.plus = function plus(duration) {\n if (!this.isValid) return this;\n var dur = friendlyDuration(duration),\n result = {};\n\n for (var _i = 0, _orderedUnits = orderedUnits; _i < _orderedUnits.length; _i++) {\n var k = _orderedUnits[_i];\n\n if (dur.values.hasOwnProperty(k) || this.values.hasOwnProperty(k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, {\n values: result\n }, true);\n }\n /**\r\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\r\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\r\n * @return {Duration}\r\n */\n ;\n\n _proto.minus = function minus(duration) {\n if (!this.isValid) return this;\n var dur = friendlyDuration(duration);\n return this.plus(dur.negate());\n }\n /**\r\n * Get the value of unit.\r\n * @param {string} unit - a unit such as 'minute' or 'day'\r\n * @example Duration.fromObject({years: 2, days: 3}).years //=> 2\r\n * @example Duration.fromObject({years: 2, days: 3}).months //=> 0\r\n * @example Duration.fromObject({years: 2, days: 3}).days //=> 3\r\n * @return {number}\r\n */\n ;\n\n _proto.get = function get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n /**\r\n * \"Set\" the values of specified units. Return a newly-constructed Duration.\r\n * @param {Object} values - a mapping of units to numbers\r\n * @example dur.set({ years: 2017 })\r\n * @example dur.set({ hours: 8, minutes: 30 })\r\n * @return {Duration}\r\n */\n ;\n\n _proto.set = function set(values) {\n if (!this.isValid) return this;\n var mixed = Object.assign(this.values, normalizeObject(values, Duration.normalizeUnit, []));\n return clone(this, {\n values: mixed\n });\n }\n /**\r\n * \"Set\" the locale and/or numberingSystem. Returns a newly-constructed Duration.\r\n * @example dur.reconfigure({ locale: 'en-GB' })\r\n * @return {Duration}\r\n */\n ;\n\n _proto.reconfigure = function reconfigure(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n locale = _ref.locale,\n numberingSystem = _ref.numberingSystem,\n conversionAccuracy = _ref.conversionAccuracy;\n\n var loc = this.loc.clone({\n locale: locale,\n numberingSystem: numberingSystem\n }),\n opts = {\n loc: loc\n };\n\n if (conversionAccuracy) {\n opts.conversionAccuracy = conversionAccuracy;\n }\n\n return clone(this, opts);\n }\n /**\r\n * Return the length of the duration in the specified unit.\r\n * @param {string} unit - a unit such as 'minutes' or 'days'\r\n * @example Duration.fromObject({years: 1}).as('days') //=> 365\r\n * @example Duration.fromObject({years: 1}).as('months') //=> 12\r\n * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\r\n * @return {number}\r\n */\n ;\n\n _proto.as = function as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n /**\r\n * Reduce this Duration to its canonical representation in its current units.\r\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\r\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\r\n * @return {Duration}\r\n */\n ;\n\n _proto.normalize = function normalize() {\n if (!this.isValid) return this;\n var vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return Duration.fromObject(vals);\n }\n /**\r\n * Convert this Duration into its representation in a different set of units.\r\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\r\n * @return {Duration}\r\n */\n ;\n\n _proto.shiftTo = function shiftTo() {\n for (var _len = arguments.length, units = new Array(_len), _key = 0; _key < _len; _key++) {\n units[_key] = arguments[_key];\n }\n\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map(function (u) {\n return Duration.normalizeUnit(u);\n });\n var built = {},\n accumulated = {},\n vals = this.toObject();\n var lastUnit;\n normalizeValues(this.matrix, vals);\n\n for (var _i2 = 0, _orderedUnits2 = orderedUnits; _i2 < _orderedUnits2.length; _i2++) {\n var k = _orderedUnits2[_i2];\n\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n var own = 0; // anything we haven't boiled down yet should get boiled to this unit\n\n for (var ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n } // plus anything that's already in this unit\n\n\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n var i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = own - i; // we'd like to absorb these fractions in another unit\n // plus anything further down the chain that should be rolled up in to this\n\n for (var down in vals) {\n if (orderedUnits.indexOf(down) > orderedUnits.indexOf(k)) {\n convert(this.matrix, vals, down, built, k);\n }\n } // otherwise, keep it in the wings to boil it later\n\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n } // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n\n\n for (var key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] += key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n return clone(this, {\n values: built\n }, true);\n }\n /**\r\n * Return the negative of this Duration.\r\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\r\n * @return {Duration}\r\n */\n ;\n\n _proto.negate = function negate() {\n if (!this.isValid) return this;\n var negated = {};\n\n for (var _i3 = 0, _Object$keys = Object.keys(this.values); _i3 < _Object$keys.length; _i3++) {\n var k = _Object$keys[_i3];\n negated[k] = -this.values[k];\n }\n\n return clone(this, {\n values: negated\n }, true);\n }\n /**\r\n * Get the years.\r\n * @type {number}\r\n */\n ;\n\n /**\r\n * Equality check\r\n * Two Durations are equal iff they have the same units and the same values for each unit.\r\n * @param {Duration} other\r\n * @return {boolean}\r\n */\n _proto.equals = function equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n for (var _i4 = 0, _orderedUnits3 = orderedUnits; _i4 < _orderedUnits3.length; _i4++) {\n var u = _orderedUnits3[_i4];\n\n if (this.values[u] !== other.values[u]) {\n return false;\n }\n }\n\n return true;\n };\n\n _createClass(Duration, [{\n key: \"locale\",\n get: function get() {\n return this.isValid ? this.loc.locale : null;\n }\n /**\r\n * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\r\n *\r\n * @type {string}\r\n */\n\n }, {\n key: \"numberingSystem\",\n get: function get() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n }, {\n key: \"years\",\n get: function get() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n /**\r\n * Get the quarters.\r\n * @type {number}\r\n */\n\n }, {\n key: \"quarters\",\n get: function get() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n /**\r\n * Get the months.\r\n * @type {number}\r\n */\n\n }, {\n key: \"months\",\n get: function get() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n /**\r\n * Get the weeks\r\n * @type {number}\r\n */\n\n }, {\n key: \"weeks\",\n get: function get() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n /**\r\n * Get the days.\r\n * @type {number}\r\n */\n\n }, {\n key: \"days\",\n get: function get() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n /**\r\n * Get the hours.\r\n * @type {number}\r\n */\n\n }, {\n key: \"hours\",\n get: function get() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n /**\r\n * Get the minutes.\r\n * @type {number}\r\n */\n\n }, {\n key: \"minutes\",\n get: function get() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n /**\r\n * Get the seconds.\r\n * @return {number}\r\n */\n\n }, {\n key: \"seconds\",\n get: function get() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n /**\r\n * Get the milliseconds.\r\n * @return {number}\r\n */\n\n }, {\n key: \"milliseconds\",\n get: function get() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n /**\r\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\r\n * on invalid DateTimes or Intervals.\r\n * @return {boolean}\r\n */\n\n }, {\n key: \"isValid\",\n get: function get() {\n return this.invalid === null;\n }\n /**\r\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\r\n * @return {string}\r\n */\n\n }, {\n key: \"invalidReason\",\n get: function get() {\n return this.invalid ? this.invalid.reason : null;\n }\n /**\r\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\r\n * @type {string}\r\n */\n\n }, {\n key: \"invalidExplanation\",\n get: function get() {\n return this.invalid ? this.invalid.explanation : null;\n }\n }]);\n\n return Duration;\n}();\nfunction friendlyDuration(durationish) {\n if (isNumber(durationish)) {\n return Duration.fromMillis(durationish);\n } else if (Duration.isDuration(durationish)) {\n return durationish;\n } else if (typeof durationish === \"object\") {\n return Duration.fromObject(durationish);\n } else {\n throw new InvalidArgumentError(\"Unknown duration argument \" + durationish + \" of type \" + typeof durationish);\n }\n}\n\nvar INVALID$1 = \"Invalid Interval\"; // checks if the start is equal to or before the end\n\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return new Invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return new Invalid(\"missing or invalid end\");\n } else if (end < start) {\n return new Invalid(\"end before start\", \"The end of an interval must be after its start, but you had start=\" + start.toISO() + \" and end=\" + end.toISO());\n } else {\n return null;\n }\n}\n/**\r\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\r\n *\r\n * Here is a brief overview of the most commonly used methods and getters in Interval:\r\n *\r\n * * **Creation** To create an Interval, use {@link fromDateTimes}, {@link after}, {@link before}, or {@link fromISO}.\r\n * * **Accessors** Use {@link start} and {@link end} to get the start and end.\r\n * * **Interrogation** To analyze the Interval, use {@link count}, {@link length}, {@link hasSame}, {@link contains}, {@link isAfter}, or {@link isBefore}.\r\n * * **Transformation** To create other Intervals out of this one, use {@link set}, {@link splitAt}, {@link splitBy}, {@link divideEqually}, {@link merge}, {@link xor}, {@link union}, {@link intersection}, or {@link difference}.\r\n * * **Comparison** To compare this Interval to another one, use {@link equals}, {@link overlaps}, {@link abutsStart}, {@link abutsEnd}, {@link engulfs}\r\n * * **Output*** To convert the Interval into other representations, see {@link toString}, {@link toISO}, {@link toFormat}, and {@link toDuration}.\r\n */\n\n\nvar Interval =\n/*#__PURE__*/\nfunction () {\n /**\r\n * @private\r\n */\n function Interval(config) {\n /**\r\n * @access private\r\n */\n this.s = config.start;\n /**\r\n * @access private\r\n */\n\n this.e = config.end;\n /**\r\n * @access private\r\n */\n\n this.invalid = config.invalid || null;\n /**\r\n * @access private\r\n */\n\n this.isLuxonInterval = true;\n }\n /**\r\n * Create an invalid Interval.\r\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\r\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\r\n * @return {Interval}\r\n */\n\n\n Interval.invalid = function invalid(reason, explanation) {\n if (explanation === void 0) {\n explanation = null;\n }\n\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n var invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({\n invalid: invalid\n });\n }\n }\n /**\r\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\r\n * @param {DateTime|Date|Object} start\r\n * @param {DateTime|Date|Object} end\r\n * @return {Interval}\r\n */\n ;\n\n Interval.fromDateTimes = function fromDateTimes(start, end) {\n var builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n return new Interval({\n start: builtStart,\n end: builtEnd,\n invalid: validateStartEnd(builtStart, builtEnd)\n });\n }\n /**\r\n * Create an Interval from a start DateTime and a Duration to extend to.\r\n * @param {DateTime|Date|Object} start\r\n * @param {Duration|Object|number} duration - the length of the Interval.\r\n * @return {Interval}\r\n */\n ;\n\n Interval.after = function after(start, duration) {\n var dur = friendlyDuration(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n /**\r\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\r\n * @param {DateTime|Date|Object} end\r\n * @param {Duration|Object|number} duration - the length of the Interval.\r\n * @return {Interval}\r\n */\n ;\n\n Interval.before = function before(end, duration) {\n var dur = friendlyDuration(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n /**\r\n * Create an Interval from an ISO 8601 string.\r\n * Accepts `/`, `/`, and `/` formats.\r\n * @param {string} text - the ISO string to parse\r\n * @param {Object} [opts] - options to pass {@link DateTime.fromISO} and optionally {@link Duration.fromISO}\r\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\r\n * @return {Interval}\r\n */\n ;\n\n Interval.fromISO = function fromISO(text, opts) {\n var _split = (text || \"\").split(\"/\", 2),\n s = _split[0],\n e = _split[1];\n\n if (s && e) {\n var start = DateTime.fromISO(s, opts),\n end = DateTime.fromISO(e, opts);\n\n if (start.isValid && end.isValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (start.isValid) {\n var dur = Duration.fromISO(e, opts);\n\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (end.isValid) {\n var _dur = Duration.fromISO(s, opts);\n\n if (_dur.isValid) {\n return Interval.before(end, _dur);\n }\n }\n }\n\n return Interval.invalid(\"unparsable\", \"the input \\\"\" + text + \"\\\" can't be parsed asISO 8601\");\n }\n /**\r\n * Check if an object is an Interval. Works across context boundaries\r\n * @param {object} o\r\n * @return {boolean}\r\n */\n ;\n\n Interval.isInterval = function isInterval(o) {\n return o && o.isLuxonInterval || false;\n }\n /**\r\n * Returns the start of the Interval\r\n * @type {DateTime}\r\n */\n ;\n\n var _proto = Interval.prototype;\n\n /**\r\n * Returns the length of the Interval in the specified unit.\r\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\r\n * @return {number}\r\n */\n _proto.length = function length(unit) {\n if (unit === void 0) {\n unit = \"milliseconds\";\n }\n\n return this.isValid ? this.toDuration.apply(this, [unit]).get(unit) : NaN;\n }\n /**\r\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\r\n * Unlike {@link length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\r\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\r\n * @param {string} [unit='milliseconds'] - the unit of time to count.\r\n * @return {number}\r\n */\n ;\n\n _proto.count = function count(unit) {\n if (unit === void 0) {\n unit = \"milliseconds\";\n }\n\n if (!this.isValid) return NaN;\n var start = this.start.startOf(unit),\n end = this.end.startOf(unit);\n return Math.floor(end.diff(start, unit).get(unit)) + 1;\n }\n /**\r\n * Returns whether this Interval's start and end are both in the same unit of time\r\n * @param {string} unit - the unit of time to check sameness on\r\n * @return {boolean}\r\n */\n ;\n\n _proto.hasSame = function hasSame(unit) {\n return this.isValid ? this.e.minus(1).hasSame(this.s, unit) : false;\n }\n /**\r\n * Return whether this Interval has the same start and end DateTimes.\r\n * @return {boolean}\r\n */\n ;\n\n _proto.isEmpty = function isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n /**\r\n * Return whether this Interval's start is after the specified DateTime.\r\n * @param {DateTime} dateTime\r\n * @return {boolean}\r\n */\n ;\n\n _proto.isAfter = function isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n /**\r\n * Return whether this Interval's end is before the specified DateTime.\r\n * @param {DateTime} dateTime\r\n * @return {boolean}\r\n */\n ;\n\n _proto.isBefore = function isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n /**\r\n * Return whether this Interval contains the specified DateTime.\r\n * @param {DateTime} dateTime\r\n * @return {boolean}\r\n */\n ;\n\n _proto.contains = function contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n /**\r\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\r\n * @param {Object} values - the values to set\r\n * @param {DateTime} values.start - the starting DateTime\r\n * @param {DateTime} values.end - the ending DateTime\r\n * @return {Interval}\r\n */\n ;\n\n _proto.set = function set(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n start = _ref.start,\n end = _ref.end;\n\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n /**\r\n * Split this Interval at each of the specified DateTimes\r\n * @param {...[DateTime]} dateTimes - the unit of time to count.\r\n * @return {[Interval]}\r\n */\n ;\n\n _proto.splitAt = function splitAt() {\n if (!this.isValid) return [];\n\n for (var _len = arguments.length, dateTimes = new Array(_len), _key = 0; _key < _len; _key++) {\n dateTimes[_key] = arguments[_key];\n }\n\n var sorted = dateTimes.map(friendlyDateTime).sort(),\n results = [];\n var s = this.s,\n i = 0;\n\n while (s < this.e) {\n var added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n /**\r\n * Split this Interval into smaller Intervals, each of the specified length.\r\n * Left over time is grouped into a smaller interval\r\n * @param {Duration|Object|number} duration - The length of each resulting interval.\r\n * @return {[Interval]}\r\n */\n ;\n\n _proto.splitBy = function splitBy(duration) {\n var dur = friendlyDuration(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n var s = this.s,\n added,\n next;\n var results = [];\n\n while (s < this.e) {\n added = s.plus(dur);\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n }\n\n return results;\n }\n /**\r\n * Split this Interval into the specified number of smaller intervals.\r\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\r\n * @return {[Interval]}\r\n */\n ;\n\n _proto.divideEqually = function divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n /**\r\n * Return whether this Interval overlaps with the specified Interval\r\n * @param {Interval} other\r\n * @return {boolean}\r\n */\n ;\n\n _proto.overlaps = function overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n /**\r\n * Return whether this Interval's end is adjacent to the specified Interval's start.\r\n * @param {Interval} other\r\n * @return {boolean}\r\n */\n ;\n\n _proto.abutsStart = function abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n /**\r\n * Return whether this Interval's start is adjacent to the specified Interval's end.\r\n * @param {Interval} other\r\n * @return {boolean}\r\n */\n ;\n\n _proto.abutsEnd = function abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n /**\r\n * Return whether this Interval engulfs the start and end of the specified Interval.\r\n * @param {Interval} other\r\n * @return {boolean}\r\n */\n ;\n\n _proto.engulfs = function engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n /**\r\n * Return whether this Interval has the same start and end as the specified Interval.\r\n * @param {Interval} other\r\n * @return {boolean}\r\n */\n ;\n\n _proto.equals = function equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n /**\r\n * Return an Interval representing the intersection of this Interval and the specified Interval.\r\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\r\n * Returns null if the intersection is empty, i.e., the intervals don't intersect.\r\n * @param {Interval} other\r\n * @return {Interval}\r\n */\n ;\n\n _proto.intersection = function intersection(other) {\n if (!this.isValid) return this;\n var s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s > e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n /**\r\n * Return an Interval representing the union of this Interval and the specified Interval.\r\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\r\n * @param {Interval} other\r\n * @return {Interval}\r\n */\n ;\n\n _proto.union = function union(other) {\n if (!this.isValid) return this;\n var s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n /**\r\n * Merge an array of Intervals into a equivalent minimal set of Intervals.\r\n * Combines overlapping and adjacent Intervals.\r\n * @param {[Interval]} intervals\r\n * @return {[Interval]}\r\n */\n ;\n\n Interval.merge = function merge(intervals) {\n var _intervals$sort$reduc = intervals.sort(function (a, b) {\n return a.s - b.s;\n }).reduce(function (_ref2, item) {\n var sofar = _ref2[0],\n current = _ref2[1];\n\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n }, [[], null]),\n found = _intervals$sort$reduc[0],\n final = _intervals$sort$reduc[1];\n\n if (final) {\n found.push(final);\n }\n\n return found;\n }\n /**\r\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\r\n * @param {[Interval]} intervals\r\n * @return {[Interval]}\r\n */\n ;\n\n Interval.xor = function xor(intervals) {\n var _Array$prototype;\n\n var start = null,\n currentCount = 0;\n\n var results = [],\n ends = intervals.map(function (i) {\n return [{\n time: i.s,\n type: \"s\"\n }, {\n time: i.e,\n type: \"e\"\n }];\n }),\n flattened = (_Array$prototype = Array.prototype).concat.apply(_Array$prototype, ends),\n arr = flattened.sort(function (a, b) {\n return a.time - b.time;\n });\n\n for (var _iterator = arr, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref3 = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref3 = _i.value;\n }\n\n var i = _ref3;\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n /**\r\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\r\n * @param {...Interval} intervals\r\n * @return {[Interval]}\r\n */\n ;\n\n _proto.difference = function difference() {\n var _this = this;\n\n for (var _len2 = arguments.length, intervals = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n intervals[_key2] = arguments[_key2];\n }\n\n return Interval.xor([this].concat(intervals)).map(function (i) {\n return _this.intersection(i);\n }).filter(function (i) {\n return i && !i.isEmpty();\n });\n }\n /**\r\n * Returns a string representation of this Interval appropriate for debugging.\r\n * @return {string}\r\n */\n ;\n\n _proto.toString = function toString() {\n if (!this.isValid) return INVALID$1;\n return \"[\" + this.s.toISO() + \" \\u2013 \" + this.e.toISO() + \")\";\n }\n /**\r\n * Returns an ISO 8601-compliant string representation of this Interval.\r\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\r\n * @param {Object} opts - The same options as {@link DateTime.toISO}\r\n * @return {string}\r\n */\n ;\n\n _proto.toISO = function toISO(opts) {\n if (!this.isValid) return INVALID$1;\n return this.s.toISO(opts) + \"/\" + this.e.toISO(opts);\n }\n /**\r\n * Returns a string representation of this Interval formatted according to the specified format string.\r\n * @param {string} dateFormat - the format string. This string formats the start and end time. See {@link DateTime.toFormat} for details.\r\n * @param {Object} opts - options\r\n * @param {string} [opts.separator = ' – '] - a separator to place between the start and end representations\r\n * @return {string}\r\n */\n ;\n\n _proto.toFormat = function toFormat(dateFormat, _temp2) {\n var _ref4 = _temp2 === void 0 ? {} : _temp2,\n _ref4$separator = _ref4.separator,\n separator = _ref4$separator === void 0 ? \" – \" : _ref4$separator;\n\n if (!this.isValid) return INVALID$1;\n return \"\" + this.s.toFormat(dateFormat) + separator + this.e.toFormat(dateFormat);\n }\n /**\r\n * Return a Duration representing the time spanned by this interval.\r\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\r\n * @param {Object} opts - options that affect the creation of the Duration\r\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\r\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\r\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\r\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\r\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\r\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\r\n * @return {Duration}\r\n */\n ;\n\n _proto.toDuration = function toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n\n return this.e.diff(this.s, unit, opts);\n }\n /**\r\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\r\n * @param {function} mapFn\r\n * @return {Interval}\r\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\r\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\r\n */\n ;\n\n _proto.mapEndpoints = function mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n };\n\n _createClass(Interval, [{\n key: \"start\",\n get: function get() {\n return this.isValid ? this.s : null;\n }\n /**\r\n * Returns the end of the Interval\r\n * @type {DateTime}\r\n */\n\n }, {\n key: \"end\",\n get: function get() {\n return this.isValid ? this.e : null;\n }\n /**\r\n * Returns whether this Interval's end is at least its start, i.e. that the Interval isn't 'backwards'.\r\n * @type {boolean}\r\n */\n\n }, {\n key: \"isValid\",\n get: function get() {\n return this.invalidReason === null;\n }\n /**\r\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\r\n * @type {string}\r\n */\n\n }, {\n key: \"invalidReason\",\n get: function get() {\n return this.invalid ? this.invalid.reason : null;\n }\n /**\r\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\r\n * @type {string}\r\n */\n\n }, {\n key: \"invalidExplanation\",\n get: function get() {\n return this.invalid ? this.invalid.explanation : null;\n }\n }]);\n\n return Interval;\n}();\n\n/**\r\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\r\n */\n\nvar Info =\n/*#__PURE__*/\nfunction () {\n function Info() {}\n\n /**\r\n * Return whether the specified zone contains a DST.\r\n * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\r\n * @return {boolean}\r\n */\n Info.hasDST = function hasDST(zone) {\n if (zone === void 0) {\n zone = Settings.defaultZone;\n }\n\n var proto = DateTime.local().setZone(zone).set({\n month: 12\n });\n return !zone.universal && proto.offset !== proto.set({\n month: 6\n }).offset;\n }\n /**\r\n * Return whether the specified zone is a valid IANA specifier.\r\n * @param {string} zone - Zone to check\r\n * @return {boolean}\r\n */\n ;\n\n Info.isValidIANAZone = function isValidIANAZone(zone) {\n return IANAZone.isValidSpecifier(zone) && IANAZone.isValidZone(zone);\n }\n /**\r\n * Converts the input into a {@link Zone} instance.\r\n *\r\n * * If `input` is already a Zone instance, it is returned unchanged.\r\n * * If `input` is a string containing a valid time zone name, a Zone instance\r\n * with that name is returned.\r\n * * If `input` is a string that doesn't refer to a known time zone, a Zone\r\n * instance with {@link Zone.isValid} == false is returned.\r\n * * If `input is a number, a Zone instance with the specified fixed offset\r\n * in minutes is returned.\r\n * * If `input` is `null` or `undefined`, the default zone is returned.\r\n * @param {string|Zone|number} [input] - the value to be converted\r\n * @return {Zone}\r\n */\n ;\n\n Info.normalizeZone = function normalizeZone$1(input) {\n return normalizeZone(input, Settings.defaultZone);\n }\n /**\r\n * Return an array of standalone month names.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\r\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\r\n * @param {Object} opts - options\r\n * @param {string} [opts.locale] - the locale code\r\n * @param {string} [opts.numberingSystem=null] - the numbering system\r\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\r\n * @example Info.months()[0] //=> 'January'\r\n * @example Info.months('short')[0] //=> 'Jan'\r\n * @example Info.months('numeric')[0] //=> '1'\r\n * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\r\n * @example Info.months('numeric', { locale: 'ar' })[0] //=> '١'\r\n * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I'\r\n * @return {[string]}\r\n */\n ;\n\n Info.months = function months(length, _temp) {\n if (length === void 0) {\n length = \"long\";\n }\n\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$locale = _ref.locale,\n locale = _ref$locale === void 0 ? null : _ref$locale,\n _ref$numberingSystem = _ref.numberingSystem,\n numberingSystem = _ref$numberingSystem === void 0 ? null : _ref$numberingSystem,\n _ref$outputCalendar = _ref.outputCalendar,\n outputCalendar = _ref$outputCalendar === void 0 ? \"gregory\" : _ref$outputCalendar;\n\n return Locale.create(locale, numberingSystem, outputCalendar).months(length);\n }\n /**\r\n * Return an array of format month names.\r\n * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\r\n * changes the string.\r\n * See {@link months}\r\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\r\n * @param {Object} opts - options\r\n * @param {string} [opts.locale] - the locale code\r\n * @param {string} [opts.numberingSystem=null] - the numbering system\r\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\r\n * @return {[string]}\r\n */\n ;\n\n Info.monthsFormat = function monthsFormat(length, _temp2) {\n if (length === void 0) {\n length = \"long\";\n }\n\n var _ref2 = _temp2 === void 0 ? {} : _temp2,\n _ref2$locale = _ref2.locale,\n locale = _ref2$locale === void 0 ? null : _ref2$locale,\n _ref2$numberingSystem = _ref2.numberingSystem,\n numberingSystem = _ref2$numberingSystem === void 0 ? null : _ref2$numberingSystem,\n _ref2$outputCalendar = _ref2.outputCalendar,\n outputCalendar = _ref2$outputCalendar === void 0 ? \"gregory\" : _ref2$outputCalendar;\n\n return Locale.create(locale, numberingSystem, outputCalendar).months(length, true);\n }\n /**\r\n * Return an array of standalone week names.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\r\n * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\r\n * @param {Object} opts - options\r\n * @param {string} [opts.locale] - the locale code\r\n * @param {string} [opts.numberingSystem=null] - the numbering system\r\n * @example Info.weekdays()[0] //=> 'Monday'\r\n * @example Info.weekdays('short')[0] //=> 'Mon'\r\n * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\r\n * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين'\r\n * @return {[string]}\r\n */\n ;\n\n Info.weekdays = function weekdays(length, _temp3) {\n if (length === void 0) {\n length = \"long\";\n }\n\n var _ref3 = _temp3 === void 0 ? {} : _temp3,\n _ref3$locale = _ref3.locale,\n locale = _ref3$locale === void 0 ? null : _ref3$locale,\n _ref3$numberingSystem = _ref3.numberingSystem,\n numberingSystem = _ref3$numberingSystem === void 0 ? null : _ref3$numberingSystem;\n\n return Locale.create(locale, numberingSystem, null).weekdays(length);\n }\n /**\r\n * Return an array of format week names.\r\n * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\r\n * changes the string.\r\n * See {@link weekdays}\r\n * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\r\n * @param {Object} opts - options\r\n * @param {string} [opts.locale=null] - the locale code\r\n * @param {string} [opts.numberingSystem=null] - the numbering system\r\n * @return {[string]}\r\n */\n ;\n\n Info.weekdaysFormat = function weekdaysFormat(length, _temp4) {\n if (length === void 0) {\n length = \"long\";\n }\n\n var _ref4 = _temp4 === void 0 ? {} : _temp4,\n _ref4$locale = _ref4.locale,\n locale = _ref4$locale === void 0 ? null : _ref4$locale,\n _ref4$numberingSystem = _ref4.numberingSystem,\n numberingSystem = _ref4$numberingSystem === void 0 ? null : _ref4$numberingSystem;\n\n return Locale.create(locale, numberingSystem, null).weekdays(length, true);\n }\n /**\r\n * Return an array of meridiems.\r\n * @param {Object} opts - options\r\n * @param {string} [opts.locale] - the locale code\r\n * @example Info.meridiems() //=> [ 'AM', 'PM' ]\r\n * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ]\r\n * @return {[string]}\r\n */\n ;\n\n Info.meridiems = function meridiems(_temp5) {\n var _ref5 = _temp5 === void 0 ? {} : _temp5,\n _ref5$locale = _ref5.locale,\n locale = _ref5$locale === void 0 ? null : _ref5$locale;\n\n return Locale.create(locale).meridiems();\n }\n /**\r\n * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\r\n * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\r\n * @param {Object} opts - options\r\n * @param {string} [opts.locale] - the locale code\r\n * @example Info.eras() //=> [ 'BC', 'AD' ]\r\n * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\r\n * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]\r\n * @return {[string]}\r\n */\n ;\n\n Info.eras = function eras(length, _temp6) {\n if (length === void 0) {\n length = \"short\";\n }\n\n var _ref6 = _temp6 === void 0 ? {} : _temp6,\n _ref6$locale = _ref6.locale,\n locale = _ref6$locale === void 0 ? null : _ref6$locale;\n\n return Locale.create(locale, null, \"gregory\").eras(length);\n }\n /**\r\n * Return the set of available features in this environment.\r\n * Some features of Luxon are not available in all environments. For example, on older browsers, timezone support is not available. Use this function to figure out if that's the case.\r\n * Keys:\r\n * * `zones`: whether this environment supports IANA timezones\r\n * * `intlTokens`: whether this environment supports internationalized token-based formatting/parsing\r\n * * `intl`: whether this environment supports general internationalization\r\n * * `relative`: whether this environment supports relative time formatting\r\n * @example Info.features() //=> { intl: true, intlTokens: false, zones: true, relative: false }\r\n * @return {Object}\r\n */\n ;\n\n Info.features = function features() {\n var intl = false,\n intlTokens = false,\n zones = false,\n relative = hasRelative();\n\n if (hasIntl()) {\n intl = true;\n intlTokens = hasFormatToParts();\n\n try {\n zones = new Intl.DateTimeFormat(\"en\", {\n timeZone: \"America/New_York\"\n }).resolvedOptions().timeZone === \"America/New_York\";\n } catch (e) {\n zones = false;\n }\n }\n\n return {\n intl: intl,\n intlTokens: intlTokens,\n zones: zones,\n relative: relative\n };\n };\n\n return Info;\n}();\n\nfunction dayDiff(earlier, later) {\n var utcDayStart = function utcDayStart(dt) {\n return dt.toUTC(0, {\n keepLocalTime: true\n }).startOf(\"day\").valueOf();\n },\n ms = utcDayStart(later) - utcDayStart(earlier);\n\n return Math.floor(Duration.fromMillis(ms).as(\"days\"));\n}\n\nfunction highOrderDiffs(cursor, later, units) {\n var differs = [[\"years\", function (a, b) {\n return b.year - a.year;\n }], [\"months\", function (a, b) {\n return b.month - a.month + (b.year - a.year) * 12;\n }], [\"weeks\", function (a, b) {\n var days = dayDiff(a, b);\n return (days - days % 7) / 7;\n }], [\"days\", dayDiff]];\n var results = {};\n var lowestOrder, highWater;\n\n for (var _i = 0, _differs = differs; _i < _differs.length; _i++) {\n var _differs$_i = _differs[_i],\n unit = _differs$_i[0],\n differ = _differs$_i[1];\n\n if (units.indexOf(unit) >= 0) {\n var _cursor$plus;\n\n lowestOrder = unit;\n var delta = differ(cursor, later);\n highWater = cursor.plus((_cursor$plus = {}, _cursor$plus[unit] = delta, _cursor$plus));\n\n if (highWater > later) {\n var _cursor$plus2;\n\n cursor = cursor.plus((_cursor$plus2 = {}, _cursor$plus2[unit] = delta - 1, _cursor$plus2));\n delta -= 1;\n } else {\n cursor = highWater;\n }\n\n results[unit] = delta;\n }\n }\n\n return [cursor, results, highWater, lowestOrder];\n}\n\nfunction _diff (earlier, later, units, opts) {\n var _highOrderDiffs = highOrderDiffs(earlier, later, units),\n cursor = _highOrderDiffs[0],\n results = _highOrderDiffs[1],\n highWater = _highOrderDiffs[2],\n lowestOrder = _highOrderDiffs[3];\n\n var remainingMillis = later - cursor;\n var lowerOrderUnits = units.filter(function (u) {\n return [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"].indexOf(u) >= 0;\n });\n\n if (lowerOrderUnits.length === 0) {\n if (highWater < later) {\n var _cursor$plus3;\n\n highWater = cursor.plus((_cursor$plus3 = {}, _cursor$plus3[lowestOrder] = 1, _cursor$plus3));\n }\n\n if (highWater !== cursor) {\n results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n }\n }\n\n var duration = Duration.fromObject(Object.assign(results, opts));\n\n if (lowerOrderUnits.length > 0) {\n var _Duration$fromMillis;\n\n return (_Duration$fromMillis = Duration.fromMillis(remainingMillis, opts)).shiftTo.apply(_Duration$fromMillis, lowerOrderUnits).plus(duration);\n } else {\n return duration;\n }\n}\n\nvar numberingSystems = {\n arab: \"[\\u0660-\\u0669]\",\n arabext: \"[\\u06F0-\\u06F9]\",\n bali: \"[\\u1B50-\\u1B59]\",\n beng: \"[\\u09E6-\\u09EF]\",\n deva: \"[\\u0966-\\u096F]\",\n fullwide: \"[\\uFF10-\\uFF19]\",\n gujr: \"[\\u0AE6-\\u0AEF]\",\n hanidec: \"[〇|一|二|三|四|五|六|七|八|九]\",\n khmr: \"[\\u17E0-\\u17E9]\",\n knda: \"[\\u0CE6-\\u0CEF]\",\n laoo: \"[\\u0ED0-\\u0ED9]\",\n limb: \"[\\u1946-\\u194F]\",\n mlym: \"[\\u0D66-\\u0D6F]\",\n mong: \"[\\u1810-\\u1819]\",\n mymr: \"[\\u1040-\\u1049]\",\n orya: \"[\\u0B66-\\u0B6F]\",\n tamldec: \"[\\u0BE6-\\u0BEF]\",\n telu: \"[\\u0C66-\\u0C6F]\",\n thai: \"[\\u0E50-\\u0E59]\",\n tibt: \"[\\u0F20-\\u0F29]\",\n latn: \"\\\\d\"\n};\nvar numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881]\n}; // eslint-disable-next-line\n\nvar hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\nfunction parseDigits(str) {\n var value = parseInt(str, 10);\n\n if (isNaN(value)) {\n value = \"\";\n\n for (var i = 0; i < str.length; i++) {\n var code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (var key in numberingSystemsUTF16) {\n var _numberingSystemsUTF = numberingSystemsUTF16[key],\n min = _numberingSystemsUTF[0],\n max = _numberingSystemsUTF[1];\n\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\nfunction digitRegex(_ref, append) {\n var numberingSystem = _ref.numberingSystem;\n\n if (append === void 0) {\n append = \"\";\n }\n\n return new RegExp(\"\" + numberingSystems[numberingSystem || \"latn\"] + append);\n}\n\nvar MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\n\nfunction intUnit(regex, post) {\n if (post === void 0) {\n post = function post(i) {\n return i;\n };\n }\n\n return {\n regex: regex,\n deser: function deser(_ref) {\n var s = _ref[0];\n return post(parseDigits(s));\n }\n };\n}\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n return s.replace(/\\./, \"\\\\.?\");\n}\n\nfunction stripInsensitivities(s) {\n return s.replace(/\\./, \"\").toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join(\"|\")),\n deser: function deser(_ref2) {\n var s = _ref2[0];\n return strings.findIndex(function (i) {\n return stripInsensitivities(s) === stripInsensitivities(i);\n }) + startIndex;\n }\n };\n }\n}\n\nfunction offset(regex, groups) {\n return {\n regex: regex,\n deser: function deser(_ref3) {\n var h = _ref3[1],\n m = _ref3[2];\n return signedOffset(h, m);\n },\n groups: groups\n };\n}\n\nfunction simple(regex) {\n return {\n regex: regex,\n deser: function deser(_ref4) {\n var s = _ref4[0];\n return s;\n }\n };\n}\n\nfunction escapeToken(value) {\n // eslint-disable-next-line no-useless-escape\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\n\nfunction unitForToken(token, loc) {\n var one = digitRegex(loc),\n two = digitRegex(loc, \"{2}\"),\n three = digitRegex(loc, \"{3}\"),\n four = digitRegex(loc, \"{4}\"),\n six = digitRegex(loc, \"{6}\"),\n oneOrTwo = digitRegex(loc, \"{1,2}\"),\n oneToThree = digitRegex(loc, \"{1,3}\"),\n oneToSix = digitRegex(loc, \"{1,6}\"),\n oneToNine = digitRegex(loc, \"{1,9}\"),\n twoToFour = digitRegex(loc, \"{2,4}\"),\n fourToSix = digitRegex(loc, \"{4,6}\"),\n literal = function literal(t) {\n return {\n regex: RegExp(escapeToken(t.val)),\n deser: function deser(_ref5) {\n var s = _ref5[0];\n return s;\n },\n literal: true\n };\n },\n unitate = function unitate(t) {\n if (token.literal) {\n return literal(t);\n }\n\n switch (t.val) {\n // era\n case \"G\":\n return oneOf(loc.eras(\"short\", false), 0);\n\n case \"GG\":\n return oneOf(loc.eras(\"long\", false), 0);\n // years\n\n case \"y\":\n return intUnit(oneToSix);\n\n case \"yy\":\n return intUnit(twoToFour, untruncateYear);\n\n case \"yyyy\":\n return intUnit(four);\n\n case \"yyyyy\":\n return intUnit(fourToSix);\n\n case \"yyyyyy\":\n return intUnit(six);\n // months\n\n case \"M\":\n return intUnit(oneOrTwo);\n\n case \"MM\":\n return intUnit(two);\n\n case \"MMM\":\n return oneOf(loc.months(\"short\", true, false), 1);\n\n case \"MMMM\":\n return oneOf(loc.months(\"long\", true, false), 1);\n\n case \"L\":\n return intUnit(oneOrTwo);\n\n case \"LL\":\n return intUnit(two);\n\n case \"LLL\":\n return oneOf(loc.months(\"short\", false, false), 1);\n\n case \"LLLL\":\n return oneOf(loc.months(\"long\", false, false), 1);\n // dates\n\n case \"d\":\n return intUnit(oneOrTwo);\n\n case \"dd\":\n return intUnit(two);\n // ordinals\n\n case \"o\":\n return intUnit(oneToThree);\n\n case \"ooo\":\n return intUnit(three);\n // time\n\n case \"HH\":\n return intUnit(two);\n\n case \"H\":\n return intUnit(oneOrTwo);\n\n case \"hh\":\n return intUnit(two);\n\n case \"h\":\n return intUnit(oneOrTwo);\n\n case \"mm\":\n return intUnit(two);\n\n case \"m\":\n return intUnit(oneOrTwo);\n\n case \"s\":\n return intUnit(oneOrTwo);\n\n case \"ss\":\n return intUnit(two);\n\n case \"S\":\n return intUnit(oneToThree);\n\n case \"SSS\":\n return intUnit(three);\n\n case \"u\":\n return simple(oneToNine);\n // meridiem\n\n case \"a\":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n\n case \"kkkk\":\n return intUnit(four);\n\n case \"kk\":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n\n case \"W\":\n return intUnit(oneOrTwo);\n\n case \"WW\":\n return intUnit(two);\n // weekdays\n\n case \"E\":\n case \"c\":\n return intUnit(one);\n\n case \"EEE\":\n return oneOf(loc.weekdays(\"short\", false, false), 1);\n\n case \"EEEE\":\n return oneOf(loc.weekdays(\"long\", false, false), 1);\n\n case \"ccc\":\n return oneOf(loc.weekdays(\"short\", true, false), 1);\n\n case \"cccc\":\n return oneOf(loc.weekdays(\"long\", true, false), 1);\n // offset/zone\n\n case \"Z\":\n case \"ZZ\":\n return offset(new RegExp(\"([+-]\" + oneOrTwo.source + \")(?::(\" + two.source + \"))?\"), 2);\n\n case \"ZZZ\":\n return offset(new RegExp(\"([+-]\" + oneOrTwo.source + \")(\" + two.source + \")?\"), 2);\n // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don't have any way to figure out what they are\n\n case \"z\":\n return simple(/[a-z_+-/]{1,256}?/i);\n\n default:\n return literal(t);\n }\n };\n\n var unit = unitate(token) || {\n invalidReason: MISSING_FTP\n };\n unit.token = token;\n return unit;\n}\n\nfunction buildRegex(units) {\n var re = units.map(function (u) {\n return u.regex;\n }).reduce(function (f, r) {\n return f + \"(\" + r.source + \")\";\n }, \"\");\n return [\"^\" + re + \"$\", units];\n}\n\nfunction match(input, regex, handlers) {\n var matches = input.match(regex);\n\n if (matches) {\n var all = {};\n var matchIndex = 1;\n\n for (var i in handlers) {\n if (handlers.hasOwnProperty(i)) {\n var h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n\n matchIndex += groups;\n }\n }\n\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n var toField = function toField(token) {\n switch (token) {\n case \"S\":\n return \"millisecond\";\n\n case \"s\":\n return \"second\";\n\n case \"m\":\n return \"minute\";\n\n case \"h\":\n case \"H\":\n return \"hour\";\n\n case \"d\":\n return \"day\";\n\n case \"o\":\n return \"ordinal\";\n\n case \"L\":\n case \"M\":\n return \"month\";\n\n case \"y\":\n return \"year\";\n\n case \"E\":\n case \"c\":\n return \"weekday\";\n\n case \"W\":\n return \"weekNumber\";\n\n case \"k\":\n return \"weekYear\";\n\n default:\n return null;\n }\n };\n\n var zone;\n\n if (!isUndefined(matches.Z)) {\n zone = new FixedOffsetZone(matches.Z);\n } else if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n } else {\n zone = null;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n var vals = Object.keys(matches).reduce(function (r, k) {\n var f = toField(k);\n\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n return [vals, zone];\n}\n/**\r\n * @private\r\n */\n\n\nfunction explainFromTokens(locale, input, format) {\n var tokens = Formatter.parseFormat(format),\n units = tokens.map(function (t) {\n return unitForToken(t, locale);\n }),\n disqualifyingUnit = units.find(function (t) {\n return t.invalidReason;\n });\n\n if (disqualifyingUnit) {\n return {\n input: input,\n tokens: tokens,\n invalidReason: disqualifyingUnit.invalidReason\n };\n } else {\n var _buildRegex = buildRegex(units),\n regexString = _buildRegex[0],\n handlers = _buildRegex[1],\n regex = RegExp(regexString, \"i\"),\n _match = match(input, regex, handlers),\n rawMatches = _match[0],\n matches = _match[1],\n _ref6 = matches ? dateTimeFromMatches(matches) : [null, null],\n result = _ref6[0],\n zone = _ref6[1];\n\n return {\n input: input,\n tokens: tokens,\n regex: regex,\n rawMatches: rawMatches,\n matches: matches,\n result: result,\n zone: zone\n };\n }\n}\nfunction parseFromTokens(locale, input, format) {\n var _explainFromTokens = explainFromTokens(locale, input, format),\n result = _explainFromTokens.result,\n zone = _explainFromTokens.zone,\n invalidReason = _explainFromTokens.invalidReason;\n\n return [result, zone, invalidReason];\n}\n\nvar nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\"unit out of range\", \"you specified \" + value + \" (of type \" + typeof value + \") as a \" + unit + \", which is invalid\");\n}\n\nfunction dayOfWeek(year, month, day) {\n var js = new Date(Date.UTC(year, month - 1, day)).getUTCDay();\n return js === 0 ? 7 : js;\n}\n\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n var table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex(function (i) {\n return i < ordinal;\n }),\n day = ordinal - table[month0];\n return {\n month: month0 + 1,\n day: day\n };\n}\n/**\r\n * @private\r\n */\n\n\nfunction gregorianToWeek(gregObj) {\n var year = gregObj.year,\n month = gregObj.month,\n day = gregObj.day,\n ordinal = computeOrdinal(year, month, day),\n weekday = dayOfWeek(year, month, day);\n var weekNumber = Math.floor((ordinal - weekday + 10) / 7),\n weekYear;\n\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear);\n } else if (weekNumber > weeksInWeekYear(year)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n\n return Object.assign({\n weekYear: weekYear,\n weekNumber: weekNumber,\n weekday: weekday\n }, timeObject(gregObj));\n}\nfunction weekToGregorian(weekData) {\n var weekYear = weekData.weekYear,\n weekNumber = weekData.weekNumber,\n weekday = weekData.weekday,\n weekdayOfJan4 = dayOfWeek(weekYear, 1, 4),\n yearInDays = daysInYear(weekYear);\n var ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 3,\n year;\n\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n\n var _uncomputeOrdinal = uncomputeOrdinal(year, ordinal),\n month = _uncomputeOrdinal.month,\n day = _uncomputeOrdinal.day;\n\n return Object.assign({\n year: year,\n month: month,\n day: day\n }, timeObject(weekData));\n}\nfunction gregorianToOrdinal(gregData) {\n var year = gregData.year,\n month = gregData.month,\n day = gregData.day,\n ordinal = computeOrdinal(year, month, day);\n return Object.assign({\n year: year,\n ordinal: ordinal\n }, timeObject(gregData));\n}\nfunction ordinalToGregorian(ordinalData) {\n var year = ordinalData.year,\n ordinal = ordinalData.ordinal,\n _uncomputeOrdinal2 = uncomputeOrdinal(year, ordinal),\n month = _uncomputeOrdinal2.month,\n day = _uncomputeOrdinal2.day;\n\n return Object.assign({\n year: year,\n month: month,\n day: day\n }, timeObject(ordinalData));\n}\nfunction hasInvalidWeekData(obj) {\n var validYear = isNumber(obj.weekYear),\n validWeek = numberBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear)),\n validWeekday = numberBetween(obj.weekday, 1, 7);\n\n if (!validYear) {\n return unitOutOfRange(\"weekYear\", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange(\"week\", obj.week);\n } else if (!validWeekday) {\n return unitOutOfRange(\"weekday\", obj.weekday);\n } else return false;\n}\nfunction hasInvalidOrdinalData(obj) {\n var validYear = isNumber(obj.year),\n validOrdinal = numberBetween(obj.ordinal, 1, daysInYear(obj.year));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange(\"ordinal\", obj.ordinal);\n } else return false;\n}\nfunction hasInvalidGregorianData(obj) {\n var validYear = isNumber(obj.year),\n validMonth = numberBetween(obj.month, 1, 12),\n validDay = numberBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange(\"month\", obj.month);\n } else if (!validDay) {\n return unitOutOfRange(\"day\", obj.day);\n } else return false;\n}\nfunction hasInvalidTimeData(obj) {\n var hour = obj.hour,\n minute = obj.minute,\n second = obj.second,\n millisecond = obj.millisecond;\n var validHour = numberBetween(hour, 0, 23) || hour === 24 && minute === 0 && second === 0 && millisecond === 0,\n validMinute = numberBetween(minute, 0, 59),\n validSecond = numberBetween(second, 0, 59),\n validMillisecond = numberBetween(millisecond, 0, 999);\n\n if (!validHour) {\n return unitOutOfRange(\"hour\", hour);\n } else if (!validMinute) {\n return unitOutOfRange(\"minute\", minute);\n } else if (!validSecond) {\n return unitOutOfRange(\"second\", second);\n } else if (!validMillisecond) {\n return unitOutOfRange(\"millisecond\", millisecond);\n } else return false;\n}\n\nvar INVALID$2 = \"Invalid DateTime\";\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", \"the zone \\\"\" + zone.name + \"\\\" is not supported\");\n} // we cache week data on the DT object and this intermediates the cache\n\n\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n\n return dt.weekData;\n} // clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\n\n\nfunction clone$1(inst, alts) {\n var current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid\n };\n return new DateTime(Object.assign({}, current, alts, {\n old: current\n }));\n} // find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\n\n\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n var utcGuess = localTS - o * 60 * 1000; // Test whether the zone matches the offset for this ts\n\n var o2 = tz.offset(utcGuess); // If so, offset didn't change and we're done\n\n if (o === o2) {\n return [utcGuess, o];\n } // If not, change the ts by the difference in the offset\n\n\n utcGuess -= (o2 - o) * 60 * 1000; // If that gives us the local time we want, we're done\n\n var o3 = tz.offset(utcGuess);\n\n if (o2 === o3) {\n return [utcGuess, o2];\n } // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n\n\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n} // convert an epoch timestamp into a calendar object with the given offset\n\n\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n var d = new Date(ts);\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds()\n };\n} // convert a calendar object to a epoch timestamp\n\n\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n} // create a new DT instance by adding a duration, adjusting for DSTs\n\n\nfunction adjustTime(inst, dur) {\n var oPre = inst.o,\n year = inst.c.year + dur.years,\n month = inst.c.month + dur.months + dur.quarters * 3,\n c = Object.assign({}, inst.c, {\n year: year,\n month: month,\n day: Math.min(inst.c.day, daysInMonth(year, month)) + dur.days + dur.weeks * 7\n }),\n millisToAdd = Duration.fromObject({\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n var _fixOffset = fixOffset(localTS, oPre, inst.zone),\n ts = _fixOffset[0],\n o = _fixOffset[1];\n\n if (millisToAdd !== 0) {\n ts += millisToAdd; // that could have changed the offset by going over a DST, but we want to keep the ts the same\n\n o = inst.zone.offset(ts);\n }\n\n return {\n ts: ts,\n o: o\n };\n} // helper useful in turning the results of parsing into real dates\n// by handling the zone options\n\n\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text) {\n var setZone = opts.setZone,\n zone = opts.zone;\n\n if (parsed && Object.keys(parsed).length !== 0) {\n var interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(Object.assign(parsed, opts, {\n zone: interpretationZone,\n // setZone is a valid option in the calling methods, but not in fromObject\n setZone: undefined\n }));\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(new Invalid(\"unparsable\", \"the input \\\"\" + text + \"\\\" can't be parsed as \" + format));\n }\n} // if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\n\n\nfunction toTechFormat(dt, format) {\n return dt.isValid ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ: true,\n forceSimple: true\n }).formatDateTimeFromString(dt, format) : null;\n} // technical time formats (e.g. the time part of ISO 8601), take some options\n// and this commonizes their handling\n\n\nfunction toTechTimeFormat(dt, _ref) {\n var _ref$suppressSeconds = _ref.suppressSeconds,\n suppressSeconds = _ref$suppressSeconds === void 0 ? false : _ref$suppressSeconds,\n _ref$suppressMillisec = _ref.suppressMilliseconds,\n suppressMilliseconds = _ref$suppressMillisec === void 0 ? false : _ref$suppressMillisec,\n includeOffset = _ref.includeOffset,\n _ref$includeZone = _ref.includeZone,\n includeZone = _ref$includeZone === void 0 ? false : _ref$includeZone,\n _ref$spaceZone = _ref.spaceZone,\n spaceZone = _ref$spaceZone === void 0 ? false : _ref$spaceZone;\n var fmt = \"HH:mm\";\n\n if (!suppressSeconds || dt.second !== 0 || dt.millisecond !== 0) {\n fmt += \":ss\";\n\n if (!suppressMilliseconds || dt.millisecond !== 0) {\n fmt += \".SSS\";\n }\n }\n\n if ((includeZone || includeOffset) && spaceZone) {\n fmt += \" \";\n }\n\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += \"ZZ\";\n }\n\n return toTechFormat(dt, fmt);\n} // defaults for unspecified units in the supported calendars\n\n\nvar defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n},\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n},\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n}; // Units in the supported calendars, sorted by bigness\n\nvar orderedUnits$1 = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\"weekYear\", \"weekNumber\", \"weekday\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"]; // standardize case and plurality in units\n\nfunction normalizeUnit(unit) {\n var normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\"\n }[unit.toLowerCase()];\n if (!normalized) throw new InvalidUnitError(unit);\n return normalized;\n} // this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\n\n\nfunction quickDT(obj, zone) {\n // assume we have the higher-order units\n for (var _i = 0, _orderedUnits = orderedUnits$1; _i < _orderedUnits.length; _i++) {\n var u = _orderedUnits[_i];\n\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n var invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n var tsNow = Settings.now(),\n offsetProvis = zone.offset(tsNow),\n _objToTS = objToTS(obj, offsetProvis, zone),\n ts = _objToTS[0],\n o = _objToTS[1];\n\n return new DateTime({\n ts: ts,\n zone: zone,\n o: o\n });\n}\n\nfunction diffRelative(start, end, opts) {\n var round = isUndefined(opts.round) ? true : opts.round,\n format = function format(c, unit) {\n c = roundTo(c, round || opts.calendary ? 0 : 2, true);\n var formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = function differ(unit) {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end.startOf(unit).diff(start.startOf(unit), unit).get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (var _iterator = opts.units, _isArray = Array.isArray(_iterator), _i2 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray) {\n if (_i2 >= _iterator.length) break;\n _ref2 = _iterator[_i2++];\n } else {\n _i2 = _iterator.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var unit = _ref2;\n var count = differ(unit);\n\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n\n return format(0, opts.units[opts.units.length - 1]);\n}\n/**\r\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\r\n *\r\n * A DateTime comprises of:\r\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\r\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\r\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\r\n *\r\n * Here is a brief overview of the most commonly used functionality it provides:\r\n *\r\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link local}, {@link utc}, and (most flexibly) {@link fromObject}. To create one from a standard string format, use {@link fromISO}, {@link fromHTTP}, and {@link fromRFC2822}. To create one from a custom string format, use {@link fromFormat}. To create one from a native JS date, use {@link fromJSDate}.\r\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link toObject}), use the {@link year}, {@link month},\r\n * {@link day}, {@link hour}, {@link minute}, {@link second}, {@link millisecond} accessors.\r\n * * **Week calendar**: For ISO week calendar attributes, see the {@link weekYear}, {@link weekNumber}, and {@link weekday} accessors.\r\n * * **Configuration** See the {@link locale} and {@link numberingSystem} accessors.\r\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link set}, {@link reconfigure}, {@link setZone}, {@link setLocale}, {@link plus}, {@link minus}, {@link endOf}, {@link startOf}, {@link toUTC}, and {@link toLocal}.\r\n * * **Output**: To convert the DateTime to other representations, use the {@link toRelative}, {@link toRelativeCalendar}, {@link toJSON}, {@link toISO}, {@link toHTTP}, {@link toObject}, {@link toRFC2822}, {@link toString}, {@link toLocaleString}, {@link toFormat}, {@link toMillis} and {@link toJSDate}.\r\n *\r\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\r\n */\n\n\nvar DateTime =\n/*#__PURE__*/\nfunction () {\n /**\r\n * @access private\r\n */\n function DateTime(config) {\n var zone = config.zone || Settings.defaultZone,\n invalid = config.invalid || (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) || (!zone.isValid ? unsupportedZone(zone) : null);\n /**\r\n * @access private\r\n */\n\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n var c = null,\n o = null;\n\n if (!invalid) {\n var unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n c = unchanged ? config.old.c : tsToObj(this.ts, zone.offset(this.ts));\n o = unchanged ? config.old.o : zone.offset(this.ts);\n }\n /**\r\n * @access private\r\n */\n\n\n this._zone = zone;\n /**\r\n * @access private\r\n */\n\n this.loc = config.loc || Locale.create();\n /**\r\n * @access private\r\n */\n\n this.invalid = invalid;\n /**\r\n * @access private\r\n */\n\n this.weekData = null;\n /**\r\n * @access private\r\n */\n\n this.c = c;\n /**\r\n * @access private\r\n */\n\n this.o = o;\n /**\r\n * @access private\r\n */\n\n this.isLuxonDateTime = true;\n } // CONSTRUCT\n\n /**\r\n * Create a local DateTime\r\n * @param {number} year - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\r\n * @param {number} [month=1] - The month, 1-indexed\r\n * @param {number} [day=1] - The day of the month\r\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\r\n * @param {number} [minute=0] - The minute of the hour, i.e. a number between 0 and 59\r\n * @param {number} [second=0] - The second of the minute, i.e. a number between 0 and 59\r\n * @param {number} [millisecond=0] - The millisecond of the second, i.e. a number between 0 and 999\r\n * @example DateTime.local() //~> now\r\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\r\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\r\n * @example DateTime.local(2017, 3, 12) //~> 2017-03-12T00:00:00\r\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\r\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\r\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\r\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\r\n * @return {DateTime}\r\n */\n\n\n DateTime.local = function local(year, month, day, hour, minute, second, millisecond) {\n if (isUndefined(year)) {\n return new DateTime({\n ts: Settings.now()\n });\n } else {\n return quickDT({\n year: year,\n month: month,\n day: day,\n hour: hour,\n minute: minute,\n second: second,\n millisecond: millisecond\n }, Settings.defaultZone);\n }\n }\n /**\r\n * Create a DateTime in UTC\r\n * @param {number} year - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\r\n * @param {number} [month=1] - The month, 1-indexed\r\n * @param {number} [day=1] - The day of the month\r\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\r\n * @param {number} [minute=0] - The minute of the hour, i.e. a number between 0 and 59\r\n * @param {number} [second=0] - The second of the minute, i.e. a number between 0 and 59\r\n * @param {number} [millisecond=0] - The millisecond of the second, i.e. a number between 0 and 999\r\n * @example DateTime.utc() //~> now\r\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\r\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\r\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\r\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\r\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\r\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\r\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765Z\r\n * @return {DateTime}\r\n */\n ;\n\n DateTime.utc = function utc(year, month, day, hour, minute, second, millisecond) {\n if (isUndefined(year)) {\n return new DateTime({\n ts: Settings.now(),\n zone: FixedOffsetZone.utcInstance\n });\n } else {\n return quickDT({\n year: year,\n month: month,\n day: day,\n hour: hour,\n minute: minute,\n second: second,\n millisecond: millisecond\n }, FixedOffsetZone.utcInstance);\n }\n }\n /**\r\n * Create a DateTime from a Javascript Date object. Uses the default zone.\r\n * @param {Date} date - a Javascript Date object\r\n * @param {Object} options - configuration options for the DateTime\r\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\r\n * @return {DateTime}\r\n */\n ;\n\n DateTime.fromJSDate = function fromJSDate(date, options) {\n if (options === void 0) {\n options = {};\n }\n\n var ts = isDate(date) ? date.valueOf() : NaN;\n\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n var zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options)\n });\n }\n /**\r\n * Create a DateTime from a number of milliseconds since the epoch (i.e. since 1 January 1970 00:00:00 UTC). Uses the default zone.\r\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\r\n * @param {Object} options - configuration options for the DateTime\r\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\r\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\r\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\r\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\r\n * @return {DateTime}\r\n */\n ;\n\n DateTime.fromMillis = function fromMillis(milliseconds, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\"fromMillis requires a numerical input\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options)\n });\n }\n }\n /**\r\n * Create a DateTime from a number of seconds since the epoch (i.e. since 1 January 1970 00:00:00 UTC). Uses the default zone.\r\n * @param {number} seconds - a number of seconds since 1970 UTC\r\n * @param {Object} options - configuration options for the DateTime\r\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\r\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\r\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\r\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\r\n * @return {DateTime}\r\n */\n ;\n\n DateTime.fromSeconds = function fromSeconds(seconds, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options)\n });\n }\n }\n /**\r\n * Create a DateTime from a Javascript object with keys like 'year' and 'hour' with reasonable defaults.\r\n * @param {Object} obj - the object to create the DateTime from\r\n * @param {number} obj.year - a year, such as 1987\r\n * @param {number} obj.month - a month, 1-12\r\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\r\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\r\n * @param {number} obj.weekYear - an ISO week year\r\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\r\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\r\n * @param {number} obj.hour - hour of the day, 0-23\r\n * @param {number} obj.minute - minute of the hour, 0-59\r\n * @param {number} obj.second - second of the minute, 0-59\r\n * @param {number} obj.millisecond - millisecond of the second, 0-999\r\n * @param {string|Zone} [obj.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\r\n * @param {string} [obj.locale='system's locale'] - a locale to set on the resulting DateTime instance\r\n * @param {string} obj.outputCalendar - the output calendar to set on the resulting DateTime instance\r\n * @param {string} obj.numberingSystem - the numbering system to set on the resulting DateTime instance\r\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\r\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\r\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\r\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'utc' }),\r\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'local' })\r\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'America/New_York' })\r\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\r\n * @return {DateTime}\r\n */\n ;\n\n DateTime.fromObject = function fromObject(obj) {\n var zoneToUse = normalizeZone(obj.zone, Settings.defaultZone);\n\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n var tsNow = Settings.now(),\n offsetProvis = zoneToUse.offset(tsNow),\n normalized = normalizeObject(obj, normalizeUnit, [\"zone\", \"locale\", \"outputCalendar\", \"numberingSystem\"]),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber,\n loc = Locale.fromObject(obj); // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\"Can't mix weekYear/weekNumber units with year/month/day or ordinals\");\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n var useWeekData = definiteWeekDef || normalized.weekday && !containsGregor; // configure ourselves to deal with gregorian dates or week stuff\n\n var units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits$1;\n defaultValues = defaultUnitValues;\n } // set default values for missing stuff\n\n\n var foundFirst = false;\n\n for (var _iterator2 = units, _isArray2 = Array.isArray(_iterator2), _i3 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray2) {\n if (_i3 >= _iterator2.length) break;\n _ref3 = _iterator2[_i3++];\n } else {\n _i3 = _iterator2.next();\n if (_i3.done) break;\n _ref3 = _i3.value;\n }\n\n var u = _ref3;\n var v = normalized[u];\n\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n } // make sure the values we have are in range\n\n\n var higherOrderInvalid = useWeekData ? hasInvalidWeekData(normalized) : containsOrdinal ? hasInvalidOrdinalData(normalized) : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n } // compute the actual time\n\n\n var gregorian = useWeekData ? weekToGregorian(normalized) : containsOrdinal ? ordinalToGregorian(normalized) : normalized,\n _objToTS2 = objToTS(gregorian, offsetProvis, zoneToUse),\n tsFinal = _objToTS2[0],\n offsetFinal = _objToTS2[1],\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc: loc\n }); // gregorian data + weekday serves only to validate\n\n\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\"mismatched weekday\", \"you can't specify both a weekday of \" + normalized.weekday + \" and a date of \" + inst.toISO());\n }\n\n return inst;\n }\n /**\r\n * Create a DateTime from an ISO 8601 string\r\n * @param {string} text - the ISO string\r\n * @param {Object} opts - options to affect the creation\r\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\r\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\r\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\r\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\r\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\r\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\r\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\r\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\r\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\r\n * @example DateTime.fromISO('2016-W05-4')\r\n * @return {DateTime}\r\n */\n ;\n\n DateTime.fromISO = function fromISO(text, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var _parseISODate = parseISODate(text),\n vals = _parseISODate[0],\n parsedZone = _parseISODate[1];\n\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n /**\r\n * Create a DateTime from an RFC 2822 string\r\n * @param {string} text - the RFC 2822 string\r\n * @param {Object} opts - options to affect the creation\r\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\r\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\r\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\r\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\r\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\r\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\r\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\r\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\r\n * @return {DateTime}\r\n */\n ;\n\n DateTime.fromRFC2822 = function fromRFC2822(text, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var _parseRFC2822Date = parseRFC2822Date(text),\n vals = _parseRFC2822Date[0],\n parsedZone = _parseRFC2822Date[1];\n\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n /**\r\n * Create a DateTime from an HTTP header date\r\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\r\n * @param {string} text - the HTTP header date\r\n * @param {Object} opts - options to affect the creation\r\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\r\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\r\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\r\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\r\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\r\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\r\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\r\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\r\n * @return {DateTime}\r\n */\n ;\n\n DateTime.fromHTTP = function fromHTTP(text, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var _parseHTTPDate = parseHTTPDate(text),\n vals = _parseHTTPDate[0],\n parsedZone = _parseHTTPDate[1];\n\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n /**\r\n * Create a DateTime from an input string and format string.\r\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\r\n * @see https://moment.github.io/luxon/docs/manual/parsing.html#table-of-tokens\r\n * @param {string} text - the string to parse\r\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\r\n * @param {Object} opts - options to affect the creation\r\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\r\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\r\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\r\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\r\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\r\n * @return {DateTime}\r\n */\n ;\n\n DateTime.fromFormat = function fromFormat(text, fmt, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n var _opts = opts,\n _opts$locale = _opts.locale,\n locale = _opts$locale === void 0 ? null : _opts$locale,\n _opts$numberingSystem = _opts.numberingSystem,\n numberingSystem = _opts$numberingSystem === void 0 ? null : _opts$numberingSystem,\n localeToUse = Locale.fromOpts({\n locale: locale,\n numberingSystem: numberingSystem,\n defaultToEN: true\n }),\n _parseFromTokens = parseFromTokens(localeToUse, text, fmt),\n vals = _parseFromTokens[0],\n parsedZone = _parseFromTokens[1],\n invalid = _parseFromTokens[2];\n\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, \"format \" + fmt, text);\n }\n }\n /**\r\n * @deprecated use fromFormat instead\r\n */\n ;\n\n DateTime.fromString = function fromString(text, fmt, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n return DateTime.fromFormat(text, fmt, opts);\n }\n /**\r\n * Create a DateTime from a SQL date, time, or datetime\r\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\r\n * @param {string} text - the string to parse\r\n * @param {Object} opts - options to affect the creation\r\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\r\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\r\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\r\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\r\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\r\n * @example DateTime.fromSQL('2017-05-15')\r\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\r\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\r\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\r\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\r\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\r\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\r\n * @example DateTime.fromSQL('09:12:34.342')\r\n * @return {DateTime}\r\n */\n ;\n\n DateTime.fromSQL = function fromSQL(text, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var _parseSQL = parseSQL(text),\n vals = _parseSQL[0],\n parsedZone = _parseSQL[1];\n\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n /**\r\n * Create an invalid DateTime.\r\n * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent\r\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\r\n * @return {DateTime}\r\n */\n ;\n\n DateTime.invalid = function invalid(reason, explanation) {\n if (explanation === void 0) {\n explanation = null;\n }\n\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n var invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({\n invalid: invalid\n });\n }\n }\n /**\r\n * Check if an object is a DateTime. Works across context boundaries\r\n * @param {object} o\r\n * @return {boolean}\r\n */\n ;\n\n DateTime.isDateTime = function isDateTime(o) {\n return o && o.isLuxonDateTime || false;\n } // INFO\n\n /**\r\n * Get the value of unit.\r\n * @param {string} unit - a unit such as 'minute' or 'day'\r\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\r\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\r\n * @return {number}\r\n */\n ;\n\n var _proto = DateTime.prototype;\n\n _proto.get = function get(unit) {\n return this[unit];\n }\n /**\r\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\r\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\r\n * * The DateTime was created by an operation on another invalid date\r\n * @type {boolean}\r\n */\n ;\n\n /**\r\n * Returns the resolved Intl options for this DateTime.\r\n * This is useful in understanding the behavior of formatting methods\r\n * @param {Object} opts - the same options as toLocaleString\r\n * @return {Object}\r\n */\n _proto.resolvedLocaleOpts = function resolvedLocaleOpts(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var _Formatter$create$res = Formatter.create(this.loc.clone(opts), opts).resolvedOptions(this),\n locale = _Formatter$create$res.locale,\n numberingSystem = _Formatter$create$res.numberingSystem,\n calendar = _Formatter$create$res.calendar;\n\n return {\n locale: locale,\n numberingSystem: numberingSystem,\n outputCalendar: calendar\n };\n } // TRANSFORM\n\n /**\r\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\r\n *\r\n * Equivalent to {@link setZone}('utc')\r\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\r\n * @param {Object} [opts={}] - options to pass to `setZone()`\r\n * @return {DateTime}\r\n */\n ;\n\n _proto.toUTC = function toUTC(offset, opts) {\n if (offset === void 0) {\n offset = 0;\n }\n\n if (opts === void 0) {\n opts = {};\n }\n\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n /**\r\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\r\n *\r\n * Equivalent to `setZone('local')`\r\n * @return {DateTime}\r\n */\n ;\n\n _proto.toLocal = function toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n /**\r\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\r\n *\r\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link plus}. You may wish to use {@link toLocal} and {@link toUTC} which provide simple convenience wrappers for commonly used zones.\r\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link Zone} class.\r\n * @param {Object} opts - options\r\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\r\n * @return {DateTime}\r\n */\n ;\n\n _proto.setZone = function setZone(zone, _temp) {\n var _ref4 = _temp === void 0 ? {} : _temp,\n _ref4$keepLocalTime = _ref4.keepLocalTime,\n keepLocalTime = _ref4$keepLocalTime === void 0 ? false : _ref4$keepLocalTime,\n _ref4$keepCalendarTim = _ref4.keepCalendarTime,\n keepCalendarTime = _ref4$keepCalendarTim === void 0 ? false : _ref4$keepCalendarTim;\n\n zone = normalizeZone(zone, Settings.defaultZone);\n\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n var newTS = this.ts;\n\n if (keepLocalTime || keepCalendarTime) {\n var offsetGuess = this.o - zone.offset(this.ts);\n var asObj = this.toObject();\n\n var _objToTS3 = objToTS(asObj, offsetGuess, zone);\n\n newTS = _objToTS3[0];\n }\n\n return clone$1(this, {\n ts: newTS,\n zone: zone\n });\n }\n }\n /**\r\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\r\n * @param {Object} properties - the properties to set\r\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\r\n * @return {DateTime}\r\n */\n ;\n\n _proto.reconfigure = function reconfigure(_temp2) {\n var _ref5 = _temp2 === void 0 ? {} : _temp2,\n locale = _ref5.locale,\n numberingSystem = _ref5.numberingSystem,\n outputCalendar = _ref5.outputCalendar;\n\n var loc = this.loc.clone({\n locale: locale,\n numberingSystem: numberingSystem,\n outputCalendar: outputCalendar\n });\n return clone$1(this, {\n loc: loc\n });\n }\n /**\r\n * \"Set\" the locale. Returns a newly-constructed DateTime.\r\n * Just a convenient alias for reconfigure({ locale })\r\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\r\n * @return {DateTime}\r\n */\n ;\n\n _proto.setLocale = function setLocale(locale) {\n return this.reconfigure({\n locale: locale\n });\n }\n /**\r\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\r\n * You can only set units with this method; for \"setting\" metadata, see {@link reconfigure} and {@link setZone}.\r\n * @param {Object} values - a mapping of units to numbers\r\n * @example dt.set({ year: 2017 })\r\n * @example dt.set({ hour: 8, minute: 30 })\r\n * @example dt.set({ weekday: 5 })\r\n * @example dt.set({ year: 2005, ordinal: 234 })\r\n * @return {DateTime}\r\n */\n ;\n\n _proto.set = function set(values) {\n if (!this.isValid) return this;\n var normalized = normalizeObject(values, normalizeUnit, []),\n settingWeekStuff = !isUndefined(normalized.weekYear) || !isUndefined(normalized.weekNumber) || !isUndefined(normalized.weekday);\n var mixed;\n\n if (settingWeekStuff) {\n mixed = weekToGregorian(Object.assign(gregorianToWeek(this.c), normalized));\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian(Object.assign(gregorianToOrdinal(this.c), normalized));\n } else {\n mixed = Object.assign(this.toObject(), normalized); // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n var _objToTS4 = objToTS(mixed, this.o, this.zone),\n ts = _objToTS4[0],\n o = _objToTS4[1];\n\n return clone$1(this, {\n ts: ts,\n o: o\n });\n }\n /**\r\n * Add a period of time to this DateTime and return the resulting DateTime\r\n *\r\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\r\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\r\n * @example DateTime.local().plus(123) //~> in 123 milliseconds\r\n * @example DateTime.local().plus({ minutes: 15 }) //~> in 15 minutes\r\n * @example DateTime.local().plus({ days: 1 }) //~> this time tomorrow\r\n * @example DateTime.local().plus({ days: -1 }) //~> this time yesterday\r\n * @example DateTime.local().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\r\n * @example DateTime.local().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\r\n * @return {DateTime}\r\n */\n ;\n\n _proto.plus = function plus(duration) {\n if (!this.isValid) return this;\n var dur = friendlyDuration(duration);\n return clone$1(this, adjustTime(this, dur));\n }\n /**\r\n * Subtract a period of time to this DateTime and return the resulting DateTime\r\n * See {@link plus}\r\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\r\n @return {DateTime}\r\n */\n ;\n\n _proto.minus = function minus(duration) {\n if (!this.isValid) return this;\n var dur = friendlyDuration(duration).negate();\n return clone$1(this, adjustTime(this, dur));\n }\n /**\r\n * \"Set\" this DateTime to the beginning of a unit of time.\r\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\r\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\r\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\r\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\r\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\r\n * @return {DateTime}\r\n */\n ;\n\n _proto.startOf = function startOf(unit) {\n if (!this.isValid) return this;\n var o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n\n case \"hours\":\n o.minute = 0;\n // falls through\n\n case \"minutes\":\n o.second = 0;\n // falls through\n\n case \"seconds\":\n o.millisecond = 0;\n break;\n\n case \"milliseconds\":\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n o.weekday = 1;\n }\n\n if (normalizedUnit === \"quarters\") {\n var q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n /**\r\n * \"Set\" this DateTime to the end (i.e. the last millisecond) of a unit of time\r\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'month', 'day', 'hour', 'minute', 'second', or 'millisecond'.\r\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\r\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\r\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\r\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\r\n * @return {DateTime}\r\n */\n ;\n\n _proto.endOf = function endOf(unit) {\n var _this$plus;\n\n return this.isValid ? this.plus((_this$plus = {}, _this$plus[unit] = 1, _this$plus)).startOf(unit).minus(1) : this;\n } // OUTPUT\n\n /**\r\n * Returns a string representation of this DateTime formatted according to the specified format string.\r\n * **You may not want this.** See {@link toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/docs/manual/formatting.html#table-of-tokens).\r\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\r\n * @see https://moment.github.io/luxon/docs/manual/formatting.html#table-of-tokens\r\n * @param {string} fmt - the format string\r\n * @param {Object} opts - opts to override the configuration options\r\n * @example DateTime.local().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\r\n * @example DateTime.local().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\r\n * @example DateTime.local().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\r\n * @example DateTime.local().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\r\n * @return {string}\r\n */\n ;\n\n _proto.toFormat = function toFormat(fmt, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n return this.isValid ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt) : INVALID$2;\n }\n /**\r\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\r\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\r\n * of the DateTime in the assigned locale.\r\n * Defaults to the system's locale if no locale has been specified\r\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\r\n * @param opts {Object} - Intl.DateTimeFormat constructor options and configuration options\r\n * @example DateTime.local().toLocaleString(); //=> 4/20/2017\r\n * @example DateTime.local().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\r\n * @example DateTime.local().toLocaleString({ locale: 'en-gb' }); //=> '20/04/2017'\r\n * @example DateTime.local().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\r\n * @example DateTime.local().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\r\n * @example DateTime.local().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\r\n * @example DateTime.local().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\r\n * @example DateTime.local().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\r\n * @example DateTime.local().toLocaleString({ hour: '2-digit', minute: '2-digit', hour12: false }); //=> '11:32'\r\n * @return {string}\r\n */\n ;\n\n _proto.toLocaleString = function toLocaleString(opts) {\n if (opts === void 0) {\n opts = DATE_SHORT;\n }\n\n return this.isValid ? Formatter.create(this.loc.clone(opts), opts).formatDateTime(this) : INVALID$2;\n }\n /**\r\n * Returns an array of format \"parts\", i.e. individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\r\n * Defaults to the system's locale if no locale has been specified\r\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\r\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\r\n * @example DateTime.local().toLocaleString(); //=> [\r\n * //=> { type: 'day', value: '25' },\r\n * //=> { type: 'literal', value: '/' },\r\n * //=> { type: 'month', value: '05' },\r\n * //=> { type: 'literal', value: '/' },\r\n * //=> { type: 'year', value: '1982' }\r\n * //=> ]\r\n */\n ;\n\n _proto.toLocaleParts = function toLocaleParts(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n return this.isValid ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this) : [];\n }\n /**\r\n * Returns an ISO 8601-compliant string representation of this DateTime\r\n * @param {Object} opts - options\r\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\r\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\r\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\r\n * @example DateTime.utc(1982, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\r\n * @example DateTime.local().toISO() //=> '2017-04-22T20:47:05.335-04:00'\r\n * @example DateTime.local().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\r\n * @return {string}\r\n */\n ;\n\n _proto.toISO = function toISO(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n if (!this.isValid) {\n return null;\n }\n\n return this.toISODate() + \"T\" + this.toISOTime(opts);\n }\n /**\r\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\r\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\r\n * @return {string}\r\n */\n ;\n\n _proto.toISODate = function toISODate() {\n var format = \"yyyy-MM-dd\";\n\n if (this.year > 9999) {\n format = \"+\" + format;\n }\n\n return toTechFormat(this, format);\n }\n /**\r\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\r\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\r\n * @return {string}\r\n */\n ;\n\n _proto.toISOWeekDate = function toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n /**\r\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\r\n * @param {Object} opts - options\r\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\r\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\r\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\r\n * @example DateTime.utc().hour(7).minute(34).toISOTime() //=> '07:34:19.361Z'\r\n * @example DateTime.utc().hour(7).minute(34).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\r\n * @return {string}\r\n */\n ;\n\n _proto.toISOTime = function toISOTime(_temp3) {\n var _ref6 = _temp3 === void 0 ? {} : _temp3,\n _ref6$suppressMillise = _ref6.suppressMilliseconds,\n suppressMilliseconds = _ref6$suppressMillise === void 0 ? false : _ref6$suppressMillise,\n _ref6$suppressSeconds = _ref6.suppressSeconds,\n suppressSeconds = _ref6$suppressSeconds === void 0 ? false : _ref6$suppressSeconds,\n _ref6$includeOffset = _ref6.includeOffset,\n includeOffset = _ref6$includeOffset === void 0 ? true : _ref6$includeOffset;\n\n return toTechTimeFormat(this, {\n suppressSeconds: suppressSeconds,\n suppressMilliseconds: suppressMilliseconds,\n includeOffset: includeOffset\n });\n }\n /**\r\n * Returns an RFC 2822-compatible string representation of this DateTime, always in UTC\r\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\r\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\r\n * @return {string}\r\n */\n ;\n\n _proto.toRFC2822 = function toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\");\n }\n /**\r\n * Returns a string representation of this DateTime appropriate for use in HTTP headers.\r\n * Specifically, the string conforms to RFC 1123.\r\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\r\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\r\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\r\n * @return {string}\r\n */\n ;\n\n _proto.toHTTP = function toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n /**\r\n * Returns a string representation of this DateTime appropriate for use in SQL Date\r\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\r\n * @return {string}\r\n */\n ;\n\n _proto.toSQLDate = function toSQLDate() {\n return toTechFormat(this, \"yyyy-MM-dd\");\n }\n /**\r\n * Returns a string representation of this DateTime appropriate for use in SQL Time\r\n * @param {Object} opts - options\r\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\r\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\r\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\r\n * @example DateTime.local().toSQL() //=> '05:15:16.345 -04:00'\r\n * @example DateTime.local().toSQL({ includeOffset: false }) //=> '05:15:16.345'\r\n * @example DateTime.local().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\r\n * @return {string}\r\n */\n ;\n\n _proto.toSQLTime = function toSQLTime(_temp4) {\n var _ref7 = _temp4 === void 0 ? {} : _temp4,\n _ref7$includeOffset = _ref7.includeOffset,\n includeOffset = _ref7$includeOffset === void 0 ? true : _ref7$includeOffset,\n _ref7$includeZone = _ref7.includeZone,\n includeZone = _ref7$includeZone === void 0 ? false : _ref7$includeZone;\n\n return toTechTimeFormat(this, {\n includeOffset: includeOffset,\n includeZone: includeZone,\n spaceZone: true\n });\n }\n /**\r\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\r\n * @param {Object} opts - options\r\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\r\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\r\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\r\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\r\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\r\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\r\n * @return {string}\r\n */\n ;\n\n _proto.toSQL = function toSQL(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n if (!this.isValid) {\n return null;\n }\n\n return this.toSQLDate() + \" \" + this.toSQLTime(opts);\n }\n /**\r\n * Returns a string representation of this DateTime appropriate for debugging\r\n * @return {string}\r\n */\n ;\n\n _proto.toString = function toString() {\n return this.isValid ? this.toISO() : INVALID$2;\n }\n /**\r\n * Returns the epoch milliseconds of this DateTime. Alias of {@link toMillis}\r\n * @return {number}\r\n */\n ;\n\n _proto.valueOf = function valueOf() {\n return this.toMillis();\n }\n /**\r\n * Returns the epoch milliseconds of this DateTime.\r\n * @return {number}\r\n */\n ;\n\n _proto.toMillis = function toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n /**\r\n * Returns the epoch seconds of this DateTime.\r\n * @return {number}\r\n */\n ;\n\n _proto.toSeconds = function toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n /**\r\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\r\n * @return {string}\r\n */\n ;\n\n _proto.toJSON = function toJSON() {\n return this.toISO();\n }\n /**\r\n * Returns a BSON serializable equivalent to this DateTime.\r\n * @return {Date}\r\n */\n ;\n\n _proto.toBSON = function toBSON() {\n return this.toJSDate();\n }\n /**\r\n * Returns a Javascript object with this DateTime's year, month, day, and so on.\r\n * @param opts - options for generating the object\r\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\r\n * @example DateTime.local().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\r\n * @return {Object}\r\n */\n ;\n\n _proto.toObject = function toObject(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n if (!this.isValid) return {};\n var base = Object.assign({}, this.c);\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n\n return base;\n }\n /**\r\n * Returns a Javascript Date equivalent to this DateTime.\r\n * @return {Date}\r\n */\n ;\n\n _proto.toJSDate = function toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n } // COMPARE\n\n /**\r\n * Return the difference between two DateTimes as a Duration.\r\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\r\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\r\n * @param {Object} opts - options that affect the creation of the Duration\r\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\r\n * @example\r\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\r\n * i2 = DateTime.fromISO('1983-10-14T10:30');\r\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\r\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\r\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\r\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\r\n * @return {Duration}\r\n */\n ;\n\n _proto.diff = function diff(otherDateTime, unit, opts) {\n if (unit === void 0) {\n unit = \"milliseconds\";\n }\n\n if (opts === void 0) {\n opts = {};\n }\n\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(this.invalid || otherDateTime.invalid, \"created by diffing an invalid DateTime\");\n }\n\n var durOpts = Object.assign({\n locale: this.locale,\n numberingSystem: this.numberingSystem\n }, opts);\n\n var units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = _diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n /**\r\n * Return the difference between this DateTime and right now.\r\n * See {@link diff}\r\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\r\n * @param {Object} opts - options that affect the creation of the Duration\r\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\r\n * @return {Duration}\r\n */\n ;\n\n _proto.diffNow = function diffNow(unit, opts) {\n if (unit === void 0) {\n unit = \"milliseconds\";\n }\n\n if (opts === void 0) {\n opts = {};\n }\n\n return this.diff(DateTime.local(), unit, opts);\n }\n /**\r\n * Return an Interval spanning between this DateTime and another DateTime\r\n * @param {DateTime} otherDateTime - the other end point of the Interval\r\n * @return {Interval}\r\n */\n ;\n\n _proto.until = function until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n /**\r\n * Return whether this DateTime is in the same unit of time as another DateTime\r\n * @param {DateTime} otherDateTime - the other DateTime\r\n * @param {string} unit - the unit of time to check sameness on\r\n * @example DateTime.local().hasSame(otherDT, 'day'); //~> true if both the same calendar day\r\n * @return {boolean}\r\n */\n ;\n\n _proto.hasSame = function hasSame(otherDateTime, unit) {\n if (!this.isValid) return false;\n\n if (unit === \"millisecond\") {\n return this.valueOf() === otherDateTime.valueOf();\n } else {\n var inputMs = otherDateTime.valueOf();\n return this.startOf(unit) <= inputMs && inputMs <= this.endOf(unit);\n }\n }\n /**\r\n * Equality check\r\n * Two DateTimes are equal iff they represent the same millisecond, have the same zone and location, and are both valid.\r\n * To compare just the millisecond values, use `+dt1 === ~dt2`.\r\n * @param {DateTime} other - the other DateTime\r\n * @return {boolean}\r\n */\n ;\n\n _proto.equals = function equals(other) {\n return this.isValid && other.isValid && this.valueOf() === other.valueOf() && this.zone.equals(other.zone) && this.loc.equals(other.loc);\n }\n /**\r\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\r\n * platform supports Intl.RelativeDateFormat, **which it probably doesn't yet!** (As of this writing, only Chrome supports that). Rounds down by default.\r\n * @param {Object} options - options that affect the output\r\n * @param {DateTime} [options.base=DateTime.local()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\r\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\r\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"year\", \"quarter\", \"month\", \"week\", \"day\", \"hour\", \"minute\", or \"second\"\r\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\r\n * @param {boolean} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\r\n * @param {string} options.locale - override the locale of this DateTime\r\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\r\n * @example DateTime.local().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\r\n * @example DateTime.local().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 día\"\r\n * @example DateTime.local().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\r\n * @example DateTime.local().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\r\n * @example DateTime.local().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\r\n * @example DateTime.local().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\r\n */\n ;\n\n _proto.toRelative = function toRelative(options) {\n if (options === void 0) {\n options = {};\n }\n\n if (!this.isValid) return null;\n var base = options.base || DateTime.fromObject({\n zone: this.zone\n }),\n padding = options.padding ? this < base ? -options.padding : options.padding : 0;\n return diffRelative(base, this.plus(padding), Object.assign(options, {\n numeric: \"always\",\n units: [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"]\n }));\n }\n /**\r\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\"\r\n * platform supports Intl.RelativeDateFormat.\r\n * @param {Object} options - options that affect the output\r\n * @param {DateTime} [options.base=DateTime.local()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\r\n * @param {string} options.locale - override the locale of this DateTime\r\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"year\", \"quarter\", \"month\", \"week\", or \"day\"\r\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\r\n * @example DateTime.local().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\r\n * @example DateTime.local().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"mañana\"\r\n * @example DateTime.local().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\r\n * @example DateTime.local().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\r\n */\n ;\n\n _proto.toRelativeCalendar = function toRelativeCalendar(options) {\n if (options === void 0) {\n options = {};\n }\n\n if (!this.isValid) return null;\n return diffRelative(options.base || DateTime.fromObject({\n zone: this.zone\n }), this, Object.assign(options, {\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true\n }));\n }\n /**\r\n * Return the min of several date times\r\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\r\n * @return {DateTime} the min DateTime, or undefined if called with no argument\r\n */\n ;\n\n DateTime.min = function min() {\n for (var _len = arguments.length, dateTimes = new Array(_len), _key = 0; _key < _len; _key++) {\n dateTimes[_key] = arguments[_key];\n }\n\n return bestBy(dateTimes, function (i) {\n return i.valueOf();\n }, Math.min);\n }\n /**\r\n * Return the max of several date times\r\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\r\n * @return {DateTime} the max DateTime, or undefined if called with no argument\r\n */\n ;\n\n DateTime.max = function max() {\n for (var _len2 = arguments.length, dateTimes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n dateTimes[_key2] = arguments[_key2];\n }\n\n return bestBy(dateTimes, function (i) {\n return i.valueOf();\n }, Math.max);\n } // MISC\n\n /**\r\n * Explain how a string would be parsed by fromFormat()\r\n * @param {string} text - the string to parse\r\n * @param {string} fmt - the format the string is expected to be in (see description)\r\n * @param {Object} options - options taken by fromFormat()\r\n * @return {Object}\r\n */\n ;\n\n DateTime.fromFormatExplain = function fromFormatExplain(text, fmt, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$locale = _options.locale,\n locale = _options$locale === void 0 ? null : _options$locale,\n _options$numberingSys = _options.numberingSystem,\n numberingSystem = _options$numberingSys === void 0 ? null : _options$numberingSys,\n localeToUse = Locale.fromOpts({\n locale: locale,\n numberingSystem: numberingSystem,\n defaultToEN: true\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n /**\r\n * @deprecated use fromFormatExplain instead\r\n */\n ;\n\n DateTime.fromStringExplain = function fromStringExplain(text, fmt, options) {\n if (options === void 0) {\n options = {};\n }\n\n return DateTime.fromFormatExplain(text, fmt, options);\n } // FORMAT PRESETS\n\n /**\r\n * {@link toLocaleString} format like 10/14/1983\r\n * @type {Object}\r\n */\n ;\n\n _createClass(DateTime, [{\n key: \"isValid\",\n get: function get() {\n return this.invalid === null;\n }\n /**\r\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\r\n * @type {string}\r\n */\n\n }, {\n key: \"invalidReason\",\n get: function get() {\n return this.invalid ? this.invalid.reason : null;\n }\n /**\r\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\r\n * @type {string}\r\n */\n\n }, {\n key: \"invalidExplanation\",\n get: function get() {\n return this.invalid ? this.invalid.explanation : null;\n }\n /**\r\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\r\n *\r\n * @type {string}\r\n */\n\n }, {\n key: \"locale\",\n get: function get() {\n return this.isValid ? this.loc.locale : null;\n }\n /**\r\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\r\n *\r\n * @type {string}\r\n */\n\n }, {\n key: \"numberingSystem\",\n get: function get() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n /**\r\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\r\n *\r\n * @type {string}\r\n */\n\n }, {\n key: \"outputCalendar\",\n get: function get() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n /**\r\n * Get the time zone associated with this DateTime.\r\n * @type {Zone}\r\n */\n\n }, {\n key: \"zone\",\n get: function get() {\n return this._zone;\n }\n /**\r\n * Get the name of the time zone.\r\n * @type {string}\r\n */\n\n }, {\n key: \"zoneName\",\n get: function get() {\n return this.isValid ? this.zone.name : null;\n }\n /**\r\n * Get the year\r\n * @example DateTime.local(2017, 5, 25).year //=> 2017\r\n * @type {number}\r\n */\n\n }, {\n key: \"year\",\n get: function get() {\n return this.isValid ? this.c.year : NaN;\n }\n /**\r\n * Get the quarter\r\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\r\n * @type {number}\r\n */\n\n }, {\n key: \"quarter\",\n get: function get() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n /**\r\n * Get the month (1-12).\r\n * @example DateTime.local(2017, 5, 25).month //=> 5\r\n * @type {number}\r\n */\n\n }, {\n key: \"month\",\n get: function get() {\n return this.isValid ? this.c.month : NaN;\n }\n /**\r\n * Get the day of the month (1-30ish).\r\n * @example DateTime.local(2017, 5, 25).day //=> 25\r\n * @type {number}\r\n */\n\n }, {\n key: \"day\",\n get: function get() {\n return this.isValid ? this.c.day : NaN;\n }\n /**\r\n * Get the hour of the day (0-23).\r\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\r\n * @type {number}\r\n */\n\n }, {\n key: \"hour\",\n get: function get() {\n return this.isValid ? this.c.hour : NaN;\n }\n /**\r\n * Get the minute of the hour (0-59).\r\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\r\n * @type {number}\r\n */\n\n }, {\n key: \"minute\",\n get: function get() {\n return this.isValid ? this.c.minute : NaN;\n }\n /**\r\n * Get the second of the minute (0-59).\r\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\r\n * @type {number}\r\n */\n\n }, {\n key: \"second\",\n get: function get() {\n return this.isValid ? this.c.second : NaN;\n }\n /**\r\n * Get the millisecond of the second (0-999).\r\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\r\n * @type {number}\r\n */\n\n }, {\n key: \"millisecond\",\n get: function get() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n /**\r\n * Get the week year\r\n * @see https://en.wikipedia.org/wiki/ISO_week_date\r\n * @example DateTime.local(2014, 11, 31).weekYear //=> 2015\r\n * @type {number}\r\n */\n\n }, {\n key: \"weekYear\",\n get: function get() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n /**\r\n * Get the week number of the week year (1-52ish).\r\n * @see https://en.wikipedia.org/wiki/ISO_week_date\r\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\r\n * @type {number}\r\n */\n\n }, {\n key: \"weekNumber\",\n get: function get() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n /**\r\n * Get the day of the week.\r\n * 1 is Monday and 7 is Sunday\r\n * @see https://en.wikipedia.org/wiki/ISO_week_date\r\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\r\n * @type {number}\r\n */\n\n }, {\n key: \"weekday\",\n get: function get() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n /**\r\n * Get the ordinal (i.e. the day of the year)\r\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\r\n * @type {number|DateTime}\r\n */\n\n }, {\n key: \"ordinal\",\n get: function get() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n /**\r\n * Get the human readable short month name, such as 'Oct'.\r\n * Defaults to the system's locale if no locale has been specified\r\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\r\n * @type {string}\r\n */\n\n }, {\n key: \"monthShort\",\n get: function get() {\n return this.isValid ? Info.months(\"short\", {\n locale: this.locale\n })[this.month - 1] : null;\n }\n /**\r\n * Get the human readable long month name, such as 'October'.\r\n * Defaults to the system's locale if no locale has been specified\r\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\r\n * @type {string}\r\n */\n\n }, {\n key: \"monthLong\",\n get: function get() {\n return this.isValid ? Info.months(\"long\", {\n locale: this.locale\n })[this.month - 1] : null;\n }\n /**\r\n * Get the human readable short weekday, such as 'Mon'.\r\n * Defaults to the system's locale if no locale has been specified\r\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\r\n * @type {string}\r\n */\n\n }, {\n key: \"weekdayShort\",\n get: function get() {\n return this.isValid ? Info.weekdays(\"short\", {\n locale: this.locale\n })[this.weekday - 1] : null;\n }\n /**\r\n * Get the human readable long weekday, such as 'Monday'.\r\n * Defaults to the system's locale if no locale has been specified\r\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\r\n * @type {string}\r\n */\n\n }, {\n key: \"weekdayLong\",\n get: function get() {\n return this.isValid ? Info.weekdays(\"long\", {\n locale: this.locale\n })[this.weekday - 1] : null;\n }\n /**\r\n * Get the UTC offset of this DateTime in minutes\r\n * @example DateTime.local().offset //=> -240\r\n * @example DateTime.utc().offset //=> 0\r\n * @type {number}\r\n */\n\n }, {\n key: \"offset\",\n get: function get() {\n return this.isValid ? this.zone.offset(this.ts) : NaN;\n }\n /**\r\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\r\n * Defaults to the system's locale if no locale has been specified\r\n * @type {string}\r\n */\n\n }, {\n key: \"offsetNameShort\",\n get: function get() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale\n });\n } else {\n return null;\n }\n }\n /**\r\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\r\n * Defaults to the system's locale if no locale has been specified\r\n * @type {string}\r\n */\n\n }, {\n key: \"offsetNameLong\",\n get: function get() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale\n });\n } else {\n return null;\n }\n }\n /**\r\n * Get whether this zone's offset ever changes, as in a DST.\r\n * @type {boolean}\r\n */\n\n }, {\n key: \"isOffsetFixed\",\n get: function get() {\n return this.isValid ? this.zone.universal : null;\n }\n /**\r\n * Get whether the DateTime is in a DST.\r\n * @type {boolean}\r\n */\n\n }, {\n key: \"isInDST\",\n get: function get() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return this.offset > this.set({\n month: 1\n }).offset || this.offset > this.set({\n month: 5\n }).offset;\n }\n }\n /**\r\n * Returns true if this DateTime is in a leap year, false otherwise\r\n * @example DateTime.local(2016).isInLeapYear //=> true\r\n * @example DateTime.local(2013).isInLeapYear //=> false\r\n * @type {boolean}\r\n */\n\n }, {\n key: \"isInLeapYear\",\n get: function get() {\n return isLeapYear(this.year);\n }\n /**\r\n * Returns the number of days in this DateTime's month\r\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\r\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\r\n * @type {number}\r\n */\n\n }, {\n key: \"daysInMonth\",\n get: function get() {\n return daysInMonth(this.year, this.month);\n }\n /**\r\n * Returns the number of days in this DateTime's year\r\n * @example DateTime.local(2016).daysInYear //=> 366\r\n * @example DateTime.local(2013).daysInYear //=> 365\r\n * @type {number}\r\n */\n\n }, {\n key: \"daysInYear\",\n get: function get() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n /**\r\n * Returns the number of weeks in this DateTime's year\r\n * @see https://en.wikipedia.org/wiki/ISO_week_date\r\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\r\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\r\n * @type {number}\r\n */\n\n }, {\n key: \"weeksInWeekYear\",\n get: function get() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n }], [{\n key: \"DATE_SHORT\",\n get: function get() {\n return DATE_SHORT;\n }\n /**\r\n * {@link toLocaleString} format like 'Oct 14, 1983'\r\n * @type {Object}\r\n */\n\n }, {\n key: \"DATE_MED\",\n get: function get() {\n return DATE_MED;\n }\n /**\r\n * {@link toLocaleString} format like 'October 14, 1983'\r\n * @type {Object}\r\n */\n\n }, {\n key: \"DATE_FULL\",\n get: function get() {\n return DATE_FULL;\n }\n /**\r\n * {@link toLocaleString} format like 'Tuesday, October 14, 1983'\r\n * @type {Object}\r\n */\n\n }, {\n key: \"DATE_HUGE\",\n get: function get() {\n return DATE_HUGE;\n }\n /**\r\n * {@link toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\r\n * @type {Object}\r\n */\n\n }, {\n key: \"TIME_SIMPLE\",\n get: function get() {\n return TIME_SIMPLE;\n }\n /**\r\n * {@link toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\r\n * @type {Object}\r\n */\n\n }, {\n key: \"TIME_WITH_SECONDS\",\n get: function get() {\n return TIME_WITH_SECONDS;\n }\n /**\r\n * {@link toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\r\n * @type {Object}\r\n */\n\n }, {\n key: \"TIME_WITH_SHORT_OFFSET\",\n get: function get() {\n return TIME_WITH_SHORT_OFFSET;\n }\n /**\r\n * {@link toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\r\n * @type {Object}\r\n */\n\n }, {\n key: \"TIME_WITH_LONG_OFFSET\",\n get: function get() {\n return TIME_WITH_LONG_OFFSET;\n }\n /**\r\n * {@link toLocaleString} format like '09:30', always 24-hour.\r\n * @type {Object}\r\n */\n\n }, {\n key: \"TIME_24_SIMPLE\",\n get: function get() {\n return TIME_24_SIMPLE;\n }\n /**\r\n * {@link toLocaleString} format like '09:30:23', always 24-hour.\r\n * @type {Object}\r\n */\n\n }, {\n key: \"TIME_24_WITH_SECONDS\",\n get: function get() {\n return TIME_24_WITH_SECONDS;\n }\n /**\r\n * {@link toLocaleString} format like '09:30:23 EDT', always 24-hour.\r\n * @type {Object}\r\n */\n\n }, {\n key: \"TIME_24_WITH_SHORT_OFFSET\",\n get: function get() {\n return TIME_24_WITH_SHORT_OFFSET;\n }\n /**\r\n * {@link toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\r\n * @type {Object}\r\n */\n\n }, {\n key: \"TIME_24_WITH_LONG_OFFSET\",\n get: function get() {\n return TIME_24_WITH_LONG_OFFSET;\n }\n /**\r\n * {@link toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\r\n * @type {Object}\r\n */\n\n }, {\n key: \"DATETIME_SHORT\",\n get: function get() {\n return DATETIME_SHORT;\n }\n /**\r\n * {@link toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\r\n * @type {Object}\r\n */\n\n }, {\n key: \"DATETIME_SHORT_WITH_SECONDS\",\n get: function get() {\n return DATETIME_SHORT_WITH_SECONDS;\n }\n /**\r\n * {@link toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\r\n * @type {Object}\r\n */\n\n }, {\n key: \"DATETIME_MED\",\n get: function get() {\n return DATETIME_MED;\n }\n /**\r\n * {@link toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\r\n * @type {Object}\r\n */\n\n }, {\n key: \"DATETIME_MED_WITH_SECONDS\",\n get: function get() {\n return DATETIME_MED_WITH_SECONDS;\n }\n /**\r\n * {@link toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\r\n * @type {Object}\r\n */\n\n }, {\n key: \"DATETIME_FULL\",\n get: function get() {\n return DATETIME_FULL;\n }\n /**\r\n * {@link toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\r\n * @type {Object}\r\n */\n\n }, {\n key: \"DATETIME_FULL_WITH_SECONDS\",\n get: function get() {\n return DATETIME_FULL_WITH_SECONDS;\n }\n /**\r\n * {@link toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\r\n * @type {Object}\r\n */\n\n }, {\n key: \"DATETIME_HUGE\",\n get: function get() {\n return DATETIME_HUGE;\n }\n /**\r\n * {@link toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\r\n * @type {Object}\r\n */\n\n }, {\n key: \"DATETIME_HUGE_WITH_SECONDS\",\n get: function get() {\n return DATETIME_HUGE_WITH_SECONDS;\n }\n }]);\n\n return DateTime;\n}();\nfunction friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\"Unknown datetime argument: \" + dateTimeish + \", of type \" + typeof dateTimeish);\n }\n}\n\nexports.DateTime = DateTime;\nexports.Duration = Duration;\nexports.FixedOffsetZone = FixedOffsetZone;\nexports.IANAZone = IANAZone;\nexports.Info = Info;\nexports.Interval = Interval;\nexports.InvalidZone = InvalidZone;\nexports.LocalZone = LocalZone;\nexports.Settings = Settings;\nexports.Zone = Zone;\n//# sourceMappingURL=luxon.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.useCurrentTime = useCurrentTime;\n\nvar _luxon = require(\"luxon\");\n\nvar _react = require(\"react\");\n\nvar _useInterval = require(\"./useInterval\");\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/**\n * useCurrentTime\n */\nfunction useCurrentTime(currentTime) {\n var _useState = (0, _react.useState)(currentTime ? _luxon.DateTime.fromISO(currentTime.toString()) : _luxon.DateTime.local()),\n _useState2 = _slicedToArray(_useState, 2),\n now = _useState2[0],\n setNow = _useState2[1];\n\n (0, _useInterval.useInterval)(function () {\n setNow(currentTime ? _luxon.DateTime.fromISO(currentTime.toString()) : _luxon.DateTime.local());\n }, 1000);\n return now;\n}\n//# sourceMappingURL=useCurrentTime.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.useInterval = useInterval;\n\nvar _react = require(\"react\");\n\n/** useInterval */\nfunction useInterval(callback, delay) {\n var savedCallback = (0, _react.useRef)(null); // Remember the latest callback.\n\n (0, _react.useEffect)(function () {\n savedCallback.current = callback;\n }, [callback]); // Set up the interval.\n\n (0, _react.useEffect)(function () {\n function tick() {\n savedCallback.current();\n }\n\n if (delay !== null) {\n var id = setInterval(tick, delay);\n return function () {\n return clearInterval(id);\n };\n }\n }, [delay]);\n}\n//# sourceMappingURL=useInterval.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Toggle = require(\"./Toggle\");\n\nObject.keys(_Toggle).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Toggle[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=Toggle.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Tooltip = require(\"./Tooltip\");\n\nObject.keys(_Tooltip).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Tooltip[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n//# sourceMappingURL=Tooltip.ios.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _AddCircleFillIcon = require(\"./AddCircleFillIcon\");\n\nObject.keys(_AddCircleFillIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _AddCircleFillIcon[key];\n }\n });\n});\n\nvar _AddCircleIcon = require(\"./AddCircleIcon\");\n\nObject.keys(_AddCircleIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _AddCircleIcon[key];\n }\n });\n});\n\nvar _AddIcon = require(\"./AddIcon\");\n\nObject.keys(_AddIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _AddIcon[key];\n }\n });\n});\n\nvar _AlertIcon = require(\"./AlertIcon\");\n\nObject.keys(_AlertIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _AlertIcon[key];\n }\n });\n});\n\nvar _ArrowDownCircleIcon = require(\"./ArrowDownCircleIcon\");\n\nObject.keys(_ArrowDownCircleIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ArrowDownCircleIcon[key];\n }\n });\n});\n\nvar _ArrowDownIcon = require(\"./ArrowDownIcon\");\n\nObject.keys(_ArrowDownIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ArrowDownIcon[key];\n }\n });\n});\n\nvar _ArrowLeftCircleIcon = require(\"./ArrowLeftCircleIcon\");\n\nObject.keys(_ArrowLeftCircleIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ArrowLeftCircleIcon[key];\n }\n });\n});\n\nvar _ArrowLeftIcon = require(\"./ArrowLeftIcon\");\n\nObject.keys(_ArrowLeftIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ArrowLeftIcon[key];\n }\n });\n});\n\nvar _ArrowRightCircleIcon = require(\"./ArrowRightCircleIcon\");\n\nObject.keys(_ArrowRightCircleIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ArrowRightCircleIcon[key];\n }\n });\n});\n\nvar _ArrowRightIcon = require(\"./ArrowRightIcon\");\n\nObject.keys(_ArrowRightIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ArrowRightIcon[key];\n }\n });\n});\n\nvar _ArrowUpCircleIcon = require(\"./ArrowUpCircleIcon\");\n\nObject.keys(_ArrowUpCircleIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ArrowUpCircleIcon[key];\n }\n });\n});\n\nvar _ArrowUpIcon = require(\"./ArrowUpIcon\");\n\nObject.keys(_ArrowUpIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ArrowUpIcon[key];\n }\n });\n});\n\nvar _ArtsyLogoBlackIcon = require(\"./ArtsyLogoBlackIcon\");\n\nObject.keys(_ArtsyLogoBlackIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ArtsyLogoBlackIcon[key];\n }\n });\n});\n\nvar _ArtsyLogoWhiteIcon = require(\"./ArtsyLogoWhiteIcon\");\n\nObject.keys(_ArtsyLogoWhiteIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ArtsyLogoWhiteIcon[key];\n }\n });\n});\n\nvar _ArtsyMarkBlackIcon = require(\"./ArtsyMarkBlackIcon\");\n\nObject.keys(_ArtsyMarkBlackIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ArtsyMarkBlackIcon[key];\n }\n });\n});\n\nvar _ArtsyMarkWhiteIcon = require(\"./ArtsyMarkWhiteIcon\");\n\nObject.keys(_ArtsyMarkWhiteIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ArtsyMarkWhiteIcon[key];\n }\n });\n});\n\nvar _ArtworkIcon = require(\"./ArtworkIcon\");\n\nObject.keys(_ArtworkIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ArtworkIcon[key];\n }\n });\n});\n\nvar _AuctionIcon = require(\"./AuctionIcon\");\n\nObject.keys(_AuctionIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _AuctionIcon[key];\n }\n });\n});\n\nvar _BellFillIcon = require(\"./BellFillIcon\");\n\nObject.keys(_BellFillIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _BellFillIcon[key];\n }\n });\n});\n\nvar _BellIcon = require(\"./BellIcon\");\n\nObject.keys(_BellIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _BellIcon[key];\n }\n });\n});\n\nvar _BlueChipIcon = require(\"./BlueChipIcon\");\n\nObject.keys(_BlueChipIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _BlueChipIcon[key];\n }\n });\n});\n\nvar _CertificateIcon = require(\"./CertificateIcon\");\n\nObject.keys(_CertificateIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _CertificateIcon[key];\n }\n });\n});\n\nvar _CheckCircleFillIcon = require(\"./CheckCircleFillIcon\");\n\nObject.keys(_CheckCircleFillIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _CheckCircleFillIcon[key];\n }\n });\n});\n\nvar _CheckCircleIcon = require(\"./CheckCircleIcon\");\n\nObject.keys(_CheckCircleIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _CheckCircleIcon[key];\n }\n });\n});\n\nvar _CheckIcon = require(\"./CheckIcon\");\n\nObject.keys(_CheckIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _CheckIcon[key];\n }\n });\n});\n\nvar _ChevronIcon = require(\"./ChevronIcon\");\n\nObject.keys(_ChevronIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ChevronIcon[key];\n }\n });\n});\n\nvar _CloseCircleIcon = require(\"./CloseCircleIcon\");\n\nObject.keys(_CloseCircleIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _CloseCircleIcon[key];\n }\n });\n});\n\nvar _CloseIcon = require(\"./CloseIcon\");\n\nObject.keys(_CloseIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _CloseIcon[key];\n }\n });\n});\n\nvar _CollapseIcon = require(\"./CollapseIcon\");\n\nObject.keys(_CollapseIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _CollapseIcon[key];\n }\n });\n});\n\nvar _CreditCardIcon = require(\"./CreditCardIcon\");\n\nObject.keys(_CreditCardIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _CreditCardIcon[key];\n }\n });\n});\n\nvar _DocumentIcon = require(\"./DocumentIcon\");\n\nObject.keys(_DocumentIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _DocumentIcon[key];\n }\n });\n});\n\nvar _DownloadIcon = require(\"./DownloadIcon\");\n\nObject.keys(_DownloadIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _DownloadIcon[key];\n }\n });\n});\n\nvar _EditIcon = require(\"./EditIcon\");\n\nObject.keys(_EditIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _EditIcon[key];\n }\n });\n});\n\nvar _EnterIcon = require(\"./EnterIcon\");\n\nObject.keys(_EnterIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _EnterIcon[key];\n }\n });\n});\n\nvar _EnvelopeIcon = require(\"./EnvelopeIcon\");\n\nObject.keys(_EnvelopeIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _EnvelopeIcon[key];\n }\n });\n});\n\nvar _EstablishedIcon = require(\"./EstablishedIcon\");\n\nObject.keys(_EstablishedIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _EstablishedIcon[key];\n }\n });\n});\n\nvar _ExpandIcon = require(\"./ExpandIcon\");\n\nObject.keys(_ExpandIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ExpandIcon[key];\n }\n });\n});\n\nvar _EyeClosedIcon = require(\"./EyeClosedIcon\");\n\nObject.keys(_EyeClosedIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _EyeClosedIcon[key];\n }\n });\n});\n\nvar _EyeOpenedIcon = require(\"./EyeOpenedIcon\");\n\nObject.keys(_EyeOpenedIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _EyeOpenedIcon[key];\n }\n });\n});\n\nvar _FacebookIcon = require(\"./FacebookIcon\");\n\nObject.keys(_FacebookIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _FacebookIcon[key];\n }\n });\n});\n\nvar _FairIcon = require(\"./FairIcon\");\n\nObject.keys(_FairIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _FairIcon[key];\n }\n });\n});\n\nvar _FilterIcon = require(\"./FilterIcon\");\n\nObject.keys(_FilterIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _FilterIcon[key];\n }\n });\n});\n\nvar _GenomeIcon = require(\"./GenomeIcon\");\n\nObject.keys(_GenomeIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _GenomeIcon[key];\n }\n });\n});\n\nvar _GraphIcon = require(\"./GraphIcon\");\n\nObject.keys(_GraphIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _GraphIcon[key];\n }\n });\n});\n\nvar _HeartFillIcon = require(\"./HeartFillIcon\");\n\nObject.keys(_HeartFillIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _HeartFillIcon[key];\n }\n });\n});\n\nvar _HeartIcon = require(\"./HeartIcon\");\n\nObject.keys(_HeartIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _HeartIcon[key];\n }\n });\n});\n\nvar _HomeIcon = require(\"./HomeIcon\");\n\nObject.keys(_HomeIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _HomeIcon[key];\n }\n });\n});\n\nvar _Icon = require(\"./Icon\");\n\nObject.keys(_Icon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _Icon[key];\n }\n });\n});\n\nvar _InfoCircleIcon = require(\"./InfoCircleIcon\");\n\nObject.keys(_InfoCircleIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _InfoCircleIcon[key];\n }\n });\n});\n\nvar _InstagramIcon = require(\"./InstagramIcon\");\n\nObject.keys(_InstagramIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _InstagramIcon[key];\n }\n });\n});\n\nvar _InstitutionIcon = require(\"./InstitutionIcon\");\n\nObject.keys(_InstitutionIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _InstitutionIcon[key];\n }\n });\n});\n\nvar _LoaderIcon = require(\"./LoaderIcon\");\n\nObject.keys(_LoaderIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _LoaderIcon[key];\n }\n });\n});\n\nvar _LockIcon = require(\"./LockIcon\");\n\nObject.keys(_LockIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _LockIcon[key];\n }\n });\n});\n\nvar _LogoutIcon = require(\"./LogoutIcon\");\n\nObject.keys(_LogoutIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _LogoutIcon[key];\n }\n });\n});\n\nvar _MagnifyingGlassIcon = require(\"./MagnifyingGlassIcon\");\n\nObject.keys(_MagnifyingGlassIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _MagnifyingGlassIcon[key];\n }\n });\n});\n\nvar _MapPinIcon = require(\"./MapPinIcon\");\n\nObject.keys(_MapPinIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _MapPinIcon[key];\n }\n });\n});\n\nvar _MenuIcon = require(\"./MenuIcon\");\n\nObject.keys(_MenuIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _MenuIcon[key];\n }\n });\n});\n\nvar _MessageIcon = require(\"./MessageIcon\");\n\nObject.keys(_MessageIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _MessageIcon[key];\n }\n });\n});\n\nvar _MoreIcon = require(\"./MoreIcon\");\n\nObject.keys(_MoreIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _MoreIcon[key];\n }\n });\n});\n\nvar _NoImageIcon = require(\"./NoImageIcon\");\n\nObject.keys(_NoImageIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _NoImageIcon[key];\n }\n });\n});\n\nvar _PageIcon = require(\"./PageIcon\");\n\nObject.keys(_PageIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _PageIcon[key];\n }\n });\n});\n\nvar _PublicationIcon = require(\"./PublicationIcon\");\n\nObject.keys(_PublicationIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _PublicationIcon[key];\n }\n });\n});\n\nvar _QuestionCircleIcon = require(\"./QuestionCircleIcon\");\n\nObject.keys(_QuestionCircleIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _QuestionCircleIcon[key];\n }\n });\n});\n\nvar _ReloadIcon = require(\"./ReloadIcon\");\n\nObject.keys(_ReloadIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ReloadIcon[key];\n }\n });\n});\n\nvar _SettingsIcon = require(\"./SettingsIcon\");\n\nObject.keys(_SettingsIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _SettingsIcon[key];\n }\n });\n});\n\nvar _ShareIcon = require(\"./ShareIcon\");\n\nObject.keys(_ShareIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ShareIcon[key];\n }\n });\n});\n\nvar _TagIcon = require(\"./TagIcon\");\n\nObject.keys(_TagIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _TagIcon[key];\n }\n });\n});\n\nvar _TimerIcon = require(\"./TimerIcon\");\n\nObject.keys(_TimerIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _TimerIcon[key];\n }\n });\n});\n\nvar _TopEmergingIcon = require(\"./TopEmergingIcon\");\n\nObject.keys(_TopEmergingIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _TopEmergingIcon[key];\n }\n });\n});\n\nvar _TrashIcon = require(\"./TrashIcon\");\n\nObject.keys(_TrashIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _TrashIcon[key];\n }\n });\n});\n\nvar _TwitterIcon = require(\"./TwitterIcon\");\n\nObject.keys(_TwitterIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _TwitterIcon[key];\n }\n });\n});\n\nvar _UserMultiIcon = require(\"./UserMultiIcon\");\n\nObject.keys(_UserMultiIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _UserMultiIcon[key];\n }\n });\n});\n\nvar _UserSingleIcon = require(\"./UserSingleIcon\");\n\nObject.keys(_UserSingleIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _UserSingleIcon[key];\n }\n });\n});\n\nvar _VerifiedIcon = require(\"./VerifiedIcon\");\n\nObject.keys(_VerifiedIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _VerifiedIcon[key];\n }\n });\n});\n\nvar _WeChatIcon = require(\"./WeChatIcon\");\n\nObject.keys(_WeChatIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _WeChatIcon[key];\n }\n });\n});\n\nvar _XCircleIcon = require(\"./XCircleIcon\");\n\nObject.keys(_XCircleIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _XCircleIcon[key];\n }\n });\n});\n\nvar _PageViewsIcon = require(\"./PageViewsIcon\");\n\nObject.keys(_PageViewsIcon).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _PageViewsIcon[key];\n }\n });\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PlusIcon = exports.AddCircleFillIcon = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _helpers = require(\"../helpers\");\n\nvar _Icon = require(\"./Icon\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\n/** AddCircleFillIcon */\nvar AddCircleFillIcon = function AddCircleFillIcon(props) {\n return _react.default.createElement(_Icon.Icon, _extends({}, props, {\n viewBox: \"0 0 18 18\"\n }), _react.default.createElement(_Icon.Title, null, \"unfollow\"), _react.default.createElement(_Icon.Path, {\n d: \"M9 1a8 8 0 1 0 0 16A8 8 0 0 0 9 1zm.551 7.449H13V9.55H9.551V13H8.45V9.551H5V8.45h3.449V5H9.55v3.449z\",\n fill: (0, _helpers.color)(props.fill),\n fillRule: \"nonzero\"\n }));\n};\n\nexports.AddCircleFillIcon = AddCircleFillIcon;\nAddCircleFillIcon.displayName = \"AddCircleFillIcon\";\n// TODO: remove this alias once clients have been updated\n\n/** PlusIcon */\nvar PlusIcon = AddCircleFillIcon;\nexports.PlusIcon = PlusIcon;\n//# sourceMappingURL=AddCircleFillIcon.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Path\", {\n enumerable: true,\n get: function get() {\n return _reactNativeSvg.Path;\n }\n});\nObject.defineProperty(exports, \"G\", {\n enumerable: true,\n get: function get() {\n return _reactNativeSvg.G;\n }\n});\nObject.defineProperty(exports, \"Circle\", {\n enumerable: true,\n get: function get() {\n return _reactNativeSvg.Circle;\n }\n});\nObject.defineProperty(exports, \"Rect\", {\n enumerable: true,\n get: function get() {\n return _reactNativeSvg.Rect;\n }\n});\nexports.Title = exports.Icon = void 0;\n\nvar _reactNativeSvg = _interopRequireWildcard(require(\"react-native-svg\"));\n\nvar _styledComponents = _interopRequireDefault(require(\"styled-components\"));\n\nvar _styledSystem = require(\"styled-system\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\n// @ts-ignore\n\n/** Wrapper for icons to include space */\nvar Icon = (0, _styledComponents.default)(_reactNativeSvg.default).withConfig({\n displayName: \"Iconios__Icon\",\n componentId: \"z4d8jr-0\"\n})([\"position:relative;\", \";\", \";\", \";\", \";\", \";\"], _styledSystem.space, _styledSystem.top, _styledSystem.right, _styledSystem.left, _styledSystem.position);\nexports.Icon = Icon;\nIcon.defaultProps = {\n fill: \"black100\",\n height: \"18px\",\n width: \"18px\"\n /** No-op component that exists to maintain api parity with web */\n\n};\n\nvar Title = function Title() {\n return false;\n};\n\nexports.Title = Title;\n//# sourceMappingURL=Icon.ios.js.map","export * from './ReactNativeSVG';\n\nexport { default } from './ReactNativeSVG';\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;","import Shape from './elements/Shape';\nimport Rect, { RNSVGRect } from './elements/Rect';\nimport Circle, { RNSVGCircle } from './elements/Circle';\nimport Ellipse, { RNSVGEllipse } from './elements/Ellipse';\nimport Polygon from './elements/Polygon';\nimport Polyline from './elements/Polyline';\nimport Line, { RNSVGLine } from './elements/Line';\nimport Svg, { RNSVGSvg } from './elements/Svg';\nimport Path, { RNSVGPath } from './elements/Path';\nimport G, { RNSVGGroup } from './elements/G';\nimport Text, { RNSVGText } from './elements/Text';\nimport TSpan, { RNSVGTSpan } from './elements/TSpan';\nimport TextPath, { RNSVGTextPath } from './elements/TextPath';\nimport Use, { RNSVGUse } from './elements/Use';\nimport Image, { RNSVGImage } from './elements/Image';\nimport Symbol, { RNSVGSymbol } from './elements/Symbol';\nimport Defs, { RNSVGDefs } from './elements/Defs';\nimport LinearGradient, { RNSVGLinearGradient } from './elements/LinearGradient';\nimport RadialGradient, { RNSVGRadialGradient } from './elements/RadialGradient';\nimport Stop from './elements/Stop';\nimport ClipPath, { RNSVGClipPath } from './elements/ClipPath';\nimport Pattern, { RNSVGPattern } from './elements/Pattern';\nimport Mask, { RNSVGMask } from './elements/Mask';\nimport Marker, { RNSVGMarker } from './elements/Marker';\nimport { parse, SvgAst, SvgFromUri, SvgFromXml, SvgUri, SvgXml } from './xml';\nimport {\n SvgCss,\n SvgCssUri,\n SvgWithCss,\n SvgWithCssUri,\n inlineStyles,\n} from './css';\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 Marker,\n parse,\n SvgAst,\n SvgFromUri,\n SvgFromXml,\n SvgUri,\n SvgXml,\n SvgCss,\n SvgCssUri,\n SvgWithCss,\n SvgWithCssUri,\n inlineStyles,\n Shape,\n RNSVGMarker,\n RNSVGMask,\n RNSVGPattern,\n RNSVGClipPath,\n RNSVGRadialGradient,\n RNSVGLinearGradient,\n RNSVGDefs,\n RNSVGSymbol,\n RNSVGImage,\n RNSVGUse,\n RNSVGTextPath,\n RNSVGTSpan,\n RNSVGText,\n RNSVGGroup,\n RNSVGPath,\n RNSVGLine,\n RNSVGEllipse,\n RNSVGCircle,\n RNSVGRect,\n RNSVGSvg,\n};\n\nexport default Svg;\n","import { Component } from 'react';\nimport SvgTouchableMixin from '../lib/SvgTouchableMixin';\nimport {\n NativeModules,\n findNodeHandle,\n NativeMethodsMixinStatic,\n} from 'react-native';\nimport { TransformProps } from '../lib/extract/types';\n\nconst RNSVGRenderableManager = NativeModules.RNSVGRenderableManager;\nconst { touchableGetInitialState } = SvgTouchableMixin;\nconst touchKeys = Object.keys(SvgTouchableMixin);\nconst touchVals = touchKeys.map(key => SvgTouchableMixin[key]);\nconst numTouchKeys = touchKeys.length;\n\nexport interface SVGBoundingBoxOptions {\n fill?: boolean;\n stroke?: boolean;\n markers?: boolean;\n clipped?: boolean;\n}\n\nexport interface DOMPointInit {\n x?: number;\n y?: number;\n z?: number;\n w?: number;\n}\n\nexport interface Point {\n x: number;\n y: number;\n}\n\nexport interface SVGPoint extends Point {\n constructor(point?: Point): SVGPoint;\n matrixTransform(matrix: Matrix): SVGPoint;\n}\n\nexport interface Rect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\nexport interface SVGRect extends Rect {}\n\nexport interface Matrix {\n a: number;\n b: number;\n c: number;\n d: number;\n e: number;\n f: number;\n}\n\nexport interface SVGMatrix extends Matrix {\n constructor(matrix?: Matrix): SVGMatrix;\n multiply(secondMatrix: Matrix): SVGMatrix;\n inverse(): SVGMatrix;\n translate(x: number, y: number): SVGMatrix;\n scale(scaleFactor: number): SVGMatrix;\n scaleNonUniform(scaleFactorX: number, scaleFactorY: number): SVGMatrix;\n rotate(angle: number): SVGMatrix;\n rotateFromVector(x: number, y: number): SVGMatrix;\n flipX(): SVGMatrix;\n flipY(): SVGMatrix;\n skewX(angle: number): SVGMatrix;\n skewY(angle: number): SVGMatrix;\n}\n\nexport function multiply_matrices(l: Matrix, r: Matrix): Matrix {\n const { a: al, b: bl, c: cl, d: dl, e: el, f: fl } = l;\n const { a: ar, b: br, c: cr, d: dr, e: er, f: fr } = r;\n\n const a = al * ar + cl * br;\n const c = al * cr + cl * dr;\n const e = al * er + cl * fr + el;\n const b = bl * ar + dl * br;\n const d = bl * cr + dl * dr;\n const f = bl * er + dl * fr + fl;\n\n return { a, c, e, b, d, f };\n}\n\nexport function invert({ a, b, c, d, e, f }: Matrix): Matrix {\n const n = a * d - b * c;\n return {\n a: d / n,\n b: -b / n,\n c: -c / n,\n d: a / n,\n e: (c * f - d * e) / n,\n f: -(a * f - b * e) / n,\n };\n}\n\nconst deg2rad = Math.PI / 180;\n\nexport class SVGMatrix implements SVGMatrix {\n constructor(matrix?: Matrix) {\n if (matrix) {\n const { a, b, c, d, e, f } = matrix;\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.e = e;\n this.f = f;\n } else {\n this.a = 1;\n this.b = 0;\n this.c = 0;\n this.d = 1;\n this.e = 0;\n this.f = 0;\n }\n }\n multiply(secondMatrix: Matrix): SVGMatrix {\n return new SVGMatrix(multiply_matrices(this, secondMatrix));\n }\n inverse(): SVGMatrix {\n return new SVGMatrix(invert(this));\n }\n translate(x: number, y: number): SVGMatrix {\n return new SVGMatrix(\n multiply_matrices(this, { a: 1, b: 0, c: 0, d: 1, e: x, f: y }),\n );\n }\n scale(scaleFactor: number): SVGMatrix {\n return new SVGMatrix(\n multiply_matrices(this, {\n a: scaleFactor,\n b: 0,\n c: 0,\n d: scaleFactor,\n e: 0,\n f: 0,\n }),\n );\n }\n scaleNonUniform(scaleFactorX: number, scaleFactorY: number): SVGMatrix {\n return new SVGMatrix(\n multiply_matrices(this, {\n a: scaleFactorX,\n b: 0,\n c: 0,\n d: scaleFactorY,\n e: 0,\n f: 0,\n }),\n );\n }\n rotate(angle: number): SVGMatrix {\n const cos = Math.cos(deg2rad * angle);\n const sin = Math.sin(deg2rad * angle);\n return new SVGMatrix(\n multiply_matrices(this, { a: cos, b: sin, c: -sin, d: cos, e: 0, f: 0 }),\n );\n }\n rotateFromVector(x: number, y: number): SVGMatrix {\n const angle = Math.atan2(y, x);\n const cos = Math.cos(deg2rad * angle);\n const sin = Math.sin(deg2rad * angle);\n return new SVGMatrix(\n multiply_matrices(this, { a: cos, b: sin, c: -sin, d: cos, e: 0, f: 0 }),\n );\n }\n flipX(): SVGMatrix {\n return new SVGMatrix(\n multiply_matrices(this, { a: -1, b: 0, c: 0, d: 1, e: 0, f: 0 }),\n );\n }\n flipY(): SVGMatrix {\n return new SVGMatrix(\n multiply_matrices(this, { a: 1, b: 0, c: 0, d: -1, e: 0, f: 0 }),\n );\n }\n skewX(angle: number): SVGMatrix {\n return new SVGMatrix(\n multiply_matrices(this, {\n a: 1,\n b: 0,\n c: Math.tan(deg2rad * angle),\n d: 1,\n e: 0,\n f: 0,\n }),\n );\n }\n skewY(angle: number): SVGMatrix {\n return new SVGMatrix(\n multiply_matrices(this, {\n a: 1,\n b: Math.tan(deg2rad * angle),\n c: 0,\n d: 1,\n e: 0,\n f: 0,\n }),\n );\n }\n}\n\nexport function matrixTransform(matrix: Matrix, point: Point): Point {\n const { a, b, c, d, e, f } = matrix;\n const { x, y } = point;\n return {\n x: a * x + c * y + e,\n y: b * x + d * y + f,\n };\n}\n\nexport class SVGPoint implements SVGPoint {\n constructor(point?: Point) {\n if (point) {\n const { x, y } = point;\n this.x = x;\n this.y = y;\n } else {\n this.x = 0;\n this.y = 0;\n }\n }\n matrixTransform(matrix: Matrix): SVGPoint {\n return new SVGPoint(matrixTransform(matrix, this));\n }\n}\n\nexport const ownerSVGElement = {\n createSVGPoint(): SVGPoint {\n return new SVGPoint();\n },\n createSVGMatrix(): SVGMatrix {\n return new SVGMatrix();\n },\n};\n\nexport default class Shape

extends Component

{\n [x: string]: unknown;\n root: (Shape

& NativeMethodsMixinStatic) | null = null;\n constructor(props: P, context: {}) {\n super(props, context);\n for (let i = 0; i < numTouchKeys; i++) {\n const key = touchKeys[i];\n const val = touchVals[i];\n if (typeof val === 'function') {\n this[key] = val.bind(this);\n } else {\n this[key] = val;\n }\n }\n this.state = touchableGetInitialState();\n }\n refMethod: (\n instance: (Shape

& NativeMethodsMixinStatic) | null,\n ) => void = (instance: (Shape

& NativeMethodsMixinStatic) | null) => {\n this.root = instance;\n };\n setNativeProps = (\n props: Object & {\n matrix?: [number, number, number, number, number, number];\n } & TransformProps,\n ) => {\n this.root && this.root.setNativeProps(props);\n };\n /*\n * The following native methods are experimental and likely broken in some\n * ways. If you have a use case for these, please open an issue with a\n * representative example / reproduction.\n * */\n getBBox = (options?: SVGBoundingBoxOptions): SVGRect => {\n const { fill = true, stroke = true, markers = true, clipped = true } =\n options || {};\n const handle = findNodeHandle(this.root as Component);\n return RNSVGRenderableManager.getBBox(handle, {\n fill,\n stroke,\n markers,\n clipped,\n });\n };\n getCTM = (): SVGMatrix => {\n const handle = findNodeHandle(this.root as Component);\n return new SVGMatrix(RNSVGRenderableManager.getCTM(handle));\n };\n getScreenCTM = (): SVGMatrix => {\n const handle = findNodeHandle(this.root as Component);\n return new SVGMatrix(RNSVGRenderableManager.getScreenCTM(handle));\n };\n isPointInFill = (options: DOMPointInit): boolean => {\n const handle = findNodeHandle(this.root as Component);\n return RNSVGRenderableManager.isPointInFill(handle, options);\n };\n isPointInStroke = (options: DOMPointInit): boolean => {\n const handle = findNodeHandle(this.root as Component);\n return RNSVGRenderableManager.isPointInStroke(handle, options);\n };\n getTotalLength = (): number => {\n const handle = findNodeHandle(this.root as Component);\n return RNSVGRenderableManager.getTotalLength(handle);\n };\n getPointAtLength = (length: number): SVGPoint => {\n const handle = findNodeHandle(this.root as Component);\n return new SVGPoint(\n RNSVGRenderableManager.getPointAtLength(handle, { length }),\n );\n };\n}\nShape.prototype.ownerSVGElement = ownerSVGElement;\n","// @ts-ignore\nimport { Touchable, GestureResponderEvent } from 'react-native';\nconst PRESS_RETENTION_OFFSET = { top: 20, left: 20, right: 20, bottom: 30 };\n// @ts-ignore\nconst { Mixin } = Touchable;\nconst {\n touchableHandleStartShouldSetResponder,\n touchableHandleResponderTerminationRequest,\n touchableHandleResponderGrant,\n touchableHandleResponderMove,\n touchableHandleResponderRelease,\n touchableHandleResponderTerminate,\n} = Mixin;\n\nexport default {\n ...Mixin,\n\n touchableHandleStartShouldSetResponder(e: GestureResponderEvent) {\n const { onStartShouldSetResponder } = this.props;\n if (onStartShouldSetResponder) {\n return onStartShouldSetResponder(e);\n } else {\n return touchableHandleStartShouldSetResponder.call(this, e);\n }\n },\n\n touchableHandleResponderTerminationRequest(e: GestureResponderEvent) {\n const { onResponderTerminationRequest } = this.props;\n if (onResponderTerminationRequest) {\n return onResponderTerminationRequest(e);\n } else {\n return touchableHandleResponderTerminationRequest.call(this, e);\n }\n },\n\n touchableHandleResponderGrant(e: GestureResponderEvent) {\n const { onResponderGrant } = this.props;\n if (onResponderGrant) {\n return onResponderGrant(e);\n } else {\n return touchableHandleResponderGrant.call(this, e);\n }\n },\n\n touchableHandleResponderMove(e: GestureResponderEvent) {\n const { onResponderMove } = this.props;\n if (onResponderMove) {\n return onResponderMove(e);\n } else {\n return touchableHandleResponderMove.call(this, e);\n }\n },\n\n touchableHandleResponderRelease(e: GestureResponderEvent) {\n const { onResponderRelease } = this.props;\n if (onResponderRelease) {\n return onResponderRelease(e);\n } else {\n return touchableHandleResponderRelease.call(this, e);\n }\n },\n\n touchableHandleResponderTerminate(e: GestureResponderEvent) {\n const { onResponderTerminate } = this.props;\n if (onResponderTerminate) {\n return onResponderTerminate(e);\n } else {\n return touchableHandleResponderTerminate.call(this, e);\n }\n },\n\n touchableHandlePress(e: GestureResponderEvent) {\n const { onPress } = this.props;\n onPress && onPress(e);\n },\n\n touchableHandleActivePressIn(e: GestureResponderEvent) {\n const { onPressIn } = this.props;\n onPressIn && onPressIn(e);\n },\n\n touchableHandleActivePressOut(e: GestureResponderEvent) {\n const { onPressOut } = this.props;\n onPressOut && onPressOut(e);\n },\n\n touchableHandleLongPress(e: GestureResponderEvent) {\n const { onLongPress } = this.props;\n onLongPress && onLongPress(e);\n },\n\n touchableGetPressRectOffset() {\n const { pressRetentionOffset } = this.props;\n return pressRetentionOffset || PRESS_RETENTION_OFFSET;\n },\n\n touchableGetHitSlop() {\n const { hitSlop } = this.props;\n return hitSlop;\n },\n\n touchableGetHighlightDelayMS() {\n const { delayPressIn } = this.props;\n return delayPressIn || 0;\n },\n\n touchableGetLongPressDelayMS() {\n const { delayLongPress } = this.props;\n return delayLongPress === 0 ? 0 : delayLongPress || 500;\n },\n\n touchableGetPressOutDelayMS() {\n const { delayPressOut } = this.props;\n return delayPressOut || 0;\n },\n};\n","import React from 'react';\nimport { requireNativeComponent } from 'react-native';\nimport extractProps, { propsAndStyles } from '../lib/extract/extractProps';\nimport { NumberProp } from '../lib/extract/types';\nimport Shape from './Shape';\n\nexport default class Rect extends Shape<{\n x?: NumberProp;\n y?: NumberProp;\n width?: NumberProp;\n height?: NumberProp;\n rx?: NumberProp;\n ry?: NumberProp;\n}> {\n static displayName = 'Rect';\n\n static defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n\n render() {\n const { props } = this;\n const { x, y, width, height, rx, ry } = props;\n return (\n \n );\n }\n}\n\nexport const RNSVGRect = requireNativeComponent('RNSVGRect');\n","import extractFill from './extractFill';\nimport extractStroke from './extractStroke';\nimport { transformToMatrix, props2transform } from './extractTransform';\nimport extractResponder from './extractResponder';\nimport extractOpacity from './extractOpacity';\nimport { idPattern } from '../util';\nimport {\n ClipProps,\n FillProps,\n NumberProp,\n ResponderProps,\n StrokeProps,\n TransformProps,\n} from './types';\nimport { Component } from 'react';\n\nconst clipRules: { evenodd: number; nonzero: number } = {\n evenodd: 0,\n nonzero: 1,\n};\n\nexport function propsAndStyles(props: Object & { style?: [] | {} }) {\n const { style } = props;\n return !style\n ? props\n : {\n ...(Array.isArray(style) ? Object.assign({}, ...style) : style),\n ...props,\n };\n}\n\nfunction getMarker(marker?: string) {\n if (!marker) {\n return undefined;\n }\n const matched = marker.match(idPattern);\n return matched ? matched[1] : undefined;\n}\n\nexport default function extractProps(\n props: {\n id?: string;\n mask?: string;\n marker?: string;\n markerStart?: string;\n markerMid?: string;\n markerEnd?: string;\n clipPath?: string;\n opacity?: NumberProp;\n onLayout?: () => void;\n transform?: number[] | string | TransformProps;\n } & TransformProps &\n ResponderProps &\n StrokeProps &\n FillProps &\n ClipProps,\n ref: Object,\n) {\n const {\n opacity,\n onLayout,\n id,\n clipPath,\n clipRule,\n mask,\n marker,\n markerStart = marker,\n markerMid = marker,\n markerEnd = marker,\n transform,\n } = props;\n const styleProperties: string[] = [];\n const transformProps = props2transform(props);\n const matrix = transformToMatrix(transformProps, transform);\n const extracted: {\n name?: string;\n mask?: string;\n opacity: number;\n matrix: number[];\n propList: string[];\n onLayout?: () => void;\n ref?: (instance: Component | null) => void;\n markerStart?: string;\n markerMid?: string;\n markerEnd?: string;\n clipPath?: string;\n clipRule?: number;\n } = {\n matrix,\n ...transformProps,\n propList: styleProperties,\n opacity: extractOpacity(opacity),\n ...extractResponder(props, ref),\n ...extractFill(props, styleProperties),\n ...extractStroke(props, styleProperties),\n };\n\n if (onLayout) {\n extracted.onLayout = onLayout;\n }\n\n if (markerStart) {\n extracted.markerStart = getMarker(markerStart);\n }\n if (markerMid) {\n extracted.markerMid = getMarker(markerMid);\n }\n if (markerEnd) {\n extracted.markerEnd = getMarker(markerEnd);\n }\n\n if (id) {\n extracted.name = String(id);\n }\n\n if (clipPath) {\n if (clipRule) {\n extracted.clipRule = clipRules[clipRule] === 0 ? 0 : 1;\n }\n\n if (clipPath) {\n const matched = clipPath.match(idPattern);\n\n if (matched) {\n extracted.clipPath = matched[1];\n } else {\n console.warn(\n 'Invalid `clipPath` prop, expected a clipPath like \"#id\", but got: \"' +\n clipPath +\n '\"',\n );\n }\n }\n }\n\n if (mask) {\n const matched = mask.match(idPattern);\n\n if (matched) {\n extracted.mask = matched[1];\n } else {\n console.warn(\n 'Invalid `mask` prop, expected a mask like \"#id\", but got: \"' +\n mask +\n '\"',\n );\n }\n }\n\n return extracted;\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;","import extractBrush from './extractBrush';\nimport extractOpacity from './extractOpacity';\nimport { colorNames, integerColor } from './extractColor';\nimport { FillProps } from './types';\n\nconst fillRules: { evenodd: number; nonzero: number } = {\n evenodd: 0,\n nonzero: 1,\n};\n\n// default fill is black\nconst black = colorNames.black;\nconst defaultFill = [0, integerColor(black as number)];\n\nexport default function extractFill(\n props: FillProps,\n styleProperties: string[],\n) {\n const { fill, fillRule, fillOpacity } = props;\n\n if (fill != null) {\n styleProperties.push('fill');\n }\n if (fillOpacity != null) {\n styleProperties.push('fillOpacity');\n }\n if (fillRule != null) {\n styleProperties.push('fillRule');\n }\n\n return {\n fill: !fill && typeof fill !== 'number' ? defaultFill : extractBrush(fill),\n fillRule: fillRule && fillRules[fillRule] === 0 ? 0 : 1,\n fillOpacity: extractOpacity(fillOpacity),\n };\n}\n","import extractColor, { integerColor } from './extractColor';\nimport { Color } from './types';\n\nconst urlIdPattern = /^url\\(#(.+)\\)$/;\n\nconst currentColorBrush = [2];\nconst contextFillBrush = [3];\nconst contextStrokeBrush = [4];\n\nexport default function extractBrush(color?: Color) {\n if (typeof color === 'number') {\n if (color >>> 0 === color && color >= 0 && color <= 0xffffffff) {\n return [0, integerColor(color)];\n }\n }\n\n if (!color || color === 'none') {\n return null;\n }\n\n if (color === 'currentColor') {\n return currentColorBrush;\n }\n\n if (color === 'context-fill') {\n return contextFillBrush;\n }\n\n if (color === 'context-stroke') {\n return contextStrokeBrush;\n }\n\n const brush = typeof color === 'string' && color.match(urlIdPattern);\n if (brush) {\n return [1, brush[1]];\n }\n\n const int32ARGBColor = extractColor(color);\n if (typeof int32ARGBColor === 'number') {\n return [0, int32ARGBColor];\n }\n\n console.warn(`\"${color}\" is not a valid color or brush`);\n return null;\n}\n","import { Platform } from 'react-native';\nimport { Color } from './types';\n\nexport const colors: { [colorname: string]: number[] } = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 134, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 250, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n grey: [128, 128, 128],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 221],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n rebeccapurple: [102, 51, 153],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [112, 128, 144],\n slategrey: [112, 128, 144],\n snow: [255, 250, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 50],\n};\nexport const colorNames: { [colorname: string]: number | void } = {};\nfor (const name in colors) {\n if (colors.hasOwnProperty(name)) {\n const color: number[] = colors[name];\n const r = color[0];\n const g = color[1];\n const b = color[2];\n colorNames[name] = (0xff000000 | (r << 16) | (g << 8) | b) >>> 0;\n }\n}\nObject.freeze(colorNames);\n\nfunction hslToRgb(_h: number, _s: number, _l: number, a: number) {\n const h = _h / 360;\n const s = _s / 100;\n const l = _l / 100;\n let t1;\n let t2;\n let t3;\n let rgb;\n let val;\n\n if (s === 0) {\n val = l;\n return [val, val, val, a];\n }\n\n if (l < 0.5) {\n t2 = l * (1 + s);\n } else {\n t2 = l + s - l * s;\n }\n\n t1 = 2 * l - t2;\n\n rgb = [0, 0, 0, a];\n for (let i = 0; i < 3; i++) {\n t3 = h + (1 / 3) * -(i - 1);\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n } else if (2 * t3 < 1) {\n val = t2;\n } else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n } else {\n val = t1;\n }\n\n rgb[i] = val;\n }\n\n return rgb;\n}\n\nfunction hwbToRgb(_h: number, _w: number, _b: number, a: number) {\n const h = _h / 360;\n let wh = _w / 100;\n let bl = _b / 100;\n const ratio = wh + bl;\n let i;\n let v;\n let f;\n let n;\n\n // wh + bl cant be > 1\n if (ratio > 1) {\n wh /= ratio;\n bl /= ratio;\n }\n\n i = Math.floor(6 * h);\n v = 1 - bl;\n f = 6 * h - i;\n\n if ((i & 0x01) !== 0) {\n f = 1 - f;\n }\n\n n = wh + f * (v - wh); // linear interpolation\n\n let r;\n let g;\n let b;\n switch (i) {\n default:\n case 6:\n case 0:\n r = v;\n g = n;\n b = wh;\n break;\n case 1:\n r = n;\n g = v;\n b = wh;\n break;\n case 2:\n r = wh;\n g = v;\n b = n;\n break;\n case 3:\n r = wh;\n g = n;\n b = v;\n break;\n case 4:\n r = n;\n g = wh;\n b = v;\n break;\n case 5:\n r = v;\n g = wh;\n b = n;\n break;\n }\n\n return [r, g, b, a];\n}\n\nfunction clamp(num: number, min: number, max: number) {\n return Math.min(Math.max(min, num), max);\n}\n\nconst abbr = /^#([a-f0-9]{3,4})$/i;\nconst hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\nconst rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d.]+)\\s*)?\\)$/;\nconst per = /^rgba?\\(\\s*([+-]?[\\d.]+)%\\s*,\\s*([+-]?[\\d.]+)%\\s*,\\s*([+-]?[\\d.]+)%\\s*(?:,\\s*([+-]?[\\d.]+)\\s*)?\\)$/;\nconst keyword = /(\\D+)/;\n\nfunction rgbFromString(string: string) {\n let rgb = [0, 0, 0, 1];\n let match;\n let i;\n let hexAlpha;\n\n if ((match = string.match(hex))) {\n hexAlpha = match[2];\n match = match[1];\n\n for (i = 0; i < 3; i++) {\n // https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n const i2 = i * 2;\n rgb[i] = parseInt(match.slice(i2, i2 + 2), 16) / 255;\n }\n\n if (hexAlpha) {\n rgb[3] = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n }\n } else if ((match = string.match(abbr))) {\n match = match[1];\n hexAlpha = match[3];\n\n for (i = 0; i < 3; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16) / 255;\n }\n\n if (hexAlpha) {\n rgb[3] =\n Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n }\n } else if ((match = string.match(rgba))) {\n for (i = 0; i < 3; i++) {\n rgb[i] = parseInt(match[i + 1], 0) / 255;\n }\n\n if (match[4]) {\n rgb[3] = parseFloat(match[4]);\n }\n } else if ((match = string.match(per))) {\n for (i = 0; i < 3; i++) {\n rgb[i] = parseFloat(match[i + 1]) / 100;\n }\n\n if (match[4]) {\n rgb[3] = parseFloat(match[4]);\n }\n } else if ((match = string.match(keyword))) {\n if (match[1] === 'transparent') {\n return [0, 0, 0, 0];\n }\n\n let color = colorNames[match[1]];\n\n if (!(typeof color === 'number')) {\n return null;\n }\n\n return integerColor(color);\n } else {\n return null;\n }\n\n for (i = 0; i < 4; i++) {\n rgb[i] = clamp(rgb[i], 0, 1);\n }\n\n return rgb;\n}\n\nconst hslRegEx = /^hsla?\\(\\s*([+-]?(?:\\d*\\.)?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d.]+)%\\s*,\\s*([+-]?[\\d.]+)%\\s*(?:,\\s*([+-]?[\\d.]+)\\s*)?\\)$/;\n\nfunction rgbFromHslString(string: string) {\n const match = string.match(hslRegEx);\n if (!match) {\n return null;\n }\n\n const alpha = parseFloat(match[4]);\n const h = (parseFloat(match[1]) + 360) % 360;\n const s = clamp(parseFloat(match[2]), 0, 100);\n const l = clamp(parseFloat(match[3]), 0, 100);\n const a = isNaN(alpha) ? 1 : clamp(alpha, 0, 1);\n return hslToRgb(h, s, l, a);\n}\n\nconst hwbRegEx = /^hwb\\(\\s*([+-]?\\d*[.]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d.]+)%\\s*,\\s*([+-]?[\\d.]+)%\\s*(?:,\\s*([+-]?[\\d.]+)\\s*)?\\)$/;\n\nfunction rgbFromHwbString(string: string) {\n const match = string.match(hwbRegEx);\n if (!match) {\n return null;\n }\n\n const alpha = parseFloat(match[4]);\n const h = ((parseFloat(match[1]) % 360) + 360) % 360;\n const w = clamp(parseFloat(match[2]), 0, 100);\n const b = clamp(parseFloat(match[3]), 0, 100);\n const a = isNaN(alpha) ? 1 : clamp(alpha, 0, 1);\n return hwbToRgb(h, w, b, a);\n}\n\nfunction colorFromString(string: string) {\n const prefix = string.substring(0, 3).toLowerCase();\n\n switch (prefix) {\n case 'hsl':\n return rgbFromHslString(string);\n case 'hwb':\n return rgbFromHwbString(string);\n default:\n return rgbFromString(string);\n }\n}\n\nconst identity = (x: number) => x;\n\nconst toSignedInt32 = (x: number) => x | 0x0;\n\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 in that way.\nexport const integerColor =\n Platform.OS === 'android' ? toSignedInt32 : identity;\n\n// Returns 0xaarrggbb or null\nexport default function extractColor(color: Color | void) {\n if (typeof color === 'number') {\n if (color >>> 0 === color && color >= 0 && color <= 0xffffffff) {\n return integerColor(color);\n }\n return null;\n }\n\n const parsedColor =\n typeof color === 'string' ? colorFromString(color) : color;\n if (!Array.isArray(parsedColor)) {\n return parsedColor;\n }\n\n const r = parsedColor[0];\n const g = parsedColor[1];\n const b = parsedColor[2];\n const a = parsedColor[3];\n\n const int32Color =\n ((a === undefined ? 0xff000000 : Math.round(a * 255) << 24) |\n (Math.round(r * 255) << 16) |\n (Math.round(g * 255) << 8) |\n Math.round(b * 255)) >>>\n 0;\n\n return integerColor(int32Color);\n}\n","import { NumberProp } from './types';\n\nexport default function extractOpacity(opacity: NumberProp | void) {\n const value = +opacity;\n return isNaN(value) ? 1 : value;\n}\n","import extractBrush from './extractBrush';\nimport extractOpacity from './extractOpacity';\nimport extractLengthList from './extractLengthList';\nimport { StrokeProps } from './types';\n\nconst caps = {\n butt: 0,\n square: 2,\n round: 1,\n};\n\nconst joins = {\n miter: 0,\n bevel: 2,\n round: 1,\n};\n\nconst vectorEffects = {\n none: 0,\n default: 0,\n nonScalingStroke: 1,\n 'non-scaling-stroke': 1,\n inherit: 2,\n uri: 3,\n};\n\nexport default function extractStroke(\n props: StrokeProps,\n styleProperties: string[],\n) {\n const {\n stroke,\n strokeOpacity,\n strokeLinecap,\n strokeLinejoin,\n strokeDasharray,\n strokeWidth,\n strokeDashoffset,\n strokeMiterlimit,\n vectorEffect,\n } = props;\n\n if (stroke != null) {\n styleProperties.push('stroke');\n }\n if (strokeWidth != null) {\n styleProperties.push('strokeWidth');\n }\n if (strokeOpacity != null) {\n styleProperties.push('strokeOpacity');\n }\n if (strokeDasharray != null) {\n styleProperties.push('strokeDasharray');\n }\n if (strokeDashoffset != null) {\n styleProperties.push('strokeDashoffset');\n }\n if (strokeLinecap != null) {\n styleProperties.push('strokeLinecap');\n }\n if (strokeLinejoin != null) {\n styleProperties.push('strokeLinejoin');\n }\n if (strokeMiterlimit != null) {\n styleProperties.push('strokeMiterlimit');\n }\n\n const strokeDash =\n !strokeDasharray || strokeDasharray === 'none'\n ? null\n : extractLengthList(strokeDasharray);\n\n return {\n stroke: extractBrush(stroke),\n strokeOpacity: extractOpacity(strokeOpacity),\n strokeLinecap: (strokeLinecap && caps[strokeLinecap]) || 0,\n strokeLinejoin: (strokeLinejoin && joins[strokeLinejoin]) || 0,\n strokeDasharray:\n strokeDash && strokeDash.length % 2 === 1\n ? strokeDash.concat(strokeDash)\n : strokeDash,\n strokeWidth: strokeWidth != null ? strokeWidth : 1,\n strokeDashoffset:\n strokeDasharray && strokeDashoffset ? +strokeDashoffset || 0 : null,\n strokeMiterlimit:\n (strokeMiterlimit && typeof strokeMiterlimit !== 'number'\n ? parseFloat(strokeMiterlimit)\n : strokeMiterlimit) || 4,\n vectorEffect: (vectorEffect && vectorEffects[vectorEffect]) || 0,\n };\n}\n","import { NumberProp } from './types';\n\nconst spaceReg = /\\s+/;\nconst commaReg = /,/g;\n\nexport default function extractLengthList(\n lengthList?: (NumberProp)[] | NumberProp,\n): (NumberProp)[] {\n if (Array.isArray(lengthList)) {\n return lengthList;\n } else if (typeof lengthList === 'number') {\n return [lengthList];\n } else if (typeof lengthList === 'string') {\n return lengthList\n .trim()\n .replace(commaReg, ' ')\n .split(spaceReg);\n } else {\n return [];\n }\n}\n","import { append, appendTransform, identity, reset, toArray } from '../Matrix2D';\nimport { parse } from './transform';\nimport { NumberProp, TransformedProps, TransformProps } from './types';\n\nfunction appendTransformProps(props: TransformedProps) {\n const {\n x,\n y,\n originX,\n originY,\n scaleX,\n scaleY,\n rotation,\n skewX,\n skewY,\n } = props;\n appendTransform(\n x + originX,\n y + originY,\n scaleX,\n scaleY,\n rotation,\n skewX,\n skewY,\n originX,\n originY,\n );\n}\n\nfunction universal2axis(\n universal: NumberProp | (NumberProp)[] | undefined,\n axisX: NumberProp | void,\n axisY: NumberProp | void,\n defaultValue?: number,\n): [number, number] {\n let x;\n let y;\n if (typeof universal === 'number') {\n x = y = universal;\n } else if (typeof universal === 'string') {\n const coords = universal.split(/\\s*,\\s*/);\n if (coords.length === 2) {\n x = +coords[0];\n y = +coords[1];\n } else if (coords.length === 1) {\n x = y = +coords[0];\n }\n } else if (Array.isArray(universal)) {\n if (universal.length === 2) {\n x = +universal[0];\n y = +universal[1];\n } else if (universal.length === 1) {\n x = y = +universal[0];\n }\n }\n\n axisX = +axisX;\n if (!isNaN(axisX)) {\n x = axisX;\n }\n\n axisY = +axisY;\n if (!isNaN(axisY)) {\n y = axisY;\n }\n\n return [x || defaultValue || 0, y || defaultValue || 0];\n}\n\nexport function props2transform(props: TransformProps): TransformedProps {\n const {\n rotation = 0,\n translate,\n translateX,\n translateY,\n origin,\n originX,\n originY,\n scale,\n scaleX,\n scaleY,\n skew,\n skewX,\n skewY,\n x,\n y,\n } = props;\n\n if (Array.isArray(x) || Array.isArray(y)) {\n console.warn(\n 'Passing SvgLengthList to x or y attribute where SvgLength expected',\n );\n }\n const tr = universal2axis(\n translate,\n translateX || (Array.isArray(x) ? x[0] : x),\n translateY || (Array.isArray(y) ? y[0] : y),\n );\n const or = universal2axis(origin, originX, originY);\n const sc = universal2axis(scale, scaleX, scaleY, 1);\n const sk = universal2axis(skew, skewX, skewY);\n\n return {\n rotation: +rotation || 0,\n originX: or[0],\n originY: or[1],\n scaleX: sc[0],\n scaleY: sc[1],\n skewX: sk[0],\n skewY: sk[1],\n x: tr[0],\n y: tr[1],\n };\n}\n\nexport function transformToMatrix(\n props: TransformedProps,\n transform: number[] | string | TransformProps | void | undefined,\n): [number, number, number, number, number, number] {\n reset();\n appendTransformProps(props);\n\n if (transform) {\n if (Array.isArray(transform)) {\n if (typeof transform[0] === 'number') {\n append(\n transform[0],\n transform[1],\n transform[2],\n transform[3],\n transform[4],\n transform[5],\n );\n }\n // noop for react-native transform arrays, let animated handle them\n } else if (typeof transform === 'string') {\n try {\n const t = parse(transform);\n append(t[0], t[3], t[1], t[4], t[2], t[5]);\n } catch (e) {\n console.error(e);\n }\n } else {\n appendTransformProps(props2transform(transform));\n }\n }\n\n return toArray();\n}\n\nexport default function extractTransform(\n props: number[] | string | TransformProps,\n) {\n if (Array.isArray(props)) {\n return props;\n }\n if (typeof props === 'string') {\n try {\n const t = parse(props);\n return [t[0], t[3], t[1], t[4], t[2], t[5]];\n } catch (e) {\n console.error(e);\n return identity;\n }\n }\n return transformToMatrix(props2transform(props), props.transform);\n}\n","/**\n * based on\n * https://github.com/CreateJS/EaselJS/blob/631cdffb85eff9413dab43b4676f059b4232d291/src/easeljs/geom/Matrix2D.js\n */\nconst DEG_TO_RAD = Math.PI / 180;\n\nexport const identity: [number, number, number, number, number, number] = [\n 1,\n 0,\n 0,\n 1,\n 0,\n 0,\n];\n\nlet a = 1;\nlet b = 0;\nlet c = 0;\nlet d = 1;\nlet tx = 0;\nlet ty = 0;\nlet hasInitialState = true;\n\n/**\n * Represents an affine transformation matrix, and provides tools for concatenating transforms.\n *\n * This matrix can be visualized as:\n *\n * \t[ a c tx\n * \t b d ty\n * \t 0 0 1 ]\n *\n * Note the locations of b and c.\n **/\n\n/**\n * Reset current matrix to an identity matrix.\n * @method reset\n **/\nexport function reset() {\n if (hasInitialState) {\n return;\n }\n a = d = 1;\n b = c = tx = ty = 0;\n hasInitialState = true;\n}\n\n/**\n * Returns an array with current matrix values.\n * @method toArray\n * @return {Array} an array with current matrix values.\n **/\nexport function toArray(): [number, number, number, number, number, number] {\n if (hasInitialState) {\n return identity;\n }\n return [a, b, c, d, tx, ty];\n}\n\n/**\n * Appends the specified matrix properties to this matrix. All parameters are required.\n * This is the equivalent of multiplying `(this matrix) * (specified matrix)`.\n * @method append\n * @param {Number} a2\n * @param {Number} b2\n * @param {Number} c2\n * @param {Number} d2\n * @param {Number} tx2\n * @param {Number} ty2\n **/\nexport function append(\n a2: number,\n b2: number,\n c2: number,\n d2: number,\n tx2: number,\n ty2: number,\n) {\n const change = a2 !== 1 || b2 !== 0 || c2 !== 0 || d2 !== 1;\n const translate = tx2 !== 0 || ty2 !== 0;\n if (!change && !translate) {\n return;\n }\n if (hasInitialState) {\n hasInitialState = false;\n a = a2;\n b = b2;\n c = c2;\n d = d2;\n tx = tx2;\n ty = ty2;\n return;\n }\n const a1 = a;\n const b1 = b;\n const c1 = c;\n const d1 = d;\n if (change) {\n a = a1 * a2 + c1 * b2;\n b = b1 * a2 + d1 * b2;\n c = a1 * c2 + c1 * d2;\n d = b1 * c2 + d1 * d2;\n }\n if (translate) {\n tx = a1 * tx2 + c1 * ty2 + tx;\n ty = b1 * tx2 + d1 * ty2 + ty;\n }\n}\n\n/**\n * Generates matrix properties from the specified display object transform properties, and appends them to this matrix.\n * For example, you can use this to generate a matrix representing the transformations of a display object:\n *\n * \treset();\n * \tappendTransform(o.x, o.y, o.scaleX, o.scaleY, o.rotation);\n * \tvar matrix = toArray()\n *\n * @method appendTransform\n * @param {Number} x\n * @param {Number} y\n * @param {Number} scaleX\n * @param {Number} scaleY\n * @param {Number} rotation\n * @param {Number} skewX\n * @param {Number} skewY\n * @param {Number} regX Optional.\n * @param {Number} regY Optional.\n **/\nexport function appendTransform(\n x: number,\n y: number,\n scaleX: number,\n scaleY: number,\n rotation: number,\n skewX: number,\n skewY: number,\n regX: number,\n regY: number,\n) {\n if (\n x === 0 &&\n y === 0 &&\n scaleX === 1 &&\n scaleY === 1 &&\n rotation === 0 &&\n skewX === 0 &&\n skewY === 0 &&\n regX === 0 &&\n regY === 0\n ) {\n return;\n }\n let cos, sin;\n if (rotation % 360) {\n const r = rotation * DEG_TO_RAD;\n cos = Math.cos(r);\n sin = Math.sin(r);\n } else {\n cos = 1;\n sin = 0;\n }\n\n const a2 = cos * scaleX;\n const b2 = sin * scaleX;\n const c2 = -sin * scaleY;\n const d2 = cos * scaleY;\n\n if (skewX || skewY) {\n const b1 = Math.tan(skewY * DEG_TO_RAD);\n const c1 = Math.tan(skewX * DEG_TO_RAD);\n append(a2 + c1 * b2, b1 * a2 + b2, c2 + c1 * d2, b1 * c2 + d2, x, y);\n } else {\n append(a2, b2, c2, d2, x, y);\n }\n\n if (regX || regY) {\n // append the registration offset:\n tx -= regX * a + regY * c;\n ty -= regX * b + regY * d;\n hasInitialState = false;\n }\n}\n","/*\n * Generated by PEG.js 0.10.0.\n *\n * http://pegjs.org/\n */\n\n\"use strict\";\n\nfunction peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, peg$SyntaxError);\n }\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function(expectation) {\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n },\n\n \"class\": function(expectation) {\n var escapedParts = \"\",\n i;\n\n for (i = 0; i < expectation.parts.length; i++) {\n escapedParts += expectation.parts[i] instanceof Array\n ? classEscape(expectation.parts[i][0]) + \"-\" + classEscape(expectation.parts[i][1])\n : classEscape(expectation.parts[i]);\n }\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n },\n\n any: function(expectation) {\n return \"any character\";\n },\n\n end: function(expectation) {\n return \"end of input\";\n },\n\n other: function(expectation) {\n return expectation.description;\n }\n };\n\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x' + hex(ch); });\n }\n\n function classEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\\]/g, '\\\\]')\n .replace(/\\^/g, '\\\\^')\n .replace(/-/g, '\\\\-')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x' + hex(ch); });\n }\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n var descriptions = new Array(expected.length),\n i, j;\n\n for (i = 0; i < expected.length; i++) {\n descriptions[i] = describeExpectation(expected[i]);\n }\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found) {\n return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n }\n\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n options = options !== void 0 ? options : {};\n\n var peg$FAILED = {},\n\n peg$startRuleFunctions = { transformList: peg$parsetransformList },\n peg$startRuleFunction = peg$parsetransformList,\n\n peg$c0 = function(ts) { return ts; },\n peg$c1 = function(t, ts) {\n return multiply_matrices(t, ts);\n },\n peg$c2 = \"matrix\",\n peg$c3 = peg$literalExpectation(\"matrix\", false),\n peg$c4 = \"(\",\n peg$c5 = peg$literalExpectation(\"(\", false),\n peg$c6 = \")\",\n peg$c7 = peg$literalExpectation(\")\", false),\n peg$c8 = function(a, b, c, d, e, f) {\n return [\n a, c, e,\n b, d, f\n ];\n },\n peg$c9 = \"translate\",\n peg$c10 = peg$literalExpectation(\"translate\", false),\n peg$c11 = function(tx, ty) {\n return [\n 1, 0, tx,\n 0, 1, ty || 0\n ];\n },\n peg$c12 = \"scale\",\n peg$c13 = peg$literalExpectation(\"scale\", false),\n peg$c14 = function(sx, sy) {\n return [\n sx, 0, 0,\n 0, sy === null ? sx : sy, 0\n ];\n },\n peg$c15 = \"rotate\",\n peg$c16 = peg$literalExpectation(\"rotate\", false),\n peg$c17 = function(angle, c) {\n var cos = Math.cos(deg2rad * angle);\n var sin = Math.sin(deg2rad * angle);\n if (c !== null) {\n var x = c[0];\n var y = c[1];\n return [\n cos, -sin, cos * -x + -sin * -y + x,\n sin, cos, sin * -x + cos * -y + y\n ];\n }\n return [\n cos, -sin, 0,\n sin, cos, 0\n ];\n },\n peg$c18 = \"skewX\",\n peg$c19 = peg$literalExpectation(\"skewX\", false),\n peg$c20 = function(angle) {\n return [\n 1, Math.tan(deg2rad * angle), 0,\n 0, 1, 0\n ];\n },\n peg$c21 = \"skewY\",\n peg$c22 = peg$literalExpectation(\"skewY\", false),\n peg$c23 = function(angle) {\n return [\n 1, 0, 0,\n Math.tan(deg2rad * angle), 1, 0\n ];\n },\n peg$c24 = function(f) { return parseFloat(f.join(\"\")); },\n peg$c25 = function(i) { return parseInt(i.join(\"\")); },\n peg$c26 = function(n) { return n; },\n peg$c27 = function(n1, n2) { return [n1, n2]; },\n peg$c28 = \",\",\n peg$c29 = peg$literalExpectation(\",\", false),\n peg$c30 = function(ds) { return ds.join(\"\"); },\n peg$c31 = function(f) { return f.join(\"\"); },\n peg$c32 = function(d) { return d.join(\"\"); },\n peg$c33 = peg$otherExpectation(\"fractionalConstant\"),\n peg$c34 = \".\",\n peg$c35 = peg$literalExpectation(\".\", false),\n peg$c36 = function(d1, d2) { return [d1 ? d1.join(\"\") : null, \".\", d2.join(\"\")].join(\"\"); },\n peg$c37 = /^[eE]/,\n peg$c38 = peg$classExpectation([\"e\", \"E\"], false, false),\n peg$c39 = function(e) { return [e[0], e[1], e[2].join(\"\")].join(\"\"); },\n peg$c40 = /^[+\\-]/,\n peg$c41 = peg$classExpectation([\"+\", \"-\"], false, false),\n peg$c42 = /^[0-9]/,\n peg$c43 = peg$classExpectation([[\"0\", \"9\"]], false, false),\n peg$c44 = /^[ \\t\\r\\n]/,\n peg$c45 = peg$classExpectation([\" \", \"\\t\", \"\\r\", \"\\n\"], false, false),\n\n peg$currPos = 0,\n peg$savedPos = 0,\n peg$posDetailsCache = [{ line: 1, column: 1 }],\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location\n );\n }\n\n function error(message, location) {\n location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description) {\n return { type: \"other\", description: description };\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos], p;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos),\n endPosDetails = peg$computePosDetails(endPos);\n\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parsetransformList() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsewsp();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsewsp();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsetransforms();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsewsp();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsewsp();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetransforms() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parsetransform();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsecommaWsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsecommaWsp();\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetransforms();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c1(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parsetransform();\n }\n\n return s0;\n }\n\n function peg$parsetransform() {\n var s0;\n\n s0 = peg$parsematrix();\n if (s0 === peg$FAILED) {\n s0 = peg$parsetranslate();\n if (s0 === peg$FAILED) {\n s0 = peg$parsescale();\n if (s0 === peg$FAILED) {\n s0 = peg$parserotate();\n if (s0 === peg$FAILED) {\n s0 = peg$parseskewX();\n if (s0 === peg$FAILED) {\n s0 = peg$parseskewY();\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsematrix() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c2) {\n s1 = peg$c2;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c4;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWsp();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsenumber();\n if (s7 !== peg$FAILED) {\n s8 = peg$parsecommaWsp();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsenumber();\n if (s9 !== peg$FAILED) {\n s10 = peg$parsecommaWsp();\n if (s10 !== peg$FAILED) {\n s11 = peg$parsenumber();\n if (s11 !== peg$FAILED) {\n s12 = peg$parsecommaWsp();\n if (s12 !== peg$FAILED) {\n s13 = peg$parsenumber();\n if (s13 !== peg$FAILED) {\n s14 = peg$parsecommaWsp();\n if (s14 !== peg$FAILED) {\n s15 = peg$parsenumber();\n if (s15 !== peg$FAILED) {\n s16 = [];\n s17 = peg$parsewsp();\n while (s17 !== peg$FAILED) {\n s16.push(s17);\n s17 = peg$parsewsp();\n }\n if (s16 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s17 = peg$c6;\n peg$currPos++;\n } else {\n s17 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s17 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c8(s5, s7, s9, s11, s13, s15);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetranslate() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 9) === peg$c9) {\n s1 = peg$c9;\n peg$currPos += 9;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c4;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWspNumber();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n if (s6 !== peg$FAILED) {\n s7 = [];\n s8 = peg$parsewsp();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parsewsp();\n }\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s8 = peg$c6;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c11(s5, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsescale() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c12) {\n s1 = peg$c12;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c4;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWspNumber();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n if (s6 !== peg$FAILED) {\n s7 = [];\n s8 = peg$parsewsp();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parsewsp();\n }\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s8 = peg$c6;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c14(s5, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parserotate() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c15) {\n s1 = peg$c15;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c16); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c4;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWspTwoNumbers();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n if (s6 !== peg$FAILED) {\n s7 = [];\n s8 = peg$parsewsp();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parsewsp();\n }\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s8 = peg$c6;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c17(s5, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseskewX() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c18) {\n s1 = peg$c18;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c4;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = peg$parsewsp();\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = peg$parsewsp();\n }\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s7 = peg$c6;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c20(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseskewY() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c21) {\n s1 = peg$c21;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c22); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c4;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = peg$parsewsp();\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = peg$parsewsp();\n }\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s7 = peg$c6;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c23(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsenumber() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsesign();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsefloatingPointConstant();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c24(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsesign();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseintegerConstant();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c25(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsecommaWspNumber() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parsecommaWsp();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c26(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecommaWspTwoNumbers() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parsecommaWsp();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecommaWsp();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsenumber();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c27(s2, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecommaWsp() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsewsp();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsewsp();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsecomma();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsewsp();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsewsp();\n }\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, s3];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsecomma();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsecomma() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 44) {\n s0 = peg$c28;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n\n return s0;\n }\n\n function peg$parseintegerConstant() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsedigitSequence();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c30(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsefloatingPointConstant() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsefractionalConstant();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseexponent();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c31(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsedigitSequence();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseexponent();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c32(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsefractionalConstant() {\n var s0, s1, s2, s3;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parsedigitSequence();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c34;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsedigitSequence();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c36(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsedigitSequence();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c34;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c32(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c33); }\n }\n\n return s0;\n }\n\n function peg$parseexponent() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (peg$c37.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c38); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsesign();\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parsedigitSequence();\n if (s4 !== peg$FAILED) {\n s2 = [s2, s3, s4];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c39(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsesign() {\n var s0;\n\n if (peg$c40.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c41); }\n }\n\n return s0;\n }\n\n function peg$parsedigitSequence() {\n var s0, s1;\n\n s0 = [];\n s1 = peg$parsedigit();\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parsedigit();\n }\n } else {\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsedigit() {\n var s0;\n\n if (peg$c42.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\n }\n\n return s0;\n }\n\n function peg$parsewsp() {\n var s0;\n\n if (peg$c44.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\n }\n\n return s0;\n }\n\n\n var deg2rad = Math.PI / 180;\n\n /*\n ╔═ ═╗ ╔═ ═╗ ╔═ ═╗\n ║ al cl el ║ ║ ar cr er ║ ║ a c e ║\n ║ bl dl fl ║ * ║ br dr fr ║ = ║ b d f ║\n ║ 0 0 1 ║ ║ 0 0 1 ║ ║ 0 0 1 ║\n ╚═ ═╝ ╚═ ═╝ ╚═ ═╝\n */\n function multiply_matrices(l, r) {\n var al = l[0];\n var cl = l[1];\n var el = l[2];\n var bl = l[3];\n var dl = l[4];\n var fl = l[5];\n\n var ar = r[0];\n var cr = r[1];\n var er = r[2];\n var br = r[3];\n var dr = r[4];\n var fr = r[5];\n\n var a = al * ar + cl * br;\n var c = al * cr + cl * dr;\n var e = al * er + cl * fr + el;\n var b = bl * ar + dl * br;\n var d = bl * cr + dl * dr;\n var f = bl * er + dl * fr + fl;\n\n return [a, c, e, b, d, f];\n }\n\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n}\n\nmodule.exports = {\n SyntaxError: peg$SyntaxError,\n parse: peg$parse\n};\n","import { PanResponder } from 'react-native';\nimport { ResponderInstanceProps, ResponderProps } from './types';\n\nconst responderKeys = Object.keys(PanResponder.create({}).panHandlers);\nconst numResponderKeys = responderKeys.length;\n\nexport default function extractResponder(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props: { [x: string]: any } & ResponderProps,\n ref: ResponderInstanceProps,\n) {\n const {\n onPress,\n disabled,\n onPressIn,\n onPressOut,\n onLongPress,\n delayPressIn,\n delayPressOut,\n delayLongPress,\n pointerEvents,\n } = props;\n const o: {\n [touchableProperty: string]: unknown;\n } = {};\n\n let responsible = false;\n for (let i = 0; i < numResponderKeys; i++) {\n const key = responderKeys[i];\n const value = props[key];\n if (value) {\n responsible = true;\n o[key] = value;\n }\n }\n\n if (pointerEvents) {\n o.pointerEvents = pointerEvents;\n }\n\n const hasTouchableProperty =\n disabled != null ||\n onPress ||\n onPressIn ||\n onPressOut ||\n onLongPress ||\n delayPressIn ||\n delayPressOut ||\n delayLongPress;\n\n if (hasTouchableProperty) {\n responsible = true;\n o.onResponderMove = ref.touchableHandleResponderMove;\n o.onResponderGrant = ref.touchableHandleResponderGrant;\n o.onResponderRelease = ref.touchableHandleResponderRelease;\n o.onResponderTerminate = ref.touchableHandleResponderTerminate;\n o.onStartShouldSetResponder = ref.touchableHandleStartShouldSetResponder;\n o.onResponderTerminationRequest =\n ref.touchableHandleResponderTerminationRequest;\n }\n\n if (responsible) {\n o.responsible = true;\n }\n\n return o;\n}\n","export function pickNotNil(object: { [prop: string]: unknown }) {\n const result: { [prop: string]: unknown } = {};\n for (const key in object) {\n if (object.hasOwnProperty(key)) {\n const value = object[key];\n if (value !== undefined && value !== null) {\n result[key] = value;\n }\n }\n }\n return result;\n}\n\nexport const idPattern = /#([^)]+)\\)?$/;\n","import React from 'react';\nimport { requireNativeComponent } from 'react-native';\nimport extractProps, { propsAndStyles } from '../lib/extract/extractProps';\nimport { NumberProp } from '../lib/extract/types';\nimport Shape from './Shape';\n\nexport default class Circle extends Shape<{\n cx?: NumberProp;\n cy?: NumberProp;\n r?: NumberProp;\n}> {\n static displayName = 'Circle';\n\n static defaultProps = {\n cx: 0,\n cy: 0,\n r: 0,\n };\n\n render() {\n const { props } = this;\n const { cx, cy, r } = props;\n return (\n \n );\n }\n}\n\nexport const RNSVGCircle = requireNativeComponent('RNSVGCircle');\n","import React from 'react';\nimport { requireNativeComponent } from 'react-native';\nimport extractProps, { propsAndStyles } from '../lib/extract/extractProps';\nimport { NumberProp } from '../lib/extract/types';\nimport Shape from './Shape';\n\nexport default class Ellipse extends Shape<{\n cx?: NumberProp;\n cy?: NumberProp;\n rx?: NumberProp;\n ry?: NumberProp;\n}> {\n static displayName = 'Ellipse';\n\n static defaultProps = {\n cx: 0,\n cy: 0,\n rx: 0,\n ry: 0,\n };\n\n render() {\n const { props } = this;\n const { cx, cy, rx, ry } = props;\n return (\n \n );\n }\n}\n\nexport const RNSVGEllipse = requireNativeComponent('RNSVGEllipse');\n","import React from 'react';\nimport Path from './Path';\nimport Shape from './Shape';\nimport { NumberProp } from '../lib/extract/types';\nimport extractPolyPoints from '../lib/extract/extractPolyPoints';\n\nexport default class Polygon extends Shape<{ points?: number[] }> {\n static displayName = 'Polygon';\n\n static defaultProps = {\n points: '',\n };\n\n setNativeProps = (\n props: Object & {\n points?: string | (NumberProp)[];\n d?: string;\n },\n ) => {\n const { points } = props;\n if (points) {\n props.d = `M${extractPolyPoints(points)}z`;\n }\n this.root && this.root.setNativeProps(props);\n };\n\n render() {\n const { props } = this;\n const { points } = props;\n return (\n void)}\n d={points && `M${extractPolyPoints(points)}z`}\n {...props}\n />\n );\n }\n}\n","import React from 'react';\nimport { requireNativeComponent } from 'react-native';\nimport extractProps, { propsAndStyles } from '../lib/extract/extractProps';\nimport Shape from './Shape';\n\nexport default class Path extends Shape<{\n d?: string;\n}> {\n static displayName = 'Path';\n\n render() {\n const { props } = this;\n return (\n \n );\n }\n}\n\nexport const RNSVGPath = requireNativeComponent('RNSVGPath');\n","import { NumberProp } from './types';\n\nexport default function extractPolyPoints(points: string | (NumberProp)[]) {\n const polyPoints = Array.isArray(points) ? points.join(',') : points;\n return polyPoints\n .replace(/[^e]-/, ' -')\n .split(/(?:\\s+|\\s*,\\s*)/g)\n .join(' ');\n}\n","import React from 'react';\nimport Path from './Path';\nimport Shape from './Shape';\nimport { NumberProp } from '../lib/extract/types';\nimport extractPolyPoints from '../lib/extract/extractPolyPoints';\n\nexport default class Polyline extends Shape<{ points?: number[] }> {\n static displayName = 'Polyline';\n\n static defaultProps = {\n points: '',\n };\n\n setNativeProps = (\n props: Object & {\n points?: string | (NumberProp)[];\n d?: string;\n },\n ) => {\n const { points } = props;\n if (points) {\n props.d = `M${extractPolyPoints(points)}`;\n }\n this.root && this.root.setNativeProps(props);\n };\n\n render() {\n const { props } = this;\n const { points } = props;\n return (\n void)}\n d={points && `M${extractPolyPoints(points)}`}\n {...props}\n />\n );\n }\n}\n","import React from 'react';\nimport { requireNativeComponent } from 'react-native';\nimport extractProps, { propsAndStyles } from '../lib/extract/extractProps';\nimport { NumberProp } from '../lib/extract/types';\nimport Shape from './Shape';\n\nexport default class Line extends Shape<{\n x1?: NumberProp;\n y1?: NumberProp;\n x2?: NumberProp;\n y2?: NumberProp;\n}> {\n static displayName = 'Line';\n\n static defaultProps = {\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n };\n\n render() {\n const { props } = this;\n const { x1, y1, x2, y2 } = props;\n return (\n \n );\n }\n}\n\nexport const RNSVGLine = requireNativeComponent('RNSVGLine');\n","import React, { Component } from 'react';\nimport {\n requireNativeComponent,\n StyleSheet,\n findNodeHandle,\n NativeModules,\n MeasureOnSuccessCallback,\n MeasureLayoutOnSuccessCallback,\n MeasureInWindowOnSuccessCallback,\n} from 'react-native';\nimport {\n Color,\n ClipProps,\n FillProps,\n NumberProp,\n StrokeProps,\n ResponderProps,\n TransformProps,\n ResponderInstanceProps,\n} from '../lib/extract/types';\nimport extractResponder from '../lib/extract/extractResponder';\nimport extractViewBox from '../lib/extract/extractViewBox';\nimport extractColor from '../lib/extract/extractColor';\nimport Shape from './Shape';\nimport G from './G';\n\nconst RNSVGSvgViewManager = NativeModules.RNSVGSvgViewManager;\n\nconst styles = StyleSheet.create({\n svg: {\n backgroundColor: 'transparent',\n borderWidth: 0,\n },\n});\n\nexport default class Svg extends Shape<\n {\n color?: Color;\n style?: [] | {};\n viewBox?: string;\n opacity?: NumberProp;\n onLayout?: () => void;\n preserveAspectRatio?: string;\n } & TransformProps &\n ResponderProps &\n StrokeProps &\n FillProps &\n ClipProps\n> {\n static displayName = 'Svg';\n\n static defaultProps = {\n preserveAspectRatio: 'xMidYMid meet',\n };\n\n measureInWindow = (callback: MeasureInWindowOnSuccessCallback) => {\n this.root && this.root.measureInWindow(callback);\n };\n\n measure = (callback: MeasureOnSuccessCallback) => {\n this.root && this.root.measure(callback);\n };\n\n measureLayout = (\n relativeToNativeNode: number,\n onSuccess: MeasureLayoutOnSuccessCallback,\n onFail: () => void /* currently unused */,\n ) => {\n this.root &&\n this.root.measureLayout(relativeToNativeNode, onSuccess, onFail);\n };\n\n setNativeProps = (\n props: Object & {\n width?: NumberProp;\n height?: NumberProp;\n bbWidth?: NumberProp;\n bbHeight?: NumberProp;\n },\n ) => {\n const { width, height } = props;\n if (width) {\n props.bbWidth = width;\n }\n if (height) {\n props.bbHeight = height;\n }\n this.root && this.root.setNativeProps(props);\n };\n\n toDataURL = (callback: () => void, options?: Object) => {\n if (!callback) {\n return;\n }\n const handle = findNodeHandle(this.root as Component);\n RNSVGSvgViewManager.toDataURL(handle, options, callback);\n };\n\n render() {\n const {\n opacity = 1,\n viewBox,\n preserveAspectRatio,\n style,\n children,\n onLayout,\n ...props\n } = this.props;\n const stylesAndProps = {\n ...(Array.isArray(style) ? Object.assign({}, ...style) : style),\n ...props,\n };\n const {\n color,\n width,\n height,\n focusable,\n\n // Inherited G properties\n font,\n transform,\n fill,\n fillOpacity,\n fillRule,\n stroke,\n strokeWidth,\n strokeOpacity,\n strokeDasharray,\n strokeDashoffset,\n strokeLinecap,\n strokeLinejoin,\n strokeMiterlimit,\n } = stylesAndProps;\n\n const w = parseInt(width, 10);\n const h = parseInt(height, 10);\n const doNotParseWidth = isNaN(w) || width[width.length - 1] === '%';\n const doNotParseHeight = isNaN(h) || height[height.length - 1] === '%';\n const dimensions =\n width && height\n ? {\n width: doNotParseWidth ? width : w,\n height: doNotParseHeight ? height : h,\n flex: 0,\n }\n : null;\n\n const o = +opacity;\n const opacityStyle = !isNaN(o)\n ? {\n opacity: o,\n }\n : null;\n\n const tint = extractColor(color);\n return (\n \n \n \n );\n }\n}\n\nexport const RNSVGSvg = requireNativeComponent('RNSVGSvgView');\n","import { NumberProp } from './types';\n\nexport const meetOrSliceTypes: {\n [meetOrSlice: string]: number;\n} = {\n meet: 0,\n slice: 1,\n none: 2,\n};\n\nexport const alignEnum: { [align: string]: string } = [\n 'xMinYMin',\n 'xMidYMin',\n 'xMaxYMin',\n 'xMinYMid',\n 'xMidYMid',\n 'xMaxYMid',\n 'xMinYMax',\n 'xMidYMax',\n 'xMaxYMax',\n 'none',\n].reduce((prev: { [align: string]: string }, name) => {\n prev[name] = name;\n return prev;\n}, {});\n\nconst spacesRegExp = /\\s+/;\n\nexport default function extractViewBox(props: {\n viewBox?: string | (NumberProp)[];\n preserveAspectRatio?: string;\n}) {\n const { viewBox, preserveAspectRatio } = props;\n\n if (!viewBox) {\n return null;\n }\n\n const params = (Array.isArray(viewBox)\n ? viewBox\n : viewBox.trim().split(spacesRegExp)\n ).map(Number);\n\n if (params.length !== 4 || params.some(isNaN)) {\n console.warn('Invalid `viewBox` prop:' + viewBox);\n return null;\n }\n\n const modes = preserveAspectRatio\n ? preserveAspectRatio.trim().split(spacesRegExp)\n : [];\n const align = modes[0];\n const meetOrSlice = modes[1];\n\n return {\n minX: params[0],\n minY: params[1],\n vbWidth: params[2],\n vbHeight: params[3],\n align: alignEnum[align] || 'xMidYMid',\n meetOrSlice: meetOrSliceTypes[meetOrSlice] || 0,\n };\n}\n","import React from 'react';\nimport { requireNativeComponent } from 'react-native';\nimport extractProps, { propsAndStyles } from '../lib/extract/extractProps';\nimport { extractFont } from '../lib/extract/extractText';\nimport extractTransform from '../lib/extract/extractTransform';\nimport { TransformProps } from '../lib/extract/types';\nimport Shape from './Shape';\n\nexport default class G extends Shape<{}> {\n static displayName = 'G';\n\n setNativeProps = (\n props: Object & {\n matrix?: number[];\n } & TransformProps,\n ) => {\n const matrix = !props.matrix && extractTransform(props);\n if (matrix) {\n props.matrix = matrix;\n }\n this.root && this.root.setNativeProps(props);\n };\n\n render() {\n const { props } = this;\n const prop = propsAndStyles(props);\n return (\n \n {props.children}\n \n );\n }\n}\n\nexport const RNSVGGroup = requireNativeComponent('RNSVGGroup');\n","import React, { Children, ComponentType } from 'react';\nimport extractLengthList from './extractLengthList';\nimport { pickNotNil } from '../util';\nimport { NumberArray, NumberProp } from './types';\n\nconst fontRegExp = /^\\s*((?:(?:normal|bold|italic)\\s+)*)(?:(\\d+(?:\\.\\d+)?(?:%|px|em|pt|pc|mm|cm|in]))*(?:\\s*\\/.*?)?\\s+)?\\s*\"?([^\"]*)/i;\nconst fontFamilyPrefix = /^[\\s\"']*/;\nconst fontFamilySuffix = /[\\s\"']*$/;\nconst commaReg = /\\s*,\\s*/g;\n\nconst cachedFontObjectsFromString: {\n [font: string]: {\n fontStyle: string;\n fontSize: NumberProp;\n fontWeight: NumberProp;\n fontFamily: string | null;\n } | null;\n} = {};\n\nfunction extractSingleFontFamily(fontFamilyString?: string) {\n // SVG 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 ? fontFamilyString\n .split(commaReg)[0]\n .replace(fontFamilyPrefix, '')\n .replace(fontFamilySuffix, '')\n : null;\n}\n\nfunction parseFontString(font: string) {\n if (cachedFontObjectsFromString.hasOwnProperty(font)) {\n return cachedFontObjectsFromString[font];\n }\n const match = fontRegExp.exec(font);\n if (!match) {\n cachedFontObjectsFromString[font] = null;\n return null;\n }\n const isBold = /bold/.exec(match[1]);\n const isItalic = /italic/.exec(match[1]);\n cachedFontObjectsFromString[font] = {\n fontSize: match[2] || 12,\n fontWeight: isBold ? 'bold' : 'normal',\n fontStyle: isItalic ? 'italic' : 'normal',\n fontFamily: extractSingleFontFamily(match[3]),\n };\n return cachedFontObjectsFromString[font];\n}\n\ninterface fontProps {\n fontData?: unknown;\n fontStyle?: string;\n fontVariant?: string;\n fontWeight?: NumberProp;\n fontStretch?: string;\n fontSize?: NumberProp;\n fontFamily?: string;\n textAnchor?: string;\n textDecoration?: string;\n letterSpacing?: NumberProp;\n wordSpacing?: NumberProp;\n kerning?: NumberProp;\n fontFeatureSettings?: string;\n fontVariantLigatures?: string;\n fontVariationSettings?: string;\n font?: string;\n}\n\nexport function extractFont(props: fontProps) {\n const {\n fontData,\n fontStyle,\n fontVariant,\n fontWeight,\n fontStretch,\n fontSize,\n fontFamily,\n textAnchor,\n textDecoration,\n letterSpacing,\n wordSpacing,\n kerning,\n fontFeatureSettings,\n fontVariantLigatures,\n fontVariationSettings,\n font,\n } = props;\n\n const ownedFont = pickNotNil({\n fontData,\n fontStyle,\n fontVariant,\n fontWeight,\n fontStretch,\n fontSize,\n fontFamily: extractSingleFontFamily(fontFamily),\n textAnchor,\n textDecoration,\n letterSpacing,\n wordSpacing,\n kerning,\n fontFeatureSettings,\n fontVariantLigatures,\n fontVariationSettings,\n });\n\n const baseFont = typeof font === 'string' ? parseFontString(font) : font;\n\n return { ...baseFont, ...ownedFont };\n}\n\nlet TSpan: ComponentType;\n\nexport function setTSpan(TSpanImplementation: ComponentType) {\n TSpan = TSpanImplementation;\n}\n\nfunction getChild(child: undefined | string | number | ComponentType) {\n if (typeof child === 'string' || typeof child === 'number') {\n return {String(child)};\n } else {\n return child;\n }\n}\n\nexport type TextProps = {\n x?: NumberArray;\n y?: NumberArray;\n dx?: NumberArray;\n dy?: NumberArray;\n rotate?: NumberArray;\n children?: string | number | (string | number | ComponentType)[];\n inlineSize?: NumberProp;\n baselineShift?: NumberProp;\n verticalAlign?: NumberProp;\n alignmentBaseline?: string;\n} & fontProps;\n\nexport default function extractText(props: TextProps, container: boolean) {\n const {\n x,\n y,\n dx,\n dy,\n rotate,\n children,\n inlineSize,\n baselineShift,\n verticalAlign,\n alignmentBaseline,\n } = props;\n\n const textChildren =\n typeof children === 'string' || typeof children === 'number' ? (\n container ? (\n {String(children)}\n ) : null\n ) : Children.count(children) > 1 || Array.isArray(children) ? (\n Children.map(children, getChild)\n ) : (\n children\n );\n\n return {\n content: textChildren === null ? String(children) : null,\n children: textChildren,\n inlineSize,\n baselineShift,\n verticalAlign,\n alignmentBaseline,\n font: extractFont(props),\n x: extractLengthList(x),\n y: extractLengthList(y),\n dx: extractLengthList(dx),\n dy: extractLengthList(dy),\n rotate: extractLengthList(rotate),\n };\n}\n","import React, { Component } from 'react';\nimport { requireNativeComponent } from 'react-native';\nimport extractText from '../lib/extract/extractText';\nimport extractProps, { propsAndStyles } from '../lib/extract/extractProps';\nimport extractTransform from '../lib/extract/extractTransform';\nimport { TransformProps } from '../lib/extract/types';\nimport { pickNotNil } from '../lib/util';\nimport Shape from './Shape';\nimport './TSpan';\n\nexport default class Text extends Shape<{}> {\n static displayName = 'Text';\n\n setNativeProps = (\n props: Object & {\n matrix?: number[];\n style?: [] | {};\n } & TransformProps,\n ) => {\n const matrix = props && !props.matrix && extractTransform(props);\n if (matrix) {\n props.matrix = matrix;\n }\n const prop = propsAndStyles(props);\n Object.assign(prop, pickNotNil(extractText(prop, true)));\n this.root && this.root.setNativeProps(prop);\n };\n\n render() {\n const prop = propsAndStyles(this.props);\n const props = extractProps(\n {\n ...prop,\n x: null,\n y: null,\n },\n this,\n );\n Object.assign(props, extractText(prop, true));\n props.ref = this.refMethod as (instance: Component | null) => void;\n return ;\n }\n}\n\nexport const RNSVGText = requireNativeComponent('RNSVGText');\n","import React, { Component } from 'react';\nimport { requireNativeComponent } from 'react-native';\nimport extractProps, { propsAndStyles } from '../lib/extract/extractProps';\nimport extractTransform from '../lib/extract/extractTransform';\nimport extractText, { setTSpan } from '../lib/extract/extractText';\nimport { pickNotNil } from '../lib/util';\nimport Shape from './Shape';\nimport { TransformProps } from '../lib/extract/types';\n\nexport default class TSpan extends Shape<{}> {\n static displayName = 'TSpan';\n\n setNativeProps = (\n props: Object & {\n matrix?: number[];\n style?: [] | {};\n } & TransformProps,\n ) => {\n const matrix = !props.matrix && extractTransform(props);\n if (matrix) {\n props.matrix = matrix;\n }\n const prop = propsAndStyles(props);\n Object.assign(prop, pickNotNil(extractText(prop, false)));\n this.root && this.root.setNativeProps(prop);\n };\n\n render() {\n const prop = propsAndStyles(this.props);\n const props = extractProps(\n {\n ...prop,\n x: null,\n y: null,\n },\n this,\n );\n Object.assign(props, extractText(prop, false));\n props.ref = this.refMethod as (instance: Component | null) => void;\n return ;\n }\n}\n\nsetTSpan(TSpan);\n\nexport const RNSVGTSpan = requireNativeComponent('RNSVGTSpan');\n","import React, { Component } from 'react';\nimport { requireNativeComponent } from 'react-native';\nimport extractTransform from '../lib/extract/extractTransform';\nimport extractProps, { propsAndStyles } from '../lib/extract/extractProps';\nimport { NumberProp, TransformProps } from '../lib/extract/types';\nimport extractText from '../lib/extract/extractText';\nimport { idPattern, pickNotNil } from '../lib/util';\nimport Shape from './Shape';\nimport TSpan from './TSpan';\n\nexport default class TextPath extends Shape<{\n children?: NumberProp | [NumberProp | React.ComponentType];\n alignmentBaseline?: string;\n startOffset?: NumberProp;\n xlinkHref?: string;\n midLine?: string;\n spacing?: string;\n method?: string;\n href?: string;\n side?: string;\n}> {\n static displayName = 'TextPath';\n\n setNativeProps = (\n props: Object & {\n matrix?: number[];\n style?: [] | {};\n } & TransformProps,\n ) => {\n const matrix = !props.matrix && extractTransform(props);\n if (matrix) {\n props.matrix = matrix;\n }\n Object.assign(props, pickNotNil(extractText(props, true)));\n this.root && this.root.setNativeProps(props);\n };\n\n render() {\n const {\n children,\n xlinkHref,\n href = xlinkHref,\n startOffset = 0,\n method,\n spacing,\n side,\n alignmentBaseline,\n midLine,\n ...prop\n } = this.props;\n const matched = href && href.match(idPattern);\n const match = matched && matched[1];\n if (match) {\n const props = extractProps(\n {\n ...propsAndStyles(prop),\n x: null,\n y: null,\n },\n this,\n );\n Object.assign(\n props,\n extractText(\n {\n children,\n },\n true,\n ),\n {\n href: match,\n startOffset,\n method,\n spacing,\n side,\n alignmentBaseline,\n midLine,\n },\n );\n props.ref = this.refMethod as (instance: Component | null) => void;\n return ;\n }\n\n console.warn(\n 'Invalid `href` prop for `TextPath` element, expected a href like \"#id\", but got: \"' +\n href +\n '\"',\n );\n return (\n void}>\n {children}\n \n );\n }\n}\n\nexport const RNSVGTextPath = requireNativeComponent('RNSVGTextPath');\n","import React from 'react';\nimport { requireNativeComponent } from 'react-native';\nimport extractProps, { propsAndStyles } from '../lib/extract/extractProps';\nimport { NumberProp } from '../lib/extract/types';\nimport { idPattern } from '../lib/util';\nimport Shape from './Shape';\n\nexport default class Use extends Shape<{\n x?: NumberProp;\n y?: NumberProp;\n width?: NumberProp;\n height?: NumberProp;\n xlinkHref?: string;\n href?: string;\n}> {\n static displayName = 'Use';\n\n static defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n\n render() {\n const { props } = this;\n const {\n children,\n x,\n y,\n width,\n height,\n xlinkHref,\n href = xlinkHref,\n } = props;\n\n const matched = href && href.match(idPattern);\n const match = matched && matched[1];\n\n if (!match) {\n console.warn(\n 'Invalid `href` prop for `Use` element, expected a href like \"#id\", but got: \"' +\n href +\n '\"',\n );\n }\n\n return (\n \n {children}\n \n );\n }\n}\n\nexport const RNSVGUse = requireNativeComponent('RNSVGUse');\n","import React from 'react';\nimport {\n Image,\n ImageSourcePropType,\n requireNativeComponent,\n} from 'react-native';\nimport { meetOrSliceTypes, alignEnum } from '../lib/extract/extractViewBox';\nimport extractProps, { propsAndStyles } from '../lib/extract/extractProps';\nimport { NumberProp } from '../lib/extract/types';\nimport Shape from './Shape';\n\nconst spacesRegExp = /\\s+/;\n\nexport default class SvgImage extends Shape<{\n preserveAspectRatio?: string;\n x?: NumberProp;\n y?: NumberProp;\n width?: NumberProp;\n height?: NumberProp;\n xlinkHref?: string | number | ImageSourcePropType;\n href?: string | number | ImageSourcePropType;\n}> {\n static displayName = 'Image';\n\n static defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n preserveAspectRatio: 'xMidYMid meet',\n };\n\n render() {\n const { props } = this;\n const {\n preserveAspectRatio,\n x,\n y,\n width,\n height,\n xlinkHref,\n href = xlinkHref,\n } = props;\n const modes = preserveAspectRatio\n ? preserveAspectRatio.trim().split(spacesRegExp)\n : [];\n const align = modes[0];\n const meetOrSlice: 'meet' | 'slice' | 'none' | string | undefined =\n modes[1];\n return (\n \n );\n }\n}\n\nexport const RNSVGImage = requireNativeComponent('RNSVGImage');\n","import React from 'react';\nimport { requireNativeComponent } from 'react-native';\nimport extractViewBox from '../lib/extract/extractViewBox';\nimport Shape from './Shape';\n\nexport default class Symbol extends Shape<{\n id?: string;\n viewBox?: string;\n preserveAspectRatio?: string;\n}> {\n static displayName = 'Symbol';\n\n render() {\n const { props } = this;\n const { id, children } = props;\n return (\n \n {children}\n \n );\n }\n}\n\nexport const RNSVGSymbol = requireNativeComponent('RNSVGSymbol');\n","import React, { Component } from 'react';\nimport { requireNativeComponent } from 'react-native';\n\nexport default class Defs extends Component {\n static displayName = 'Defs';\n\n render() {\n return {this.props.children};\n }\n}\n\nexport const RNSVGDefs = requireNativeComponent('RNSVGDefs');\n","import React, { ReactElement } from 'react';\nimport { requireNativeComponent } from 'react-native';\nimport extractGradient from '../lib/extract/extractGradient';\nimport { NumberProp, TransformProps } from '../lib/extract/types';\nimport Shape from './Shape';\n\nexport default class LinearGradient extends Shape<{\n id?: string;\n x1?: NumberProp;\n y1?: NumberProp;\n x2?: NumberProp;\n y2?: NumberProp;\n children?: ReactElement[];\n transform?: number[] | string | TransformProps;\n gradientTransform?: number[] | string | TransformProps;\n gradientUnits?: 'objectBoundingBox' | 'userSpaceOnUse';\n}> {\n static displayName = 'LinearGradient';\n\n static defaultProps = {\n x1: '0%',\n y1: '0%',\n x2: '100%',\n y2: '0%',\n };\n\n render() {\n const { props } = this;\n const { x1, y1, x2, y2 } = props;\n return (\n \n );\n }\n}\n\nexport const RNSVGLinearGradient = requireNativeComponent(\n 'RNSVGLinearGradient',\n);\n","import React, { Children, ReactElement } from 'react';\n\nimport extractColor from './extractColor';\nimport extractOpacity from './extractOpacity';\nimport extractTransform from './extractTransform';\nimport { TransformProps } from './types';\nimport units from '../units';\n\nconst percentReg = /^([+\\-]?\\d+(?:\\.\\d+)?(?:[eE][+\\-]?\\d+)?)(%?)$/;\n\nfunction percentToFloat(\n percent:\n | number\n | string\n | {\n __getAnimatedValue: () => number;\n },\n): number {\n if (typeof percent === 'number') {\n return percent;\n }\n if (\n typeof percent === 'object' &&\n typeof percent.__getAnimatedValue === 'function'\n ) {\n return percent.__getAnimatedValue();\n }\n const matched = typeof percent === 'string' && percent.match(percentReg);\n if (!matched) {\n console.warn(`\"${percent}\" is not a valid number or percentage string.`);\n return 0;\n }\n\n return matched[2] ? +matched[1] / 100 : +matched[1];\n}\n\nconst offsetComparator = (object: number[], other: number[]) =>\n object[0] - other[0];\n\nexport default function extractGradient(\n props: {\n id?: string;\n children?: ReactElement[];\n transform?: number[] | string | TransformProps;\n gradientTransform?: number[] | string | TransformProps;\n gradientUnits?: 'objectBoundingBox' | 'userSpaceOnUse';\n } & TransformProps,\n parent: {},\n) {\n const { id, children, gradientTransform, transform, gradientUnits } = props;\n if (!id) {\n return null;\n }\n\n const stops = [];\n const childArray = children\n ? Children.map(children, child =>\n React.cloneElement(child, {\n parent,\n }),\n )\n : [];\n const l = childArray.length;\n for (let i = 0; i < l; i++) {\n const {\n props: {\n style,\n offset = style && style.offset,\n stopColor = (style && style.stopColor) || '#000',\n stopOpacity = style && style.stopOpacity,\n },\n } = childArray[i];\n const offsetNumber = percentToFloat(offset || 0);\n const color = stopColor && extractColor(stopColor);\n if (typeof color !== 'number' || isNaN(offsetNumber)) {\n console.warn(\n `\"${stopColor}\" is not a valid color or \"${offset}\" is not a valid offset`,\n );\n continue;\n }\n const alpha = Math.round(extractOpacity(stopOpacity) * 255);\n stops.push([offsetNumber, (color & 0x00ffffff) | (alpha << 24)]);\n }\n stops.sort(offsetComparator);\n\n const gradient = [];\n const k = stops.length;\n for (let j = 0; j < k; j++) {\n const s = stops[j];\n gradient.push(s[0], s[1]);\n }\n\n return {\n name: id,\n gradient,\n children: childArray,\n gradientUnits: (gradientUnits && units[gradientUnits]) || 0,\n gradientTransform: extractTransform(\n gradientTransform || transform || props,\n ),\n };\n}\n","export const units: { objectBoundingBox: number; userSpaceOnUse: number } = {\n objectBoundingBox: 0,\n userSpaceOnUse: 1,\n};\nexport default units;\n","import React, { ReactElement } from 'react';\nimport { requireNativeComponent } from 'react-native';\nimport extractGradient from '../lib/extract/extractGradient';\nimport { NumberProp, TransformProps } from '../lib/extract/types';\nimport Shape from './Shape';\n\nexport default class RadialGradient extends Shape<{\n fx?: NumberProp;\n fy?: NumberProp;\n rx?: NumberProp;\n ry?: NumberProp;\n r?: NumberProp;\n cx?: NumberProp;\n cy?: NumberProp;\n id?: string;\n children?: ReactElement[];\n transform?: number[] | string | TransformProps;\n gradientTransform?: number[] | string | TransformProps;\n gradientUnits?: 'objectBoundingBox' | 'userSpaceOnUse';\n}> {\n static displayName = 'RadialGradient';\n\n static defaultProps = {\n cx: '50%',\n cy: '50%',\n r: '50%',\n };\n\n render() {\n const { props } = this;\n const { rx, ry, r, cx, cy, fx = cx, fy = cy } = props;\n return (\n \n );\n }\n}\n\nexport const RNSVGRadialGradient = requireNativeComponent(\n 'RNSVGRadialGradient',\n);\n","import { Component } from 'react';\n\ntype StopProps = {\n parent?: Component;\n};\n\nexport default class Stop extends Component {\n props!: StopProps;\n static displayName = 'Stop';\n\n setNativeProps = () => {\n const { parent } = this.props;\n if (parent) {\n parent.forceUpdate();\n }\n };\n\n render() {\n return null;\n }\n}\n","import React from 'react';\nimport { requireNativeComponent } from 'react-native';\nimport extractProps, { propsAndStyles } from '../lib/extract/extractProps';\nimport Shape from './Shape';\n\nexport default class ClipPath extends Shape<{}> {\n static displayName = 'ClipPath';\n\n render() {\n const { props } = this;\n return (\n \n {props.children}\n \n );\n }\n}\n\nexport const RNSVGClipPath = requireNativeComponent('RNSVGClipPath');\n","import React from 'react';\nimport { requireNativeComponent } from 'react-native';\nimport extractTransform from '../lib/extract/extractTransform';\nimport extractViewBox from '../lib/extract/extractViewBox';\nimport { NumberProp, TransformProps } from '../lib/extract/types';\nimport units from '../lib/units';\nimport Shape from './Shape';\n\nexport default class Pattern extends Shape<{\n id?: string;\n x?: NumberProp;\n y?: NumberProp;\n width?: NumberProp;\n height?: NumberProp;\n viewBox?: string;\n preserveAspectRatio?: string;\n transform?: number[] | string | TransformProps;\n patternTransform?: number[] | string | TransformProps;\n patternUnits?: 'objectBoundingBox' | 'userSpaceOnUse';\n patternContentUnits?: 'objectBoundingBox' | 'userSpaceOnUse';\n}> {\n static displayName = 'Pattern';\n\n static defaultProps = {\n x: '0%',\n y: '0%',\n width: '100%',\n height: '100%',\n };\n\n render() {\n const { props } = this;\n const {\n patternTransform,\n transform,\n id,\n x,\n y,\n width,\n height,\n patternUnits,\n patternContentUnits,\n children,\n viewBox,\n preserveAspectRatio,\n } = props;\n const matrix = extractTransform(patternTransform || transform || props);\n return (\n \n {children}\n \n );\n }\n}\n\nexport const RNSVGPattern = requireNativeComponent('RNSVGPattern');\n","import React from 'react';\nimport { requireNativeComponent } from 'react-native';\nimport extractTransform from '../lib/extract/extractTransform';\nimport extractProps, { propsAndStyles } from '../lib/extract/extractProps';\nimport { NumberProp, TransformProps } from '../lib/extract/types';\nimport units from '../lib/units';\nimport Shape from './Shape';\n\nexport default class Mask extends Shape<{\n x?: NumberProp;\n y?: NumberProp;\n width?: NumberProp;\n height?: NumberProp;\n transform?: number[] | string | TransformProps;\n maskTransform?: number[] | string | TransformProps;\n maskUnits?: 'objectBoundingBox' | 'userSpaceOnUse';\n maskContentUnits?: 'objectBoundingBox' | 'userSpaceOnUse';\n}> {\n static displayName = 'Mask';\n\n static defaultProps = {\n x: '0%',\n y: '0%',\n width: '100%',\n height: '100%',\n };\n\n render() {\n const { props } = this;\n const {\n maskTransform,\n transform,\n x,\n y,\n width,\n height,\n maskUnits,\n maskContentUnits,\n children,\n } = props;\n return (\n \n {children}\n \n );\n }\n}\n\nexport const RNSVGMask = requireNativeComponent('RNSVGMask');\n","import React from 'react';\nimport { requireNativeComponent } from 'react-native';\nimport extractViewBox from '../lib/extract/extractViewBox';\nimport { NumberProp } from '../lib/extract/types';\nimport Shape from './Shape';\n\nexport default class Marker extends Shape<{\n id?: string;\n viewBox?: string;\n preserveAspectRatio?: string;\n refX?: NumberProp;\n refY?: NumberProp;\n markerWidth?: NumberProp;\n markerHeight?: NumberProp;\n markerUnits?: 'strokeWidth' | 'userSpaceOnUse';\n orient?: 'auto' | 'auto-start-reverse' | NumberProp;\n}> {\n static displayName = 'Marker';\n\n static defaultProps = {\n refX: 0,\n refY: 0,\n orient: '0',\n markerWidth: 3,\n markerHeight: 3,\n markerUnits: 'strokeWidth',\n };\n\n render() {\n const { props } = this;\n const {\n id,\n viewBox,\n preserveAspectRatio,\n refX,\n refY,\n markerUnits,\n orient,\n markerWidth,\n markerHeight,\n children,\n } = props;\n return (\n \n {children}\n \n );\n }\n}\n\nexport const RNSVGMarker = requireNativeComponent('RNSVGMarker');\n","import React, {\n Component,\n ComponentType,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport 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';\nimport Marker from './elements/Marker';\n\nexport const tags: { [tag: string]: ComponentType } = {\n svg: Svg,\n circle: Circle,\n ellipse: Ellipse,\n g: G,\n text: Text,\n tspan: TSpan,\n textPath: TextPath,\n path: Path,\n polygon: Polygon,\n polyline: Polyline,\n line: Line,\n rect: Rect,\n use: Use,\n image: Image,\n symbol: Symbol,\n defs: Defs,\n linearGradient: LinearGradient,\n radialGradient: RadialGradient,\n stop: Stop,\n clipPath: ClipPath,\n pattern: Pattern,\n mask: Mask,\n marker: Marker,\n};\n\nfunction missingTag() {\n return null;\n}\n\nexport interface AST {\n tag: string;\n style?: Styles;\n styles?: string;\n priority?: Map;\n parent: AST | null;\n children: (AST | string)[] | (JSX.Element | string)[];\n props: {\n [prop: string]: Styles | string | undefined;\n };\n Tag: ComponentType;\n}\n\nexport interface XmlAST extends AST {\n children: (XmlAST | string)[];\n parent: XmlAST | null;\n}\n\nexport interface JsxAST extends AST {\n children: (JSX.Element | string)[];\n}\n\nexport type UriProps = { uri: string | null; override?: Object };\nexport type UriState = { xml: string | null };\n\nexport type XmlProps = { xml: string | null; override?: Object };\nexport type XmlState = { ast: JsxAST | null };\n\nexport type AstProps = { ast: JsxAST | null; override?: Object };\n\nexport function SvgAst({ ast, override }: AstProps) {\n if (!ast) {\n return null;\n }\n const { props, children } = ast;\n return (\n \n {children}\n \n );\n}\n\nexport function SvgXml(props: XmlProps) {\n const { xml, override } = props;\n const ast = useMemo(() => (xml !== null ? parse(xml) : null), [\n xml,\n ]);\n return ;\n}\n\nexport async function fetchText(uri: string) {\n const response = await fetch(uri);\n return await response.text();\n}\n\nexport const err = console.error.bind(console);\n\nexport function SvgUri(props: UriProps) {\n const { uri } = props;\n const [xml, setXml] = useState(null);\n useEffect(() => {\n uri\n ? fetchText(uri)\n .then(setXml)\n .catch(err)\n : setXml(null);\n }, [uri]);\n return ;\n}\n\n// Extending Component is required for Animated support.\n\nexport class SvgFromXml extends Component {\n state = { ast: null };\n componentDidMount() {\n this.parse(this.props.xml);\n }\n componentDidUpdate(prevProps: { xml: string | null }) {\n const { xml } = this.props;\n if (xml !== prevProps.xml) {\n this.parse(xml);\n }\n }\n parse(xml: string | null) {\n try {\n this.setState({ ast: xml ? parse(xml) : null });\n } catch (e) {\n console.error(e);\n }\n }\n render() {\n const {\n props,\n state: { ast },\n } = this;\n return ;\n }\n}\n\nexport class SvgFromUri extends Component {\n state = { xml: null };\n componentDidMount() {\n this.fetch(this.props.uri);\n }\n componentDidUpdate(prevProps: { uri: string | null }) {\n const { uri } = this.props;\n if (uri !== prevProps.uri) {\n this.fetch(uri);\n }\n }\n async fetch(uri: string | null) {\n try {\n this.setState({ xml: uri ? await fetchText(uri) : null });\n } catch (e) {\n console.error(e);\n }\n }\n render() {\n const {\n props,\n state: { xml },\n } = this;\n return ;\n }\n}\n\nconst upperCase = (_match: string, letter: string) => letter.toUpperCase();\n\nexport const camelCase = (phrase: string) =>\n phrase.replace(/[:\\-]([a-z])/g, upperCase);\n\nexport type Styles = { [property: string]: string };\n\nexport function getStyle(string: string): Styles {\n const style: Styles = {};\n const declarations = string.split(';');\n const { length } = declarations;\n for (let i = 0; i < length; i++) {\n const declaration = declarations[i];\n if (declaration.length !== 0) {\n const split = declaration.split(':');\n const property = split[0];\n const value = split[1];\n style[camelCase(property.trim())] = value.trim();\n }\n }\n return style;\n}\n\nexport function astToReact(\n value: AST | string,\n index: number,\n): JSX.Element | string {\n if (typeof value === 'object') {\n const { Tag, props, children } = value;\n return (\n \n {(children as (AST | string)[]).map(astToReact)}\n \n );\n }\n return value;\n}\n\n// slimmed down parser based on https://github.com/Rich-Harris/svg-parser\n\nfunction repeat(str: string, i: number) {\n let result = '';\n while (i--) {\n result += str;\n }\n return result;\n}\n\nconst toSpaces = (tabs: string) => repeat(' ', tabs.length);\n\nfunction locate(source: string, i: number) {\n const lines = source.split('\\n');\n const nLines = lines.length;\n let column = i;\n let line = 0;\n for (; line < nLines; line++) {\n const { length } = lines[line];\n if (column >= length) {\n column -= length;\n } else {\n break;\n }\n }\n const before = source.slice(0, i).replace(/^\\t+/, toSpaces);\n const beforeExec = /(^|\\n).*$/.exec(before);\n const beforeLine = (beforeExec && beforeExec[0]) || '';\n const after = source.slice(i);\n const afterExec = /.*(\\n|$)/.exec(after);\n const afterLine = afterExec && afterExec[0];\n const pad = repeat(' ', beforeLine.length);\n const snippet = `${beforeLine}${afterLine}\\n${pad}^`;\n return { line, column, snippet };\n}\n\nconst validNameCharacters = /[a-zA-Z0-9:_-]/;\nconst whitespace = /[\\s\\t\\r\\n]/;\nconst quotemarks = /['\"]/;\n\nexport type Middleware = (ast: XmlAST) => XmlAST;\n\nexport function parse(source: string, middleware?: Middleware): JsxAST | null {\n const length = source.length;\n let currentElement: XmlAST | null = null;\n let state = metadata;\n let children = null;\n let root: XmlAST | undefined;\n let stack: XmlAST[] = [];\n\n function error(message: string) {\n const { line, column, snippet } = locate(source, i);\n throw new Error(\n `${message} (${line}:${column}). If this is valid SVG, it's probably a bug. Please raise an issue\\n\\n${snippet}`,\n );\n }\n\n function metadata() {\n while (\n i + 1 < length &&\n (source[i] !== '<' || !validNameCharacters.test(source[i + 1]))\n ) {\n i++;\n }\n\n return neutral();\n }\n\n function neutral() {\n let text = '';\n let char;\n while (i < length && (char = source[i]) !== '<') {\n text += char;\n i += 1;\n }\n\n if (/\\S/.test(text)) {\n children.push(text);\n }\n\n if (source[i] === '<') {\n return openingTag;\n }\n\n return neutral;\n }\n\n function openingTag() {\n const char = source[i];\n\n if (char === '?') {\n return neutral;\n } // ') {\n error('Expected >');\n }\n\n if (!selfClosing) {\n currentElement = element;\n ({ children } = element);\n stack.push(element);\n }\n\n return neutral;\n }\n\n function comment() {\n const index = source.indexOf('-->', i);\n if (!~index) {\n error('expected -->');\n }\n\n i = index + 2;\n return neutral;\n }\n\n function cdata() {\n const index = source.indexOf(']]>', i);\n if (!~index) {\n error('expected ]]>');\n }\n\n children.push(source.slice(i + 7, index));\n\n i = index + 2;\n return neutral;\n }\n\n function closingTag() {\n const tag = getName();\n\n if (!tag) {\n error('Expected tag name');\n }\n\n if (currentElement && tag !== currentElement.tag) {\n error(\n `Expected closing tag to match opening tag <${currentElement.tag}>`,\n );\n }\n\n if (source[i] !== '>') {\n error('Expected >');\n }\n\n stack.pop();\n currentElement = stack[stack.length - 1];\n if (currentElement) {\n ({ children } = currentElement);\n }\n\n return neutral;\n }\n\n function getName() {\n let name = '';\n let char;\n while (i < length && validNameCharacters.test((char = source[i]))) {\n name += char;\n i += 1;\n }\n\n return name;\n }\n\n function getAttributes(props: {\n [x: string]: Styles | string | number | boolean | undefined;\n style?: string | Styles | undefined;\n }) {\n while (i < length) {\n if (!whitespace.test(source[i])) {\n return;\n }\n allowSpaces();\n\n const name = getName();\n if (!name) {\n return;\n }\n\n let value: boolean | number | string = true;\n\n allowSpaces();\n if (source[i] === '=') {\n i += 1;\n allowSpaces();\n\n value = getAttributeValue();\n if (!isNaN(+value) && value.trim() !== '') {\n value = +value;\n }\n }\n\n props[camelCase(name)] = value;\n }\n }\n\n function getAttributeValue(): string {\n return quotemarks.test(source[i])\n ? getQuotedAttributeValue()\n : getUnquotedAttributeValue();\n }\n\n function getUnquotedAttributeValue() {\n let value = '';\n do {\n const char = source[i];\n if (char === ' ' || char === '>' || char === '/') {\n return value;\n }\n\n value += char;\n i += 1;\n } while (i < length);\n\n return value;\n }\n\n function getQuotedAttributeValue() {\n const quotemark = source[i++];\n\n let value = '';\n let escaped = false;\n\n while (i < length) {\n const char = source[i++];\n if (char === quotemark && !escaped) {\n return value;\n }\n\n if (char === '\\\\' && !escaped) {\n escaped = true;\n }\n\n value += escaped ? `\\\\${char}` : char;\n escaped = false;\n }\n\n return value;\n }\n\n function allowSpaces() {\n while (i < length && whitespace.test(source[i])) {\n i += 1;\n }\n }\n\n let i = 0;\n while (i < length) {\n if (!state) {\n error('Unexpected character');\n }\n state = state();\n i += 1;\n }\n\n if (state !== neutral) {\n error('Unexpected end of input');\n }\n\n if (root) {\n const xml: XmlAST = (middleware ? middleware(root) : root) || root;\n const ast: (JSX.Element | string)[] = xml.children.map(astToReact);\n const jsx: JsxAST = xml as JsxAST;\n jsx.children = ast;\n return jsx;\n }\n\n return null;\n}\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;","import React, { Component, useEffect, useMemo, useState } from 'react';\nimport {\n camelCase,\n err,\n fetchText,\n JsxAST,\n Middleware,\n parse,\n Styles,\n SvgAst,\n UriProps,\n UriState,\n XmlAST,\n XmlProps,\n XmlState,\n} from './xml';\nimport csstree, {\n Atrule,\n AtrulePrelude,\n CssNode,\n Declaration,\n DeclarationList,\n List,\n ListItem,\n PseudoClassSelector,\n Rule,\n Selector,\n SelectorList,\n} from 'css-tree';\nimport cssSelect, { Adapter, Options, Predicate, Query } from 'css-select';\n\n/*\n * Style element inlining experiment based on SVGO\n * https://github.com/svg/svgo/blob/11f9c797411a8de966aacc4cb83dbb3e471757bc/plugins/inlineStyles.js\n * */\n\n/**\n * DOMUtils API for rnsvg AST (used by css-select)\n */\n// is the node a tag?\n// isTag: ( node:Node ) => isTag:Boolean\nfunction isTag(node: XmlAST | string): node is XmlAST {\n return typeof node === 'object';\n}\n\n// get the parent of the node\n// getParent: ( node:Node ) => parentNode:Node\n// returns null when no parent exists\nfunction getParent(node: XmlAST | string): XmlAST {\n return ((typeof node === 'object' && node.parent) || null) as XmlAST;\n}\n\n// get the node's children\n// getChildren: ( node:Node ) => children:[Node]\nfunction getChildren(node: XmlAST | string): Array {\n return (typeof node === 'object' && node.children) || [];\n}\n\n// get the name of the tag'\n// getName: ( elem:ElementNode ) => tagName:String\nfunction getName(elem: XmlAST): string {\n return elem.tag;\n}\n\n// get the text content of the node, and its children if it has any\n// getText: ( node:Node ) => text:String\n// returns empty string when there is no text\nfunction getText(_node: XmlAST | string): string {\n return '';\n}\n\n// get the attribute value\n// getAttributeValue: ( elem:ElementNode, name:String ) => value:String\n// returns null when attribute doesn't exist\nfunction getAttributeValue(elem: XmlAST, name: string): string {\n return (elem.props[name] || null) as string;\n}\n\n// takes an array of nodes, and removes any duplicates, as well as any nodes\n// whose ancestors are also in the array\nfunction removeSubsets(nodes: Array): Array {\n let idx = nodes.length,\n node,\n ancestor,\n replace;\n\n // Check if each node (or one of its ancestors) is already contained in the\n // array.\n while (--idx > -1) {\n node = ancestor = nodes[idx];\n\n // Temporarily remove the node under consideration\n delete nodes[idx];\n replace = true;\n\n while (ancestor) {\n if (nodes.includes(ancestor)) {\n replace = false;\n nodes.splice(idx, 1);\n break;\n }\n ancestor = (typeof ancestor === 'object' && ancestor.parent) || null;\n }\n\n // If the node has been found to be unique, re-insert it.\n if (replace) {\n nodes[idx] = node;\n }\n }\n\n return nodes;\n}\n\n// does at least one of passed element nodes pass the test predicate?\nfunction existsOne(\n predicate: Predicate,\n elems: Array,\n): boolean {\n return elems.some(\n elem =>\n typeof elem === 'object' &&\n (predicate(elem) || existsOne(predicate, elem.children)),\n );\n}\n\n/*\n get the siblings of the node. Note that unlike jQuery's `siblings` method,\n this is expected to include the current node as well\n*/\nfunction getSiblings(node: XmlAST | string): Array {\n const parent = typeof node === 'object' && node.parent;\n return (parent && parent.children) || [];\n}\n\n// does the element have the named attribute?\nfunction hasAttrib(elem: XmlAST, name: string): boolean {\n return elem.props.hasOwnProperty(name);\n}\n\n// finds the first node in the array that matches the test predicate, or one\n// of its children\nfunction findOne(\n predicate: Predicate,\n elems: Array,\n): XmlAST | undefined {\n let elem: XmlAST | undefined;\n\n for (let i = 0, l = elems.length; i < l && !elem; i++) {\n const node = elems[i];\n if (typeof node === 'string') {\n } else if (predicate(node)) {\n elem = node;\n } else {\n const { children } = node;\n if (children.length !== 0) {\n elem = findOne(predicate, children);\n }\n }\n }\n\n return elem;\n}\n\n// finds all of the element nodes in the array that match the test predicate,\n// as well as any of their children that match it\nfunction findAll(\n predicate: Predicate,\n nodes: Array,\n result: Array = [],\n): Array {\n for (let i = 0, j = nodes.length; i < j; i++) {\n const node = nodes[i];\n if (typeof node !== 'object') {\n continue;\n }\n if (predicate(node)) {\n result.push(node);\n }\n const { children } = node;\n if (children.length !== 0) {\n findAll(predicate, children, result);\n }\n }\n\n return result;\n}\n\nconst adapter: Adapter = {\n removeSubsets,\n existsOne,\n getSiblings,\n hasAttrib,\n findOne,\n findAll,\n isTag,\n getParent,\n getChildren,\n getName,\n getText,\n getAttributeValue,\n};\n\nconst cssSelectOpts: Options = {\n xmlMode: true,\n adapter,\n};\n\n/**\n * Evaluate a string of CSS selectors against the element and returns matched elements.\n *\n * @param {Query} query can be either a CSS selector string or a compiled query function.\n * @param {Array | XmlAST} elems Elements to query. If it is an element, its children will be queried.\n * @return {Array} All matching elements.\n */\nfunction querySelectorAll(query: Query, elems: XmlAST | XmlAST[]): XmlAST[] {\n return cssSelect(query, elems, cssSelectOpts);\n}\n\ntype FlatPseudoSelector = {\n item: ListItem;\n list: List;\n};\ntype FlatPseudoSelectorList = FlatPseudoSelector[];\ntype FlatSelector = {\n item: ListItem;\n atrule: Atrule | null;\n rule: CssNode;\n pseudos: FlatPseudoSelectorList;\n};\ntype FlatSelectorList = FlatSelector[];\n\n/**\n * Flatten a CSS AST to a selectors list.\n *\n * @param {Object} cssAst css-tree AST to flatten\n * @param {Array} selectors\n */\nfunction flattenToSelectors(cssAst: CssNode, selectors: FlatSelectorList) {\n csstree.walk(cssAst, {\n visit: 'Rule',\n enter(rule: CssNode) {\n const { type, prelude } = rule as Rule;\n if (type !== 'Rule') {\n return;\n }\n const atrule = this.atrule;\n (prelude as SelectorList).children.each((node, item) => {\n const { children } = node as Selector;\n const pseudos: FlatPseudoSelectorList = [];\n selectors.push({\n item,\n atrule,\n rule,\n pseudos,\n });\n children.each(({ type: childType }, pseudoItem, list) => {\n if (\n childType === 'PseudoClassSelector' ||\n childType === 'PseudoElementSelector'\n ) {\n pseudos.push({\n item: pseudoItem,\n list,\n });\n }\n });\n });\n },\n });\n}\n\n/**\n * Filter selectors by Media Query.\n *\n * @param {Array} selectors to filter\n * @return {Array} Filtered selectors that match the passed media queries\n */\nfunction filterByMqs(selectors: FlatSelectorList) {\n return selectors.filter(({ atrule }) => {\n if (atrule === null) {\n return true;\n }\n const { name, prelude } = atrule;\n const atPrelude = prelude as AtrulePrelude;\n const first = atPrelude && atPrelude.children.first();\n const mq = first && first.type === 'MediaQueryList';\n const query = mq ? csstree.generate(atPrelude) : name;\n return useMqs.includes(query);\n });\n}\n// useMqs Array with strings of media queries that should pass ( )\nconst useMqs = ['', 'screen'];\n\n/**\n * Filter selectors by the pseudo-elements and/or -classes they contain.\n *\n * @param {Array} selectors to filter\n * @return {Array} Filtered selectors that match the passed pseudo-elements and/or -classes\n */\nfunction filterByPseudos(selectors: FlatSelectorList) {\n return selectors.filter(({ pseudos }) =>\n usePseudos.includes(\n csstree.generate({\n type: 'Selector',\n children: new List().fromArray(\n pseudos.map(pseudo => pseudo.item.data),\n ),\n }),\n ),\n );\n}\n// usePseudos Array with strings of single or sequence of pseudo-elements and/or -classes that should pass\nconst usePseudos = [''];\n\n/**\n * Remove pseudo-elements and/or -classes from the selectors for proper matching.\n *\n * @param {Array} selectors to clean\n * @return {Array} Selectors without pseudo-elements and/or -classes\n */\nfunction cleanPseudos(selectors: FlatSelectorList) {\n selectors.forEach(({ pseudos }) =>\n pseudos.forEach(pseudo => pseudo.list.remove(pseudo.item)),\n );\n}\n\ntype Specificity = [number, number, number];\nfunction specificity(selector: Selector): Specificity {\n let A = 0;\n let B = 0;\n let C = 0;\n\n selector.children.each(function walk(node: CssNode) {\n switch (node.type) {\n case 'SelectorList':\n case 'Selector':\n node.children.each(walk);\n break;\n\n case 'IdSelector':\n A++;\n break;\n\n case 'ClassSelector':\n case 'AttributeSelector':\n B++;\n break;\n\n case 'PseudoClassSelector':\n switch (node.name.toLowerCase()) {\n case 'not':\n const children = (node as PseudoClassSelector).children;\n children && children.each(walk);\n break;\n\n case 'before':\n case 'after':\n case 'first-line':\n case 'first-letter':\n C++;\n break;\n\n // TODO: support for :nth-*(.. of ), :matches(), :has()\n\n default:\n B++;\n }\n break;\n\n case 'PseudoElementSelector':\n C++;\n break;\n\n case 'TypeSelector':\n // ignore universal selector\n const { name } = node;\n if (name.charAt(name.length - 1) !== '*') {\n C++;\n }\n break;\n }\n });\n\n return [A, B, C];\n}\n\n/**\n * Compares two selector specificities.\n * extracted from https://github.com/keeganstreet/specificity/blob/master/specificity.js#L211\n *\n * @param {Array} aSpecificity Specificity of selector A\n * @param {Array} bSpecificity Specificity of selector B\n * @return {Number} Score of selector specificity A compared to selector specificity B\n */\nfunction compareSpecificity(\n aSpecificity: Specificity,\n bSpecificity: Specificity,\n): number {\n for (let i = 0; i < 4; i += 1) {\n if (aSpecificity[i] < bSpecificity[i]) {\n return -1;\n } else if (aSpecificity[i] > bSpecificity[i]) {\n return 1;\n }\n }\n return 0;\n}\n\ntype Spec = {\n selector: FlatSelector;\n specificity: Specificity;\n};\nfunction selectorWithSpecificity(selector: FlatSelector): Spec {\n return {\n selector,\n specificity: specificity(selector.item.data as Selector),\n };\n}\n\n/**\n * Compare two simple selectors.\n *\n * @param {Object} a Simple selector A\n * @param {Object} b Simple selector B\n * @return {Number} Score of selector A compared to selector B\n */\nfunction bySelectorSpecificity(a: Spec, b: Spec): number {\n return compareSpecificity(a.specificity, b.specificity);\n}\n\n// Run a single pass with the given chunk size.\nfunction pass(arr: Spec[], len: number, chk: number, result: Spec[]) {\n // Step size / double chunk size.\n const dbl = chk * 2;\n // Bounds of the left and right chunks.\n let l, r, e;\n // Iterators over the left and right chunk.\n let li, ri;\n\n // Iterate over pairs of chunks.\n let i = 0;\n for (l = 0; l < len; l += dbl) {\n r = l + chk;\n e = r + chk;\n if (r > len) {\n r = len;\n }\n if (e > len) {\n e = len;\n }\n\n // Iterate both chunks in parallel.\n li = l;\n ri = r;\n while (true) {\n // Compare the chunks.\n if (li < r && ri < e) {\n // This works for a regular `sort()` compatible comparator,\n // but also for a simple comparator like: `a > b`\n if (bySelectorSpecificity(arr[li], arr[ri]) <= 0) {\n result[i++] = arr[li++];\n } else {\n result[i++] = arr[ri++];\n }\n }\n // Nothing to compare, just flush what's left.\n else if (li < r) {\n result[i++] = arr[li++];\n } else if (ri < e) {\n result[i++] = arr[ri++];\n }\n // Both iterators are at the chunk ends.\n else {\n break;\n }\n }\n }\n}\n\n// Execute the sort using the input array and a second buffer as work space.\n// Returns one of those two, containing the final result.\nfunction exec(arr: Spec[], len: number): Spec[] {\n // Rather than dividing input, simply iterate chunks of 1, 2, 4, 8, etc.\n // Chunks are the size of the left or right hand in merge sort.\n // Stop when the left-hand covers all of the array.\n let buffer = new Array(len);\n for (let chk = 1; chk < len; chk *= 2) {\n pass(arr, len, chk, buffer);\n const tmp = arr;\n arr = buffer;\n buffer = tmp;\n }\n return arr;\n}\n\n/**\n * Sort selectors stably by their specificity.\n *\n * @param {Array} selectors to be sorted\n * @return {Array} Stable sorted selectors\n */\nfunction sortSelectors(selectors: FlatSelectorList) {\n // Short-circuit when there's nothing to sort.\n const len = selectors.length;\n if (len <= 1) {\n return selectors;\n }\n const specs = selectors.map(selectorWithSpecificity);\n return exec(specs, len).map(s => s.selector);\n}\n\nconst declarationParseProps = {\n context: 'declarationList',\n parseValue: false,\n};\nfunction CSSStyleDeclaration(ast: XmlAST) {\n const { props, styles } = ast;\n if (!props.style) {\n props.style = {};\n }\n const style = props.style as Styles;\n const priority = new Map();\n ast.style = style;\n ast.priority = priority;\n if (!styles || styles.length === 0) {\n return;\n }\n try {\n const declarations = csstree.parse(\n styles,\n declarationParseProps,\n ) as DeclarationList;\n declarations.children.each(node => {\n try {\n const { property, value, important } = node as Declaration;\n const name = property.trim();\n priority.set(name, important);\n style[camelCase(name)] = csstree.generate(value).trim();\n } catch (styleError) {\n if (styleError.message !== 'Unknown node type: undefined') {\n console.warn(\n \"Warning: Parse error when parsing inline styles, style properties of this element cannot be used. The raw styles can still be get/set using .attr('style').value. Error details: \" +\n styleError,\n );\n }\n }\n });\n } catch (parseError) {\n console.warn(\n \"Warning: Parse error when parsing inline styles, style properties of this element cannot be used. The raw styles can still be get/set using .attr('style').value. Error details: \" +\n parseError,\n );\n }\n}\n\ninterface StyledAST extends XmlAST {\n style: Styles;\n priority: Map;\n}\nfunction initStyle(selectedEl: XmlAST): StyledAST {\n if (!selectedEl.style) {\n CSSStyleDeclaration(selectedEl);\n }\n return selectedEl as StyledAST;\n}\n\n/**\n * Find the closest ancestor of the current element.\n * @param node\n * @param elemName\n * @return {?Object}\n */\nfunction closestElem(node: XmlAST, elemName: string) {\n let elem: XmlAST | null = node;\n while ((elem = elem.parent) && elem.tag !== elemName) {}\n return elem;\n}\n\nconst parseProps = {\n parseValue: false,\n parseCustomProperty: false,\n};\n\n/**\n * Moves + merges styles from style elements to element styles\n *\n * Options\n * useMqs (default: ['', 'screen'])\n * what media queries to be used\n * empty string element for styles outside media queries\n *\n * usePseudos (default: [''])\n * what pseudo-classes/-elements to be used\n * empty string element for all non-pseudo-classes and/or -elements\n *\n * @param {Object} document document element\n *\n * @author strarsis \n * @author modified by: msand \n */\nexport const inlineStyles: Middleware = function inlineStyles(\n document: XmlAST,\n) {\n // collect