{"version":3,"file":"js/application-webpacker-b1a96fd8d56ad18d200e.js","sources":["webpack:///./app/javascript/components/ApprovedGames/index.js","webpack:///./app/javascript/components/CharacterBanner/index.js","webpack:///./app/javascript/components/CharacterImporter/index.js","webpack:///./app/javascript/components/Chat/ChatFormattingHelp/index.js","webpack:///./app/javascript/components/Chat/Message/MessageBody/index.js","webpack:///./app/javascript/components/Chat/Message/index.js","webpack:///./app/javascript/components/Chat/MessageCreate/index.js","webpack:///./app/javascript/components/Chat/MessageEdit/index.js","webpack:///./app/javascript/components/Chat/MessageInput/index.js","webpack:///./app/javascript/components/Chat/index.js","webpack:///./app/javascript/components/Chat/types.js","webpack:///./app/javascript/components/ConversationPreviews/index.js","webpack:///./app/javascript/components/GameTime/index.js","webpack:///./app/javascript/components/GamingSessionForm/index.js","webpack:///./app/javascript/components/GroupCreateForm/index.js","webpack:///./app/javascript/components/GroupDescription/index.js","webpack:///./app/javascript/components/GroupModIntro/index.js","webpack:///./app/javascript/components/GroupTags/index.js","webpack:///./app/javascript/components/Loading/index.js","webpack:///./app/javascript/components/PlatformMemberships/index.js","webpack:///./app/javascript/components/SignupForm/index.js","webpack:///./app/javascript/components/TimeAgo/index.js","webpack:///./app/javascript/components/UserFeed/index.js","webpack:///./app/javascript/components/UserFeedItem/FeedBody.js","webpack:///./app/javascript/components/UserFeedItem/FeedImage.js","webpack:///./app/javascript/components/UserFeedItem/Footer.js","webpack:///./app/javascript/components/UserFeedItem/Header.js","webpack:///./app/javascript/components/UserFeedItem/index.js","webpack:///./app/javascript/packs/application-webpacker.js","webpack:///./app/javascript/pages/ConversationPage/index.js","webpack:///./app/javascript/pages/GamingSessionsPage/index.js","webpack:///./app/javascript/pages/GroupModsPage/index.js","webpack:///./app/javascript/pages/GroupsPage/index.js","webpack:///./app/javascript/pages/HelpPage/index.js","webpack:///./app/javascript/pages/HqPage/index.js","webpack:///./app/javascript/pages/SherpaHqPage/index.js","webpack:///./app/javascript/utils/bungie_api.js","webpack:///./app/javascript/utils/user.js","webpack:///./app/javascript/components/CharacterBanner/styles.css?8498","webpack:///./app/javascript/components/Chat/Message/MessageBody/styles.css?4837","webpack:///./app/javascript/components/Chat/Message/styles.css?8e8a","webpack:///./app/javascript/components/Chat/MessageCreate/styles.css?8dba","webpack:///./app/javascript/components/Chat/MessageEdit/styles.css?e943","webpack:///./app/javascript/components/Chat/MessageInput/styles.css?e218","webpack:///./app/javascript/components/Chat/styles.css?9ba3","webpack:///./app/javascript/components/ConversationPreviews/styles.css?a558","webpack:///./app/javascript/components/GamingSessionForm/styles.css?8da1","webpack:///./app/javascript/components/Loading/styles.css?57e5","webpack:////tmp/build_42f209c5/node_modules/moment/locale|sync|/^\\.\\/.*$/"],"sourcesContent":["import React from \"react\";\nimport * as api from \"../../utils/api\";\n\n\nexport default class ApprovedGames extends React.Component {\n\n state = {\n gamesList: [],\n approvedGames: [],\n editing: false,\n loading: true\n }\n\n componentDidMount() {\n api.fetchGames().then((response) => {\n var games = response.map(({ id, name }) => ({ id, name }));\n this.setState({ gamesList: games })\n })\n\n if (this.props.groupId) {\n api.fetchApprovedGames({ groupId: this.props.groupId }).then((response) => {\n var gameIds = response.map(({ game_id }) => (game_id));\n this.setState({ approvedGames: gameIds, loading: false })\n })\n } else {\n api.fetchUserApprovedGames({ userId: this.props.userId }).then((response) => {\n var gameIds = response.map(({ game_id }) => (game_id));\n this.setState({ approvedGames: gameIds, loading: false })\n })\n }\n\n }\n\n updateApprovedGames = (gameId) => {\n if (this.state.approvedGames.includes(gameId)) {\n this.setState({ approvedGames: this.state.approvedGames.filter(i => i !== gameId) })\n } else {\n this.setState({ approvedGames: [...this.state.approvedGames, gameId] })\n }\n\n if (this.props.groupId) {\n api.updateApprovedGames({ groupId: this.props.groupId, gameId: gameId, headers: ReactOnRails.authenticityHeaders() }).then((response) => {\n })\n } else {\n api.updateApprovedGames({ userId: this.props.userId, gameId: gameId, headers: ReactOnRails.authenticityHeaders() }).then((response) => {\n })\n }\n\n };\n\n\n\n render() {\n\n if (this.state.loading) {\n return (\n
\n ...\n
\n )\n }\n\n return (\n
\n {this.state.editing ? (\n
\n {this.state.gamesList.map(game => (\n < button type=\"button\" className={\"btn btn-xs btn-glass \" + (this.state.approvedGames.includes(game.id) ? 'btn-primary' : 'btn-outline-primary')} onClick={() => this.updateApprovedGames(game.id)} key={game.id}>{game.name}\n )\n )\n }\n < button type=\"button\" className={\"btn btn-xs btn-glass btn-success\"} onClick={() => this.setState({ editing: !this.state.editing })} >done\n\n
\n ) : (\n
\n {this.state.gamesList.filter(game => (\n this.state.approvedGames.includes(game.id))).map(game => (\n < button type=\"button\" className={\"btn btn-xs btn-glass btn-dark\"} key={game.id}>{game.name}\n )\n )\n }\n {this.props.isModerator ? (\n < button type=\"button\" className={\"btn btn-xs btn-glass btn-dark\"} onClick={() => this.setState({ editing: !this.state.editing })} >\n ) : null}\n\n
\n )}\n
\n )\n }\n}","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport * as api from \"../../utils/api\";\n\n\nimport \"./styles.css\";\n\nconst CLASS_TYPES = [\"Titan\", \"Hunter\", \"Warlock\", \"Unknown\"];\n\nconst RACE_TYPES = [\"Human\", \"Awoken\", \"Exo\", \"Unknown\"];\n\nconst GENDER_TYPES = [\"Male\", \"Female\", \"Unknown\"];\n\nexport default class CharacterBanner extends React.Component {\n static propTypes = {\n onClick: PropTypes.func,\n character: PropTypes.shape({\n emblemBackgroundPath: PropTypes.string.isRequired,\n emblemPath: PropTypes.string.isRequired,\n classType: PropTypes.number.isRequired,\n raceType: PropTypes.number.isRequired,\n genderType: PropTypes.number.isRequired,\n light: PropTypes.number.isRequired,\n levelProgression: PropTypes.shape({\n level: PropTypes.number.isRequired\n })\n }).isRequired\n };\n\n constructor(props) {\n super(props);\n this.state = { characterRemoved: false };\n }\n\n render() {\n let { character } = this.props;\n\n if (this.state.characterRemoved) {\n return null\n }\n\n return (\n
\n this.onClick()}\n >\n {this.props.hideEmblem ? (\n
\n ) : (\n \n )}\n
\n
{CLASS_TYPES[character.classType]}
\n
\n {RACE_TYPES[character.raceType] +\n \" \" +\n GENDER_TYPES[character.genderType]}\n
\n
\n
\n
{character.light}
\n
Level {character.levelProgression.level}
\n
\n
\n \n );\n }\n\n onClick() {\n if (this.props.onClick) {\n this.props.onClick(this.props.character);\n } else {\n this.onRemove()\n }\n }\n\n onRemove() {\n if (this.props.authorizedUser) {\n // this.setState({ characterRemoved: true })\n api\n .removeCharacter(this.props.confirmedSessionId, this.props.characterId)\n .then(function (response) {\n window.location.reload();\n });\n }\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport Loading from \"../Loading\";\nimport CharacterBanner from \"../CharacterBanner\";\n\nimport * as api from \"../../utils/api\";\nimport {\n getDestiny2Player,\n getDestiny2Characters\n} from \"../../utils/bungie_api\";\n\nexport default class CharacterImporter extends React.Component {\n static propTypes = {\n gamertag: PropTypes.string.isRequired,\n membershipType: PropTypes.number.isRequired,\n confirmedSessionId: PropTypes.number.isRequired\n };\n\n constructor(props) {\n super(props);\n this.state = { characters: null };\n }\n\n componentWillMount() {\n getDestiny2Player(this.props.gamertag, this.props.membershipType)\n .then(player => {\n console.log(\"Player Found: \", player.membershipId)\n return getDestiny2Characters(\n player.membershipId,\n player.membershipType\n );\n })\n .then(characters => {\n this.setState({ characters: characters });\n })\n .catch(error => {\n console.error(\n \"Failed to retrieve characters for CharacterImporter.\",\n error\n );\n\n if (this.props.onError) {\n this.props.onError(error);\n }\n });\n }\n\n onCharacterSelected(character) {\n this.setState({ character });\n api\n .postCharacter(character, this.props.confirmedSessionId)\n .then(function (response) {\n window.location.reload();\n });\n }\n\n render() {\n if (!this.state.characters) {\n return (\n
\n \n
\n );\n } else {\n return (\n
\n {Object.values(this.state.characters).map(character => (\n this.onCharacterSelected(c)}\n hideEmblem={this.props.hideEmblem}\n />\n ))}\n
\n );\n }\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\n// import \"./styles.css\";\n\n// import message from \"../Message/MessageBody/styles.css\";\n\nimport \"../Message/MessageBody/styles.css\";\n\n\nexport default class ChatFormattingHelp extends React.Component {\n render() {\n const bold = {\n fontWeight: \"bold\"\n };\n\n return (\n
\n
\n \n show formatting help\n \n
\n \n
\n
\n
\n \n ×\n \n

Chat Formatting Help

\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n '@' followed by a user's gamertag:\n
\n @FearBroner\n
\n @FearBroner\n
\n Wrap the username in brackets if it contains a space or\n '#':\n
\n @[Pac Man]\n
\n @Pac Man\n
\n Emoji (see{\" \"}\n \n Emoji Cheat Sheet\n )\n
\n :smile:\n
😄
~~spoiler text~~\n spoiler text\n
_underlined text_\n \n underlined text\n \n
**bold text**\n bold text\n
*italicized text*\n italicized text\n
superscript ^text^\n superscript text\n
-strikethrough text-\n \n strikethrough text\n \n
`code`\n code\n
\n
\n
\n \n Close\n \n
\n
\n
\n
\n \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Tweet } from \"react-twitter-widgets\";\n\nimport reactStringReplace from \"react-string-replace-recursively\";\nimport emoji from \"node-emoji\";\n\nimport \"./styles.css\";\n\nfunction usernameMentionMatcherFn(rawText, processed, key) {\n let username = rawText;\n return (\n \n @{username}\n \n );\n}\n\nfunction urlMatcherFn(rawText, processed, key) {\n let url = rawText;\n return (\n \n {url}\n \n );\n}\n\nconst config = {\n spoiler: {\n pattern: /\\B~~(.+?)~~\\B/gim,\n matcherFn: (rawText, processed, key) => {\n return (\n \n {processed}\n \n );\n }\n },\n bold: {\n pattern: /\\B\\*\\*(.+?)\\*\\*\\B/gim,\n matcherFn: (rawText, processed, key) => {\n return (\n \n {processed}\n \n );\n }\n },\n italics: {\n pattern: /\\B\\*(.+?)\\*\\B/gim,\n matcherFn: (rawText, processed, key) => {\n return (\n \n {processed}\n \n );\n }\n },\n underline: {\n pattern: /\\b_(.+?)_\\b/gim,\n matcherFn: (rawText, processed, key) => {\n return (\n \n {processed}\n \n );\n }\n },\n superscript: {\n pattern: /\\B\\^(.+?)\\^\\B/gim,\n matcherFn: (rawText, processed, key) => {\n return {processed};\n }\n },\n strikeThrough: {\n pattern: /\\B-(\\S.+?\\S)-\\B/gim,\n matcherFn: (rawText, processed, key) => {\n return (\n \n {processed}\n \n );\n }\n },\n code: {\n pattern: /\\B`(.+?)`\\B/gim,\n matcherFn: (rawText, processed, key) => {\n return (\n \n {processed}\n \n );\n }\n },\n emoji: {\n pattern: /(:\\w+?:)/gim,\n matcherFn: (rawText, processed, key) => {\n return emoji.get(rawText);\n }\n },\n\n userMention: {\n pattern: /\\B@([a-z0-9_\\-#]+?)\\b/gim,\n matcherFn: usernameMentionMatcherFn\n },\n userMentionBracketed: {\n pattern: /\\B@\\[([a-z0-9_\\-# ]+?)\\]\\B/gim,\n matcherFn: usernameMentionMatcherFn\n },\n gifv: {\n pattern: /(\\bhttps?:\\/\\/\\S+?\\.gifv\\b)/gim,\n matcherFn: (rawText, processed, key) => {\n return ;\n }\n },\n image: {\n pattern: /(\\bhttps?:\\/\\/\\S+?\\.(?:png|jpg|gif|jpeg)\\b)/gim,\n matcherFn: (rawText, processed, key) => {\n return ;\n }\n },\n tweet: {\n pattern: /\\bhttps?:\\/\\/twitter\\.com\\/(?:#!\\/)?\\w+\\/status(?:es)?\\/(\\d+)\\b/gim,\n matcherFn: (rawText, processed, key) => {\n return (\n
\n \n
\n );\n }\n },\n youtube: {\n pattern: /(?:https?:\\/\\/)?(?:m\\.|www\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))((?:\\w|-){11})(?:\\S+)?/gim,\n matcherFn: (rawText, processed, key) => {\n let videoId = rawText;\n return (\n \n );\n }\n },\n url: {\n pattern: /(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]\\.[^\\s]{2,})/,\n matcherFn: urlMatcherFn\n }\n};\n\nconst parseMessageText = reactStringReplace(config);\n\nexport default class MessageBody extends React.Component {\n static propTypes = {\n text: PropTypes.string.isRequired\n };\n\n render() {\n let { text } = this.props;\n\n try {\n return parseMessageText(text);\n } catch (e) {\n console.error(\"Error parsing message text:\", e);\n }\n\n return text;\n }\n}\n\nclass MessageImage extends React.Component {\n static propTypes = {\n source: PropTypes.string.isRequired\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n error: false\n };\n }\n\n onError = e => {\n this.setState({ error: true });\n };\n\n render() {\n let { source } = this.props;\n\n if (this.state.error) {\n return source;\n } else {\n return (\n \n );\n }\n }\n}\n\nclass MessageGifv extends React.Component {\n static propTypes = {\n source: PropTypes.string.isRequired\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n error: false\n };\n }\n\n onError = e => {\n this.setState({ error: true });\n };\n\n render() {\n let { source } = this.props;\n\n if (this.state.error) {\n return source;\n } else {\n let sourceNoExt = source.replace(/\\.gifv$/i, \"\");\n return (\n \n \n \n );\n }\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport MessageEdit from \"../MessageEdit\";\nimport MessageBody from \"./MessageBody\";\nimport TimeAgo from \"../../TimeAgo\";\n\nimport { ChatMessagePropType } from \"../types\";\n\nimport \"./styles.css\";\n\nconst DEFAULT_AVATAR_IMG = \"https://www.the100.io/default-avatar.png\";\n\nexport default class Message extends React.Component {\n static propTypes = {\n onRemoveMessage: PropTypes.func.isRequired,\n onEditMessage: PropTypes.func.isRequired,\n onStartEditMessage: PropTypes.func.isRequired,\n canEdit: PropTypes.bool.isRequired,\n message: PropTypes.shape(ChatMessagePropType).isRequired,\n users: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired,\n editing: PropTypes.bool.isRequired\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n avatarUrl: this.props.message.avatarUrl\n };\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.avatarUrl !== this.props.avatarUrl) {\n this.setState({ avatarUrl: nextProps.avatarUrl });\n }\n }\n\n onImgError = e => {\n if (this.state.avatarUrl !== DEFAULT_AVATAR_IMG) {\n this.setState({ avatarUrl: DEFAULT_AVATAR_IMG });\n }\n };\n\n onEditClick = e => {\n e.preventDefault();\n\n this.props.onStartEditMessage(this.props.message.key);\n };\n\n onRemoveClick = e => {\n e.preventDefault();\n\n this.props.onRemoveMessage(this.props.message.key);\n };\n\n renderEditing() {\n return (\n
\n \n this.props.onEditMessage(this.props.message.key, newText)\n }\n users={this.props.users}\n />\n
\n );\n }\n\n renderNormal() {\n let userUrl =\n this.props.message.username === \"guest\"\n ? \"#\"\n : \"/users/\" + this.props.message.uid;\n\n let menu = !this.props.canEdit ? null : (\n
\n \n \n \n \n
  • \n Edit\n
  • \n
  • \n Remove\n
  • \n \n
    \n );\n\n return (\n \n
    \n \n \n \n
    \n
    \n \n {this.props.message.username}\n \n \n {menu}\n
    \n \n
    \n
    \n \n );\n }\n\n render() {\n if (this.props.editing) {\n return this.renderEditing();\n } else {\n return this.renderNormal();\n }\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport MessageInput from \"../MessageInput\";\n\nimport \"./styles.css\";\n\n// import inputStyles from \"../MessageInput/styles.css\";\n\nexport default class MessageCreate extends React.Component {\n static propTypes = {\n createAllowed: PropTypes.bool.isRequired,\n onSubmit: PropTypes.func.isRequired,\n users: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: \"\"\n };\n }\n\n onChange(e, value) {\n this.setState({ value });\n }\n\n onSubmit(e) {\n e.preventDefault();\n\n this.props.onSubmit(this.state.value);\n this.setState({\n value: \"\"\n });\n }\n\n render() {\n if (this.props.createAllowed) {\n return (\n
    this.onSubmit(e)}>\n
    \n this.onChange(e, value)}\n value={this.state.value}\n users={this.props.users}\n />\n
    \n \n
    \n );\n } else {\n return (\n
    e.preventDefault()}>\n
    \n
    \n \n
    \n
    \n \n Chat\n \n \n );\n }\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport MessageInput from \"../MessageInput\";\n\nimport { ChatMessagePropType } from \"../types\";\n\nimport \"./styles.css\";\n\nexport default class MessageEdit extends React.Component {\n static propTypes = {\n message: PropTypes.shape(ChatMessagePropType).isRequired,\n onSubmit: PropTypes.func.isRequired,\n users: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: this.props.message.text\n };\n }\n\n onChange = (e, value) => {\n this.setState({ value });\n };\n\n onSubmit = e => {\n e.preventDefault();\n\n this.props.onSubmit(this.state.value);\n };\n\n render() {\n return (\n
    \n
    \n \n
    \n \n
    \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { MentionsInput, Mention } from \"react-mentions\";\n\n// import styles from \"./styles.css\";\nimport \"./styles.css\";\n\n\nexport default class MessageInput extends React.Component {\n static propTypes = {\n users: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired,\n onChange: PropTypes.func,\n value: PropTypes.string\n };\n\n static defaultProps = {\n onChange: null,\n value: \"\"\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n value: this.props.value\n };\n }\n\n onChange = (e, value) => {\n this.setState({ value });\n if (this.props.onChange) {\n this.props.onChange(e, value);\n }\n };\n\n componentWillReceiveProps(newProps) {\n if (newProps.value !== this.state.value) {\n this.setState({ value: newProps.value });\n }\n }\n\n render() {\n return (\n \"@\" + username}\n value={this.state.value}\n onChange={this.onChange}\n >\n ({ id: u, display: u }))}\n className=\"input__mention\"\n markup=\"@[__display__]\"\n />\n \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport ChatFormattingHelp from \"./ChatFormattingHelp\";\nimport Message from \"./Message\";\nimport MessageCreate from \"./MessageCreate\";\n\nimport Tinycon from \"tinycon\";\nimport Visiblity from \"visibilityjs\";\n\nimport * as api from \"../../utils/api\";\nimport {\n signIn,\n getUserChatPermission,\n getUserChatRole\n} from \"../../utils/user\";\n\nimport \"./styles.css\";\n\nconst NOTIFICATION_STARTUP_DELAY = 5000;\nconst NOTIFICATION_TIMEOUT = 5000;\n\nTinycon.setOptions({\n fallback: false\n});\n\nexport default class Chat extends React.Component {\n static propTypes = {\n room: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired,\n show_input: PropTypes.bool.isRequired,\n token: PropTypes.string,\n onMessageCreated: PropTypes.func\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n messages: {},\n text: \"\",\n uid: null,\n username: \"guest\",\n pwnmaster: false,\n role: \"user\",\n permission: \"\",\n avatarUrl: \"/default-avatar.png\",\n users: new Set(),\n editingKey: null,\n messageCount: 25\n };\n\n this.onLoadTime = new Date().getTime() + NOTIFICATION_STARTUP_DELAY;\n\n this.requestedNotificationPermission = false;\n this.lastNotification = null;\n\n this.unreadMessageCount = 0;\n this.visibilityId = null;\n\n this.messagesRef = firebase.database().ref(this.props.url);\n this.messagesQuery = null;\n }\n\n requestNotificationPermission() {\n if (!this.requestedNotificationPermission) {\n this.requestedNotificationPermission = true;\n\n if (window.Notification && window.Notification.permission !== \"granted\") {\n Notification.requestPermission().then(status => {\n console.log(\"Notification Permission:\", status);\n });\n }\n }\n }\n\n updateFavicon() {\n Tinycon.setBubble(this.unreadMessageCount);\n }\n\n addMessage(dataSnapshot, adding) {\n let key = dataSnapshot.key;\n let message = dataSnapshot.val();\n message.key = key;\n\n this.setState(prevState => {\n let { messages, users } = prevState;\n messages[key] = message;\n users.add(message.username);\n return {\n messages: messages,\n users: users\n };\n });\n\n if (\n Visiblity.hidden() &&\n adding &&\n this.onLoadTime < message.createdAt &&\n this.state.uid !== message.uid\n ) {\n this.unreadMessageCount += 1;\n this.updateFavicon();\n\n if (window.Notification && window.Notification.permission === \"granted\") {\n if (this.lastNotification) {\n this.lastNotification.close();\n }\n\n let notification = new Notification(message.username, {\n body: message.text,\n icon: message.avatarUrl,\n requireInteraction: false\n });\n notification.addEventListener(\"click\", () => {\n notification.close();\n window.focus();\n });\n setTimeout(() => notification.close(), NOTIFICATION_TIMEOUT);\n\n this.lastNotification = notification;\n }\n }\n }\n\n onMessageAdded = dataSnapshot => {\n this.addMessage(dataSnapshot, true);\n };\n\n onMessageChanged = dataSnapshot => {\n this.addMessage(dataSnapshot, false);\n };\n\n onMessageRemoved = dataSnapshot => {\n let key = dataSnapshot.key;\n this.setState(prevState => {\n let { messages } = prevState;\n delete messages[key];\n return { message: messages };\n });\n };\n\n retrieveMessages() {\n if (this.messagesQuery) {\n this.messagesQuery.off();\n }\n this.messagesQuery = this.messagesRef\n .orderByChild(\"createdAt\")\n .limitToLast(this.state.messageCount);\n\n this.messagesQuery.on(\"child_added\", this.onMessageAdded);\n this.messagesQuery.on(\"child_changed\", this.onMessageChanged);\n this.messagesQuery.on(\"child_removed\", this.onMessageRemoved);\n }\n\n componentDidMount() {\n document.addEventListener(\"keydown\", this.onKeyDown);\n\n signIn(this.props.token, true)\n .then(user => {\n this.setState({\n uid: user.uid,\n username: user.username,\n pwnmaster: user.pwnmaster,\n role: getUserChatRole(user, this.props.room, \"user\"),\n permission: getUserChatPermission(user, this.props.room, \"RW\"),\n avatarUrl: user.avatar\n });\n\n this.retrieveMessages();\n })\n .catch(error => {\n console.error(\"An error occurred during sign in:\", error);\n });\n\n this.visibilityId = Visiblity.change(() => {\n if (!Visiblity.hidden()) {\n this.unreadMessageCount = 0;\n this.updateFavicon();\n }\n });\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (this.state.messageCount !== prevState.messageCount) {\n this.retrieveMessages();\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener(\"keydown\", this.onKeyDown);\n\n if (this.messagesQuery) {\n this.messagesQuery.off();\n }\n\n Visiblity.unbind(this.visibilityId);\n this.visibilityId = null;\n }\n\n onMessageCreate = text => {\n text = text && text.trim();\n if (text) {\n let newMessage = {\n text: text,\n username: this.state.username,\n avatarUrl: this.state.avatarUrl,\n uid: this.state.uid,\n role: this.state.role,\n createdAt: firebase.database.ServerValue.TIMESTAMP\n };\n this.messagesRef\n .push(newMessage)\n .then(() => {\n if (this.props.onMessageCreated) {\n this.props.onMessageCreated(newMessage);\n }\n let match = text.match(\n /\\B@([a-z0-9_\\-#]+?\\b|\\[[a-z0-9_\\-# ]+?\\]\\B)/gim\n );\n if (match) {\n let recipientUsername = match[0].replace(/[@\\[\\]]/gim, \"\");\n api\n .postUsernameMention(\n this.props.url,\n this.state.username,\n recipientUsername,\n text\n )\n .catch(error => {\n console.error(\"Failed to post username mention:\", error);\n });\n }\n })\n .catch(error => {\n console.error(\"Failed to send message:\", error);\n });\n\n this.requestNotificationPermission();\n }\n };\n\n onStartEditMessage = key => {\n this.setState({ editingKey: key });\n };\n\n onEditMessage = (key, text) => {\n text = text && text.trim();\n if (text) {\n this.messagesRef\n .child(key)\n .update({\n text: text,\n edited: true,\n editedAt: firebase.database.ServerValue.TIMESTAMP\n })\n .catch(error => {\n console.error(\"Failed to edit message:\", error);\n });\n this.setState({ editingKey: null });\n\n this.requestNotificationPermission();\n }\n };\n\n onKeyDown = e => {\n if (e.key === \"Escape\") {\n this.setState({ editingKey: null });\n }\n };\n\n onRemoveMessage = key => {\n this.messagesRef\n .child(key)\n .remove()\n .catch(error => {\n console.error(\"Failed to remove message:\", error);\n });\n\n if (key === this.state.editingKey) {\n this.setState({ editingKey: null });\n\n this.requestNotificationPermission();\n }\n };\n\n onLoadMoreMessages = e => {\n this.setState(prevState => {\n let messageCount = prevState.messageCount + 25;\n return { messageCount: messageCount };\n });\n\n this.requestNotificationPermission();\n };\n\n render() {\n let users = Array.from(this.state.users);\n users.sort((a, b) => {\n return a.toLowerCase().localeCompare(b.toLowerCase());\n });\n\n let messages = Object.entries(this.state.messages).sort(\n ([keyA, messageA], [keyB, messageB]) => {\n return messageB.createdAt - messageA.createdAt;\n }\n );\n\n let createAllowed =\n this.props.room.startsWith(\"game-\") ||\n this.state.permission.includes(\"W\");\n let showInput = this.props.show_input && this.state.uid;\n\n return (\n
    \n
    \n {!showInput ? null : (\n \n )}\n {!showInput || !createAllowed ? null : }\n
      \n {messages.map(([key, message]) => (\n \n ))}\n
    \n
    \n {messages.length < this.state.messageCount ? null : (\n \n LOAD MORE MESSAGES\n \n )}\n
    \n );\n }\n}\n","import PropTypes from \"prop-types\";\n\nexport const ChatMessagePropType = {\n key: PropTypes.string.isRequired,\n avatarUrl: PropTypes.string.isRequired,\n createdAt: PropTypes.number.isRequired,\n role: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n uid: PropTypes.string.isRequired,\n username: PropTypes.string.isRequired\n};\n","import React from \"react\";\nimport propTypes from \"prop-types\";\n\nimport TimeAgo from \"../TimeAgo\";\n\nimport { signIn } from \"../../utils/user\";\n\nimport \"./styles.css\";\n\nconst ConversationpropTypes = {\n recipientGamertag: propTypes.string.isRequired,\n conversationDbUrl: propTypes.string.isRequired,\n conversationLink: propTypes.string.isRequired\n};\n\nexport default class ConversationPreviews extends React.Component {\n static propTypes = {\n token: propTypes.string.isRequired,\n conversations: propTypes.arrayOf(\n propTypes.shape(ConversationpropTypes).isRequired\n ).isRequired\n };\n\n constructor(props) {\n super(props);\n\n this.state = { user: null };\n }\n\n componentDidMount() {\n signIn(this.props.token, false)\n .then(user => {\n this.setState({ user: user });\n })\n .catch(error => {\n console.error(\"An error occurred during sign in:\", error);\n });\n }\n\n render() {\n if (this.state.user) {\n return this.props.conversations.map(convo => (\n \n ));\n } else {\n return this.props.conversations.map(convo => (\n \n ));\n }\n }\n}\n\nconst SimpleConversationPreview = props => {\n return (\n \n );\n};\nSimpleConversationPreview.propTypes = ConversationpropTypes;\n\nclass ConversationPreview extends React.Component {\n static propTypes = ConversationpropTypes;\n\n constructor(props) {\n super(props);\n\n this.messageQuery = null;\n\n this.state = {\n lastMessage: null\n };\n }\n\n onLastMessageAddedChanged = dataSnapshot => {\n let key = dataSnapshot.key;\n let message = dataSnapshot.val();\n message.key = key;\n this.setState({ lastMessage: message });\n };\n\n onLastMessageRemoved = dataSnapshot => {\n let key = dataSnapshot.key;\n let message = dataSnapshot.val();\n message.key = key;\n this.setState(prevState => {\n if (prevState.lastMessage.key === key) {\n return { lastMessage: null };\n }\n });\n };\n\n componentDidMount() {\n if (this.messageQuery) {\n this.messageQuery.off();\n }\n\n this.messageQuery = firebase\n .database()\n .ref(this.props.conversationDbUrl)\n .orderByChild(\"createdAt\")\n .limitToLast(1);\n\n this.messageQuery.on(\"child_added\", this.onLastMessageAddedChanged);\n this.messageQuery.on(\"child_changed\", this.onLastMessageAddedChanged);\n this.messageQuery.on(\"child_removed\", this.onLastMessageRemoved);\n }\n\n componentWillUnmount() {\n if (this.messageQuery) {\n this.messageQuery.off();\n }\n }\n\n render() {\n if (this.state.lastMessage) {\n return (\n
    \n

    \n \n {this.props.recipientGamertag}\n \n

    \n \n \n \n

    {this.state.lastMessage.text}

    \n \n full conversation »\n \n
    \n );\n } else {\n return ;\n }\n }\n}\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactOnRails from 'react-on-rails';\nimport moment from \"moment\";\nimport \"moment-timezone\";\nimport ReactTooltip from \"react-tooltip\";\nimport Loading from \"../Loading\";\nimport * as api from \"../../utils/api\";\n\n\nexport default class GameTime extends React.Component {\n static propTypes = {\n groupName: PropTypes.string,\n currentUserGamertag: PropTypes.string,\n groupId: PropTypes.number,\n timeZone: PropTypes.string,\n groupTimeZone: PropTypes.string\n };\n\n state = {\n timeSlots: {},\n timeSlotKeys: [],\n chosenTimeSlots: [],\n start_range: 12,\n end_range: 24,\n timeFormat: 'h a',\n loading: true,\n };\n\n componentDidMount() {\n this.fetchTimeSlots()\n }\n\n fetchTimeSlots = () => {\n api.fetchTimeSlots({ groupId: this.props.groupId, groupName: this.props.groupName, timeZone: newTimeZone, groupTimeZone: this.props.groupTimeZone }).then((response) => {\n let timeSlotKeys = Object.keys(response).slice(0, 7)\n let chosenTimeSlots = []\n\n timeSlotKeys.forEach(timeSlotKey => {\n response[timeSlotKey].forEach(timeSlot => {\n\n if (timeSlot.data != null && timeSlot.data[\"usernames\"] != null && timeSlot.data[\"usernames\"].includes(this.props.currentUserGamertag)) {\n chosenTimeSlots.push(timeSlot)\n }\n });\n })\n\n this.setState({ timeSlots: response, chosenTimeSlots: chosenTimeSlots, timeSlotKeys: timeSlotKeys, loading: false })\n })\n }\n\n\n updateTimeSlot = (timeSlot) => {\n if (this.state.chosenTimeSlots.includes(timeSlot)) {\n this.setState({ chosenTimeSlots: this.state.chosenTimeSlots.filter(t => t !== timeSlot) })\n } else {\n this.setState({ chosenTimeSlots: [...this.state.chosenTimeSlots, timeSlot] });\n }\n\n\n // let newTime = moment(\"2020-12-29T02:46:13Z\").format();\n\n // let dayKey = moment(newTime).format(\"YYYY-MM-DD\")\n\n // let newTimeSlot = this.state.timeSlots[dayKey].find(t => moment(t.start_time).format(\"HH\") == moment(newTime).format(\"HH\"))\n\n api.updateTimeSlot({ groupId: this.props.groupId, timeSlot: timeSlot, currentUserGamertag: this.props.currentUserGamertag, headers: ReactOnRails.authenticityHeaders() }).then((response) => {\n this.fetchTimeSlots()\n })\n };\n\n switchTimeFormat = () => {\n this.state.timeFormat == \"h a\" ? this.setState({ timeFormat: 'HH' }) : this.setState({ timeFormat: 'h a' })\n }\n\n\n\n render() {\n if (this.state.loading) {\n return (\n
    \n

    Loading...

    \n\n

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n );\n }\n\n return (\n
    \n \n\n
    \n
    \n \n\n \n\n \n\n {this.props.fullScreen ? null : (\n \n )}\n
    \n\n
    \n {this.state.timeSlotKeys.map(timeSlotKey => (\n
    \n
    {moment(timeSlotKey).format(\"ddd\")}
    \n {\n this.state.timeSlots[timeSlotKey].filter(t => moment(t.start_time).format(\"HH\") >= this.state.start_range && moment(t.start_time).format(\"HH\") <= this.state.end_range).map(timeSlot => (\n\n \n )\n )\n }\n
    \n\n ))}\n
    \n
    \n
    \n );\n }\n}\n\nclass TimeSlot extends React.Component {\n\n state = {\n deleting: false\n }\n\n componentDidMount() {\n ReactTooltip.rebuild()\n }\n\n updateTimeSlot = (timeSlot) => {\n if (this.props.chosenTimeSlots.includes(timeSlot)) {\n this.setState({ deleting: true })\n setTimeout(() => this.setState({ deleting: false }), 2000);\n }\n this.props.updateTimeSlot(timeSlot)\n }\n\n\n render() {\n\n const usernames = this.props.timeSlot.data != null && this.props.timeSlot.data[\"usernames\"] != null && this.props.timeSlot.data[\"usernames\"].length > 0 ? this.props.timeSlot.data[\"usernames\"] : null\n let opacity = usernames ? (40 + (usernames.length * 10)) : 50\n let buttonStyle = usernames != null ? ' btn-primary' : ' btn-dark'\n let borderStyle = this.props.chosenTimeSlots.includes(this.props.timeSlot) ? ' border border-success' : this.state.deleting ? ' border border-danger' : ''\n\n return (\n < button data-tip={usernames} type=\"button\" className={\"mt-2 p-0 btn btn-glass btn-xs opacity-\" + opacity + buttonStyle + borderStyle} onClick={() => this.updateTimeSlot(this.props.timeSlot)} >{moment(this.props.timeSlot.start_time).format(this.props.timeFormat)}\n )\n }\n}","// import PropTypes from 'prop-types';\nimport React from \"react\";\nimport ReactOnRails from \"react-on-rails\";\nimport Select from \"react-select\";\nimport DatePicker from \"react-datepicker\";\nimport \"./styles.css\";\n\nimport Loading from \"../Loading\";\nimport * as api from \"../../utils/api\";\n\nexport default class GamingSessionForm extends React.Component {\n state = {\n crossplay: this.props.crossplay || false,\n createdFrom: (this.props.gaming_session && this.props.gaming_session.created_from) || \"website-v2\",\n platformsList: [\n { label: \"XBOX\", value: \"xbox-one\" },\n { label: \"PSN\", value: \"ps4\" },\n { label: \"PC\", value: \"pc\" },\n { label: \"STADIA\", value: \"stadia\" },\n ],\n platform: this.props.gaming_session\n ? { label: \"\", value: this.props.gaming_session.platform }\n : this.props.platform,\n gamesData: {},\n gamesList: \"\",\n activitiesList: null,\n selectedGame: null,\n selectedActivity: this.props.gaming_session && {\n label: this.props.gaming_session.category,\n value: this.props.gaming_session.category,\n },\n description: this.props.gaming_session && this.props.gaming_session.name ? this.props.gaming_session.name : \"\",\n lightLevel:\n this.props.gaming_session && this.props.gaming_session.light_level ? this.props.gaming_session.light_level : \"\",\n when: this.props.gaming_session ? (this.props.gaming_session.start_asap ? \"asap\" : \"scheduled\") : null,\n displayWhenHelp: false,\n startDate: this.props.gaming_session ? Date.parse(this.props.gaming_session.start_time) : new Date(),\n selectedGroup: this.props.group || (this.props.groups && this.props.groups[0]),\n displayVisibilityHelp: false,\n publicVisible: this.props.gaming_session\n ? this.props.gaming_session.public_visible\n : localStorage.getItem(\"publicVisible\") == \"true\"\n ? true\n : false,\n allianceVisible: this.props.gaming_session\n ? this.props.gaming_session.alliance_visible\n : localStorage.getItem(\"allianceVisible\") == \"true\"\n ? true\n : false,\n groupVisible: this.props.gaming_session\n ? this.props.gaming_session.group_visible\n : localStorage.getItem(\"groupVisible\") == \"true\"\n ? true\n : false,\n friendsVisible: this.props.gaming_session\n ? this.props.gaming_session.friends_visible\n : localStorage.getItem(\"friendsVisible\") == \"true\"\n ? true\n : false,\n privateVisible: this.props.gaming_session\n ? this.props.gaming_session.private_visible\n : localStorage.getItem(\"privateVisible\") == \"true\"\n ? true\n : false,\n beginnersWelcome: this.props.gaming_session ? this.props.gaming_session.beginners_welcome : false,\n sherpaRequested: this.props.gaming_session ? this.props.gaming_session.sherpa_requested : false,\n headsetsRequired: this.props.gaming_session ? this.props.gaming_session.mic_required : true,\n discordInviteLink: this.props.gaming_session ? this.props.gaming_session.discord_invite_link : \"\",\n delayPosting: this.props.gaming_session ? this.props.gaming_session.delay_game_visibility : false,\n autoPublic: this.props.gaming_session ? this.props.gaming_session.make_auto_public : false,\n autoAlliance: this.props.gaming_session ? this.props.gaming_session.make_auto_alliance_visible : false,\n partySize: this.props.gaming_session ? this.props.gaming_session.party_size : \"1\",\n displayPartySizeHelp: false,\n displayPartySizeDecreaseWarning: false,\n displayPartySizeIncreaseWarning: false,\n displaySupporterMessage: false,\n // teamSizes: [...Array(100).keys()].map(i => { return { label: i, value: i } }),\n // teamSize: this.props.gaming_session ? { label: this.props.gaming_session.team_size, value: this.props.gaming_session.team_size } : null,\n teamSize: this.props.gaming_session ? this.props.gaming_session.team_size : null,\n step: 1,\n errors: \"\",\n loading: true,\n gamingSession: this.props.gaming_session,\n };\n\n componentDidMount() {\n api.fetchGames().then((response) => {\n var menuItems = response.map(({ id, name }) => ({\n value: id,\n label: name,\n }));\n let selectedGame = this.state.gamingSession\n ? menuItems.find((x) => x.value == this.state.gamingSession.game_id)\n : menuItems.find((x) => x.value == this.props.gameId);\n\n this.setState(\n {\n gamesData: response,\n gamesList: menuItems,\n selectedGame: selectedGame,\n },\n () =>\n this.setState({\n activitiesList: this.fetchActivities(this.state.selectedGame),\n loading: false,\n })\n );\n });\n }\n\n updatePlatform = ({ platform }) => {\n this.setState({ platform });\n };\n\n updatePartySize = (partySize) => {\n if (\n this.props.gaming_session &&\n this.props.hasWaitlist &&\n this.props.gaming_session.party_size != partySize &&\n partySize < this.state.partySize\n ) {\n this.setState({\n partySize,\n displayPartySizeDecreaseWarning: true,\n displayPartySizeIncreaseWarning: false,\n });\n } else if (\n this.props.gaming_session &&\n this.props.isFull &&\n this.props.gaming_session.party_size != partySize &&\n partySize > this.state.partySize\n ) {\n this.setState({\n partySize,\n displayPartySizeIncreaseWarning: true,\n displayPartySizeDecreaseWarning: false,\n });\n } else {\n this.setState({\n partySize,\n displayPartySizeIncreaseWarning: false,\n displayPartySizeDecreaseWarning: false,\n });\n }\n };\n\n updateWhen = (when) => {\n this.setState({ when });\n };\n\n setStartDate = (startDate) => {\n this.setState({ startDate });\n };\n\n toggleAutoPublic = () => {\n if (this.state.publicVisible) {\n this.setState({\n autoPublicError: this.state.autoPublicError ? null : \"This game is already publicly visible.\",\n });\n } else {\n this.setState({ autoPublic: !this.state.autoPublic });\n }\n };\n\n toggleAutoAlliance = () => {\n if (this.state.allianceVisible) {\n this.setState({\n autoAllianceError: this.state.autoAllianceError ? null : \"This game is already visible to your alliance.\",\n });\n } else {\n this.setState({ autoAlliance: !this.state.autoAlliance });\n }\n };\n\n togglePublicVisible = () => {\n localStorage.setItem(\"publicVisible\", !this.state.publicVisible);\n\n this.setState({ publicVisible: !this.state.publicVisible }, () => {\n this.setState({\n privateVisible: this.state.publicVisible ? false : this.state.privateVisible,\n });\n localStorage.setItem(\"privateVisible\", this.state.publicVisible ? false : this.state.privateVisible);\n });\n };\n\n toggleAllianceVisible = () => {\n if (!this.props.group && !this.props.groups) {\n this.setState({\n noGroupsError: this.state.noGroupsError ? null : \"You're not currently a member of any groups or alliances.\",\n });\n } else {\n localStorage.setItem(\"allianceVisible\", !this.state.allianceVisible);\n this.setState({ allianceVisible: !this.state.allianceVisible }, () => {\n this.setState({\n privateVisible: this.state.allianceVisible ? false : this.state.privateVisible,\n groupVisible: this.state.allianceVisible ? true : this.state.groupVisible,\n });\n localStorage.setItem(\"privateVisible\", this.state.allianceVisible ? false : this.state.privateVisible);\n localStorage.setItem(\"groupVisible\", this.state.allianceVisible ? true : this.state.groupVisible);\n });\n }\n };\n\n toggleGroupVisible = () => {\n if (!this.props.group && !this.props.groups) {\n this.setState({\n noGroupsError: this.state.noGroupsError ? null : \"You're not currently a member of any groups or alliances.\",\n });\n } else {\n localStorage.setItem(\"groupVisible\", !this.state.groupVisible);\n\n this.setState({ groupVisible: !this.state.groupVisible }, () => {\n this.setState({\n privateVisible: this.state.groupVisible ? false : this.state.privateVisible,\n allianceVisible: this.state.groupVisible ? this.state.allianceVisible : false,\n });\n\n localStorage.setItem(\"privateVisible\", this.state.groupVisible ? false : this.state.privateVisible);\n localStorage.setItem(\"allianceVisible\", this.state.groupVisible ? this.state.allianceVisible : false);\n });\n }\n };\n\n toggleFriendsVisible = () => {\n localStorage.setItem(\"friendsVisible\", !this.state.friendsVisible);\n\n this.setState({ friendsVisible: !this.state.friendsVisible }, () => {\n this.setState({\n privateVisible: this.state.friendsVisible ? false : this.state.privateVisible,\n });\n localStorage.setItem(\"privateVisible\", !this.state.privateVisible);\n });\n };\n\n togglePrivateVisible = () => {\n if (this.state.privateVisible) {\n this.setState({ privateVisible: false });\n localStorage.setItem(\"privateVisible\", false);\n } else {\n this.setState({\n privateVisible: true,\n publicVisible: false,\n allianceVisible: false,\n groupVisible: false,\n friendsVisible: false,\n });\n localStorage.setItem(\"privateVisible\", true);\n localStorage.setItem(\"publicVisible\", false);\n localStorage.setItem(\"allianceVisible\", false);\n localStorage.setItem(\"groupVisible\", false);\n localStorage.setItem(\"friendsVisible\", false);\n }\n };\n\n setStep = (step) => {\n this.setState({ step });\n };\n\n fetchActivities = (selected) => {\n // return if selected game is null\n if (!selected) {\n return [];\n }\n let selectedGame = this.state.gamesData.find((x) => x.id == selected.value);\n let activities = selectedGame.activities.sort().map((name) => ({ value: name, label: name }));\n return activities;\n };\n\n handleChangeGame = (selectedGame) => {\n let activities = this.fetchActivities(selectedGame);\n this.setState(\n {\n selectedGame,\n activitiesList: activities,\n selectedActivity: null,\n loading: true,\n },\n () => this.setState({ loading: false })\n );\n };\n\n handleChangeActivity = (selectedActivity) => {\n this.setState({ selectedActivity });\n };\n\n handleChangeGroup = (selectedGroup) => {\n this.setState({ selectedGroup });\n };\n\n // handleChangeTeamSize = teamSize => {\n // this.setState(\n // { teamSize })\n // };\n\n handleOnClick = (onClick) => {\n onClick();\n this.updateWhen(\"scheduled\");\n };\n\n formReady = () => {\n const {\n selectedGame,\n selectedActivity,\n when,\n publicVisible,\n allianceVisible,\n groupVisible,\n friendsVisible,\n privateVisible,\n teamSize,\n } = this.state;\n\n let who = publicVisible || allianceVisible || groupVisible || friendsVisible || privateVisible;\n\n let teamSizeSelected =\n !selectedActivity ||\n (selectedActivity && selectedActivity.value != \"Other\") ||\n (selectedActivity && selectedActivity.value == \"Other\" && teamSize);\n\n return when && who && teamSizeSelected ? true : false;\n };\n\n onSubmit = () => {\n const {\n createdFrom,\n selectedGame,\n platform,\n description,\n lightLevel,\n selectedActivity,\n startDate,\n when,\n selectedGroup,\n beginnersWelcome,\n sherpaRequested,\n headsetsRequired,\n partySize,\n teamSize,\n discordInviteLink,\n publicVisible,\n allianceVisible,\n groupVisible,\n friendsVisible,\n privateVisible,\n delayPosting,\n autoPublic,\n autoAlliance,\n } = this.state;\n\n if (!this.formReady()) {\n return this.setState({\n formReadyError: \"Make sure you've picked an activity, start time, and who can view the game.\",\n });\n }\n\n this.setState({ loading: true, errors: \"\" });\n\n // TODO Rails DB field names for description and activity need to be updated, currently 'name' and 'category'\n let data = {\n gaming_session_id: this.props.gaming_session && this.props.gaming_session.id,\n game_id: selectedGame && selectedGame.value,\n platform: platform.value,\n name: description,\n category: selectedActivity.value,\n light_level: lightLevel,\n start_time: Number.isInteger(startDate) ? this.props.gaming_session.start_time : startDate,\n start_asap: when == \"asap\" ? true : false,\n group_id: groupVisible ? selectedGroup.value : null,\n beginners_welcome: beginnersWelcome,\n sherpa_requested: sherpaRequested,\n mic_required: headsetsRequired,\n discord_invite_link: discordInviteLink,\n party_size: partySize,\n team_size: teamSize ? teamSize : null,\n created_from: createdFrom,\n public_visible: publicVisible,\n alliance_visible: allianceVisible,\n group_visible: groupVisible,\n friends_visible: friendsVisible,\n private_visible: privateVisible,\n delay_game_visibility: delayPosting,\n make_auto_public: autoPublic,\n make_auto_alliance_visible: autoAlliance,\n };\n\n console.log(\"DATA:\");\n console.log(data);\n console.log(data.platform);\n\n if (this.props.gaming_session) {\n api\n .updateGamingSession({\n data,\n headers: ReactOnRails.authenticityHeaders(),\n })\n .then((response) => {\n if (response.status == 200) {\n let redirect = window.encodeURI(\"/gaming_sessions/\" + response.data.gaming_session.id);\n window.location.href = redirect;\n this.setState({\n step: 4,\n loading: false,\n gamingSession: response.data.gaming_session,\n });\n } else {\n this.setState({ loading: false, errors: response.data.error });\n }\n })\n .catch((e) => {\n this.setState({\n loading: false,\n errors: \"Error editing game - contact us.\",\n });\n });\n } else {\n api\n .createGamingSession({\n data,\n headers: ReactOnRails.authenticityHeaders(),\n })\n .then((response) => {\n if (response.status == 201) {\n let redirect = window.encodeURI(\"/gaming_sessions/\" + response.data.gaming_session.id);\n window.location.href = redirect;\n this.setState({\n step: 4,\n loading: false,\n gamingSession: response.data.gaming_session,\n });\n } else {\n this.setState({ loading: false, errors: response.data.error });\n }\n })\n .catch((e) => {\n console.log(e);\n this.setState({\n loading: false,\n errors: \"Error creating game - contact us.\",\n });\n });\n }\n };\n\n render() {\n const whenHelpMessage =\n \"Click SCHEDULED to schedule a game in the future (recommended). Or click ASAP to post a game right away, and keep it displayed until it fills.\";\n\n const visibilityHelpMessage =\n \"PUBLIC: visible everywhere and notifies group and friends (recommended). ALLIANCE: visible on all allied group pages. GROUP: visible on group page. FRIENDS: visible to friends. PRIVATE: No notifications and not listed anywhere, only those with direct link can view.\";\n\n const partySizeHelpMessage = \"Select how many players you already have. If it's just you, leave this at 1.\";\n\n const otherOptionsHelpMesssage =\n \"BEGINNERS WELCOME: Makes game public and encourages new players to join. Also earns you Sherpa Points. SHERPA REQUESTED: Select this to request help from experienced players (sherpas) for this game.\";\n\n const { selectedGame, selectedActivity, startDate, discordInviteLink } = this.state;\n\n if (this.state.loading) {\n return (\n
    \n

    Loading...

    \n

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n );\n }\n\n return (\n
    \n {this.state.errors && (\n
    \n
    \n {this.state.errors}\n
    \n
    \n )}\n\n {this.state.step == 1 && (\n
    \n

    What Game?

    \n
    \n \n
    \n\n {this.state.selectedGame && (\n
    \n

    What Activity?

    \n
    \n \n
    \n
    \n )}\n\n
    \n

    \n Description (optional)\n

    \n\n = 255 && \" is-invalid\")}\n type=\"text\"\n value={this.state.description}\n onChange={(event) => this.setState({ description: event.target.value })}\n maxLength=\"255\"\n />\n {this.state.description.length >= 255 && (\n
    Max length is 255 characters.
    \n )}\n
    \n\n

    When?

    \n
    \n this.setStartDate(date)}\n showTimeSelect\n dateFormat=\"Pp\"\n customInput={}\n />\n this.updateWhen(\"asap\")}\n >\n ASAP\n \n \n this.setState({\n displayWhenHelp: !this.state.displayWhenHelp,\n })\n }\n >\n ?\n \n {this.state.displayWhenHelp &&

    {whenHelpMessage}

    }\n
    \n\n

    Who?

    \n\n
    \n this.togglePublicVisible()}\n >\n Public\n \n\n this.toggleAllianceVisible()}\n >\n Alliance\n \n\n this.toggleGroupVisible()}\n >\n Group\n \n\n this.toggleFriendsVisible()}\n >\n Friends\n \n\n this.togglePrivateVisible()}\n >\n Private\n \n\n \n this.setState({\n displayVisibilityHelp: !this.state.displayVisibilityHelp,\n })\n }\n >\n ?\n \n {this.state.displayVisibilityHelp &&

    {visibilityHelpMessage}

    }\n\n {this.state.noGroupsError &&

    {this.state.noGroupsError}

    }\n
    \n\n {(this.state.groupVisible || this.state.allianceVisible) && (\n
    \n \n
    \n )}\n\n \n
    \n )}\n\n {this.state.step == 2 && (\n
    \n

    Current Party Size

    \n
    \n {[\"1\", \"2\", \"3\", \"4\", \"5\", \"6\"].map((partySize) => (\n this.updatePartySize(partySize)}\n >\n {partySize}\n \n ))}\n \n this.setState({\n displayPartySizeHelp: !this.state.displayPartySizeHelp,\n })\n }\n >\n ?\n \n\n {this.state.displayPartySizeDecreaseWarning && (\n

    \n WARNING: this game has players on waitlist! If you lower the party size, they'll be automatically\n promoted to an active player and notified.\n

    \n )}\n\n {this.state.displayPartySizeIncreaseWarning && (\n

    \n WARNING: this game is already full! If you increase the party size, you'll have to kick one of the\n players who've already joined.\n

    \n )}\n\n {this.state.displayPartySizeHelp &&

    {partySizeHelpMessage}

    }\n
    \n\n {(!this.state.selectedGame ||\n (this.state.selectedActivity && this.state.selectedActivity.value == \"Other\")) && (\n
    \n

    \n Max Total Players (optional)\n

    \n\n
    \n = 100 && \" is-invalid\")}\n style={{ width: 100 }}\n type=\"text\"\n value={this.state.teamSize}\n onChange={(event) => this.setState({ teamSize: event.target.value })}\n maxLength=\"100\"\n />\n {this.state.teamSize > 100 &&
    Max team size is 100 people.
    }\n
    \n
    \n )}\n\n

    Platform

    \n {this.state.crossplay && crossplay is enabled for this game}\n
    \n {this.state.platformsList.map((platform) => (\n this.updatePlatform({ platform })}\n >\n {platform.label}\n \n ))}\n
    \n\n {this.state.selectedGame && this.state.selectedGame.label == \"Destiny 2\" && (\n
    \n

    Required Power Level

    \n = 10 && \" is-invalid\")}\n style={{ width: 100 }}\n type=\"text\"\n value={this.state.lightLevel}\n onChange={(event) => this.setState({ lightLevel: event.target.value })}\n maxLength=\"255\"\n />\n {this.state.lightLevel.length >= 255 && (\n
    Max length is 10 characters.
    \n )}\n
    \n )}\n\n

    Other Options

    \n
    \n \n this.setState(\n {\n loading: true,\n beginnersWelcome: !this.state.beginnersWelcome,\n },\n () =>\n this.setState({\n sherpaRequested: this.state.beginnersWelcome == true ? false : this.state.sherpaRequested,\n loading: false,\n })\n )\n }\n >\n Beginners Welcome\n \n \n this.setState(\n {\n loading: true,\n sherpaRequested: !this.state.sherpaRequested,\n },\n () =>\n this.setState({\n beginnersWelcome: this.state.sherpaRequested == true ? false : this.state.beginnersWelcome,\n loading: false,\n })\n )\n }\n >\n Sherpa Requested\n \n \n this.setState(\n {\n loading: true,\n headsetsRequired: !this.state.headsetsRequired,\n },\n () => this.setState({ loading: false })\n )\n }\n >\n Headset Required\n \n \n this.setState({\n displayOtherOptionsHelp: !this.state.displayOtherOptionsHelp,\n })\n }\n >\n ?\n \n {this.state.displayOtherOptionsHelp &&

    {otherOptionsHelpMesssage}

    }\n
    \n
    \n \n this.setState({ discordInviteLink: event.target.value })}\n />\n {discordInviteLink && !discordInviteLink.includes(\"https://\") && (\n

    URL must include https://

    \n )}\n
    \n\n \n
    \n )}\n\n {this.state.step == 3 && (\n
    \n

    Supporter Options

    \n\n {this.props.isSupporter ? (\n
    \n this.toggleAutoPublic()}\n >\n Open To Public If Not Full 2 Hours Before Start\n \n {this.state.autoPublicError &&

    {this.state.autoPublicError}

    }\n\n this.toggleAutoAlliance()}\n >\n Open To Alliance If Not Full 2 Hours Before Start\n \n {this.state.autoAllianceError &&

    {this.state.autoAllianceError}

    }\n\n \n this.setState({ loading: true, delayPosting: !this.state.delayPosting }, () =>\n this.setState({ loading: false })\n )\n }\n >\n Delay Posting For 1 Hour (so you can add friends first)\n \n
    \n ) : (\n
    \n {this.state.displaySupporterMessage && (\n
    \n

    \n These options are only available to our incredible supporters:\n
    \n \n {\" \"}\n Learn more (opens new window)\n \n

    \n
    \n )}\n\n this.setState({ displaySupporterMessage: true })}\n >\n Open To Public If Not Full 2 Hours Before Start\n \n\n this.setState({ displaySupporterMessage: true })}\n >\n Open To Alliance If Not Full 2 Hours Before Start\n \n {this.state.autoAllianceError &&

    {this.state.autoAllianceError}

    }\n\n this.setState({ displaySupporterMessage: true })}\n >\n Delay Posting For 1 Hour (so you can add friends first)\n \n
    \n )}\n\n \n
    \n )}\n\n {this.state.step == 4 && (\n
    \n

    Game Created!

    \n View Gaming Session\n
    \n )}\n
    \n );\n }\n}\n\nconst CustomDateInput = ({ value, onClick, when, handleOnClick }) => (\n handleOnClick(onClick)}\n >\n {when == \"scheduled\" ? value : \"SCHEDULED\"}\n \n);\n\nconst BottomButtons = ({ step, setStep, onSubmit, formReady, formReadyError, gamingSession }) => {\n return (\n
    \n
    \n
    \n {step == 3 ? (\n \n ) : (\n setStep(3)}\n >\n \n Supporter\n \n )}\n
    \n
    \n {step == 2 ? (\n \n ) : (\n setStep(2)}\n >\n \n Advanced\n \n )}\n
    \n
    \n\n
    \n {formReady() ? (\n \n ) : (\n
    \n onSubmit()}\n >\n {gamingSession ? \"Update Gaming Session \" : \"Create Gaming Session \"}\n \n {formReadyError &&

    {formReadyError}

    }\n
    \n )}\n
    \n
    \n );\n};\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport ReactOnRails from \"react-on-rails\";\n\nimport Loading from \"../Loading\";\nimport * as api from \"../../utils/api\";\n\nexport default class GroupCreateForm extends React.Component {\n static propTypes = {\n form_authenticity_token: PropTypes.string,\n discord_signup_url: PropTypes.string,\n step: PropTypes.string,\n currentUserId: PropTypes.number,\n gameId: PropTypes.number,\n };\n\n state = {\n platformsList: [\"xbox-one\", \"ps4\", \"pc\", \"stadia\"],\n platform: \"\",\n ageRange: \"\",\n playSchedule: \"\",\n playScheduleList: [\n \"Weekday Mornings and Weekends\",\n \"Weekday Afternoons and Weekends\",\n \"Weekday Evenings and Weekends\",\n \"Weekdays Latenight and Weekends\",\n ],\n interestsList: [],\n interests: [],\n step: this.props.step || 1,\n errors: \"\",\n loading: false,\n };\n\n componentDidMount() {\n this.fetchAllTags();\n if (this.props.currentUserId && this.state.step == 1 && newTimeZone) {\n api.updateUser({\n headers: ReactOnRails.authenticityHeaders(),\n body: {\n user_id: this.props.currentUserId,\n time_zone: newTimeZone,\n },\n });\n }\n }\n\n fetchAllTags = () => {\n api.fetchAllGroupTags({ suggestedOnly: true }).then((response) => {\n console.log(response);\n this.setState({ interestsList: response });\n });\n };\n\n updatePlatform = (platform) => {\n this.setState({ platform, step: 2 });\n };\n\n updatePlaySchedule = (playSchedule) => {\n this.setState({ playSchedule, step: 3 });\n };\n\n updateAge = (ageRange) => {\n this.setState({ ageRange, step: 4 });\n };\n\n updateInterests = (interest) => {\n this.state.interests.includes(interest)\n ? this.setState({ interests: this.state.interests.filter((i) => i !== interest) })\n : this.setState({ interests: [...this.state.interests, interest] });\n };\n\n createGroupManually = () => {\n this.setState({ loading: true });\n api\n .createGroupManually({ gameId: this.props.gameId, headers: ReactOnRails.authenticityHeaders() })\n .then((response) => {\n if (response.status == 200 && response.data.error == \"Existing Group Found\") {\n this.setState({\n loading: false,\n errors:\n \"It looks like you've already created a group. If you want to create more than one group, change the default name of your existing group then try again. Redirecting there shortly... \",\n });\n\n let redirect = window.encodeURI(\"/groups/\" + response.data.group.id);\n\n setTimeout(() => {\n window.location.href = redirect;\n this.setState({ errors: nil });\n }, 8000);\n } else if (response.status == 201) {\n let redirect = window.encodeURI(\"/groups/\" + response.data.group.id);\n window.location.href = redirect;\n } else {\n this.setState({ loading: false, errors: response.data.error });\n }\n })\n .catch((e) => {\n console.log(e);\n this.setState({ loading: false, errors: \"An error occurred, please double check your info and try again.\" });\n });\n };\n\n onSubmit = () => {\n if (this.props.currentUserId) {\n this.setState({ loading: true });\n\n api\n .updateUser({\n headers: ReactOnRails.authenticityHeaders(),\n body: {\n user_id: this.props.currentUserId,\n age: this.state.ageRange,\n hide_age: true,\n platform: this.state.platform,\n play_schedule: this.state.playSchedule,\n play_style: this.state.interests.includes(\"competitive\") ? \"serious\" : \"casual\",\n time_zone: newTimeZone,\n tag_list: this.state.interests,\n tos_privacy_agreement: true,\n primary_game_id: this.props.gameId,\n },\n })\n .then((response) => {\n console.log(response);\n console.log(response.status);\n if (response.status == 200) {\n this.setState({ step: 5, loading: false });\n } else {\n this.setState({ loading: false, errors: response.data.error });\n }\n })\n .catch((e) => {\n console.log(e);\n this.setState({ loading: false, errors: \"An error occurred, please double check your info and try again.\" });\n });\n } else {\n this.setState({ step: 5 });\n }\n };\n\n render() {\n if (this.state.loading) {\n return (\n
    \n

    Processing...

    \n

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n );\n }\n\n if (this.state.errors) {\n return (\n
    \n

    {this.state.errors}

    \n

    \n
    \n
    \n
    \n
    \n
    \n );\n }\n\n return (\n
    \n {this.state.step == 1 && (\n
    \n

    \n {\"looks like you're in the \" + newTimeZone + \" timezone.\"}\n

    \n

    What platform does your group mostly play on?

    \n
    \n
    \n {this.state.platformsList.map((platform) => (\n \n ))}\n
    \n
    \n )}\n\n {this.state.step == 2 && (\n
    \n

    \n {\"looks like you're in the \" + newTimeZone + \" timezone.\"}\n

    \n

    When does your group usually play?

    \n
    \n
    \n {this.state.playScheduleList.map((playSchedule) => (\n this.updatePlaySchedule(playSchedule)}\n >\n {playSchedule}\n \n ))}\n
    \n
    \n
    \n this.setState({ step: 1, playSchedule: \"\" })}\n >\n \n \n
    \n
    \n )}\n\n {this.state.step == 3 && (\n
    \n

    \n

    What's your group's rough age range?

    \n
    \n
    \n \n \n \n \n \n \n \n
    \n
    \n
    \n this.setState({ step: 2, ageRange: \"\" })}\n >\n \n \n
    \n
    \n )}\n\n {this.state.step == 4 && (\n
    \n

    \n

    Pick a few tags to describe your group (optional):

    \n
    \n

    Your interests: {this.state.interests.map((interest) => interest + \", \")}

    \n
    \n {this.state.interestsList.map((interest) => (\n this.updateInterests(interest)}\n >\n {interest}\n \n ))}\n
    \n
    \n
    \n
    \n this.setState({ step: 3, interests: [] })}\n >\n \n \n \n
    \n
    \n )}\n\n {this.state.step == 5 && (\n
    \n

    \n

    Great! Now Let's Add Your Group:

    \n
    \n
    \n \n Import Group From Discord\n \n \n
    \n
    \n )}\n
    \n );\n }\n}\n","import React from \"react\";\nimport * as api from \"../../utils/api\";\n\n\nexport default class GroupDescription extends React.Component {\n\n state = {\n description: \"...\",\n editing: false,\n }\n\n componentDidMount() {\n this.fetchGroupDescription()\n }\n\n fetchGroupDescription = () => {\n api.fetchGroupInfo({ groupId: this.props.groupId, headers: ReactOnRails.authenticityHeaders() }).then((response) => {\n this.setState({ description: response.data.formatted_description, editing: false })\n })\n }\n\n updateGroupDescription = (description) => {\n this.setState({ description: description, editing: false })\n api.updateGroupDescription({ groupId: this.props.groupId, description: description, headers: ReactOnRails.authenticityHeaders() }).then((response) => {\n console.log(response)\n })\n };\n\n\n\n render() {\n return (\n
    \n
    \n {this.state.editing && this.props.isModerator ? (\n
    \n \n
    \n < button type=\"button\" className={\"btn btn-xs btn-glass btn-success\"} onClick={() => this.updateGroupDescription(this.state.description)} >save\n < button type=\"button\" className={\"btn btn-xs btn-glass btn-secondary\"} onClick={() => this.fetchGroupDescription()} >cancel\n
    \n
    \n ) : (\n

    this.setState({ editing: !this.state.editing })}>{this.state.description}

    \n )}\n\n
    \n {this.props.isModerator ? (\n
    \n \n
    ) : null}\n
    \n )\n }\n\n\n}","import React from \"react\";\nimport * as api from \"../../utils/api\";\n\n\nexport default class GroupModIntro extends React.Component {\n\n state = {\n display: true,\n }\n\n\n render() {\n if (!this.state.display) {\n return null\n }\n\n return (\n
    \n
    \n
    \n

    Welcome To Your Group's Homepage!

    \n

    1. Add all the games you play so we can match as many players as possible.

    \n

    2. Edit your group description below if you'd like.

    \n

    3. Invite your members so everyone can start scheduling games. We prioritize groups by\n how many games they post.

    \n

    4. Schedule your first game with the discord bot - just type !create to start.\n\n

    \n
    \n\n {this.props.isModerator ? (\n
    \n \n
    ) : null}\n
    \n
    \n )\n }\n\n\n}","import React from \"react\";\nimport * as api from \"../../utils/api\";\n\n\nexport default class GroupTags extends React.Component {\n\n state = {\n loading: true,\n allTags: [],\n groupTags: [],\n editing: false\n }\n\n componentDidMount() {\n this.fetchAllTags()\n this.fetchGroupTags()\n }\n\n fetchAllTags = () => {\n api.fetchAllGroupTags({ suggestedOnly: false }).then((response) => {\n this.setState({ allTags: response, editing: false })\n })\n }\n\n fetchGroupTags = () => {\n api.fetchGroupInfo({ groupId: this.props.groupId, headers: ReactOnRails.authenticityHeaders() }).then((response) => {\n this.setState({ groupTags: response.data.tags_cache, editing: false, loading: false })\n })\n }\n\n updateTags = (tag) => {\n if (this.state.groupTags.includes(tag)) {\n this.setState({ groupTags: this.state.groupTags.filter(i => i !== tag) })\n } else {\n this.setState({ groupTags: [...this.state.groupTags, tag] })\n }\n\n api.updateGroupTags({ groupId: this.props.groupId, tag: tag, headers: ReactOnRails.authenticityHeaders() }).then((response) => {\n\n })\n };\n\n\n render() {\n\n if (this.state.loading) {\n return (\n
    ...
    \n )\n }\n\n return (\n
    \n {this.props.isModerator && this.state.editing ? (\n
    \n {this.state.allTags.map(tag => (\n < button type=\"button\" className={\"btn btn-xs btn-glass \" + (this.state.groupTags.includes(tag) ? 'btn-primary' : 'btn-outline-primary')} onClick={() => this.updateTags(tag)} key={tag}>{tag}\n )\n )\n }\n < button type=\"button\" className={\"btn btn-xs btn-glass btn-success\"} onClick={() => this.setState({ editing: !this.state.editing })} >done\n\n
    \n ) : (\n
    \n\n {this.state.allTags.filter(tag => (\n this.state.groupTags.includes(tag))).map(tag => (\n < span className={\"badge badge-dark\"} key={tag}>{tag}\n )\n )\n }\n {this.props.isModerator ? (\n < button type=\"button\" className={\"badge badge-dark\"} style={{ borderWidth: 0, cursor: \"pointer\" }} onClick={() => this.setState({ editing: !this.state.editing })} >\n ) : null}\n\n
    \n )}\n
    \n )\n }\n}","import React from \"react\";\n\nimport \"./styles.css\";\n\nconst Loading = props => {\n return
    ;\n};\n\nexport default Loading;\n","import React from \"react\";\nimport * as api from \"../../utils/api\";\n\n\nexport default class PlatformMemberships extends React.Component {\n\n state = {\n platformsList: [\n { id: 1, name: 'Xbox' },\n { id: 2, name: 'PSN', },\n { id: 3, name: 'PC', },\n { id: 4, name: 'Stadia', }\n ],\n platformMemberships: [],\n editing: false,\n loading: true\n }\n\n componentDidMount() {\n\n api.fetchPlatformMemberships({ groupId: this.props.groupId }).then((response) => {\n var platformIds = response.map(({ platform_id }) => (platform_id));\n this.setState({ platformMemberships: platformIds, loading: false })\n })\n }\n\n updatePlatformMemberships = (platformId) => {\n if (this.state.platformMemberships.includes(platformId)) {\n this.setState({ platformMemberships: this.state.platformMemberships.filter(i => i !== platformId) })\n } else {\n this.setState({ platformMemberships: [...this.state.platformMemberships, platformId] })\n }\n\n api.updatePlatformMemberships({ groupId: this.props.groupId, platformId: platformId, headers: ReactOnRails.authenticityHeaders() }).then((response) => {\n console.log(response)\n })\n };\n\n\n\n render() {\n\n if (this.state.loading) {\n return (\n
    \n ...\n
    \n )\n }\n\n return (\n
    \n {this.state.editing ? (\n
    \n {this.state.platformsList.map(platform => (\n < button type=\"button\" className={\"btn btn-xs btn-glass \" + (this.state.platformMemberships.includes(platform.id) ? 'btn-primary' : 'btn-outline-primary')} onClick={() => this.updatePlatformMemberships(platform.id)} key={platform.id}>{platform.name}\n )\n )\n }\n < button type=\"button\" className={\"btn btn-xs btn-glass btn-success\"} onClick={() => this.setState({ editing: !this.state.editing })} >done\n\n
    \n ) : (\n
    \n {this.state.platformsList.filter(platform => (\n this.state.platformMemberships.includes(platform.id))).map(platform => (\n < button type=\"button\" className={\"btn btn-xs btn-glass btn-dark\"} key={platform.id}>{platform.name}\n )\n )\n }\n {this.props.isModerator ? (\n < button type=\"button\" className={\"btn btn-xs btn-glass btn-dark\"} onClick={() => this.setState({ editing: !this.state.editing })} >\n ) : null}\n\n
    \n )}\n
    \n )\n }\n}","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport ReactOnRails from \"react-on-rails\";\nimport ReCAPTCHA from \"react-google-recaptcha\";\n\nimport Loading from \"../Loading\";\nimport * as api from \"../../utils/api\";\n\nexport default class SignupForm extends React.Component {\n static propTypes = {\n form_authenticity_token: PropTypes.string,\n discord_signup_url: PropTypes.string,\n step: PropTypes.number,\n currentUserId: PropTypes.number,\n gameId: PropTypes.number,\n activateGroupMind: PropTypes.bool,\n groupSignup: PropTypes.bool,\n captchaKey: PropTypes.string,\n };\n\n state = {\n platformsList: [\"xbox-one\", \"ps4\", \"pc\", \"stadia\"],\n platform: \"\",\n ageRange: \"\",\n playSchedule: \"\",\n playScheduleList: [\n \"Weekday Mornings and Weekends\",\n \"Weekday Afternoons and Weekends\",\n \"Weekday Evenings and Weekends\",\n \"Weekdays Latenight and Weekends\",\n ],\n interestsList: [],\n interests: [],\n firstName: \"\",\n email: \"\",\n password: \"\",\n termsCheckbox: false,\n step: this.props.step || 0,\n errors: \"\",\n loading: true,\n captchaToken: \"\",\n };\n\n componentDidMount() {\n // this.fetchAllTags()\n this.setState({ loading: false });\n if (this.props.currentUserId && this.state.step == 1 && newTimeZone) {\n api.updateUser({\n headers: ReactOnRails.authenticityHeaders(),\n body: {\n user_id: this.props.currentUserId,\n time_zone: newTimeZone,\n },\n });\n }\n }\n\n fetchAllTags = () => {\n this.setState({ loading: true });\n\n api.fetchAllGroupTags({ suggestedOnly: true }).then((response) => {\n console.log(response);\n this.setState({ interestsList: response, loading: false });\n });\n };\n\n onChange = (value) => {\n this.setState({ captchaToken: value });\n };\n\n updatePlatform = (platform) => {\n this.setState({ platform, step: 2 });\n };\n\n updatePlaySchedule = (playSchedule) => {\n this.setState({ playSchedule, step: 3 });\n };\n\n updateAge = (ageRange) => {\n this.fetchAllTags();\n this.setState({ ageRange, step: 4 });\n };\n\n updateInterests = (interest) => {\n this.state.interests.includes(interest)\n ? this.setState({ interests: this.state.interests.filter((i) => i !== interest) })\n : this.setState({ interests: [...this.state.interests, interest] });\n };\n\n checkIfLoggedIn = () => {\n if (this.props.currentUserId) {\n this.setState({ loading: true });\n\n api\n .updateUser({\n headers: ReactOnRails.authenticityHeaders(),\n body: {\n user_id: this.props.currentUserId,\n age: this.state.ageRange,\n hide_age: true,\n platform: this.state.platform,\n play_schedule: this.state.playSchedule,\n play_style: this.state.interests.includes(\"competitive\") ? \"serious\" : \"casual\",\n time_zone: newTimeZone,\n tag_list: this.state.interests,\n tos_privacy_agreement: true,\n primary_game_id: this.props.gameId,\n activate_group_mind: this.props.activateGroupMind,\n },\n })\n .then(function (response) {\n if (response.data.redirect_url) {\n let redirect = window.encodeURI(response.data.redirect_url);\n console.log(redirect);\n window.location.href = redirect;\n } else {\n this.setState({ loading: false, termsCheckbox: false, errors: response.data.error });\n }\n })\n .catch((e) => {\n this.setState({\n loading: false,\n termsCheckbox: false,\n errors: \"An error occurred, please double check your info and try again.\",\n });\n console.log(e);\n });\n } else {\n this.setState({ step: 5 });\n }\n };\n\n updateGamertag = (gamertag) => {\n this.setState({ gamertag });\n };\n\n updateEmail = (email) => {\n this.setState({ email });\n };\n\n updatePassword = (password) => {\n this.setState({ password });\n };\n\n handleCheckbox = () => {\n this.setState({ termsCheckbox: !this.state.termsCheckbox });\n };\n\n formReady = () => {\n return this.state.gamertag && this.state.email && this.state.password && this.state.termsCheckbox;\n };\n\n onSubmit = () => {\n this.setState({ loading: true });\n\n api\n .createUser({\n headers: ReactOnRails.authenticityHeaders(),\n body: {\n gamertag: this.state.gamertag,\n email: this.state.email,\n password: this.state.password,\n age: this.state.ageRange,\n hide_age: true,\n platform: this.state.platform,\n play_schedule: this.state.playSchedule,\n play_style: this.state.interests.includes(\"competitive\") ? \"serious\" : \"casual\",\n time_zone: newTimeZone,\n tag_list: this.state.interests,\n tos_privacy_agreement: true,\n primary_game_id: this.props.gameId,\n activate_group_mind: this.props.activateGroupMind,\n captcha_token: this.state.captchaToken,\n created_from: \"website\",\n },\n })\n .then(function (response) {\n if (response.data.redirect_url) {\n let redirect = window.encodeURI(response.data.redirect_url);\n console.log(redirect);\n window.location.href = redirect;\n } else {\n this.setState({ loading: false, termsCheckbox: false, errors: response.data.error });\n }\n })\n .catch((e) => {\n this.setState({\n loading: false,\n termsCheckbox: false,\n errors: \"An error occurred, please double check your info and try again.\",\n });\n console.log(e);\n });\n };\n\n render() {\n if (this.state.loading) {\n return (\n
    \n {this.props.groupSignup ?

    Creating Account...

    :

    Joining Group...

    }\n

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n );\n }\n\n return (\n
    \n {this.state.step == 0 && (\n
    \n {this.props.groupSignup ? (\n

    First, Create Your Account:

    \n ) : this.props.guildId ? (\n
    \n

    Join {this.props.groupName} To Schedule Games:

    \n
    \n ) : (\n

    Create Your Account

    \n )}\n\n
    \n
    \n \n Sign Up With Discord\n \n {this.props.groupSignup ? (\n \n Sign Up With Email\n \n ) : this.props.guildId ? null : (\n \n )}\n
    \n
    \n )}\n\n {this.state.step == 1 && (\n
    \n

    \n {\"looks like you're in the \" + newTimeZone + \" timezone.\"}\n

    \n {this.props.groupSignup ? (\n

    What platform does your group mostly play on?

    \n ) : (\n

    What platform do you mostly play on?

    \n )}\n
    \n
    \n {this.state.platformsList.map((platform) => (\n \n ))}\n
    \n
    \n )}\n\n {this.state.step == 2 && (\n
    \n {this.props.groupSignup ?

    When does your group usually play?

    :

    When do you usually play?

    }\n
    \n
    \n {this.state.playScheduleList.map((playSchedule) => (\n this.updatePlaySchedule(playSchedule)}\n >\n {playSchedule}\n \n ))}\n
    \n
    \n
    \n this.setState({ step: 1, playSchedule: \"\" })}\n >\n \n \n
    \n
    \n )}\n\n {this.state.step == 3 && (\n
    \n {this.props.groupSignup ? (\n

    What's your group's rough age range?

    \n ) : (\n

    What's your rough age range?

    \n )}\n
    \n
    \n \n \n \n \n \n \n \n
    \n
    \n
    \n this.setState({ step: 2, ageRange: \"\" })}\n >\n \n \n
    \n
    \n )}\n\n {this.state.step == 4 && (\n
    \n {this.props.groupSignup ? (\n

    Pick a few tags to describe your group (optional...):

    \n ) : (\n

    What tags describe you? Pick a few:

    \n )}\n
    \n
    \n {this.state.interestsList.map((interest) => (\n this.updateInterests(interest)}\n >\n {interest}\n \n ))}\n
    \n
    \n
    \n
    \n
    \n this.setState({ step: 3, interests: [] })}\n >\n \n \n this.checkIfLoggedIn()}\n >\n next\n \n
    \n
    \n
    \n )}\n\n {this.state.step == 5 && (\n
    \n {this.state.errors ? (\n

    {this.state.errors}

    \n ) : this.props.groupSignup ? (\n

    Almost done! Finish signup to join:

    \n ) : (\n

    We found your perfect group! Finish signup to join:

    \n )}\n
    \n
    \n
    \n
    \n this.updateGamertag(e.target.value)}\n />\n
    \n \n \n \n
    \n
    \n\n
    \n this.updateEmail(e.target.value)}\n />\n
    \n \n \n \n
    \n
    \n\n
    \n this.updatePassword(e.target.value)}\n />\n
    \n \n \n \n
    \n
    \n\n
    \n
    this.handleCheckbox()}>\n \n \n
    \n
    \n\n
    \n \n
    \n\n
    \n this.setState({ step: 4, interests: [] })}\n >\n \n \n {this.formReady() ? (\n \n ) : (\n \n )}\n
    \n
    \n
    \n

    \n
    \n )}\n
    \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport moment from \"moment\";\nimport \"moment-timezone\";\n\nexport default class TimeAgo extends React.Component {\n static propTypes = {\n date: PropTypes.number.isRequired\n };\n\n render() {\n let { date, ...rest } = this.props;\n date = moment(date);\n\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport * as api from \"../../utils/api\";\nimport UserFeedItem from \"../UserFeedItem\";\nimport Loading from \"../Loading\";\n\n\nexport default class UserFeed extends React.Component {\n\n state = {\n loading: true\n }\n\n componentDidMount() {\n this.fetchUserFeedItems()\n }\n\n fetchUserFeedItems = () => {\n api.fetchUserFeedItems({ userId: this.props.userId, headers: ReactOnRails.authenticityHeaders() }).then((response) => {\n console.log(response)\n this.setState({ feedItems: response.data, loading: false })\n })\n }\n\n\n\n render() {\n if (this.state.loading) {\n return (\n
    \n \n
    \n )\n }\n\n return (\n
    \n {this.state.feedItems.map((item) =>\n
    \n \n
    \n )}\n
    \n )\n }\n}","import React from \"react\";\nimport moment from \"moment\";\nimport MessageBody from \"../Chat/Message/MessageBody\";\n\n\n\nexport default class FeedBody extends React.Component {\n\n render() {\n\n let startTime = \"\"\n if (this.props.item && (this.props.item.item_type == \"player-joined-game\" || this.props.item.item_type == \"player-left-game\") && this.props.item.data && this.props.item.data.gaming_session_start_time) {\n startTime = ` at ${moment(this.props.item.data.gaming_session_start_time).format(\"hh:mm A MM/DD/YY\")}`\n }\n\n if (this.props.iframeSrc) {\n return (\n
    \n \n
    \n );\n } else if (this.props.item.body) {\n return (\n
    \n \n
    \n\n );\n } else {\n return (\n Error - Feed Item Id: {this.props.item.id}\n )\n }\n }\n}\n\n\n","import React from \"react\";\nimport moment from \"moment\";\n\n\nexport default class FeedImage extends React.Component {\n\n render() {\n if (this.props.imageUrl) {\n\n return (\n
    \n {this.props.item.title}\n\n {this.props.item.data && this.props.item.data.gaming_session_start_time && (\n

    Starts: {moment(this.props.item.data.gaming_session_start_time).format(\"hh:mm A MM/DD/YY\")}

    \n )}\n
    \n );\n }\n else if (this.props.item.embed_url) {\n return ;\n } else {\n return null;\n }\n }\n}\n\n","import React from \"react\";\n\n\nexport default class Footer extends React.Component {\n\n\n render() {\n let avatars = null;\n let label = null;\n\n if (this.props.likeable) {\n avatars = this.props.item.related_users[\"likes\"];\n label = \"like\";\n } else if (this.props.item.related_users && this.props.item.related_users.avatar_urls) {\n avatars = this.props.item.related_users.avatar_urls;\n label = \"player\";\n }\n const plural = avatars && avatars.length && avatars.length > 1 ? \"s\" : \"\";\n const clicked = avatars && avatars.includes(this.props.item.author_avatar_url) ? true : false\n const left =\n !avatars || avatars.length === 0\n ? 0\n : -5 * (avatars.length - 1) + 2;\n\n return (\n
    \n\n {avatars && avatars.length && (\n
    \n {avatars.map((url, index) => (\n \n \n \n ))}\n
    {`${avatars.length\n } ${label + plural}`}
    \n
    \n\n )}\n
    \n );\n }\n}\n\n\n\n\n","import React from \"react\";\nimport moment from \"moment\";\n\n\nexport default class Header extends React.Component {\n\n render() {\n return (\n
    \n
    \n \n \n \n
    \n
    {moment(this.props.display_after).fromNow()}
    \n\n
    {this.props.title}
    \n

    @{this.props.author_gamertag}

    \n
    \n
    \n\n
    \n )\n }\n}\n\n","import React from \"react\";\nimport Header from \"./Header\"\nimport FeedImage from \"./FeedImage\";\nimport FeedBody from \"./FeedBody\"\nimport Footer from \"./Footer\"\n\n\nexport default class UserFeedItem extends React.Component {\n\n state = {\n loading: false,\n allTags: [],\n userTags: [],\n editing: false\n }\n\n componentDidMount() {\n\n }\n\n iframeSrc(item) {\n if (item.body && item.body.includes(\"iframe\")) {\n if (item.body.match('src=\"(.*?)\" ')) {\n return String(item.body.match('src=\"(.*?)\" ').pop());\n }\n } else if (item.body && !item.body.includes(\"iframe\") && item.body.includes(\"xboxdvr.com\")) {\n return item.body;\n } else {\n return null\n }\n }\n\n iframeHeight(item) {\n if (item.body && item.body.includes(\"iframe\") && item.body.match('height=\"(.*?)\" ')) {\n return Number(item.body.match('height=\"(.*?)\" ').pop());\n } else if (item.body && !item.body.includes(\"iframe\") && item.body.includes(\"xboxdvr.com\")) {\n return 260\n } else {\n return 300\n }\n }\n\n\n render() {\n\n\n\n\n return (\n
    \n\n {/* \n )\n }\n}","/* eslint no-console:0 */\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n//\n// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate\n// layout file, like app/views/layouts/application.html.erb\n\nimport ReactOnRails from \"react-on-rails\";\n\nimport CharacterBanner from \"../components/CharacterBanner\";\nimport CharacterImporter from \"../components/CharacterImporter\";\nimport ConversationPreviews from \"../components/ConversationPreviews\";\nimport SignupForm from '../components/SignupForm';\nimport GroupCreateForm from '../components/GroupCreateForm'\nimport GameTime from '../components/GameTime';\nimport ConversationPage from \"../pages/ConversationPage\";\nimport HelpPage from \"../pages/HelpPage\";\nimport GamingSessionsPage from \"../pages/GamingSessionsPage\";\nimport GroupsPage from \"../pages/GroupsPage\";\nimport GroupModsPage from \"../pages/GroupModsPage\";\nimport HqPage from \"../pages/HqPage\";\nimport SherpaHqPage from \"../pages/SherpaHqPage\";\nimport ApprovedGames from \"../components/ApprovedGames\";\nimport GroupDescription from \"../components/GroupDescription\";\nimport GroupModIntro from \"../components/GroupModIntro\";\nimport GroupTags from \"../components/GroupTags\";\nimport UserTags from \"../components/UserTags\";\nimport UserFeed from \"../components/UserFeed\";\nimport PlatformMemberships from \"../components/PlatformMemberships\";\nimport GamingSessionForm from \"../components/GamingSessionForm\";\n\n\n\n\n\nReactOnRails.register({\n CharacterBanner,\n CharacterImporter,\n ConversationPreviews,\n ConversationPage,\n HelpPage,\n GamingSessionsPage,\n GroupsPage,\n GroupModsPage,\n HqPage,\n SherpaHqPage,\n SignupForm,\n GroupCreateForm,\n GameTime,\n ApprovedGames,\n GroupDescription,\n GroupModIntro,\n GroupTags,\n UserTags,\n UserFeed,\n PlatformMemberships,\n GamingSessionForm,\n});\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport Chat from \"../../components/Chat\";\n\nimport { postNewConversationMessage } from \"../../utils/api\";\n\nexport default class ConversationPage extends React.Component {\n static propTypes = {\n conversationId: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n .isRequired,\n token: PropTypes.string\n };\n\n onConversationMessageCreated = message => {\n postNewConversationMessage(this.props.conversationId, message).catch(\n error => {\n console.error(\"Failed to post new converstation message:\", error);\n }\n );\n };\n\n render() {\n let room = `conversation-${this.props.conversationId}`;\n\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Chat from \"../../components/Chat\";\n\nexport default class GamingSessionsPage extends React.Component {\n static propTypes = {\n gamingSessionId: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n .isRequired,\n token: PropTypes.string\n };\n\n render() {\n let room = `game-${this.props.gamingSessionId}`;\n\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Chat from \"../../components/Chat\";\n\nexport default class GroupModsPage extends React.Component {\n static propTypes = {\n groupId: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n .isRequired,\n token: PropTypes.string\n };\n\n render() {\n let room = `group-modchat-${this.props.groupId}`;\n\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Chat from \"../../components/Chat\";\n\nexport default class GroupsPage extends React.Component {\n static propTypes = {\n groupId: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n .isRequired,\n token: PropTypes.string\n };\n\n render() {\n let room = `group-${this.props.groupId}`;\n\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport Chat from \"../../components/Chat\";\n\nexport default class HelpPage extends React.Component {\n static propTypes = {\n token: PropTypes.string\n };\n\n render() {\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport Chat from \"../../components/Chat\";\n\nexport default class HqPage extends React.Component {\n static propTypes = {\n token: PropTypes.string\n };\n\n render() {\n return (\n \n );\n }\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport Chat from \"../../components/Chat\";\n\nexport default class SherpaHqPage extends React.Component {\n static propTypes = {\n token: PropTypes.string\n };\n\n render() {\n return (\n \n );\n }\n}\n","import axios from \"axios\";\n\nexport class ApiError extends Error {\n constructor(message, data) {\n super(`${message} - Data:\\n${JSON.stringify(data, null, 2)}`);\n\n this.data = data;\n }\n}\n\nfunction get(url, params) {\n let config = {\n headers: { \"X-API-KEY\": \"9612590ec7fe4c748123f94ce0d1adbf\" },\n params\n };\n\n return axios\n .get(\"https://www.bungie.net/Platform\" + url, config)\n .then(data => {\n if (!data) {\n throw new ApiError(\"No data returned\", data);\n }\n if (data.data.ErrorCode !== 1) {\n throw new ApiError(\"Error occurred\", data);\n }\n if (!data.data.Response) {\n throw new ApiError(\"Data did not match expected format\", data);\n }\n return data.data.Response;\n });\n}\n\nexport function getDestiny2Player(gamerTag, membershipType) {\n let encodedGamertag = encodeURIComponent(gamerTag);\n if (membershipType == 3) {\n // For Steam IDs, only Steam ID is needed (membership type 3)\n return get(\n `/User/GetMembershipFromHardLinkedCredential/SteamId/${encodedGamertag}/`\n ).then(players => {\n if (players.membershipId) {\n return players;\n } else {\n throw new ApiError(\n \"Response did not match expected format: No membershipId found\",\n response\n );\n }\n });\n } else {\n // For gamertags on platforms xbox, psn, stadia, etc\n return get(\n `/Destiny2/SearchDestinyPlayer/${membershipType}/${encodedGamertag}/`\n ).then(players => {\n if (players.length < 1) {\n throw new ApiError(\"No players found\", players);\n } else if (players.length > 1) {\n throw new ApiError(\"Multiple players found\", players);\n } else {\n return players[0];\n }\n });\n };\n}\n\nexport function getDestiny2Characters(membershipId, membershipType) {\n return get(`/Destiny2/${membershipType}/Profile/${membershipId}/`, {\n components: 200\n }).then(response => {\n if (response.characters && response.characters.data) {\n return response.characters.data;\n } else {\n throw new ApiError(\n \"Response did not match expected format: No characters or character data\",\n response\n );\n }\n });\n}\n","export function signIn(token, allowAnon = false) {\n if (token) {\n if (!The100App || !The100App.userData) {\n throw new Error(\"No user data found\");\n }\n\n return firebase\n .auth()\n .signInWithCustomToken(token)\n .then(({ uid }) => {\n return firebase\n .database()\n .ref(\"users/\" + uid)\n .set(The100App.userData)\n .then(() => {\n return firebase\n .database()\n .ref(\"/users/\" + uid)\n .once(\"value\")\n .then(snapshot => {\n let user = snapshot.val();\n user.uid = uid;\n user.anon = false;\n return user;\n });\n })\n .catch(e => {\n console.log(\"Error setting userData in firebase, trying again.\", e);\n window.location.reload();\n });\n });\n } else if (allowAnon) {\n return firebase\n .auth()\n .signInAnonymously()\n .then(user => {\n return {\n uid: user.uid,\n avatar: \"/default-avatar.png\",\n groups: {},\n pwnmaster: false,\n supporter: false,\n username: \"guest\",\n anon: true\n };\n });\n } else {\n return Promise.reject(new Error(\"Tried to sign-in without Token.\"));\n }\n}\n\nexport function getUserChatRole(user, roomName, anonRole = \"user\") {\n if (user.pwnmaster) {\n return \"developer\";\n }\n let room = user.groups[roomName];\n if (room) {\n return room.role;\n } else if (user.anon) {\n return anonRole;\n } else {\n return \"user\";\n }\n}\n\nexport function getUserChatPermission(user, roomName, anonPermission = \"\") {\n if (user.pwnmaster) {\n return \"RWE\";\n }\n let room = user.groups[roomName];\n if (room) {\n return room.permission;\n } else if (user.anon) {\n return anonPermission;\n } else {\n return \"\";\n }\n}\n","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn-bd\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn-bd.js\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-mx\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-mx.js\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tk\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tk.js\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";"],"mappings":"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;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA;AACA;;AAvIA;AACA;AACA;AACA;A;;;;;;;;;;;;;;;;;;;;;;;;;;;ACbA;AACA;AACA;AAEA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;AAFA;AA2FA;AACA;AACA;AA7FA;AA+FA;AACA;AACA;AAjGA;AAmGA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AA1GA;AAsKA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AACA;AAOA;AAGA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AAQA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AA9MA;AAgNA;AAAA;AAAA;AACA;AACA;AAlNA;AAoNA;AACA;AAAA;AACA;AAGA;AACA;AACA;AAHA;AAMA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AArOA;AAuOA;AACA;AAAA;AAAA;AACA;AACA;AACA;AA3OA;AA6OA;AAIA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AA1PA;AA4PA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAhQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXA;AAcA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AA1BA;AA2BA;AACA;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAkBA;AACA;AACA;AACA;AACA;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AACA;AAQA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;;AA9BA;AACA;A;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrIA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;;;;;;;;;;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAKA;AAKA;AAKA;AAKA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAvEA;AACA;AAkGA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AAHA;AAKA;AAMA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AAHA;AAKA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAFA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAFA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AADA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAJA;AAMA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAMA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA;AAEA;AAKA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AA0BA;AACA;AACA;AADA;AAGA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAxBA;AA2BA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAHA;AAKA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAFA;AAIA;AACA;AACA;AAEA;AACA;AAFA;AAKA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAHA;AAKA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;;;;;;AArWA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAFA;AAAA;AAIA;AACA;AAAA;AACA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAHA;AAKA;AAEA;AACA;AAFA;AADA;AAMA;AACA;AACA;AA8UA;AAAA;AACA;AAAA;AAGA;AAGA;AAEA;AATA;AAAA;AAAA;AAAA;AAAA;AACA;AAaA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AALA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AANA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AALA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AANA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA;AACA;AAGA;AAAA;AAAA;AALA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;AACA;AAGA;AAAA;AAEA;AADA;AADA;AALA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAIA;AAAA;AAAA;AALA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA;AAIA;AAAA;AAAA;AALA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA;AACA;AAIA;AAAA;AAAA;AANA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;AACA;AAIA;AAAA;AAAA;AANA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;AACA;AAIA;AAAA;AAAA;AANA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;AACA;AAIA;AAAA;AAEA;AADA;AADA;AANA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AALA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA;AACA;AACA;AACA;AACA;AACA;AANA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAIA;AAAA;AAAA;AANA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAaA;AACA;AAIA;AAAA;AAEA;AADA;AADA;AANA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AANA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAMA;AAAA;AAAA;AAAA;AAAA;AARA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAiBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AANA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAIA;AAAA;AAGA;AACA;AAFA;AAIA;AAEA;AACA;AAFA;AADA;AANA;AALA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAGA;AAAA;AAGA;AACA;AAFA;AAIA;AAEA;AACA;AAFA;AADA;AANA;AAJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBA;AACA;AAIA;AAAA;AAGA;AACA;AAFA;AAIA;AAAA;AAAA;AAAA;AANA;AANA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBA;AACA;AAIA;AAAA;AAEA;AADA;AADA;AANA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AANA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAGA;AAAA;AAAA;AAJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAGA;AAAA;AAAA;AAJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAGA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AADA;AADA;AALA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA;AAGA;AAAA;AAAA;AAAA;AAAA;AAJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;AAGA;AAAA;AAAA;AAAA;AAAA;AAJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAGA;AAAA;AAAA;AAAA;AAAA;AALA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA;AACA;AACA;AACA;AACA;AACA;AANA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;;AAn8BA;AACA;AADA;AACA;AAo8BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AAAA;AAAA;AAFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AACA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AACA;AAAA;AAAA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AACA;AAAA;AAAA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;A;;;;;;;;;;;;;;;;;;;;;;;;AC9hCA;AACA;AACA;AAEA;AACA;AACA;AACA;;;;;;;;;;;AASA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AAfA;AACA;AA8BA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAFA;AACA;AAKA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVA;AAFA;AAgBA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;;;;;;AA1GA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAFA;AAFA;AAOA;AACA;AACA;AA+FA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AA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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACA;;AA3EA;AACA;AACA;AACA;A;;;;;;;;;;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;;;;;;;;;;AAYA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AApBA;AACA;AAoCA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXA;AAFA;AAiBA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAHA;AACA;AAIA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAFA;AAqBA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAHA;AACA;AAIA;AACA;AACA;AACA;;;;;;AAvJA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAFA;AAFA;AAOA;AACA;AACA;AA2IA;AAAA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAUA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAUA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADA;AAUA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AALA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AALA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AALA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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EA;AACA;AACA;AACA;AACA;AAJA;;;;;;AAOA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAKA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AANA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AACA;AADA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AAFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;AACA;;AAvEA;AACA;AACA;AACA;A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AArBA;AACA;A;;;;;;;;;;;;;;;;;;;;;;ACtCA;AACA;AAEA;AAEA;AACA;AACA;;;;;;;;;;;;AAOA;AACA;AAEA;AACA;AAEA;AACA;;;;;;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AALA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;AACA;;AA5BA;AACA;AADA;AAEA;AAEA;AAHA;AACA;AACA;A;;;;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;;;;;;;;;AAOA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACA;;AAnBA;AACA;AADA;AAEA;AAEA;AAHA;AACA;AACA;A;;;;;;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;;;;;;;;;AAOA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACA;;AAnBA;AACA;AADA;AAEA;AAEA;AAHA;AACA;AACA;A;;;;;;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;;;;;;;;;AAOA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACA;;AAnBA;AACA;AADA;AAEA;AAEA;AAHA;AACA;AACA;A;;;;;;;;;;;;;;;;;;;;;ACPA;AACA;AAEA;AACA;AACA;;;;;;;;;AAKA;AACA;AAEA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACA;;AAfA;AACA;AADA;AAEA;AADA;AACA;AACA;A;;;;;;;;;;;;;;;;;;;;;ACRA;AACA;AAEA;AACA;AACA;;;;;;;;;AAKA;AACA;AAEA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACA;;AAfA;AACA;AADA;AAEA;AADA;AACA;AACA;A;;;;;;;;;;;;;;;;;;;;;ACRA;AACA;AAEA;AACA;AACA;;;;;;;;;AAKA;AACA;AAEA;AACA;AACA;AACA;AAJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACA;;AAfA;AACA;AADA;AAEA;AADA;AACA;AACA;A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRA;AAEA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAEA;AAHA;AAIA;AACA;AANA;AAAA;AACA;AAOA;AACA;AACA;AAAA;AAAA;AACA;AAFA;AAKA;AAGA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAGA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AADA;AACA;AAEA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;A;;;;;;;;;;;;;;;AC9EA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAKA;AAKA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AASA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;;;;;AC9EA;AACA;AACA;A;;;;;;;;;;ACFA;AACA;AACA;A;;;;;;;;;;ACFA;AACA;AACA;A;;;;;;;;;;ACFA;AACA;AACA;A;;;;;;;;;;ACFA;AACA;AACA;A;;;;;;;;;;ACFA;AACA;AACA;A;;;;;;;;;;ACFA;AACA;AACA;A;;;;;;;;;;ACFA;AACA;AACA;A;;;;;;;;;;ACFA;AACA;AACA;A;;;;;;;;;;ACFA;AACA;AACA;A;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;A","sourceRoot":""}