{"version":3,"file":"js/analytics/main/index-d95550c45e161e06436b.js","mappings":"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","sources":["webpack:///./app/javascript/src/analytics/tracking_manager/storage_client.ts","webpack:///./app/javascript/src/analytics/tracking_manager/index.ts","webpack:///./app/javascript/src/analytics/tracking_manager/create_id.ts","webpack:///./app/javascript/src/analytics/main/gtm_emitter_state.ts","webpack:///./node_modules/rxjs/_esm5/internal/operators/refCount.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js","webpack:///./app/javascript/src/analytics/main/elapsed_time_counter.ts","webpack:///./node_modules/rxjs/_esm5/internal/operators/multicast.js","webpack:///./app/javascript/src/analytics/main/terminated_gtm_emitter_state.ts","webpack:///./app/javascript/src/analytics/main/in_page_gtm_emitter_state.ts","webpack:///./app/javascript/src/analytics/main/place_entered_gtm_emitter_state.ts","webpack:///./app/javascript/src/analytics/main/initial_gtm_emitter_state.ts","webpack:///./app/javascript/src/analytics/main/gtm_emitter.ts","webpack:///./app/javascript/packs/analytics/main/index.js","webpack:///./app/javascript/src/analytics/main/installer.ts","webpack:///./app/javascript/src/setup/minimal.js","webpack:///./node_modules/any-base/index.js","webpack:///./node_modules/any-base/src/converter.js","webpack:///./node_modules/cross-storage/lib/client.js","webpack:///./node_modules/cross-storage/lib/hub.js","webpack:///./node_modules/cross-storage/lib/index.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/interval.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/debounceTime.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/distinctUntilChanged.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/filter.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/Action.js","webpack:///./node_modules/rxjs/_esm5/internal/Scheduler.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/async.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isNumeric.js","webpack:///./node_modules/short-uuid/index.js"],"sourcesContent":["import { CrossStorageClient } from 'cross-storage'\n\n/**\n * @extends CrossStorageClient\n */\nexport default class StorageClient extends CrossStorageClient {\n  /**\n   * See {@link CrossStorageClient#onConnect}\n   * @override\n   */\n  onConnect (): Promise<void> {\n    // bodyができていないうちにiframeを作ろうとするのを回避するため\n    // load or DOMContentLoaded が発生するまで待たせる\n    return new Promise((resolve, reject) => {\n      let connected = false\n      const connect = (e) => {\n        if (connected) {\n          return\n        }\n        connected = true\n        super\n          .onConnect()\n          .then(() => {\n            resolve()\n          })\n          .catch(reject)\n      }\n      if (document.readyState === 'complete') {\n        connect()\n      } else {\n        window.addEventListener('load', connect)\n        window.addEventListener('DOMContentLoaded', connect)\n      }\n    })\n  }\n\n  getOrCreate (key: string, createValue: () => Promise<string>): Promise<string> {\n    return Promise.resolve()\n      .then(() => this.get(key))\n      .then((id) => {\n        if (id) {\n          return id\n        }\n        return createValue()\n      })\n      .then((id) => {\n        return this.set(key, id).then(() => id)\n      })\n  }\n}\n","import StorageClient from './storage_client'\nimport * as Rx from 'rxjs'\nimport createId from './create_id'\n\nconst UID_KEY = '__nurve_uid'\nconst DISABLED_KEY = '__reject'\n\nconst DISABLED_VALUE = '1'\n\n/**\n * トラッキングIDをユーザのブラウザに仕込み、読み取るためのクラス\n */\nexport default class TrackingManager {\n  _uidChangedSubject: Rx.Subject<string | null>\n  _storageClient: StorageClient | null\n\n  constructor () {\n    this._uidChangedSubject = new Rx.BehaviorSubject(null)\n    this._storageClient = null\n  }\n\n  /**\n   * @param {string} hubPage CrossStorageHubが設置されたページのURL\n   */\n  connect (hubPage: string): Promise<void> {\n    const client = this._storageClient = new StorageClient(hubPage)\n    return client.onConnect()\n      .then(() => {\n        return Promise.all([\n          this._isTrackingDisabled(),\n          client.getOrCreate(UID_KEY, () => createId())\n        ])\n      })\n      .then(([disabled, uid]) => {\n        this._uidChangedSubject.next(disabled ? null : uid)\n        return Promise.resolve()\n      })\n  }\n\n  _isTrackingDisabled (): Promise<boolean> {\n    if (!this._storageClient) {\n      return Promise.reject('StorageClient is not connected.')\n    }\n    return this._storageClient.get(DISABLED_KEY)\n      .then((value) => {\n        return value === DISABLED_VALUE\n      })\n  }\n\n  onUidChangedAsObservable (): Rx.Observable<string | null> {\n    return this._uidChangedSubject\n  }\n}\n","import shortUuid from 'short-uuid'\n\nexport default (): Promise<string> => {\n  const uuid = shortUuid.uuid()\n  const id = shortUuid().fromUUID(uuid)\n  return Promise.resolve(id)\n}\n","import { ItemShownEvent } from '~/shared/event_subjects'\nimport GtmEmitter from './gtm_emitter'\n\nexport type DataWithName = {\n  name: string,\n  data: any\n}\n\nexport default class GtmEmitterState {\n  onEnterState (context: GtmEmitter) {\n  }\n\n  onPlaceChanged (context: GtmEmitter, e: ItemShownEvent) {\n    throw new Error('abstract placeChanged')\n  }\n\n  onEnterPage (context: GtmEmitter, pageData: {}) {\n    throw new Error('abstract emitPageEnter')\n  }\n\n  onEvent (context: GtmEmitter, name: string, data: {} = {}) {\n    throw new Error('abstract emitEvent')\n  }\n\n  terminate (context: GtmEmitter) {\n    throw new Error('abstract terminate')\n  }\n}\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function refCount() {\n    return function refCountOperatorFunction(source) {\n        return source.lift(new RefCountOperator(source));\n    };\n}\nvar RefCountOperator = /*@__PURE__*/ (function () {\n    function RefCountOperator(connectable) {\n        this.connectable = connectable;\n    }\n    RefCountOperator.prototype.call = function (subscriber, source) {\n        var connectable = this.connectable;\n        connectable._refCount++;\n        var refCounter = new RefCountSubscriber(subscriber, connectable);\n        var subscription = source.subscribe(refCounter);\n        if (!refCounter.closed) {\n            refCounter.connection = connectable.connect();\n        }\n        return subscription;\n    };\n    return RefCountOperator;\n}());\nvar RefCountSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib_1.__extends(RefCountSubscriber, _super);\n    function RefCountSubscriber(destination, connectable) {\n        var _this = _super.call(this, destination) || this;\n        _this.connectable = connectable;\n        return _this;\n    }\n    RefCountSubscriber.prototype._unsubscribe = function () {\n        var connectable = this.connectable;\n        if (!connectable) {\n            this.connection = null;\n            return;\n        }\n        this.connectable = null;\n        var refCount = connectable._refCount;\n        if (refCount <= 0) {\n            this.connection = null;\n            return;\n        }\n        connectable._refCount = refCount - 1;\n        if (refCount > 1) {\n            this.connection = null;\n            return;\n        }\n        var connection = this.connection;\n        var sharedConnection = connectable._connection;\n        this.connection = null;\n        if (sharedConnection && (!connection || sharedConnection === connection)) {\n            sharedConnection.unsubscribe();\n        }\n    };\n    return RefCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=refCount.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_Observable,_Subscriber,_Subscription,_operators_refCount PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { SubjectSubscriber } from '../Subject';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nvar ConnectableObservable = /*@__PURE__*/ (function (_super) {\n    tslib_1.__extends(ConnectableObservable, _super);\n    function ConnectableObservable(source, subjectFactory) {\n        var _this = _super.call(this) || this;\n        _this.source = source;\n        _this.subjectFactory = subjectFactory;\n        _this._refCount = 0;\n        _this._isComplete = false;\n        return _this;\n    }\n    ConnectableObservable.prototype._subscribe = function (subscriber) {\n        return this.getSubject().subscribe(subscriber);\n    };\n    ConnectableObservable.prototype.getSubject = function () {\n        var subject = this._subject;\n        if (!subject || subject.isStopped) {\n            this._subject = this.subjectFactory();\n        }\n        return this._subject;\n    };\n    ConnectableObservable.prototype.connect = function () {\n        var connection = this._connection;\n        if (!connection) {\n            this._isComplete = false;\n            connection = this._connection = new Subscription();\n            connection.add(this.source\n                .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n            if (connection.closed) {\n                this._connection = null;\n                connection = Subscription.EMPTY;\n            }\n        }\n        return connection;\n    };\n    ConnectableObservable.prototype.refCount = function () {\n        return higherOrderRefCount()(this);\n    };\n    return ConnectableObservable;\n}(Observable));\nexport { ConnectableObservable };\nexport var connectableObservableDescriptor = /*@__PURE__*/ (function () {\n    var connectableProto = ConnectableObservable.prototype;\n    return {\n        operator: { value: null },\n        _refCount: { value: 0, writable: true },\n        _subject: { value: null, writable: true },\n        _connection: { value: null, writable: true },\n        _subscribe: { value: connectableProto._subscribe },\n        _isComplete: { value: connectableProto._isComplete, writable: true },\n        getSubject: { value: connectableProto.getSubject },\n        connect: { value: connectableProto.connect },\n        refCount: { value: connectableProto.refCount }\n    };\n})();\nvar ConnectableSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib_1.__extends(ConnectableSubscriber, _super);\n    function ConnectableSubscriber(destination, connectable) {\n        var _this = _super.call(this, destination) || this;\n        _this.connectable = connectable;\n        return _this;\n    }\n    ConnectableSubscriber.prototype._error = function (err) {\n        this._unsubscribe();\n        _super.prototype._error.call(this, err);\n    };\n    ConnectableSubscriber.prototype._complete = function () {\n        this.connectable._isComplete = true;\n        this._unsubscribe();\n        _super.prototype._complete.call(this);\n    };\n    ConnectableSubscriber.prototype._unsubscribe = function () {\n        var connectable = this.connectable;\n        if (connectable) {\n            this.connectable = null;\n            var connection = connectable._connection;\n            connectable._refCount = 0;\n            connectable._subject = null;\n            connectable._connection = null;\n            if (connection) {\n                connection.unsubscribe();\n            }\n        }\n    };\n    return ConnectableSubscriber;\n}(SubjectSubscriber));\nvar RefCountOperator = /*@__PURE__*/ (function () {\n    function RefCountOperator(connectable) {\n        this.connectable = connectable;\n    }\n    RefCountOperator.prototype.call = function (subscriber, source) {\n        var connectable = this.connectable;\n        connectable._refCount++;\n        var refCounter = new RefCountSubscriber(subscriber, connectable);\n        var subscription = source.subscribe(refCounter);\n        if (!refCounter.closed) {\n            refCounter.connection = connectable.connect();\n        }\n        return subscription;\n    };\n    return RefCountOperator;\n}());\nvar RefCountSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib_1.__extends(RefCountSubscriber, _super);\n    function RefCountSubscriber(destination, connectable) {\n        var _this = _super.call(this, destination) || this;\n        _this.connectable = connectable;\n        return _this;\n    }\n    RefCountSubscriber.prototype._unsubscribe = function () {\n        var connectable = this.connectable;\n        if (!connectable) {\n            this.connection = null;\n            return;\n        }\n        this.connectable = null;\n        var refCount = connectable._refCount;\n        if (refCount <= 0) {\n            this.connection = null;\n            return;\n        }\n        connectable._refCount = refCount - 1;\n        if (refCount > 1) {\n            this.connection = null;\n            return;\n        }\n        var connection = this.connection;\n        var sharedConnection = connectable._connection;\n        this.connection = null;\n        if (sharedConnection && (!connection || sharedConnection === connection)) {\n            sharedConnection.unsubscribe();\n        }\n    };\n    return RefCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=ConnectableObservable.js.map\n","import * as Rx from 'rxjs'\nimport * as RxOperators from 'rxjs/operators'\n\nexport default class ElapsedTimeCounter {\n  _onElapseSubject: Rx.Subject<number>\n  _counterUpdateSubscription: Subscription\n\n  constructor () {\n    this._onElapseSubject = new Rx.Subject()\n    this._counterUpdateSubscription = new Rx.Subscription()\n  }\n\n  start () {\n    this._counterUpdateSubscription.unsubscribe()\n    this._counterUpdateSubscription = Rx.interval(1000)\n      .pipe(\n        RxOperators.multicast(this._onElapseSubject)\n      )\n      .connect()\n  }\n\n  stop () {\n    this._counterUpdateSubscription.unsubscribe()\n  }\n\n  onElapsedAsObservable (): Rx.Observable<number> {\n    return this._onElapseSubject\n  }\n}\n","/** PURE_IMPORTS_START _observable_ConnectableObservable PURE_IMPORTS_END */\nimport { connectableObservableDescriptor } from '../observable/ConnectableObservable';\nexport function multicast(subjectOrSubjectFactory, selector) {\n    return function multicastOperatorFunction(source) {\n        var subjectFactory;\n        if (typeof subjectOrSubjectFactory === 'function') {\n            subjectFactory = subjectOrSubjectFactory;\n        }\n        else {\n            subjectFactory = function subjectFactory() {\n                return subjectOrSubjectFactory;\n            };\n        }\n        if (typeof selector === 'function') {\n            return source.lift(new MulticastOperator(subjectFactory, selector));\n        }\n        var connectable = Object.create(source, connectableObservableDescriptor);\n        connectable.source = source;\n        connectable.subjectFactory = subjectFactory;\n        return connectable;\n    };\n}\nvar MulticastOperator = /*@__PURE__*/ (function () {\n    function MulticastOperator(subjectFactory, selector) {\n        this.subjectFactory = subjectFactory;\n        this.selector = selector;\n    }\n    MulticastOperator.prototype.call = function (subscriber, source) {\n        var selector = this.selector;\n        var subject = this.subjectFactory();\n        var subscription = selector(subject).subscribe(subscriber);\n        subscription.add(source.subscribe(subject));\n        return subscription;\n    };\n    return MulticastOperator;\n}());\nexport { MulticastOperator };\n//# sourceMappingURL=multicast.js.map\n","import { ItemShownEvent } from '~/shared/event_subjects'\nimport GtmEmitter from './gtm_emitter'\n\nimport GtmEmitterState from './gtm_emitter_state'\n\n// window が unload された状態を表す\nexport default class TerminatedGtmEmitterState extends GtmEmitterState {\n  onEnterState (context: GtmEmitter) {\n  }\n\n  onPlaceChanged (context: GtmEmitter, e: ItemShownEvent) {\n    // do nothing\n  }\n\n  onEnterPage (context: GtmEmitter, pageData: {}) {\n    // do nothing\n  }\n\n  onEvent (context: GtmEmitter, name: string, data: {} = {}) {\n    // do nothing\n  }\n\n  terminate (context: GtmEmitter) {\n    // do nothing\n  }\n}\n","import { ItemShownEvent } from '~/shared/event_subjects'\nimport GtmEmitter from './gtm_emitter'\nimport { DataWithName } from './gtm_emitter_state'\n\nimport GtmEmitterState from './gtm_emitter_state'\nimport TerminatedGtmEmitterState from './terminated_gtm_emitter_state'\nimport PlaceEnteredGtmEmitterState from './place_entered_gtm_emitter_state'\n\n// page に enter した状態\nexport default class InPageGtmEmitterState extends GtmEmitterState {\n  attachedEvent: DataWithName | null\n\n  constructor (attachedEvent: DataWithName | null = null) {\n    super()\n    this.attachedEvent = attachedEvent\n  }\n\n  onEnterState (context: GtmEmitter) {\n    context.emitEventData({ event: 'page_enter', storeData: context.store })\n    context.timeCounter.start()\n\n    if (this.attachedEvent) {\n      context.forceEmitEvent(this.attachedEvent.name, this.attachedEvent.data)\n    }\n  }\n\n  onPlaceChanged (context: GtmEmitter, e: ItemShownEvent) {\n    context.timeCounter.stop()\n    context.emitEventData({ event: 'page_leave', storeData: context.store })\n    context.changeState(new PlaceEnteredGtmEmitterState(e))\n  }\n\n  onEnterPage (context: GtmEmitter, pageData: {}) {\n    context.timeCounter.stop()\n    context.emitEventData({ event: 'page_leave', storeData: context.store })\n    context.clearPageData()\n    context.store.pageData = pageData\n    context.changeState(new InPageGtmEmitterState())\n  }\n\n  onEvent (context: GtmEmitter, name: string, data: {} = {}) {\n    context.forceEmitEvent(name, data)\n  }\n\n  terminate (context: GtmEmitter) {\n    context.timeCounter.stop()\n    context.emitEventData({ event: 'page_leave', storeData: context.store })\n    context.changeState(new TerminatedGtmEmitterState())\n  }\n}\n","import { ItemShownEvent } from '~/shared/event_subjects'\nimport GtmEmitter from './gtm_emitter'\n\nimport GtmEmitterState from './gtm_emitter_state'\nimport InPageGtmEmitterState from './in_page_gtm_emitter_state'\nimport TerminatedGtmEmitterState from './terminated_gtm_emitter_state'\n\n// place が切り替わって最初に入る state\n// pageData が設定されている\n// page にはまだ enter していない\nexport default class PlaceEnteredGtmEmitterState extends GtmEmitterState {\n  _itemShownEvent: ItemShownEvent\n\n  constructor (itemShownEvent: ItemShownEvent) {\n    super()\n    this._itemShownEvent = itemShownEvent\n  }\n\n  onEnterState (context: GtmEmitter) {\n    context.resetStoreData()\n    context.commitStoreData()\n    context.store.pageData = this._itemShownEvent\n    context.forceEmitEvent('show_place')\n  }\n\n  onPlaceChanged (context: GtmEmitter, e: ItemShownEvent) {\n    this._skimCurrentPage(context)\n    context.changeState(new PlaceEnteredGtmEmitterState(e))\n  }\n\n  onEnterPage (context: GtmEmitter, pageData: {}) {\n    this._skimCurrentPage(context)\n    context.clearPageData()\n    context.store.pageData = pageData\n    context.changeState(new InPageGtmEmitterState())\n  }\n\n  onEvent (context: GtmEmitter, name: string, data: {} = {}) {\n    context.changeState(new InPageGtmEmitterState({ name: name, data: data }))\n  }\n\n  terminate (context: GtmEmitter) {\n    // 閲覧者がページを開いて、何もせずページを閉じる場合に閲覧イベントを飛ばす\n    this._skimCurrentPage(context)\n    context.changeState(new TerminatedGtmEmitterState())\n  }\n\n  _skimCurrentPage (context: GtmEmitter) {\n    context.emitEventData({ event: 'page_enter', storeData: context.store })\n    context.emitEventData({ event: 'page_leave', storeData: context.store })\n  }\n}\n","import GtmEmitterState from './gtm_emitter_state'\nimport { ItemShownEvent } from '~/shared/event_subjects'\nimport GtmEmitter from './gtm_emitter'\nimport ElapsedTimeCounter from './elapsed_time_counter'\nimport PlaceEnteredGtmEmitterState from './place_entered_gtm_emitter_state'\nimport TerminatedGtmEmitterState from './terminated_gtm_emitter_state'\n\nexport default class InitialGtmEmitterState extends GtmEmitterState {\n  onEnterState (context: GtmEmitter) {\n    context.resetStoreData()\n    context.timeCounter = new ElapsedTimeCounter()\n    context.timeCounterSubscription = context.timeCounter.onElapsedAsObservable()\n      .subscribe((elapsedSec) => {\n        context.store.elapsedSec = elapsedSec\n      })\n  }\n\n  onPlaceChanged (context: GtmEmitter, e: ItemShownEvent) {\n    context.changeState(new PlaceEnteredGtmEmitterState(e))\n  }\n\n  onEnterPage (context: GtmEmitter, pageData: {}) {\n    // do nothing\n  }\n\n  onEvent (context: GtmEmitter, name: string, data: {} = {}) {\n    // do nothing\n  }\n\n  terminate (context: GtmEmitter) {\n    context.changeState(new TerminatedGtmEmitterState())\n  }\n}\n","import { ItemShownEvent } from '~/shared/event_subjects'\nimport { Subscription } from 'rxjs'\n\nimport GtmEmitterState from './gtm_emitter_state'\nimport InitialGtmEmitterState from './initial_gtm_emitter_state'\nimport ElapsedTimeCounter from './elapsed_time_counter'\n\nexport type StoreData = {\n  // ページ情報\n  pageData: {} | null,\n  // イベント回数\n  eventCount: {},\n  // 経過時間\n  elapsedSec: number\n}\n\nexport type EventData = {\n  event: string,\n  storeData: StoreData | null,\n  eventData?: {}\n}\n\nexport default class GtmEmitter {\n  store: StoreData\n  timeCounter: ElapsedTimeCounter\n  timeCounterSubscription: Subscription\n  state: GtmEmitterState\n\n  constructor () {\n    this.timeCounterSubscription = new Subscription()\n    this.state = new InitialGtmEmitterState()\n    this.state.onEnterState(this)\n  }\n\n  changeState (newState: GtmEmitterState) {\n    this.state = newState\n    this.state.onEnterState(this)\n  }\n\n  onPlaceChanged (e: ItemShownEvent) {\n    this.state.onPlaceChanged(this, e)\n  }\n\n  onEnterPage (pageData: {}) {\n    this.state.onEnterPage(this, pageData)\n  }\n\n  onEvent (name: string, data: {} = {}) {\n    this.state.onEvent(this, name, data)\n  }\n\n  currentPlaceId () : number | null {\n    if (this.store.pageData && this.store.pageData.placeId) {\n      return this.store.pageData.placeId\n    }\n    return null\n  }\n\n  emitUid (uid: string | null) {\n    this._emitRawData({ nurveUid: uid })\n  }\n\n  setupBrowser (window: EventTarget) {\n    window.addEventListener('unload', () => {\n      this.state.terminate(this)\n    })\n    window.addEventListener('beforeunload', () => {\n      this.state.terminate(this)\n    })\n  }\n\n  // --- GtmEmitterState 用の helper methods ---\n\n  forceEmitEvent (name: string, data: {} = {}) {\n    const eventCountData = this.store.eventCount\n    eventCountData[name] = eventCountData[name] || 0\n    eventCountData[name] += 1\n    this.commitEventData()\n    this.emitEventData({\n      event: `event_${name}`,\n      storeData: this.store,\n      eventData: data\n    })\n  }\n\n  emitEventData (data: EventData) {\n    this._emitRawData(data)\n  }\n\n  _emitRawData (data: any) {\n    global.dataLayer = global.dataLayer || []\n    global.dataLayer.push(data)\n  }\n\n  clearPageData () {\n    this.commitStoreData()\n    this.store.pageData = null\n    this.store.eventCount = {}\n  }\n\n  resetStoreData () {\n    this.store = {\n      pageData: null,\n      eventCount: {},\n      elapsedSec: 0\n    }\n  }\n\n  // 以前までのページの情報をクリアするために emit する\n  commitStoreData () {\n    this._emitRawData({\n      // 一旦nullを入れてクリアしないと今までのstore_dataの値がマージされてしまうため\n      storeData: null\n    })\n  }\n\n  commitEventData () {\n    this._emitRawData({\n      // 一旦nullを入れてクリアしないと今までのevent_dataの値がマージされてしまうため\n      eventData: null\n    })\n  }\n}\n","import setup from '~/setup/minimal'\n\nimport { installer } from '~/analytics/main/installer'\n\nsetup().then(() => {\n  installer()\n})\n","import * as RxOperators from 'rxjs/operators'\n\nimport TrackingManager from '~/analytics/tracking_manager/index'\nimport GtmEmitter from '~/analytics/main/gtm_emitter'\nimport EventSubjects from '~/shared/event_subjects'\n\nfunction installer () {\n  global.AnalyticsNamespace = global.AnalyticsNamespace || {}\n  const AnalyticsNamespace = global.AnalyticsNamespace\n\n  const panoramaGtmEmitter = new GtmEmitter()\n  AnalyticsNamespace.panoramaGtmEmitter = panoramaGtmEmitter\n\n  if (window) {\n    panoramaGtmEmitter.setupBrowser(window)\n  }\n\n  const trackingManager = new TrackingManager()\n\n  trackingManager.onUidChangedAsObservable()\n    .subscribe((uid) => {\n      panoramaGtmEmitter.emitUid(uid)\n    })\n\n  /**\n   * トラッキングID取得に必要な初期処理。Google Tag Manage側で実行する。\n   *\n   * @param {string} options.hubPage ユーザ情報を格納しているページ\n   */\n  AnalyticsNamespace.setup = ({ hubPage }: { hubPage: string | null }) => {\n    if (!hubPage) {\n      return\n    }\n    try {\n      trackingManager.connect(hubPage)\n        .catch((err) => {\n          console.error(err)\n        })\n    } catch (e) {\n      console.error(e)\n    }\n  }\n\n  AnalyticsNamespace.attachPanoramaEvents = (eventSubjects: EventSubjects) => {\n    eventSubjects.onItemShownAsObservable()\n      .pipe(\n        RxOperators.filter((e) => e.placeId && (e.placeId !== panoramaGtmEmitter.currentPlaceId()))\n      )\n      .subscribe((e) => {\n        panoramaGtmEmitter.onPlaceChanged(e)\n      })\n\n    eventSubjects.onPointChangeAsObservable().subscribe((e) => {\n      panoramaGtmEmitter.onEnterPage(e)\n    })\n\n    eventSubjects.onAirTagClickAsObservable()\n      .pipe(\n        RxOperators.filter((data) => data.index != null)\n      )\n      .subscribe((data) => {\n        panoramaGtmEmitter.onEvent('air_tag', { index: data.index })\n      })\n\n    eventSubjects.onFovChangedByUserAsObservable()\n      .pipe(\n        RxOperators.debounceTime(500),\n        RxOperators.distinctUntilChanged()\n      )\n      .subscribe((fov) => {\n        panoramaGtmEmitter.onEvent('zoom')\n      })\n  }\n}\n\nexport { installer }\n","// import './steps/styles'\n// import './steps/polyfill'\n// import './steps/error-handling'\n\nimport DocumentReady from 'document-ready-promise'\n\nexport default DocumentReady\n","var Converter = require('./src/converter');\n\n/**\n * Function get source and destination alphabet and return convert function\n *\n * @param {string|Array} srcAlphabet\n * @param {string|Array} dstAlphabet\n *\n * @returns {function(number|Array)}\n */\nfunction anyBase(srcAlphabet, dstAlphabet) {\n    var converter = new Converter(srcAlphabet, dstAlphabet);\n    /**\n     * Convert function\n     *\n     * @param {string|Array} number\n     *\n     * @return {string|Array} number\n     */\n    return function (number) {\n        return converter.convert(number);\n    }\n};\n\nanyBase.BIN = '01';\nanyBase.OCT = '01234567';\nanyBase.DEC = '0123456789';\nanyBase.HEX = '0123456789abcdef';\n\nmodule.exports = anyBase;","'use strict';\n\n/**\n * Converter\n *\n * @param {string|Array} srcAlphabet\n * @param {string|Array} dstAlphabet\n * @constructor\n */\nfunction Converter(srcAlphabet, dstAlphabet) {\n    if (!srcAlphabet || !dstAlphabet || !srcAlphabet.length || !dstAlphabet.length) {\n        throw new Error('Bad alphabet');\n    }\n    this.srcAlphabet = srcAlphabet;\n    this.dstAlphabet = dstAlphabet;\n}\n\n/**\n * Convert number from source alphabet to destination alphabet\n *\n * @param {string|Array} number - number represented as a string or array of points\n *\n * @returns {string|Array}\n */\nConverter.prototype.convert = function(number) {\n    var i, divide, newlen,\n    numberMap = {},\n    fromBase = this.srcAlphabet.length,\n    toBase = this.dstAlphabet.length,\n    length = number.length,\n    result = typeof number === 'string' ? '' : [];\n\n    if (!this.isValid(number)) {\n        throw new Error('Number \"' + number + '\" contains of non-alphabetic digits (' + this.srcAlphabet + ')');\n    }\n\n    if (this.srcAlphabet === this.dstAlphabet) {\n        return number;\n    }\n\n    for (i = 0; i < length; i++) {\n        numberMap[i] = this.srcAlphabet.indexOf(number[i]);\n    }\n    do {\n        divide = 0;\n        newlen = 0;\n        for (i = 0; i < length; i++) {\n            divide = divide * fromBase + numberMap[i];\n            if (divide >= toBase) {\n                numberMap[newlen++] = parseInt(divide / toBase, 10);\n                divide = divide % toBase;\n            } else if (newlen > 0) {\n                numberMap[newlen++] = 0;\n            }\n        }\n        length = newlen;\n        result = this.dstAlphabet.slice(divide, divide + 1).concat(result);\n    } while (newlen !== 0);\n\n    return result;\n};\n\n/**\n * Valid number with source alphabet\n *\n * @param {number} number\n *\n * @returns {boolean}\n */\nConverter.prototype.isValid = function(number) {\n    var i = 0;\n    for (; i < number.length; ++i) {\n        if (this.srcAlphabet.indexOf(number[i]) === -1) {\n            return false;\n        }\n    }\n    return true;\n};\n\nmodule.exports = Converter;",";(function(root) {\n  /**\n   * Constructs a new cross storage client given the url to a hub. By default,\n   * an iframe is created within the document body that points to the url. It\n   * also accepts an options object, which may include a timeout, frameId, and\n   * promise. The timeout, in milliseconds, is applied to each request and\n   * defaults to 5000ms. The options object may also include a frameId,\n   * identifying an existing frame on which to install its listeners. If the\n   * promise key is supplied the constructor for a Promise, that Promise library\n   * will be used instead of the default window.Promise.\n   *\n   * @example\n   * var storage = new CrossStorageClient('https://store.example.com/hub.html');\n   *\n   * @example\n   * var storage = new CrossStorageClient('https://store.example.com/hub.html', {\n   *   timeout: 5000,\n   *   frameId: 'storageFrame'\n   * });\n   *\n   * @constructor\n   *\n   * @param {string} url    The url to a cross storage hub\n   * @param {object} [opts] An optional object containing additional options,\n   *                        including timeout, frameId, and promise\n   *\n   * @property {string}   _id        A UUID v4 id\n   * @property {function} _promise   The Promise object to use\n   * @property {string}   _frameId   The id of the iFrame pointing to the hub url\n   * @property {string}   _origin    The hub's origin\n   * @property {object}   _requests  Mapping of request ids to callbacks\n   * @property {bool}     _connected Whether or not it has connected\n   * @property {bool}     _closed    Whether or not the client has closed\n   * @property {int}      _count     Number of requests sent\n   * @property {function} _listener  The listener added to the window\n   * @property {Window}   _hub       The hub window\n   */\n  function CrossStorageClient(url, opts) {\n    opts = opts || {};\n\n    this._id        = CrossStorageClient._generateUUID();\n    this._promise   = opts.promise || Promise;\n    this._frameId   = opts.frameId || 'CrossStorageClient-' + this._id;\n    this._origin    = CrossStorageClient._getOrigin(url);\n    this._requests  = {};\n    this._connected = false;\n    this._closed    = false;\n    this._count     = 0;\n    this._timeout   = opts.timeout || 5000;\n    this._listener  = null;\n\n    this._installListener();\n\n    var frame;\n    if (opts.frameId) {\n      frame = document.getElementById(opts.frameId);\n    }\n\n    // If using a passed iframe, poll the hub for a ready message\n    if (frame) {\n      this._poll();\n    }\n\n    // Create the frame if not found or specified\n    frame = frame || this._createFrame(url);\n    this._hub = frame.contentWindow;\n  }\n\n  /**\n   * The styles to be applied to the generated iFrame. Defines a set of properties\n   * that hide the element by positioning it outside of the visible area, and\n   * by modifying its display.\n   *\n   * @member {Object}\n   */\n  CrossStorageClient.frameStyle = {\n    display:  'none',\n    position: 'absolute',\n    top:      '-999px',\n    left:     '-999px'\n  };\n\n  /**\n   * Returns the origin of an url, with cross browser support. Accommodates\n   * the lack of location.origin in IE, as well as the discrepancies in the\n   * inclusion of the port when using the default port for a protocol, e.g.\n   * 443 over https. Defaults to the origin of window.location if passed a\n   * relative path.\n   *\n   * @param   {string} url The url to a cross storage hub\n   * @returns {string} The origin of the url\n   */\n  CrossStorageClient._getOrigin = function(url) {\n    var uri, protocol, origin;\n\n    uri = document.createElement('a');\n    uri.href = url;\n\n    if (!uri.host) {\n      uri = window.location;\n    }\n\n    if (!uri.protocol || uri.protocol === ':') {\n      protocol = window.location.protocol;\n    } else {\n      protocol = uri.protocol;\n    }\n\n    origin = protocol + '//' + uri.host;\n    origin = origin.replace(/:80$|:443$/, '');\n\n    return origin;\n  };\n\n  /**\n   * UUID v4 generation, taken from: http://stackoverflow.com/questions/\n   * 105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n   *\n   * @returns {string} A UUID v4 string\n   */\n  CrossStorageClient._generateUUID = function() {\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n      var r = Math.random() * 16|0, v = c == 'x' ? r : (r&0x3|0x8);\n\n      return v.toString(16);\n    });\n  };\n\n  /**\n   * Returns a promise that is fulfilled when a connection has been established\n   * with the cross storage hub. Its use is required to avoid sending any\n   * requests prior to initialization being complete.\n   *\n   * @returns {Promise} A promise that is resolved on connect\n   */\n  CrossStorageClient.prototype.onConnect = function() {\n    var client = this;\n\n    if (this._connected) {\n      return this._promise.resolve();\n    } else if (this._closed) {\n      return this._promise.reject(new Error('CrossStorageClient has closed'));\n    }\n\n    // Queue connect requests for client re-use\n    if (!this._requests.connect) {\n      this._requests.connect = [];\n    }\n\n    return new this._promise(function(resolve, reject) {\n      var timeout = setTimeout(function() {\n        reject(new Error('CrossStorageClient could not connect'));\n      }, client._timeout);\n\n      client._requests.connect.push(function(err) {\n        clearTimeout(timeout);\n        if (err) return reject(err);\n\n        resolve();\n      });\n    });\n  };\n\n  /**\n   * Sets a key to the specified value. Returns a promise that is fulfilled on\n   * success, or rejected if any errors setting the key occurred, or the request\n   * timed out.\n   *\n   * @param   {string}  key   The key to set\n   * @param   {*}       value The value to assign\n   * @returns {Promise} A promise that is settled on hub response or timeout\n   */\n  CrossStorageClient.prototype.set = function(key, value) {\n    return this._request('set', {\n      key:   key,\n      value: value\n    });\n  };\n\n  /**\n   * Accepts one or more keys for which to retrieve their values. Returns a\n   * promise that is settled on hub response or timeout. On success, it is\n   * fulfilled with the value of the key if only passed a single argument.\n   * Otherwise it's resolved with an array of values. On failure, it is rejected\n   * with the corresponding error message.\n   *\n   * @param   {...string} key The key to retrieve\n   * @returns {Promise}   A promise that is settled on hub response or timeout\n   */\n  CrossStorageClient.prototype.get = function(key) {\n    var args = Array.prototype.slice.call(arguments);\n\n    return this._request('get', {keys: args});\n  };\n\n  /**\n   * Accepts one or more keys for deletion. Returns a promise that is settled on\n   * hub response or timeout.\n   *\n   * @param   {...string} key The key to delete\n   * @returns {Promise}   A promise that is settled on hub response or timeout\n   */\n  CrossStorageClient.prototype.del = function() {\n    var args = Array.prototype.slice.call(arguments);\n\n    return this._request('del', {keys: args});\n  };\n\n  /**\n   * Returns a promise that, when resolved, indicates that all localStorage\n   * data has been cleared.\n   *\n   * @returns {Promise} A promise that is settled on hub response or timeout\n   */\n  CrossStorageClient.prototype.clear = function() {\n    return this._request('clear');\n  };\n\n  /**\n   * Returns a promise that, when resolved, passes an array of all keys\n   * currently in storage.\n   *\n   * @returns {Promise} A promise that is settled on hub response or timeout\n   */\n  CrossStorageClient.prototype.getKeys = function() {\n    return this._request('getKeys');\n  };\n\n  /**\n   * Deletes the iframe and sets the connected state to false. The client can\n   * no longer be used after being invoked.\n   */\n  CrossStorageClient.prototype.close = function() {\n    var frame = document.getElementById(this._frameId);\n    if (frame) {\n      frame.parentNode.removeChild(frame);\n    }\n\n    // Support IE8 with detachEvent\n    if (window.removeEventListener) {\n      window.removeEventListener('message', this._listener, false);\n    } else {\n      window.detachEvent('onmessage', this._listener);\n    }\n\n    this._connected = false;\n    this._closed = true;\n  };\n\n  /**\n   * Installs the necessary listener for the window message event. When a message\n   * is received, the client's _connected status is changed to true, and the\n   * onConnect promise is fulfilled. Given a response message, the callback\n   * corresponding to its request is invoked. If response.error holds a truthy\n   * value, the promise associated with the original request is rejected with\n   * the error. Otherwise the promise is fulfilled and passed response.result.\n   *\n   * @private\n   */\n  CrossStorageClient.prototype._installListener = function() {\n    var client = this;\n\n    this._listener = function(message) {\n      var i, origin, error, response;\n\n      // Ignore invalid messages or those after the client has closed\n      if (client._closed || !message.data || typeof message.data !== 'string') {\n        return;\n      }\n\n      // postMessage returns the string \"null\" as the origin for \"file://\"\n      origin = (message.origin === 'null') ? 'file://' : message.origin;\n\n      // Ignore messages not from the correct origin\n      if (origin !== client._origin) return;\n\n      // LocalStorage isn't available in the hub\n      if (message.data === 'cross-storage:unavailable') {\n        if (!client._closed) client.close();\n        if (!client._requests.connect) return;\n\n        error = new Error('Closing client. Could not access localStorage in hub.');\n        for (i = 0; i < client._requests.connect.length; i++) {\n          client._requests.connect[i](error);\n        }\n\n        return;\n      }\n\n      // Handle initial connection\n      if (message.data.indexOf('cross-storage:') !== -1 && !client._connected) {\n        client._connected = true;\n        if (!client._requests.connect) return;\n\n        for (i = 0; i < client._requests.connect.length; i++) {\n          client._requests.connect[i](error);\n        }\n        delete client._requests.connect;\n      }\n\n      if (message.data === 'cross-storage:ready') return;\n\n      // All other messages\n      try {\n        response = JSON.parse(message.data);\n      } catch(e) {\n        return;\n      }\n\n      if (!response.id) return;\n\n      if (client._requests[response.id]) {\n        client._requests[response.id](response.error, response.result);\n      }\n    };\n\n    // Support IE8 with attachEvent\n    if (window.addEventListener) {\n      window.addEventListener('message', this._listener, false);\n    } else {\n      window.attachEvent('onmessage', this._listener);\n    }\n  };\n\n  /**\n   * Invoked when a frame id was passed to the client, rather than allowing\n   * the client to create its own iframe. Polls the hub for a ready event to\n   * establish a connected state.\n   */\n  CrossStorageClient.prototype._poll = function() {\n    var client, interval, targetOrigin;\n\n    client = this;\n\n    // postMessage requires that the target origin be set to \"*\" for \"file://\"\n    targetOrigin = (client._origin === 'file://') ? '*' : client._origin;\n\n    interval = setInterval(function() {\n      if (client._connected) return clearInterval(interval);\n      if (!client._hub) return;\n\n      client._hub.postMessage('cross-storage:poll', targetOrigin);\n    }, 1000);\n  };\n\n  /**\n   * Creates a new iFrame containing the hub. Applies the necessary styles to\n   * hide the element from view, prior to adding it to the document body.\n   * Returns the created element.\n   *\n   * @private\n   *\n   * @param  {string}            url The url to the hub\n   * returns {HTMLIFrameElement} The iFrame element itself\n   */\n  CrossStorageClient.prototype._createFrame = function(url) {\n    var frame, key;\n\n    frame = window.document.createElement('iframe');\n    frame.id = this._frameId;\n\n    // Style the iframe\n    for (key in CrossStorageClient.frameStyle) {\n      if (CrossStorageClient.frameStyle.hasOwnProperty(key)) {\n        frame.style[key] = CrossStorageClient.frameStyle[key];\n      }\n    }\n\n    window.document.body.appendChild(frame);\n    frame.src = url;\n\n    return frame;\n  };\n\n  /**\n   * Sends a message containing the given method and params to the hub. Stores\n   * a callback in the _requests object for later invocation on message, or\n   * deletion on timeout. Returns a promise that is settled in either instance.\n   *\n   * @private\n   *\n   * @param   {string}  method The method to invoke\n   * @param   {*}       params The arguments to pass\n   * @returns {Promise} A promise that is settled on hub response or timeout\n   */\n  CrossStorageClient.prototype._request = function(method, params) {\n    var req, client;\n\n    if (this._closed) {\n      return this._promise.reject(new Error('CrossStorageClient has closed'));\n    }\n\n    client = this;\n    client._count++;\n\n    req = {\n      id:     this._id + ':' + client._count,\n      method: 'cross-storage:' + method,\n      params: params\n    };\n\n    return new this._promise(function(resolve, reject) {\n      var timeout, originalToJSON, targetOrigin;\n\n      // Timeout if a response isn't received after 4s\n      timeout = setTimeout(function() {\n        if (!client._requests[req.id]) return;\n\n        delete client._requests[req.id];\n        reject(new Error('Timeout: could not perform ' + req.method));\n      }, client._timeout);\n\n      // Add request callback\n      client._requests[req.id] = function(err, result) {\n        clearTimeout(timeout);\n        delete client._requests[req.id];\n        if (err) return reject(new Error(err));\n        resolve(result);\n      };\n\n      // In case we have a broken Array.prototype.toJSON, e.g. because of\n      // old versions of prototype\n      if (Array.prototype.toJSON) {\n        originalToJSON = Array.prototype.toJSON;\n        Array.prototype.toJSON = null;\n      }\n\n      // postMessage requires that the target origin be set to \"*\" for \"file://\"\n      targetOrigin = (client._origin === 'file://') ? '*' : client._origin;\n\n      // Send serialized message\n      client._hub.postMessage(JSON.stringify(req), targetOrigin);\n\n      // Restore original toJSON\n      if (originalToJSON) {\n        Array.prototype.toJSON = originalToJSON;\n      }\n    });\n  };\n\n  /**\n   * Export for various environments.\n   */\n  if (typeof module !== 'undefined' && module.exports) {\n    module.exports = CrossStorageClient;\n  } else if (typeof exports !== 'undefined') {\n    exports.CrossStorageClient = CrossStorageClient;\n  } else if (typeof define === 'function' && define.amd) {\n    define([], function() {\n      return CrossStorageClient;\n    });\n  } else {\n    root.CrossStorageClient = CrossStorageClient;\n  }\n}(this));\n",";(function(root) {\n  var CrossStorageHub = {};\n\n  /**\n   * Accepts an array of objects with two keys: origin and allow. The value\n   * of origin is expected to be a RegExp, and allow, an array of strings.\n   * The cross storage hub is then initialized to accept requests from any of\n   * the matching origins, allowing access to the associated lists of methods.\n   * Methods may include any of: get, set, del, getKeys and clear. A 'ready'\n   * message is sent to the parent window once complete.\n   *\n   * @example\n   * // Subdomain can get, but only root domain can set and del\n   * CrossStorageHub.init([\n   *   {origin: /\\.example.com$/,        allow: ['get']},\n   *   {origin: /:(www\\.)?example.com$/, allow: ['get', 'set', 'del']}\n   * ]);\n   *\n   * @param {array} permissions An array of objects with origin and allow\n   */\n  CrossStorageHub.init = function(permissions) {\n    var available = true;\n\n    // Return if localStorage is unavailable, or third party\n    // access is disabled\n    try {\n      if (!window.localStorage) available = false;\n    } catch (e) {\n      available = false;\n    }\n\n    if (!available) {\n      try {\n        return window.parent.postMessage('cross-storage:unavailable', '*');\n      } catch (e) {\n        return;\n      }\n    }\n\n    CrossStorageHub._permissions = permissions || [];\n    CrossStorageHub._installListener();\n    window.parent.postMessage('cross-storage:ready', '*');\n  };\n\n  /**\n   * Installs the necessary listener for the window message event. Accommodates\n   * IE8 and up.\n   *\n   * @private\n   */\n  CrossStorageHub._installListener = function() {\n    var listener = CrossStorageHub._listener;\n    if (window.addEventListener) {\n      window.addEventListener('message', listener, false);\n    } else {\n      window.attachEvent('onmessage', listener);\n    }\n  };\n\n  /**\n   * The message handler for all requests posted to the window. It ignores any\n   * messages having an origin that does not match the originally supplied\n   * pattern. Given a JSON object with one of get, set, del or getKeys as the\n   * method, the function performs the requested action and returns its result.\n   *\n   * @param {MessageEvent} message A message to be processed\n   */\n  CrossStorageHub._listener = function(message) {\n    var origin, targetOrigin, request, method, error, result, response;\n\n    // postMessage returns the string \"null\" as the origin for \"file://\"\n    origin = (message.origin === 'null') ? 'file://' : message.origin;\n\n    // Handle polling for a ready message\n    if (message.data === 'cross-storage:poll') {\n      return window.parent.postMessage('cross-storage:ready', message.origin);\n    }\n\n    // Ignore the ready message when viewing the hub directly\n    if (message.data === 'cross-storage:ready') return;\n\n    // Check whether message.data is a valid json\n    try {\n      request = JSON.parse(message.data);\n    } catch (err) {\n      return;\n    }\n\n    // Check whether request.method is a string\n    if (!request || typeof request.method !== 'string') {\n      return;\n    }\n\n    method = request.method.split('cross-storage:')[1];\n\n    if (!method) {\n      return;\n    } else if (!CrossStorageHub._permitted(origin, method)) {\n      error = 'Invalid permissions for ' + method;\n    } else {\n      try {\n        result = CrossStorageHub['_' + method](request.params);\n      } catch (err) {\n        error = err.message;\n      }\n    }\n\n    response = JSON.stringify({\n      id: request.id,\n      error: error,\n      result: result\n    });\n\n    // postMessage requires that the target origin be set to \"*\" for \"file://\"\n    targetOrigin = (origin === 'file://') ? '*' : origin;\n\n    window.parent.postMessage(response, targetOrigin);\n  };\n\n  /**\n   * Returns a boolean indicating whether or not the requested method is\n   * permitted for the given origin. The argument passed to method is expected\n   * to be one of 'get', 'set', 'del' or 'getKeys'.\n   *\n   * @param   {string} origin The origin for which to determine permissions\n   * @param   {string} method Requested action\n   * @returns {bool}   Whether or not the request is permitted\n   */\n  CrossStorageHub._permitted = function(origin, method) {\n    var available, i, entry, match;\n\n    available = ['get', 'set', 'del', 'clear', 'getKeys'];\n    if (!CrossStorageHub._inArray(method, available)) {\n      return false;\n    }\n\n    for (i = 0; i < CrossStorageHub._permissions.length; i++) {\n      entry = CrossStorageHub._permissions[i];\n      if (!(entry.origin instanceof RegExp) || !(entry.allow instanceof Array)) {\n        continue;\n      }\n\n      match = entry.origin.test(origin);\n      if (match && CrossStorageHub._inArray(method, entry.allow)) {\n        return true;\n      }\n    }\n\n    return false;\n  };\n\n  /**\n   * Sets a key to the specified value.\n   *\n   * @param {object} params An object with key and value\n   */\n  CrossStorageHub._set = function(params) {\n    window.localStorage.setItem(params.key, params.value);\n  };\n\n  /**\n   * Accepts an object with an array of keys for which to retrieve their values.\n   * Returns a single value if only one key was supplied, otherwise it returns\n   * an array. Any keys not set result in a null element in the resulting array.\n   *\n   * @param   {object} params An object with an array of keys\n   * @returns {*|*[]}  Either a single value, or an array\n   */\n  CrossStorageHub._get = function(params) {\n    var storage, result, i, value;\n\n    storage = window.localStorage;\n    result = [];\n\n    for (i = 0; i < params.keys.length; i++) {\n      try {\n        value = storage.getItem(params.keys[i]);\n      } catch (e) {\n        value = null;\n      }\n\n      result.push(value);\n    }\n\n    return (result.length > 1) ? result : result[0];\n  };\n\n  /**\n   * Deletes all keys specified in the array found at params.keys.\n   *\n   * @param {object} params An object with an array of keys\n   */\n  CrossStorageHub._del = function(params) {\n    for (var i = 0; i < params.keys.length; i++) {\n      window.localStorage.removeItem(params.keys[i]);\n    }\n  };\n\n  /**\n   * Clears localStorage.\n   */\n  CrossStorageHub._clear = function() {\n    window.localStorage.clear();\n  };\n\n  /**\n   * Returns an array of all keys stored in localStorage.\n   *\n   * @returns {string[]} The array of keys\n   */\n  CrossStorageHub._getKeys = function(params) {\n    var i, length, keys;\n\n    keys = [];\n    length = window.localStorage.length;\n\n    for (i = 0; i < length; i++) {\n      keys.push(window.localStorage.key(i));\n    }\n\n    return keys;\n  };\n\n  /**\n   * Returns whether or not a value is present in the array. Consists of an\n   * alternative to extending the array prototype for indexOf, since it's\n   * unavailable for IE8.\n   *\n   * @param   {*}    value The value to find\n   * @parma   {[]*}  array The array in which to search\n   * @returns {bool} Whether or not the value was found\n   */\n  CrossStorageHub._inArray = function(value, array) {\n    for (var i = 0; i < array.length; i++) {\n      if (value === array[i]) return true;\n    }\n\n    return false;\n  };\n\n  /**\n   * A cross-browser version of Date.now compatible with IE8 that avoids\n   * modifying the Date object.\n   *\n   * @return {int} The current timestamp in milliseconds\n   */\n  CrossStorageHub._now = function() {\n    if (typeof Date.now === 'function') {\n      return Date.now();\n    }\n\n    return new Date().getTime();\n  };\n\n  /**\n   * Export for various environments.\n   */\n  if (typeof module !== 'undefined' && module.exports) {\n    module.exports = CrossStorageHub;\n  } else if (typeof exports !== 'undefined') {\n    exports.CrossStorageHub = CrossStorageHub;\n  } else if (typeof define === 'function' && define.amd) {\n    define([], function() {\n      return CrossStorageHub;\n    });\n  } else {\n    root.CrossStorageHub = CrossStorageHub;\n  }\n}(this));\n","module.exports = {\n  CrossStorageClient: require('./client.js'),\n  CrossStorageHub:    require('./hub.js')\n};\n","/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nexport function interval(period, scheduler) {\n    if (period === void 0) {\n        period = 0;\n    }\n    if (scheduler === void 0) {\n        scheduler = async;\n    }\n    if (!isNumeric(period) || period < 0) {\n        period = 0;\n    }\n    if (!scheduler || typeof scheduler.schedule !== 'function') {\n        scheduler = async;\n    }\n    return new Observable(function (subscriber) {\n        subscriber.add(scheduler.schedule(dispatch, period, { subscriber: subscriber, counter: 0, period: period }));\n        return subscriber;\n    });\n}\nfunction dispatch(state) {\n    var subscriber = state.subscriber, counter = state.counter, period = state.period;\n    subscriber.next(counter);\n    this.schedule({ subscriber: subscriber, counter: counter + 1, period: period }, period);\n}\n//# sourceMappingURL=interval.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nexport function debounceTime(dueTime, scheduler) {\n    if (scheduler === void 0) {\n        scheduler = async;\n    }\n    return function (source) { return source.lift(new DebounceTimeOperator(dueTime, scheduler)); };\n}\nvar DebounceTimeOperator = /*@__PURE__*/ (function () {\n    function DebounceTimeOperator(dueTime, scheduler) {\n        this.dueTime = dueTime;\n        this.scheduler = scheduler;\n    }\n    DebounceTimeOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));\n    };\n    return DebounceTimeOperator;\n}());\nvar DebounceTimeSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib_1.__extends(DebounceTimeSubscriber, _super);\n    function DebounceTimeSubscriber(destination, dueTime, scheduler) {\n        var _this = _super.call(this, destination) || this;\n        _this.dueTime = dueTime;\n        _this.scheduler = scheduler;\n        _this.debouncedSubscription = null;\n        _this.lastValue = null;\n        _this.hasValue = false;\n        return _this;\n    }\n    DebounceTimeSubscriber.prototype._next = function (value) {\n        this.clearDebounce();\n        this.lastValue = value;\n        this.hasValue = true;\n        this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));\n    };\n    DebounceTimeSubscriber.prototype._complete = function () {\n        this.debouncedNext();\n        this.destination.complete();\n    };\n    DebounceTimeSubscriber.prototype.debouncedNext = function () {\n        this.clearDebounce();\n        if (this.hasValue) {\n            var lastValue = this.lastValue;\n            this.lastValue = null;\n            this.hasValue = false;\n            this.destination.next(lastValue);\n        }\n    };\n    DebounceTimeSubscriber.prototype.clearDebounce = function () {\n        var debouncedSubscription = this.debouncedSubscription;\n        if (debouncedSubscription !== null) {\n            this.remove(debouncedSubscription);\n            debouncedSubscription.unsubscribe();\n            this.debouncedSubscription = null;\n        }\n    };\n    return DebounceTimeSubscriber;\n}(Subscriber));\nfunction dispatchNext(subscriber) {\n    subscriber.debouncedNext();\n}\n//# sourceMappingURL=debounceTime.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function distinctUntilChanged(compare, keySelector) {\n    return function (source) { return source.lift(new DistinctUntilChangedOperator(compare, keySelector)); };\n}\nvar DistinctUntilChangedOperator = /*@__PURE__*/ (function () {\n    function DistinctUntilChangedOperator(compare, keySelector) {\n        this.compare = compare;\n        this.keySelector = keySelector;\n    }\n    DistinctUntilChangedOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));\n    };\n    return DistinctUntilChangedOperator;\n}());\nvar DistinctUntilChangedSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib_1.__extends(DistinctUntilChangedSubscriber, _super);\n    function DistinctUntilChangedSubscriber(destination, compare, keySelector) {\n        var _this = _super.call(this, destination) || this;\n        _this.keySelector = keySelector;\n        _this.hasKey = false;\n        if (typeof compare === 'function') {\n            _this.compare = compare;\n        }\n        return _this;\n    }\n    DistinctUntilChangedSubscriber.prototype.compare = function (x, y) {\n        return x === y;\n    };\n    DistinctUntilChangedSubscriber.prototype._next = function (value) {\n        var key;\n        try {\n            var keySelector = this.keySelector;\n            key = keySelector ? keySelector(value) : value;\n        }\n        catch (err) {\n            return this.destination.error(err);\n        }\n        var result = false;\n        if (this.hasKey) {\n            try {\n                var compare = this.compare;\n                result = compare(this.key, key);\n            }\n            catch (err) {\n                return this.destination.error(err);\n            }\n        }\n        else {\n            this.hasKey = true;\n        }\n        if (!result) {\n            this.key = key;\n            this.destination.next(value);\n        }\n    };\n    return DistinctUntilChangedSubscriber;\n}(Subscriber));\n//# sourceMappingURL=distinctUntilChanged.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function filter(predicate, thisArg) {\n    return function filterOperatorFunction(source) {\n        return source.lift(new FilterOperator(predicate, thisArg));\n    };\n}\nvar FilterOperator = /*@__PURE__*/ (function () {\n    function FilterOperator(predicate, thisArg) {\n        this.predicate = predicate;\n        this.thisArg = thisArg;\n    }\n    FilterOperator.prototype.call = function (subscriber, source) {\n        return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n    };\n    return FilterOperator;\n}());\nvar FilterSubscriber = /*@__PURE__*/ (function (_super) {\n    tslib_1.__extends(FilterSubscriber, _super);\n    function FilterSubscriber(destination, predicate, thisArg) {\n        var _this = _super.call(this, destination) || this;\n        _this.predicate = predicate;\n        _this.thisArg = thisArg;\n        _this.count = 0;\n        return _this;\n    }\n    FilterSubscriber.prototype._next = function (value) {\n        var result;\n        try {\n            result = this.predicate.call(this.thisArg, value, this.count++);\n        }\n        catch (err) {\n            this.destination.error(err);\n            return;\n        }\n        if (result) {\n            this.destination.next(value);\n        }\n    };\n    return FilterSubscriber;\n}(Subscriber));\n//# sourceMappingURL=filter.js.map\n","/** PURE_IMPORTS_START tslib,_Action PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Action } from './Action';\nvar AsyncAction = /*@__PURE__*/ (function (_super) {\n    tslib_1.__extends(AsyncAction, _super);\n    function AsyncAction(scheduler, work) {\n        var _this = _super.call(this, scheduler, work) || this;\n        _this.scheduler = scheduler;\n        _this.work = work;\n        _this.pending = false;\n        return _this;\n    }\n    AsyncAction.prototype.schedule = function (state, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        if (this.closed) {\n            return this;\n        }\n        this.state = state;\n        var id = this.id;\n        var scheduler = this.scheduler;\n        if (id != null) {\n            this.id = this.recycleAsyncId(scheduler, id, delay);\n        }\n        this.pending = true;\n        this.delay = delay;\n        this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n        return this;\n    };\n    AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        return setInterval(scheduler.flush.bind(scheduler, this), delay);\n    };\n    AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        if (delay !== null && this.delay === delay && this.pending === false) {\n            return id;\n        }\n        clearInterval(id);\n        return undefined;\n    };\n    AsyncAction.prototype.execute = function (state, delay) {\n        if (this.closed) {\n            return new Error('executing a cancelled action');\n        }\n        this.pending = false;\n        var error = this._execute(state, delay);\n        if (error) {\n            return error;\n        }\n        else if (this.pending === false && this.id != null) {\n            this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n        }\n    };\n    AsyncAction.prototype._execute = function (state, delay) {\n        var errored = false;\n        var errorValue = undefined;\n        try {\n            this.work(state);\n        }\n        catch (e) {\n            errored = true;\n            errorValue = !!e && e || new Error(e);\n        }\n        if (errored) {\n            this.unsubscribe();\n            return errorValue;\n        }\n    };\n    AsyncAction.prototype._unsubscribe = function () {\n        var id = this.id;\n        var scheduler = this.scheduler;\n        var actions = scheduler.actions;\n        var index = actions.indexOf(this);\n        this.work = null;\n        this.state = null;\n        this.pending = false;\n        this.scheduler = null;\n        if (index !== -1) {\n            actions.splice(index, 1);\n        }\n        if (id != null) {\n            this.id = this.recycleAsyncId(scheduler, id, null);\n        }\n        this.delay = null;\n    };\n    return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = /*@__PURE__*/ (function (_super) {\n    tslib_1.__extends(Action, _super);\n    function Action(scheduler, work) {\n        return _super.call(this) || this;\n    }\n    Action.prototype.schedule = function (state, delay) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        return this;\n    };\n    return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map\n","var Scheduler = /*@__PURE__*/ (function () {\n    function Scheduler(SchedulerAction, now) {\n        if (now === void 0) {\n            now = Scheduler.now;\n        }\n        this.SchedulerAction = SchedulerAction;\n        this.now = now;\n    }\n    Scheduler.prototype.schedule = function (work, delay, state) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        return new this.SchedulerAction(this, work).schedule(state, delay);\n    };\n    Scheduler.now = function () { return Date.now(); };\n    return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map\n","/** PURE_IMPORTS_START _AsyncAction,_AsyncScheduler PURE_IMPORTS_END */\nimport { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = /*@__PURE__*/ new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map\n","/** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = /*@__PURE__*/ (function (_super) {\n    tslib_1.__extends(AsyncScheduler, _super);\n    function AsyncScheduler(SchedulerAction, now) {\n        if (now === void 0) {\n            now = Scheduler.now;\n        }\n        var _this = _super.call(this, SchedulerAction, function () {\n            if (AsyncScheduler.delegate && AsyncScheduler.delegate !== _this) {\n                return AsyncScheduler.delegate.now();\n            }\n            else {\n                return now();\n            }\n        }) || this;\n        _this.actions = [];\n        _this.active = false;\n        _this.scheduled = undefined;\n        return _this;\n    }\n    AsyncScheduler.prototype.schedule = function (work, delay, state) {\n        if (delay === void 0) {\n            delay = 0;\n        }\n        if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n            return AsyncScheduler.delegate.schedule(work, delay, state);\n        }\n        else {\n            return _super.prototype.schedule.call(this, work, delay, state);\n        }\n    };\n    AsyncScheduler.prototype.flush = function (action) {\n        var actions = this.actions;\n        if (this.active) {\n            actions.push(action);\n            return;\n        }\n        var error;\n        this.active = true;\n        do {\n            if (error = action.execute(action.state, action.delay)) {\n                break;\n            }\n        } while (action = actions.shift());\n        this.active = false;\n        if (error) {\n            while (action = actions.shift()) {\n                action.unsubscribe();\n            }\n            throw error;\n        }\n    };\n    return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map\n","/** PURE_IMPORTS_START _isArray PURE_IMPORTS_END */\nimport { isArray } from './isArray';\nexport function isNumeric(val) {\n    return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n//# sourceMappingURL=isNumeric.js.map\n","/**\n * Created by Samuel on 6/4/2016.\n * Simple wrapper functions to produce shorter UUIDs for cookies, maybe everything?\n */\nmodule.exports = (function(){\n\n    var anyBase = require('any-base');\n    var uuidV4 = require('uuid/v4');\n\n    var flickrBase58 = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';\n    var cookieBase90 = \"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#$%&'()*+-./:<=>?@[]^_`{|}~\";\n\n    /**\n     * Takes a UUID, strips the dashes, and translates.\n     * @param {string} longId\n     * @param {function(string)} translator\n     * @returns {string}\n     */\n    function shortenUUID (longId, translator) {\n        return translator(longId.toLowerCase().replace(/-/g,''));\n    }\n\n    /**\n     * Translate back to hex and turn back into UUID format, with dashes\n     * @param {string} shortId\n     * @param {function(string)} translator\n     * @returns {string}\n     */\n    function enlargeUUID(shortId, translator) {\n        var uu1 = translator(shortId);\n        var leftPad = \"\";\n        var m;\n\n        // Pad out UUIDs beginning with zeros (any number shorter than 32 characters of hex)\n        for (var i = 0, len = 32-uu1.length; i < len; ++i) {\n            leftPad += \"0\";\n        }\n\n        // Join the zero padding and the UUID and then slice it up with match\n        m = (leftPad + uu1).match(/(\\w{8})(\\w{4})(\\w{4})(\\w{4})(\\w{12})/);\n\n        // Accumulate the matches and join them.\n        return [m[1], m[2], m[3], m[4], m[5]].join('-');\n    }\n\n    /**\n     * @constructor\n     * @param {string?} toAlphabet - Defaults to flickrBase58 if not provided\n     * @returns {{new: (function()),\n     *  uuid: (function()),\n     *  fromUUID: (function(string)),\n     *  toUUID: (function(string)),\n     *  alphabet: (string)}}\n     */\n    function MakeConvertor(toAlphabet) {\n\n        // Default to Flickr 58\n        var useAlphabet = toAlphabet || flickrBase58;\n\n        // UUIDs are in hex, so we translate to and from.\n        var fromHex = anyBase(anyBase.HEX, useAlphabet);\n        var toHex = anyBase(useAlphabet, anyBase.HEX);\n\n        return {\n            new: function() { return shortenUUID(uuidV4(), fromHex); },\n            uuid: uuidV4,\n            fromUUID: function(uuid) { return shortenUUID(uuid, fromHex); },\n            toUUID: function(shortUuid) { return enlargeUUID(shortUuid, toHex); },\n            alphabet: useAlphabet\n        };\n    }\n\n    // Expose the constants for other purposes.\n    MakeConvertor.constants = {\n        flickrBase58: flickrBase58,\n        cookieBase90: cookieBase90\n    };\n\n    // Expose the generic v4 UUID generator for convenience\n    MakeConvertor.uuid = uuidV4;\n\n    return MakeConvertor;\n\n}());\n"],"names":["StorageClient","_CrossStorageClient","_inherits","_super","_classCallCheck","apply","arguments","key","value","_this","Promise","resolve","reject","connected","connect","e","_get","_getPrototypeOf","prototype","call","then","catch","document","readyState","window","addEventListener","createValue","_this2","get","id","set","CrossStorageClient","TrackingManager","this","_uidChangedSubject","Rx","_storageClient","hubPage","client","onConnect","all","_isTrackingDisabled","getOrCreate","uuid","shortUuid","fromUUID","_ref","_ref2","disabled","uid","next","GtmEmitterState","context","Error","pageData","name","RefCountOperator","RefCountOperator2","connectable","subscriber","source","_refCount","refCounter","RefCountSubscriber","subscription","subscribe","closed","connection","RefCountSubscriber2","destination","tslib_1","_unsubscribe","refCount2","sharedConnection","_connection","unsubscribe","Subscriber","ConnectableObservable","ConnectableObservable2","subjectFactory","_isComplete","_subscribe","getSubject","subject","_subject","isStopped","Subscription","add","ConnectableSubscriber","EMPTY","refCount","lift","Observable","connectableObservableDescriptor","connectableProto","operator","writable","ConnectableSubscriber2","_error","err","_complete","SubjectSubscriber","ElapsedTimeCounter","_onElapseSubject","_counterUpdateSubscription","subjectOrSubjectFactory","pipe","Object","create","TerminatedGtmEmitterState","_GtmEmitterState","InPageGtmEmitterState","attachedEvent","length","undefined","emitEventData","event","storeData","store","timeCounter","start","forceEmitEvent","data","stop","changeState","PlaceEnteredGtmEmitterState","clearPageData","itemShownEvent","_itemShownEvent","resetStoreData","commitStoreData","_skimCurrentPage","InitialGtmEmitterState","timeCounterSubscription","onElapsedAsObservable","elapsedSec","GtmEmitter","state","onEnterState","newState","onPlaceChanged","onEnterPage","onEvent","placeId","_emitRawData","nurveUid","terminate","eventCountData","eventCount","commitEventData","concat","eventData","global","dataLayer","push","setup","AnalyticsNamespace","panoramaGtmEmitter","setupBrowser","trackingManager","onUidChangedAsObservable","emitUid","console","error","attachPanoramaEvents","eventSubjects","onItemShownAsObservable","RxOperators","currentPlaceId","onPointChangeAsObservable","onAirTagClickAsObservable","index","onFovChangedByUserAsObservable","fov","installer","DocumentReady","Converter","require","anyBase","srcAlphabet","dstAlphabet","converter","number","convert","BIN","OCT","DEC","HEX","module","exports","i","divide","newlen","numberMap","fromBase","toBase","result","isValid","indexOf","parseInt","slice","url","opts","frame","_id","_generateUUID","_promise","promise","_frameId","frameId","_origin","_getOrigin","_requests","_connected","_closed","_count","_timeout","timeout","_listener","_installListener","getElementById","_poll","_createFrame","_hub","contentWindow","frameStyle","display","position","top","left","uri","createElement","href","host","location","protocol","replace","c","r","Math","random","toString","setTimeout","clearTimeout","_request","args","Array","keys","del","clear","getKeys","close","parentNode","removeChild","removeEventListener","detachEvent","message","response","origin","JSON","parse","attachEvent","interval","targetOrigin","setInterval","clearInterval","postMessage","hasOwnProperty","style","body","appendChild","src","method","params","req","originalToJSON","toJSON","stringify","CrossStorageHub","permissions","available","localStorage","parent","_permissions","listener","request","split","_permitted","entry","_inArray","RegExp","allow","test","setItem","storage","getItem","removeItem","array","Date","now","getTime","period","scheduler","async","isNumeric","schedule","dispatch","counter","debounceTime","dueTime","DebounceTimeOperator","DebounceTimeOperator2","DebounceTimeSubscriber","DebounceTimeSubscriber2","debouncedSubscription","lastValue","hasValue","_next","clearDebounce","dispatchNext","debouncedNext","complete","remove","distinctUntilChanged","compare","keySelector","DistinctUntilChangedOperator","DistinctUntilChangedOperator2","DistinctUntilChangedSubscriber","DistinctUntilChangedSubscriber2","hasKey","x","y","filter","predicate","thisArg","FilterOperator","FilterOperator2","FilterSubscriber","FilterSubscriber2","count","AsyncAction","AsyncAction2","work","pending","delay","recycleAsyncId","requestAsyncId","flush","bind","execute","_execute","errored","errorValue","actions","splice","Action2","Scheduler","Scheduler2","SchedulerAction","AsyncScheduler2","delegate","active","scheduled","action","shift","val","isArray","parseFloat","uuidV4","flickrBase58","shortenUUID","longId","translator","toLowerCase","MakeConvertor","toAlphabet","useAlphabet","fromHex","toHex","new","toUUID","shortId","m","uu1","leftPad","len","match","join","enlargeUUID","alphabet","constants","cookieBase90"],"sourceRoot":""}